Architectural Characteristics - Transcending Requirements
- Get link
- X
- Other Apps
Building a system means meeting a set of requirements dictated by the customer. But the customer isn't always going to translate what they want into engineering terms. Even if you say please, they might not even know how. If they ask for an online ordering system, they probably won't specify that it needs to be available 24/7 and auditable for tax purposes. Yet these aspects could mean the difference between project success and failure. Those unsaid aspects are called anything from 'nonfunctional requirements' to 'Architectural Characteristics'.
In their book 'Fundamentals of Software Architecture', Ford and Richards define Architectural Characteristics to have 3 criteria:
- Specifies a nondomain design consideration
Aspects of Architectural Characteristics
Specifies a nondomain design consideration
If you're building an ordering system, then order numbers, customers, items and prices are part of the domain. Reliability and auditability are not, yet they can be a critical part of the system design - that's what makes them architectural characteristics.Influences some structural aspect of the design
Let's stick with our original example - reliability and auditability. Reliability could mean having redundancy to ensure that failures have fallbacks and auditability can mean storing data for some number of years. So these considerations can significantly change the structure of the system.Is critical or important to application success
If the system goes down, our customer will lose their customer and they may not come back. And if the system fails to store tax data, then in the event of a tax audit our customer will be found negligent and could incur significant penalties. Opportunities for project failure abound, and that confirms that these aspects are architectural characteristics in our example.Summary
We've come up with a toy example, but hopefully it illustrates the concept at hand. It's important to identify only critical architectural characteristics to consider for your system because there are more of them than you could incorporate into a system without adding unnecessary complexity. A best practice is to work with your customer to identify the top 3 most important ones. Any more and your system will become too complex than it's worth.
You can categorize architectural characteristics into 2 columns: operational and structural. Operational ACs are things related to operating the system and keeping it running - things like availability and performance. Structural ACs encompass anything related to how the system can be adapted for differing requirements or environments and for how engineers working on it maintain and improve it - configurability and maintainability for example.
- Get link
- X
- Other Apps
Comments
Extremely useful information which you have shared here about Online Food Ordering Platform for us .This is a great way to enhance knowledge for us, and also beneficial for us. Thank you for sharing an article like this.
ReplyDelete