Software design
![]() | It has been suggested that this article be merged into software development process and Talk:Software development process#The Software design article should be merged here. (Discuss) Proposed since December 2006. |
Software design is the process whereby software developers arrive at solutions for problems that currently have no acceptable (software) solution.
Software is generally written either to speed up a particular process that is currently performed manually, or to provide users with an entertaining experience in the form of a game or other media application.
Generally software design is performed using a programming language in an Integrated Development Environment (IDE).
Design stages
Software design typically consists of the stages listed below. At each stage, suitable documentation should be produced for use in the current and subsequent stages. Depending on the size of the project, project management and resource management tools may also be used.
- Opportunity
- State the perceived benefits of the software to be developed.
- Scope
- State the boundaries of the undertaking. The design scope will sometimes be split into separate phases in order to make the project more manageable. It is worth noting that "scope creep" is a frequent cause of project overruns.
- Risk
- Assess and document the inherent risks of the development project and target software.
- Requirements
- State the requirements that must be met in order to fulfil the project scope. This includes not only the provision of software and documentation, but also the ability to install the software and to revert or recover it in case of unforeseen problems.
- Design
- Document the interface with people (screens, reports) and external components (software and hardware).
- Architecture
- Describe the internal components of the software. General-purpose, modular software should be used where possible to promote reusability and avoid logic duplication.
- Development
- Development and procurement of software and hardware.
- Testing
- A test plan should be drawn up before testing begins. These should include tests of each component as well as tests of the completed software as a whole.
- Implementation
- Implement and test the software according to the design.
- Review
- Reviews are a useful way of identifying improvements in the project process that can be applied to future projects.
This is the skeleton of the basic process. Over time, the requirements for the solution of the problem may shift or change during the implementation phase, leading to a development cycle with several re-iterations of the entire process.