next up previous
Next: WaterSluice Software Engineering Methodology Up: Cyclical Software Engineering Methodology Previous: Cyclical Software Engineering Methodology

An Example of Cyclical Non-feasible Solution

Many applications are partitioned into the three major components: user interface, application logic, and a database. The visible component of the application to a customer is the user interface. The other two components have no visibility to the customer and are hidden. In many cases the customer's mental model of the application is totally user-interface centric. To the customer, the application is the user interface.

Tools exist today to easily craft user interfaces. These tools ignore the building of the application logic and databases. The application logic and databases are crafted using more traditional techniques accomplished by trained individuals. An inexperienced programmer is easily convinced that the application is totally done when only the user interface is completed.

The problem comes when an inexperienced team is using one of these user interface tools along with the customer. Both the inexperienced team and the customer have highly slanted, user interface centric, mental models of the application. The team and the customer could spend hours working on very minuscule details of the user interface design by quickly iterating between different user interface designs. Yet the application logic and the supporting database may get no attention. Both the customer and the inexperienced team come to the false impression that they are near completion of application when the user interface is completed. They are stuck on user interface design details without getting a global picture of the entire application that includes application logic and a database.

Much later in this process the discovery could be made that the application logic and supporting database may be impossible to implement given the current user interface. Hours of user interface design could have been avoided if a more global view of the application had been introduced earlier.

A cyclical methodology refines some details early in the process without having a global view of the entire search space. In this case, the user interface was explored in detail without much attention to the application logic or the database design. This gives a false impression of near completion and progress even though the solution is stuck at a non-feasible position that excludes major components of the application. The important requirements of application logic and the database were missed until late in a cyclical methodology.


next up previous
Next: WaterSluice Software Engineering Methodology Up: Cyclical Software Engineering Methodology Previous: Cyclical Software Engineering Methodology
Ronald LeRoi Burback
1998-12-14