![]() |
|||||||||||
| Process | Why? | Experience | Quote | Login | |||||||
The standard software development process used by Aardstorm is highly flexible, and covers the entire software life cycle. It is based on modern 'agile' software development techniques in which software is progressively delivered in relatively small portions of functionality, or 'increments'. Each increment builds on the functions of the preceding ones until the complete software has been developed. At each increment, the client is given the opportunity to evaluate and review the software as so far developed, and is expected to feed back any comments or changes to the requirements for incorporation into subsequent increments. This process is illustrated by the diagram below.
Aardstorm can be involved with the software development aspects of a project during any or all of these phases, to the extent required by the client. If you would like Aardstorm to provide a quote for its services on your project, see here.
At the start of a development project, the initial functional, design, and technology apsects of the product or system are explored, with the aim of producing a definition of the requirements for that product or system. An initial architectural design will also be developed, and used to estimate and plan the remainder of the project, for example by identifying the number and size of subsequent development increments. This phase typically starts prior to the formal start of the project, during the quotation process.
For larger or more complex projects, this phase may also include the development of one or more functional prototypes to assist with the requirements definition process. Such prototypes are typically developed as early increments, but the resulting software should not be included directly in the production software, since it will have been developed at lower quality.
The basic functional and other requirements for the software are established, in so far as they can be at this early stage of the project. It is expected that the requirements will inevitably change, especially in detail, as the project progresses. The incremental nature of the Aardstorm process is deliberately designed to accommodate such change. However, every effort is made to formulate a good set of requirements that can be used drive the initial design and planning activities.
The basic requirement definitions are further elaborated to create preliminary functional and architectural design specifications. At this stage decisions are typically taken to partition the design into hardware and software components. The design is only developed in sufficient detail to enable this decomposition, and to facilitate the planning of the subsequent development.
The design activity often also triggers the discovery of further requirements. Analysis and design therefore proceed more as parallel rather than serial activities.
The preliminary design and initial requirements are used to identify portions of functionality for subsequent development as individual increments. The size of each increment is estimated and adjusted so that it takes approximately 4 weeks to develop. Functional dependencies between increments, together with their perceived likelihood of change and degree of risk, are used to determine the order in which they will be developed. This results in an overall project plan and delivery schedule, which is agreed with the client. Although only shown as an explicit activity within the definition phase, planning continues throuhgout the project.
Once the initial project definition phase is complete, and a detailed project plan has been produced and agreed with the client, development proceeds with each identified increment in turn. The software for each increment is analysed and designed in detail, then implemented, tested, and delivered to the client for review. The client's comments and/or changes are fed back into the development of subsequent increments.
The basic requirement definitions produced and allocated to each increment during project definition are further elaborated, both in detail and to incorporate changes from reviews of preceding increments. The requirements are defined at this stage with particular reference to subsequent testing of the developed software.
The detailed requirement definitions are used to elaborate the preiliminary functional and architectural design specifications with sufficient detail to allow implementation of the software for this increment to proceed. Again, the detailed analysis and design activities feed off each other as parallel activities.
The individual software components are implemented in accordance with the detailed design, and to meet the detailed requirements for this increment. Certain components may be only partially implemented, so that only the functionality for this increment is produced, while others may be modified to add new functions to those of preceding increments.
The implemented software components are rigorously tested, both individually and when integrated together, to ensure that they conform both to their designed behaviour, and the detailed requirements. A level of testing appropriate to the needs of the project is selected, to ensure that the software has been developed with the required quality and reliability.
Once the software for each increment has been fully implemented and tested, it is delivered to the client, who should subject it to their own review, evaluation and testing. Since Aardstorm is too small to provide any internal independent review or testing, it is important for the client to provide this, to assure themselves that the software is being developed in accordance with their requirements. Any comments are fed back and incorporated into the development of subsequent increments.
This process of early and frequent client review and evaluation may also trigger changes to the requirements for the software; the client may realise that what was asked for is not actually what is wanted. The Aardstorm process is designed to accommodate such change, for example by trading off the new or altered functions against those that have not yet been developed and may no longer be required.
Once all of the increments have been developed, the completed system is ready to be deployed to its intended location, or the completed product is entered into production. This may be either preceded (production release) or followed (system installation) by final acceptance testing. This marks the end of the software development project. The software may then be subject to ongoing maintenance, for example to accommodate minor in-service changes, until the system is finally decomissioned or goes out of production.
The final, complete system or product is further tested against its requirements to ensure that it is ready for deployment.
The complete system is either installed at its intended location, or put into volume production.
This activity covers ongoing, post-deployment support and maintenance while the system is in use, or the product is in production. It also includes minor enhancements to the system or product; major enhancements are likely to be handled as further development projects, repeating the life cycle process. This continues until the system is finally decommissioned, or the product goes out of production.
| (c) Aardstorm Software 2005 | |
| | Home | Login | Process | Why? | Experience | Quote | Contact | Links | |