

In order to do that, creating a wish list of what the program is expected do is a common first step when designing new software. Also, some feedback is required from potential users for possible problems and bottlenecks identification.
The framework could be established by answering these simple questions:

We have to depict and analyze the procedure required to perform the task more deeply. In order to do that, we should ask potential users who they currently perform the task that we are planning to optimize with our program. Useful questions are: which variables users would like to control? What is the current workflow for carrying out the task and which parts of it could be readily implemented?
More detailed information can be gathered with a survey, this might include how the users expect the program to behave? What file formats they expect to use to read the information? The more detailed the survey, the more clear the horizon to start the design journey.

Program designing is a process where the output from one stage is the input for another, also the output from one or more stages usually should be fed back through a loop of parts of the process. There are occasions where even the process as a whole should be repeated several times. When this happens within some program code is called recursion
Once the problem has been identified, we have to be certain that we had covered all the subtleties because otherwise, we will have to return to this stage repeatedly. Some features look quite straightforward when written in natural language but require further clarification when you come to turn them into programming language.
The actions that we require the program to carry are called functional requirements, examples of this actions are printing messages, sending emails, text imput by the user, or fetching some date on the internet.
Other needs or limitations are labeled as nonfunctional requirements, they are software qualities related to accessibility, usability by the end users, cost-effectiveness, compatibility with several operative systems, security, privacy, and overall performance.
In this stage it is also recommended to depict the expected result of the program execution. It might be just roughly sketched, but it will provide with useful insights about the desired results from each part of the program.
Any software that has to be executed more than one time require some sort of maintenance. Also, upgrades are a constant part of software development and a mechanism that allows seamless integration between newer and current versions should be taken into account. Furthermore, it is recommendable to write the code and the documentation in such a way that allows third parties to make contributions.

Wish_list.txt
Problem: Get the computer to add 2 plus three and print the result.
Target users: Me
Target System: Microsoft Windows
Interface: Cmd
Functional requirements: Add two numbers, print the result, input some numeric data.
Testing: Simple run-test -expecting the result of a sum to appear.
Maintainer: https://steemit.com/@joelsegovia
