The Software Development Process
The first and most important step in any software project is education. This article contains a brief overview of the software project process. Before beginning a project make sure all parties know what is involved, and the process needed to achieve maximum success with minimal risk. It is recommended that you read The Software Project Survival Guide by Steve McConnell prior to starting a project. With the proper planning your project will stay within budget and schedule, but most of all it will work the way you work!!!!!
The Project Scope is an overview document describing the concepts of the software project. It is a one page document that describes not only what the software will do, it must also include what the software will not do. The project scope also serves as a reference when proposed changes are under review. It is a good idea to give the software a name at this point, the name will most likely change during the life cycle of the project. Referring the software as an entity will give the project team a better sense of purpose, common goals and motivation as opposed to "The Project" or "The Database". This is also a time that potential project risks can be identified and investigated.
As each stage comes to a close, the sign-off document for that stage is signed by all all stakeholders, all levels of the project team must be n agreementregarding the stage of the project, and that the software is progressing towards success.
- Gathering candidate requirements, which is accomplished by interviewing potential users about the system they want and reviewing competitive products.
- Specifying requirements, which is accomplished by committing the gathered requirements to a requirements document.
- Analyzing requirements, which is accomplished by looking for commonalities and differences among requirements and breaking them down into their essential characteristics.
- Revisiting the project risks and assessing any new risks that may have been uncovered during the requirements discovery.
In building construction, the architecture phase is a time during which a general plan for a building is mapped out through the use of scale models and blueprints before the building is actually constructed. Scale models and blueprints provide a means of exploring alternatives more cheaply than using steel, concrete and other building materials. The same applies to software development. The architecture stage is a time when the software is mapped out through the use of design diagrams and prototypes. As in building construction the architecture stage provides a means of exploring alternatives at a relatively low cost.
Any project risks will be addressed and the project altered to reduce the risks by the end of this stage. If any of the stages were skipped or not taken seriously by the team the project is destined to fail. Sadly a large number of projects fall victim to this, due to the fear of budget and schedule overruns. In reality, it costs 50 to 200 times more to make changes to the software after this stage.
During construction, developers begin breathing life into the software by creating the source code that becomes the working computer program. Each developer fills in gaps in the detailed designs, creates source code, runs unit tests and debugs the source code, and integrates the source code with the projects main build. On a well run project, the steady accumulation of functionality during construction gives the whole project a lift. The project spins into a high-performance hum as developers build on each others contributions, and mangers and users grow increasingly confident in the system as they witness the daily accumulation of new functionality. Construction can be the most enjoyable stage of a software project.
System testing is conducted in parallel with construction or a half step behind. It exercises the system from end to end, exposing defects that will be corrected by the developers.
The success of the staged delivery approach relies on bringing the software to a reasonable quality level and embracing all the extra quality assurance and development work that that entails. Bringing the software to a releasable condition eliminates dark corners in which unforeseen work can accumulate, improving status visibility. Driving to a releasable state also eliminates the places where insidious quality problems can hide. Without periodically raising the software's quality to a releasable level , the software will begin a slow slide toward low quality, from whence it may never return.