The Development Process

We can look at the process of developing a solution to a problem using a program (i.e., “programming”) as a 5-part procedure.  It is important to note that this does NOT mean that these 5 parts occur sequentially.  Much of the time several parts will be in operation simultaneously.
1.	Problem definition
	Define and understand the problem
	This is a difficult step because of communications (verbal or written) problems
2.	Solution planning
	Sketch out a solution on paper
	Many tools are available
	We will be using structured flowcharts and structure charts
	And we will be using pseudocode
	Desk-check your solution – check your solution on paper to be certain it works
3.	Coding
	Write the actual program using an appropriate language
	With some applications multiple programming languages may be used
	Write only the essential parts of the program to check it out
	Desk-check again
	Incrementally build up your solution – top-down, bottom-up, or both; use drivers & stubs
4.	Testing and debugging
	Try your program on a machine; test expected and unexpected data
	With larger programs, run it in parts
5.	Documentation
	Documentation for the users (end users) of your program
	Documentation for programmers for use in maintaining and updating the program
	A program with no documentation is a useless program
An Allegory:  Let’s say you’re building a boat…
Have you accomplished your purpose if:
•	It sinks immediately when it is launched
•	It sinks shortly after it is launched
•	It almost crosses the Pacific Ocean, then sinks
•	It arrives safely at port, but the passengers all have strange diseases they’ve picked up during the journey and the cargo is all spoiled and decayed
•	It arrives safely at port, everyone raves about the excellent journey, the cargo is perfect, but the ship needs 9 months of repair work before it can sail again
•	Safe arrival, speedy journey, excellent reviews, perfect cargo, turn-around time is 15 minutes
•	Just as immediately above, but the plans for the boat are lost and no one alive can ever build another one like it
Conclusion (or moral)
Understanding the problem and planning a solution are easily 90% of the work in problem solving and programming