Next we define the methodology, as soon discussed, as an algorithm that finds a solution in the given environment of the multi-layered finite space consisting of the analysis, design, implementation, and testing plane, starting with the root represented by the problem statement and ending with the goal represented by the system acceptance test. Three classes of methodologies, or algorithms, are presented: sequential, cyclical, and the WaterSluice.
In a static environment, the solution may include all steps known in the environment. In a dynamic environment, the solution may be a subset. A solution does not contain any conflicting steps. The solution represents the final system, complete with analysis, design, implementation, and testing. A step visited but not used in the solution represents wasted effort. See Figure 5.7 on page for a visual representation of a solution.
A partial solution does not satisfy all of the goals in the problem statement. If some of the goals in the problem statement are in conflict with each other, then only a partial solution exists. See Figure 5.8 on page for a visual representation of a partial solution.
If some of the goals in the problem statement are in conflict with each other, then no optimal solution exists.
There may be many feasible solutions to a given problem statement.
This thesis deals with software engineering of systems that can be built in a finite amount of time with finite resources using finite computers. Thus the assumption of a finite space is reasonable. Consider the alternative that the space is infinite. Software engineering systems simply can't be built that require an infinite number of steps.
This introduces the question of the size of this space. What is N?
Let N1 be the number of steps in an optimal solution. Recall that an optimal solution satisfies all the goals in the problem statement.
A feasible solution satisfies all of the goals in the problem statement but not necessarily in an optimal fashion. A feasible solution has the same starting problem statement and the same ending system acceptance test as an optimal solution. Let N2 be the upper bound on the number of steps over all feasible solution.
A partial solution satisfies some of the goals in the problem statement. A partial solution has the same ending system acceptance test as an optimal solution but satisfies only some of the goals of the problem statement. Let N3 be the upper bound on the number of steps over all permutations and sub collections of the goals from the problem statement over all partial solutions.
Define the size of the space to be the upper bound of N1, N2, and N3.
The three main categories of software engineering methodologies under investigation are sequential, cyclical, and the WaterSluice.
A more detailed description can be found in Section 3.1. Also see Figure 3.1 on page for a graphical representation of a sequential methodology.
Simply, a cyclical software engineering methodology iterates over the processes of think a little, plan a little, implement a little, then test a little. Finer and finer details are generated as the cyclical software engineering methodology progresses. Finally, after several iterations, the system is completed.
A more detailed description can be found in Section 3.2. Also see Figure 3.2 on page for a graphical representation of a cyclical methodology.
The WaterSluice software engineering methodology separates the important aspects from the less important and concentrates on solving them first. As the process continues, finer and finer details are refined until the product is released.
A more detailed description can be found in Section 3.3.1. Also see Figure 3.4 on page for a graphical representation of the WaterSluice methodology.