Introduction to Architectural Design in Software Engineering
Architectural design in software engineering is about decomposing the system into interacting components. It is expressed as a block diagram defining an overview of the system structure, features of the components, and how these components communicate with each other to share data. It identifies the components that are necessary for developing a computer-based system and communication between them i.e. relationship between these components. It defines the structure and properties of the components that are involved in the system and also the interrelationships between these components. The architectural design process is about identifying the components i.e. subsystems that makeup the system and structure of the sub-system and they’re interrelationship. It is an early stage of the system design phase. It acts as a link between specification requirements and the design process.
System properties of Architectural Design
In software engineering, during the architectural design process, some system properties are focused. Some of them are as follows
- Security: The system is secured against malicious users by encryption or any other security measures. The architectural design process uses a layered architecture with critical assets in the innermost layers.
- Performance: It is nothing but a meantime taken between request and response of the page. The performance of a system can be improved by avoiding critical operations and reducing communication between components. This is possible by using large components instead of small and fine-grained components.
- Maintainability: Architectural design process uses easily modifiable and replaceable components. Consider the components in a manner so that it is easy to change them over time according to the new requirements and build the software with the flexibility to change or maintain.
- Safety: Avoid critical functionalities in small components of the system.
- Availability: Architectural design process includes redundant components and corresponding functions for handling the occurrence of any type of errors.
Decisions for Architectural Design
In software engineering, the architectural design process differs as the system differs depending upon the type of system being developed. But still, there are some common decisions that should be taken care of in any design process are as follows
- How can the system be distributed across the network?
- Which approach can be used to structure the system?
- Is there a generic application architecture procedure that can be used which can act as a template for the proposed system that is being designed and developed?
- Which architectural styles are suitable for the proposed system?
- How can software architecture be documented?
- How can the system be decomposed into modules?
- What control strategy must be used to control the operation of the components in the system?
- How can architectural design be analyzed?
Software Architectural Models
To document the architectural design process, architectural models are used
- Static type of architectural structural model represents the major system components.
- Dynamic type of architectural process model represents the process structure of the system.
- Distribution type of architectural model represents how the component is distributed across various computers.
- Interface type of architectural model represents the interface of the components.
- Relationships type of architectural model represent models such as data flow diagram to represent the component interrelationship.
Architectural design models are application domain-specific and the most common two types of domain-specific models are:
- Generic model: These models are abstractions derived from a number of real systems and encapsulated the characteristics of these systems. This type of model usually follows a bottom-up approach.
- Reference models: These models provide information regarding the class of the system. They are derived from the application domain rather than from existing systems. It usually follows the top-down approach. It provides a comparison between different Software architecture.
Advantages of Architectural Design in Software Engineering
- Architectural design works as a tool for stakeholder communication. It is used as a support or roadmap in the discussion with system stakeholders
- It is used for system analysis. Architectural design is used to analyze whether the system will be able to meet its non-functional requirements or not.
- It facilitates large-scale re-use. The software architecture that is the output of the architectural design process can be reused across a range of the system.
Disadvantages of Architectural Design in Software Engineering
- Architectural design re-use the components, the use of redundant components improves the availability but makes the security of the system difficult to handle.
- Use of large components may improve the performance as large components include all the related properties and function into one component but it reduces the maintainability as it becomes difficult to modify and replace the large component. It involves a very tiresome task.
- Avoiding critical features inside the small components leads to more communication among the components which in turn degrades the performance.
Architectural design is a very important phase and is a multi-step process which represents the data structures, program structure, interface characteristic, and procedural details. Here, in this article, we have discussed the architectural design process and its advantages and disadvantages.
This is a guide to Architectural Design in Software Engineering. Here we discuss the introduction and System properties of architectural design, Software architectural models, Advantages, disadvantages. You can also go through our other related articles to learn more –
- Cohesion in Software Engineering
- Software Engineering Interview Questions
- Data Science vs Software Engineering
- Requirement Engineering