| Foundations of Software Architecture and Design |
 |
Overview and definition of software architecture |
 |
Understanding the business context |
 |
Architectural drivers: what they are and how to specify them |
 |
Architectural structures |
 |
Evaluating software architectures |
 |
Documenting software architectures |
 |
Legacy systems |
| Designing Complex Software Systems |
 |
General and concrete quality attribute scenarios |
 |
Architectural tactics and patterns |
 |
Attribute driven design |
 |
Managing trade-offs |
 |
The design process |
 |
Architectural evaluation |
 |
Life cycle adaptation |
 |
Incorporating documentation into the life cycle |
| Managing Software Architecture |
 |
What is software architecture? |
 |
What drives software architecture? |
 |
Articulating and prioritizing architectural drivers |
 |
Managing trade-offs |
 |
Aligning Product and architectural road maps |
 |
Evaluating architectures with respect to the business context |
 |
Creating a project plan with the architecture |
| Software Architecture Specification and Documentation |
 |
Architectural structures and views |
 |
Runtime structures |
 |
Static structures |
 |
Allocation structures |
 |
View based documentation |
 |
View packets |
 |
Notation alternatives |
 |
Additional guidelines |
 |
Incorporating documentation into the life cycle |