Ashford Technical Software
Engineering and Business Solutions
Through Innovative Technology
Software Project Management - The Development Process
The software development process consists of six distinct activities: definition of requirements, design, implementation (coding), integration, testing, and documentation. In planning a successful software development project place equal emphasis on all six activities. Neglecting any one of the six activities can have a negative impact on the development process as well as long-term software maintenance and support costs.

Requirements Definition
A clear definition of system requirements is the essential first step in any software development project. Generally this is embodied in a detailed software specification. The more clearly the requirements are defined, the easier the entire development project becomes.

Software Design
The single most neglected activity in software development is design. Frequently software development teams are pushed to start coding before an adequate design is complete. Shortchanging design is like starting to build a house before the foundation is finished or trying to layout a circuit board before the schematic is complete. A good software design should include the following: an overall architecture, a functional partitioning into modules, a database scheme, communication protocols, etc. For a company to remain competitive, its software must adapt to new requirements and enhancements. A good design can provide this flexibility and thereby reduce long-term software maintenance and support costs.

Implementation is the activity of actually building the software and writing the code in an appropriate language. Given a good software design, the implementation activity is relatively straightforward. However, since implementation is generally the most time consuming activity, adequate methods for monitoring progress (i.e. achieving milestones) must be in place.

A team of developers develop most large software systems. A good design breaks the software into functional modules (units) that can be developed by one or two developers. The integration activity involves pulling all the individual modules together and testing the system as a whole (each module should be tested standalone before the integration process).

Testing is the key to delivering a quality product. Testing scenarios should simulate the actual production environment. Frequently subtle problems can only be identified by running the software under extreme conditions (large numbers of users, high transaction volume, etc.). Personnel outside of the development team (actual users) should do testing if possible. Automatic testers should be used when appropriate. Testing real-time software should include the range of conditions expected from the hardware.

Documentation is always a problem; no one is interested in documentation after completing a development project. As such, the best approach to documentation is to make it a required part of the entire project. For example, the design activity is not complete until a full set of system diagrams is available; likewise a module is not considered complete until the associated documentation is complete. The documentation activity that occurs at the end of a project should be nothing more than pulling together all the documents developed during the project.

      Copyright 1998-2009 Ashford Technical Software, Inc. All Rights Reserved.