Towards the Definition of Methodology

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 *N*_{1} 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 *N*_{2} 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 *N*_{3} 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 *N*_{1}, *N*_{2},
and *N*_{3}.

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.