Software Architecture
Software architecture encompasses the structure of large software systems.
It provides an abstract view of the system by:
- Eliminating implementation, algorithm, and data representation details.
- Focusing on the behaviour and interaction of black-box elements.
The architecture of a software system consists of its software elements, the externally visible properties of those elements, and the relationships among them.
Architecture Business Cycle
The relationship between software architecture and its environment forms a cycle called the Architecture Business Cycle (ABC).
- Software architecture is influenced by technical, business, and social factors.
- The resulting architecture also affects these environments.
Where Do Architectures Come From?
Software architectures are the result of a set of business and technical decisions.
Requirements specify some, but not all, of the desired properties of the final system.
Failure to satisfy both documented and undocumented constraints can cause problems.
Architectural Influences
Stakeholders
- Different stakeholders have different concerns and goals.
- Some stakeholder goals may be contradictory.
Development Organization
The organization influences architecture through:
- Immediate business goals
- Long-term business goals
- Staff skills
- Schedule
- Budget
Architect’s Background and Experience
Architects use their previous experience to:
- Repeat successful approaches.
- Avoid repeating past failures.
Technical Environment
The technical environment influences architecture through:
- Standard industry practices
- Common software engineering techniques
Managing Architectural Influences
Architects need to understand the nature, source, and priority of project constraints as early as possible.
Architects should:
- Identify and actively engage stakeholders.
- Understand stakeholder needs and expectations.
- Use architecture reviews.
- Use iterative prototyping.
Architecture as a Feedback Cycle
Business goals, product requirements, architect experience, software architecture, and field systems form a cycle with feedback loops.
This cycle can help a business:
- Handle growth.
- Expand into new enterprise areas.
- Take advantage of previous investments in architecture and system development.