The body of methods, rules, postulates, procedures, and processes that are used to manage a software engineering project are collectively referred to as a methodology.
There are two well-known software engineering methodologies commonly used in practice today. The two methodologies, informally known as the waterfall and spiral methodologies, are characterized by the grouping of tasks as either sequential or cyclical. Both of these methodologies organize some tasks very well, but have a narrow focus, so that crucial aspects of one methodology are missed by the other methodology.
This thesis defines the WaterSluice methodology. The WaterSluice borrows the iterative nature of the cyclical methodology along with the steady progression of the sequential methodology. In addition, the tasks in the WaterSluice are prioritized such that the most beneficial, non-conflicting tasks are accomplished first. A collection of theorems is presented establishing the strengths and weaknesses of the WaterSluice as compared to the sequential and cyclical methodologies. The WaterSluice methodology represents a more accurate rendering of current software engineering practices. In this sense, the WaterSluice is not new but merely represents a concise description of the state of the art.
This thesis builds a foundation for the study of software engineering methodologies and then categorizes the conditions under which one software engineering methodology will be preferred over another software engineering methodology. Predicted performance characteristics for several major classes of software engineering methodologies under a variety of conditions are presented.
Software engineering is a large and complex process of many interdependent processes of which the methodology is only one part. This thesis concentrates on the methodologies, but does not ignore many of the other key issues. In the appendices, other key issues are covered including issues associated with requirement gathering including an example of a requirement document, the software engineering system lifecycle, the software engineering five-level engineering support environment, decision support, and documentation development.
After the introductory Chapter 1, Chapter 2 introduces the foundation phases of analysis, design, implementation, and testing. Chapter 3 builds from the foundation phases, the sequential, cyclical, and WaterSluice software engineering methodologies. Several established methodologies are reviewed in Chapter 4. Chapter 5, the formal foundation chapter of the thesis, establishes the theoretical results which are then compared to similar results from search theory in Chapter 6. This is followed by a survey of large software engineering projects in Chapter 7. The final chapter of the thesis, Chapter 8, introduces future work in distributed architectures, environments, paradigms, and component engineering. The other topics as mentioned above are then covered in the appendices.