Architectural Design
1. Introduction to Software Architecture
- Definition: Software architecture is the structure or structures of a program or system, encompassing:
- Software Components: Such as program modules, object-oriented classes, and databases.
- Externally Visible Properties: Attributes observable by other components or stakeholders.
- Relationships Among Components: Describes how the components interact or depend on one another.
- Purpose:
- Evaluate Design Effectiveness: Ensures the architecture meets requirements.
- Explore Alternatives: Allows consideration of design changes early in the process.
- Risk Reduction: Mitigates risks related to software construction.
2. Importance of Software Architecture
- Communication Enablement: Acts as a shared representation for all stakeholders.
- Foundation for Design Decisions: Highlights critical decisions impacting subsequent development phases.
- Simplified System Representation: Offers a manageable model to understand system structure and intercomponent functionality.
3. Key Concepts in Software Architecture
- Components:
- Databases, computational modules, object-oriented classes.
- Connectors:
- Facilitate communication and coordination between components.
- Conditions:
- Define how components can integrate to form a cohesive system.
- Semantic Models:
- Aid in understanding the overall behavior of the system.
Coupling n Cohesion
Modularization is the process of dividing a software system into multiple independent modules where each module works independently.
Coupling refers to the degree of interdependence between software modules.