Step 1 – Acquiring Problem Specifications
Getting a problem from a client or identify the problem yourself
This includes information about the data or information used in the problem
How should the task receive Input?
How should it produce Output?
Step 2 – Problem Analysis
Analyze the problem, procedure, and given specifications.
may reveal hidden specifications or problems that were not evident in Step 1
If needed, go back to step 1 to verify new specifications
Create testing scenarios.
Define expected outputs for given inputs
Step 3 – Algorithm Design
Design a solution to the problem (DO NOT WRITE CODE YET)
Create an algorithm to solve the problem and test it against scenarios from Step 2
Algorithm: A descriptive process (step-by-step solution) that ends at a solution to a problem.
Consists of a finite number of steps (or instructions).
Each step is well defined and understandable by a computing agent
The algorithm must stop at a solution.
The algorithm should be generalizable to a set of problem instances
There are potentially infinite variations for algorithms that solve the same problem.
Step 4 – Program Implementation
Convert the Algorithm into the target programming language
Programs should be well documented using docstrings and in-line comments
Check code with test scenarios used created in Step 2 and used in Step 3
Step 5 – Program Deployment
Put the program in active use by:
releasing it to the client and possible installing it into their system.
integrating it into an existing software package using an existing API (application programming interface).
Step 6 – Program Maintenance
Updating the program for specifications that may have changed or to allow for functionality with new components if part of a software package.
Receive error reports, which may require a problem statement re-definition and analysis (go back to step 1)
Use of constants instead of literal values and good documentation makes this much easier.

