How to Build a Program



Building a program is not an art, it is an engineering process.  As such there is a process to follow with clearly defined steps.

Analysis (Understand the Requirements)

In this class you will be given the problem requirements, unlike the real-world where you have to elicit the requirements from a customer.  For you the first step will be to read the problem and be sure you understand what the program must do.  Summarize your understanding by writing the Input data, Output data, and Functions (operations or transformation on the data).

Create a Test Plan

You must be able to verify that your program works correctly once it is written.  Invent some actual input data values and manually compute the expected result. 

Invent a Solution

This is the creative, exploratory part of design where you figure out how to solve the problem.  Here is one strategy:
  1. Solve the problem manually, the way you would do it as a human.
  2. Pay careful to attention what operations you perform and write down each step.
  3. Look for a pattern in the steps you performed. 
  4. Determine how this pattern could be automated using the 3 algorithm building blocks (Sequence, Selection, Iteration).

Design (Formalize your solution)

Arrange your solution into components; this is called the architecture.
Write the algorithm for each component.  Refine your algorithm in a step-wise manner if necessary.
Determine the data types and constraints for each data item.

Review

Perform a hand trace of your solution and simulate how the computer will carry out your algorithm.  Make sure your algorithm works correctly before you put it into the computer.

Implementation (coding)

Translate your algorithm into a programming language and enter it into the computer. 
Compile your source code to produce an executable program.
You may want to compile and test each subprogram individually before combining them into a complete program.

Testing

Execute the program using the Test Plans you created above.
Correct any errors as necessary.