- Design Engineering
- Design Process And Design Quality
- Design Concepts
- The Design Model
- Creating An Architectural Design
- Software Architecture
- Data Design
- Architectural Styles And Patterns
- Architectural Design
- Conceptual Model Of UML
- Basic structural modeling
- Class diagram
- Sequence Diagram                           Â
- Collaboration Diagrams
- Use Case Diagram
- Component Diagrams
What is design?
Design creates a representation or model of the software, but unlike the requirements model (that focuses on describing required data, function, and behavior), the design model provides detail about software architecture, data structures, interfaces, and components that are necessary to implement the system.
Elements of a system
Architecture: This is the conceptual model that defines the structure, behavior, and views of a system. We can use flowcharts to represent and illustrate the architecture.
Modules: These are components that handle one specific task in a system. A combination of the modules makes up the system.
Components: This provides a particular function or group of related functions. They are made up of modules.
Interfaces: This is the shared boundary across which the components of a system exchange information and relate.
Data: This is the management of the information and data flow.
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 or phases of design:
Interface design
Architectural design
Detailed design
Interface 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 focused 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 of 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
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 include:
i. Gross decomposition of the systems into major components.
ii. Allocation of functional responsibilities to components.
iii. Component interfaces.
iv. Component scaling and performance properties, resource consumption properties, reliability properties, and so forth.
v. Communication and interaction between components.
Detailed design
Detailed 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.
Quality guidelines
A design should exhibit an architecture that
(1) has been created using recognizable architectural styles or patterns,
(2) is composed of components that exhibit good design characteristics
(3) can be implemented in an evolutionary fashion, thereby facilitating implementation and testing.A design should be modular; that is, the software should be logically partitioned into elements or subsystems.
A design should contain distinct representations of data, architecture, interfaces, and components.
A design should lead to data structures that are appropriate for the classes to be implemented and are drawn from recognizable data patterns.
A design should lead to components that exhibit independent functional characteristics.
A design should lead to interfaces that reduce the complexity of connections between components and with the external environment.
A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis.
A design should be represented using a notation that effectively communicates its meaning.
Quality attributes
Functionality is assessed by evaluating the feature set and capabilities of the program, the generality of the functions that are delivered, and the security of the overall system.
Usability is assessed by considering human factors, overall aesthetics, consistency, and documentation.
Reliability is evaluated by measuring the frequency and severity of failure, the accuracy of output results, the mean-time-to-failure (MTTF), the ability to recover from failure, and the predictability of the program.
Performance is measured by considering processing speed, response time, resource consumption, throughput, and efficiency.
Supportability combines the ability to extend the program (extensibility), adaptability, serviceability—these three attributes represent a more common term, maintainability—and in addition, testability, compatibility, configurability (the ability to organize and control elements of the software configuration, the ease with which a system can be installed, and the ease with which problems can be localized).