Chapter 6 focuses on Architectural Design in software engineering, explaining how software systems are structured, how their components are organized and communicate, and the importance of using architectural patterns for building complex systems efficiently.
---
- Architectural Design Decisions
- Architectural Views and Representations
- Architectural Patterns
- Application Architectures
---
1. Definition of Software Architecture
> Software architecture involves identifying the subsystems within a system and managing how these subsystems interact and communicate.
---
2. Activities in Architectural Design
- Architectural design is an early stage of the system design process.
- It bridges the gap between system specification and system design.
- It focuses on identifying major components and defining their communications.
---
3. Architectural Abstraction
- Architecture in the Small: Focuses on the structure of individual programs.
- Architecture in the Large: Focuses on large enterprise systems involving multiple interconnected programs across different computers.
---
4. Architectural Views (4 + 1 Model)
| View | Description |
|:----|:------------|
| Logical View | Shows system abstractions as objects or classes. |
| Process View | Illustrates the interactions of runtime processes. |
| Development View | Demonstrates the system's organization for development. |
| Physical View | Describes hardware and software component deployment. |
| +1 (Use Cases) | Connects all views through use cases or scenarios. |
---
5. Architectural Patterns
| Pattern | Description |
|:-------|:------------|
| MVC | Separates system data, user interface, and interaction logic. |
| Layered | Organizes the system into layers, each providing services to the layer above. |
| Repository | Centralizes system data in a repository accessible by all components. |
| Client-Server | Divides system functionality between servers (service providers) and clients (service requesters). |
| Pipe and Filter | Processes data sequentially through discrete transformation stages (filters). |
---
6. Application Architectures
- Data Processing Applications: Handle data in batches without user interaction.
- Transaction Processing Systems: Manage user requests to retrieve or update data (e.g., ATMs, online bookings).
- Event Processing Systems: React to external events and trigger system actions.
- Language Processing Systems: Interpret or compile languages (e.g., compilers, interpreters).
---
4. Key Illustrative Visuals
```
Logical View Process View
| |
Development View β Physical View
\ /
Use Cases
```
Illustrates the multi-perspective approach needed to fully document a system architecture.
---
```
User Interaction --> Controller --> Model --> View --> User
```
Shows how data, user interaction, and presentation are separated for better system modularity.
---
```
Application Layer
--------------------
Middleware Layer
--------------------
Operating System Layer
--------------------
Hardware
```
Demonstrates how complex systems are organized into functional layers to enhance maintainability and scalability.
---
| Insight | Explanation |
|:--------|:------------|
| Architectural design is crucial for large systems. | It provides a structural backbone for scalability and manageability. |
| Multiple architectural views are necessary. | No single view can fully capture a complex system. |
| Architectural patterns support reuse. | They help reuse proven solutions across different projects. |
| Application architectures accelerate development. | They provide templates and best practices for specific system types. |
---
Architectural design is the foundation of reliable, maintainable, and scalable software systems. It requires balancing functional requirements, non-functional requirements (like performance and security), and future system evolutions.