Before we descend into the definition of software engineering methodologies, we need to define the meanings of some of the fundamental phases.
There are four fundamental phases in most, if not all, software engineering methodologies. These phases are analysis, design, implementation, and testing. These phases address what is to be built, how it will be built, building it, and making it high quality. These phases will now be defined as they apply to the life cycle stage of product delivery emphasized in this thesis.
Even though this thesis emphasizes the four phases of analysis, design, implementation, and testing in a software engineering methodology as it applies to the software life cycle stage of product delivery, the results are also applicable to the other software life cycle stages of deployment, operations, maintenance, legacy, and finally discontinuation as the system transitions through many versions from cradle to death. This is explored in more details in Appendix A. In many systems the majority of the total system cost is in the later life cycle stages and only a minority of the total system cost in the initial development.