|
Tharwat Consulting Group considers the software development process as naturally partitioning into several stages, including:
- Project Scoping
- establishing the business case for the project, determining the project scope and initial requirements, obtaining management buy-off on further investigation.
- Design Elaboration
- refining the project requirements, establishing priorities, determining the risks involved and investigating approaches, setting a project schedule.
- Implementation
- an iterative process of designing, building, and testing code that implements progressively larger subsets of the project requirements, while refining
the requirements to reflect increased understanding and refactoring the existing code as needed to preserve a clean object structure.
- Delivery
- extensive testing of the completed product specifically to detect flaws, with development efforts directed exclusively toward correcting the flaws.
These stages are not exclusive, and often overlap to some extent. They also may be repeated during the course of a larger project. The last two stages, in particular, may be
repeated many times over the lifespan of an application.
Various tools are available to assist with the different stages of the project, many of which have been incorporated into the Unified Modeling Language (UML).
Use Cases, which provide scenarios detailing the operation of the system from the standpoint of the user, make up an important part of the Design Elaboration stage for systems centered around user interaction.
Class Diagrams at various levels of detail can be useful during both the Design Elaboration and Implementation stages, as can Interaction and Activity Diagrams.
Tharwat Consulting Group
advocates the use of these tools whenever appropriate - particularly for systems defined in terms of user interactions. In such cases effort invested in providing a
proper foundation for the implementation will be more than repaid by reducing the amount of restructuring and bug fixing required later.
During the Implementation stage, design patterns also become extremely useful. These
distillations of common approaches to problem solving in software provide conceptual building blocks which can be plugged directly into designs. Besides aiding the clean
structuring of the design, they allow complex concepts to be clearly communicated to others involved in the project. Tharwat Consulting Group strongly believes in the utility of design
patterns and recommends that all developers become familiar with at least the basic set described in the classic book on the topic.
Refactoring
, the process of modifying existing code to give a cleaner structure, plays an extremely important role throughout the Implementation stage. Proper use of refactoring is
essential to quality code, and needs to be done continuously as new code is written. This practice pays off in dramatically reduced costs for maintenance and enhancement efforts. |
|