The design phase of software development deals with transforming the customer requirements as described in the SRS documents into a form implementable using a programming language.
The software design process can be divided into the following three levels of phases of design:
- Interface Design
- Architectural Design
- Detailed Design
Interface design is the specification of the interaction between a system and its environment. this phase proceeds at a high level of abstraction with respect to the inner workings of the system i.e, during interface design, the internal of the systems are completely ignored and the system is treated as a black box. Attention is focussed on the dialogue between the target system and the users, devices, and other systems with which it interacts. The design problem statement produced during the problem analysis step should identify the people, other systems, and devices which are collectively called agents.
Interface design should include the following details:
- Precise description of events in the environment, or messages from agents to which the system must respond.
- Precise description of the events or messages that the system must produce.
- Specification on the data, and the formats of the data coming into and going out of the system.
- Specification of the ordering and timing relationships between incoming events or messages, and outgoing events or outputs.
Architectural design is the specification of the major components of a system, their responsibilities, properties, interfaces, and the relationships and interactions between them. In architectural design, the overall structure of the system is chosen, but the internal details of major components are ignored.
Issues in architectural design includes:
- Gross decomposition of the systems into major components.
- Allocation of functional responsibilities to components.
- Component Interfaces
- Component scaling and performance properties, resource consumption properties, reliability properties, and so forth.
- Communication and interaction between components.
The architectural design adds important details ignored during the interface design. Design of the internals of the major components is ignored until the last phase of the design.
Design is the specification of the internal elements of all major system components, their properties, relationships, processing, and often their algorithms and the data structures.
The detailed design may include:
- Decomposition of major system components into program units.
- Allocation of functional responsibilities to units.
- User interfaces
- Unit states and state changes
- Data and control interaction between units
- Data packaging and implementation, including issues of scope and visibility of program elements
- Algorithms and data structures
- Software Engineering | Requirements Engineering Process
- Software Engineering | Software Process Framework
- Software Engineering | Architectural Design
- Software Engineering | Incremental process model
- Software Engineering | Project Management Process
- Software Engineering | Function Oriented Design
- Software Engineering | User Interface Design
- Software Engineering | System Design Strategy
- Software Engineering | Structured analysis and design with CASE tools
- Software Engineering | Schick-Wolverton software reliability model
- Software Engineering | Software Project Management Plan (SPMP)
- Software Engineering | Jelinski Moranda software reliability model
- Software Engineering | Role and Responsibilities of a software Project Manager
- Software Engineering | Introduction to Software Engineering
- Software Engineering | Software Project Management Complexities
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.