Every design discussion starts with who, what, and why. In Chapter 4, Empathize with Stakeholders you learned how to identify who is affected by the software system and why they care. In this chapter, you’ll learn how to define the what, the requirements, from the perspective of software architecture.
An architecturally significant requirement, or ASR, is any requirement that strongly influences our choice of structures for the architecture. It is the software architect’s responsibility to identify requirements with architectural significance. You’ll do this by thinking about four categories of requirements:
Unchangeable design decisions, usually given, sometimes chosen.
Externally visible properties that characterize how the system operates in a specific context.
Features and functions that require special attention in the architecture.
Time, knowledge, experience, skills, office politics, your own geeky biases, and all the other stuff that sways your decision making.
Let’s take a closer look at these categories of ASRs and learn how to work with stakeholders to define them.
3.129.70.213