Description
Code does not live in isolation. Once it is deployed to production the system needs to fulfill the expected level of performance. It needs to be reliable, available based on the SLA (Service Level Agreement) and scale if needed. It does not matter how good a program is in terms of UI or features, it is useless if it is too slow and it lacks availability when the user needs it. Performance, Reliability, Availability and Scalability (PRAS) are all run-time quality attributes that need to be carefully design and implemented in order to make a system usable. Any component, small or large, can impact the behavior of a system directly or indirectly by its effect on other components.
Overview
Why does an architect need this skill?
No software product can exist without a solid foundation. The Quality Attributes provide the solution for this foundation. Since the architect is the key person in building the software, they need to be the master of the QAs.
Common tasks involved in this skill?
The architect needs to be able to describe what each quality attributes represents, how to measure each attribute and how the attributes affect each other. They need to be able to prioritize the importance of the Quality Attributes and its effect on the project since inception to production and throughout maintenance.
What is their ownership in this skill?
The architect is the main owner of the Quality Attributes (also knows as non-functional requirements).
Name an example of how an architect would use this in daily activities?
They need to be able to measure the attributes for an existing software application.
They need to be able to identify the risks and recommend the most optimal solution.
Describe why an architect should be involved in this skill at a corporate level
Since no one else owns the non-functional requirements, aka Quality Attributes, the Architect needs to be the master and identify these attributes as well as be responsible for their implementation.
Primary push back and/or challenges for architects
The functional requirements usually take priority. No one except the Architect owns the quality attributes. Therefore, it is the Architect ’s job to make sure all the stakeholders understand how important is to spell out the non-functional requirements, prioritize them, and allocate the time and resources to take care of the QAs throughout the life cycle of the project.
How would a stakeholder engage an architect for assistance utilizing this skill?
During the early stages of a project the Architect needs to be involved in the discussions that shape the definition of the project. This is to help identify the constraints and spell out the trade offs between the Quality Attributes.
Sub-Capabilities
Performance
Performance is the driving factor for any system architecture.
Iasa Certification Level | Learning Objective |
---|---|
CITA- Foundation |
|
CITA – Associate |
|
CITA – Specialist |
|
CITA – Professional |
|
P.R.A.S. – Knowledge Overlap
Iasa Certification Level | Learning Objective |
---|---|
CITA- Foundation |
|
CITA – Associate |
|
CITA – Specialist |
|
CITA – Professional |
|
Resources
Articles
- IASA ITABoK
- CITA-S Overview Manual
- Fielding’s Dissertation about REST
- SLA vs. OLA
- MSDN: Quality Attributes
- MSDN: Understanding Availability, Reliability, and Scalability
- MSDN: Overview of System Performance
- A plain English introduction to CAP Theorem
- CAP Twelve Years Later: How the “Rules” Have Changed
- SEI Quality Attributes
- SEI Reasoning about Quality Attributes
Blogs/Webcasts/News/Reference sources
- The Eight Fallacies of Distributed Computing
- SEI Blog “Evolutionary Improvements of Quality Attributes: Performance in Practice”
Training –
Certifications –
Books
- Less Bass, Paul Clements, Rick Kazman, “Software Architecture in Practice”, Third Edition, Addison-Wesley, 2013
- Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy, “Software Architecture: Foundations, Theory, and Practice”, 2008
Author
Danut Prisacaru
Sr. Principal/Engineer V (Integration Architect) – The Advisory Board Company
Danut Prisacaru has been a Software Engineer for over 20 years and a Software Architect for over 7 years serving in different roles: Application Architecture, Integration and Solutions Architecture. His current focus is SOA with Web APIs and Lightweight ESBs and API Management tools to serve the business integrate complex parts and components in an efficient manner.
Danut has BS in CS from the Technical University “Gh. Asachi” Iasi Romania and holds a certification from IASA as well as other industry organizations.
Danut’s hobby is Philosophy that helps him be a better software architect.