The Phases of Software Program Development