Software Architecture’s Elements
A software system’s architecture should not normally be a uniform monolith.
Instead, it should be a composition and interplay of different elements:
- Processing
- Data also called information or state
- Interaction
Components
Software components are elements that encapsulate processing and data in a system’s architecture.
A software component is an architectural entity that:
- Encapsulates a subset of the system’s functionality and/or data.
- Restricts access to that subset through an explicitly defined interface.
- Has explicitly defined dependencies on its required execution context.
- Typically provides application-specific services.
Connectors
In complex systems, interaction may become more important and challenging than the functionality of individual components.
A software connector is an architectural building block that is responsible for effecting and regulating interactions among components.
Connectors typically provide application-independent interaction facilities.
Examples of Connectors
- Procedure call connectors
- Shared memory connectors
- Message passing connectors
- Streaming connectors
- Distribution connectors
- Wrapper/adaptor connectors