Software Design Process
- Requirement Specification
- Design and implemantation
- Testing and maintenance
- Documentation
1. Requirement Specification
- Problem understanding - Look at the problem from different angles to discover the design requirements.
- Identify one or more solutions - Evaluate possible solutions and choose the most appropriate depending on the designer's experience and available resources.
- Describe solution abstractions - Use graphical, formal or other descriptive notations to describe the components of the design.
- Repeat process for each identified abstraction until the design is expressed in primitive terms.
- Any design may be modeled asa directed graph made up of entities with attributes which participate in relationships.
- The system should be described at several different levels of abstraction.
- Design takes place in overlapping stages. It is artificial to separate it into distinct phases but some separation is usually necessary.
2. Design and implementation
- Architectural design: Identify sub-systems.
- Abstract specification: Specify sub-systems.
- Interface design: Describe sub-system interfaces.
- Component design: Decompose sub-systems into components.
- Data structure design: Design data structures to hold problem data.
- Algorithm design: Design algorithms for problem functions.
3. Testing and maintenance
Testing
The testing process involves development of a test plan, executing the plan and documenting the test results. Objectives of testing:
- To check if the system meets the requirements and be executed successfully in the Intended environment.
- To check if the system is “ Fit for purpose”.
- To check if the system does what it is expected to do.
Testing methodologies:
- Black box testing
- White box testing
- Incremental testing
- Thread testing
Maintenance
After the software is released and the client starts using the software, maintenance phase is started. 3 things happen - Bug fixing, Upgrade, Enhancement
- Bug fixing – bugs arrived due to some untested scenarios.
- Upgrade – Upgrading the application to the newer versions of the software.
- Enhancement - Adding some new features into the existing software.
4. Documentation
Investigate the document formatting/template used in the software requirements document. This includes title page, page numbering format, section numbers and revision history. Use the same or similar document format for the software design document. Incorporate some, if not all, of the following elements:
- High level summary
- Definitions of any non-standard symbols, shapes, acronyms, and unique terms in the document
- How each requirement will be achieved
- Assumptions
- Constraints
- Software risk analysis
- Development procedures and coding guidelines
- Standard languages and tools
- Definitions of variables and a description of where they are used
- Logical structure and logical processing steps
- Error, alarm and warning messages
- Security measures
- Performance
- Reliability
Consider how to structure the design document. This is especially important when you’re designing a large, complex system. Break the system into logical parts and use these parts as the section headers in the software design document. If the system is really large, create multiple design documents, each one dealing with a particular part of the system.
Give each design element a unique identifier. This will allow it to be traced back to the applicable requirement and eventually to the applicable testing.
Include enough detail for the programmers, while incorporating some high-level summaries for the managers.
Read more: How to Write a Software Design Document | eHow.com
More detailed, see: