Incident Forces
I came across this talk on my travels researching good architecture. Although I had this playing in the background, one particular segment caught my attention, how stakeholders influence software architecture. These stakeholder could be:
- Customers
- Users
- Business owners
- Marketing / Sales
- Developers
- Testers
- Management
- Other systems
Robert describes this as 'incident forces' which resembles a free body diagram (FBD) which you may have seen in any physics or mechanics class. Each force in the FBD represents one stakeholder which just like a FBD for a particle in static equilibrium the sum of the forces equal zero. That is:
Robert describes how these can be factored out into four groups (and probably more):
The interesting thing about his idea about modelling this as a FBD is that we now have these forces which appose each other and we can now weight and quantify what is important in our project. This is obviously a very abstract way of thinking about this but it helps us break these important stakeholder expectations down. These groups are as follows:
Functions
What is it used for?
- Features
- Use cases
- Functionality
Qualities
How well should it work?
- Non-functional requirements (NFRs)
- Performance
- Scalability
- Maintainability
- Usability
- Fault tolerance
- Availability
Constraints
What limits our approach?
- Cost
- Compliance
- Time
- Staff capacity
- Staff experience
Principles
How would we like to build it?
- Architectural styles
- Technology choices
- Standards
By using first principles we can plan what is important in our architecture to ensure that we meet stakeholders expectations. That is, define who your stake holders are and design in alignment with what is important to their expectations.