Jump to content

Software design

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by SmackBot (talk | contribs) at 21:06, 27 December 2006 (Date the maintenance tags using AWB). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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.