HomeProducts
 

 

   
8th April, 2003 
Methodology, not theology

Don't get me wrong. I don't mind methodologies in so far as they give you a framework for thinking. The framework gives you a general structure to hang your thoughts on. It is a tool to be used in the software development process. It should prompt a designer to consider important areas of the design process but a framework should never make the decisions.

The ISO 9000-3 framework was intended as a skeleton for approaching the problems in the development, supply and maintenance of software. It provides a checklist of procedures, plans, records, documents, audits and reviews.

There has been adoption of such processes as a set of regulations for development. It becomes a codification of the design processes, an assembly line for software development - such that any practitioner, however unskilled, may follow the instructions and then deliver a product that meets the requirements. The methodology decides the course of action and for it to do this task requires a bulky set of prescriptions to deal with every situation. It is either that or the avenues of development are severely restricted.

As an interested observer of design practices, I had the fortune to encounter the latter problem in the workplace. A particular design situation required the use of Petri nets. Unfortunately, the quality management system only allowed for design expression in the form of data flow diagrams. No amount of explaining would sway the quality management team from the written word of the quality management system. I drew a DFD to satisfy the quality processes - even though it did not focus attention on the synchronisation issues that were the important consideration.

The object-oriented methodology has also been the vogue. It has been touted as the way to achieve fewer defects as it ties the use of the data to the data form. There is a rigid data structure and a binding contract for the employment of that structure in the object-oriented model of the world. It has solidity and inflexibility, and is one step removed from implementation. These are useful traits in certain situations. There are other situations where this may not aid and may even hinder the understanding of the system's interaction with the real world. The detail and focus of the object-oriented view can draw the designer's attention from the wider system implications and obscure the natural organisation of the system.

I still use DeMarco's context diagram as the starting point for functional decomposition and as I move through the decomposition, I begin trying design patterns before looking at the specifics of the object model. List the salient features of the system, recognise the salient features that your methodology identifies, and switch methodologies and models as necessary to complete checks of all features in your list.

Know the benefits and the shortcomings of the methodologies that you use. Understand the forces and the environment present for each step in your development situation and choose the appropriate methodology or the appropriate parts of the methodology. Lastly, let the designers make the design decisions and allow the methodologies to remain the servant of development.