Skip to main content

Assessing quality in software architectures

Four methods to improve your software quality

Jorge Diaz (jldiaz@us.ibm.com), Senior Certified IT Architect, IBM Japan
author photo
Jorge Diaz is a Senior Certified IT Architect within IBM Software Services for WebSphere, focusing on technology transformations and solution architecture consulting. He has extensive experience in a variety of industries, and a proven track record of leadership with large customers adopting service oriented architectures. Jorge holds a B.S. in Computer Science, a Master of Software Engineering, and a variety of technical certifications. He is a steering committee member of The Open Group's SOA Working Group, a senior member of IEEE, and a member of ACM and SEI.

Summary:  This article describes approaches for understanding the quality of existing software architectures. The intention here is not to deliver a comprehensive reference for software architecture assessment or quality research efforts but to provide descriptions of helpful methods in the space. This work pursues the question: How can the quality of a software architecture be better understood and enhanced? There are various possible answers; this article’s core position is that quality can be improved through architectural assessments.

Date:  04 Dec 2007
Activity:  1901 views

Introduction

The SEI has published many works about software architecture quality. This article describes, at a high level, four of SEI's assessment methods. For further details, including inputs/outputs for each step and case studies, please refer to the Resources section.

In this article, learn about four software architecture assessment methods defined by the Software Engineering Institute (SEI) at Carnegie Mellon University. The assessment methods can help you analyze whether a software architecture design is suitable for a given set of requirements. This is important because requirements provide the context from which quality expectations are determined; if the requirements of a software effort are satisfied, its quality goals should also be fulfilled.

Where appropriate, activities will be positioned within the software life cycle (SLC) model specified by the Rational Unified Process (RUP). The model was chosen because of its popularity across modern development efforts throughout the industry. For more information on integration with the methods described here, see Resources.


Background

Before we discuss specific assessment methods, the following sections expand on key background concepts.

Quality

Defining quality is not as straightforward as it might seem. Initially it might be something like "quality is what is good," or "quality is good craftsmanship." Everyone agrees about the importance of quality in achieving successful results, in almost any domain. For example, in team sports, the quality of the team’s chemistry frequently signifies the difference between losing and winning. In cooking, quality ingredients often mark the difference between an average meal and a great one. Such positive connotations can be applied to software quality: the greater the quality, the greater the chances of project success.

Projects often have goals for enhancing quality, while also targeting an increase in features and decrease in schedule. This is typically not feasible, as changes are realistically possible for only two out of the three options, not all three. For example, an increase in quality and features requires more time to complete the tasks. If more time is not scheduled, people will have to spend less time on each task (including testing), thus possibly impacting the quality of their work.

Methods ease the dependency among the three areas. If, for instance, there were a method that allowed features to be added more efficiently (maybe the addition of a simple-to-use, specialized CASE tool), the schedule and overall quality might not be affected as much. The methods described later in this article help address the dependencies, with the focus on improving quality.

Quality attributes

Understanding how to enhance quality should be a priority on any software effort. Before quality can be improved, it needs to be measured and analyzed. Quality attributes provide a context for measuring and analyzing quality.

Quality attributes are the elements that characterize quality of a specific context, such as performance, security, portability, functions, and so on. Each of these attributes are not absolute quantities; their relevance is directly tied to the given circumstances. For example, if a customer does not care much about portability (perhaps all systems are running the same operating system), but cares a lot about performance, the performance attribute will be prioritized over portability. This allows for organizing tasks according to what is relevant to the customer.

To be able to properly measure the attributes, further task decomposition must occur. For instance, the performance attribute might be decomposed into data latency and transaction throughput. At this point, possible metrics to be used become more obvious. Each of these refined entities can be further decomposed into specific scenarios, which are a great way to elicit requirements information.

The relationship between requirements and quality attributes helps in understanding the suitability of software architectures. Without such mapping, it's harder to really understand why certain features were designed into architectures. Is it because it makes sense to the designer? Is it something that trade magazines have been proposing? Or is it something that has been specified by the stakeholders? The relationship between requirements and quality attributes also helps to effectively prioritize work, because it helps clarify what is important to the client.

You can use quality attributes to qualify specific scenarios, which serve as great eliciting tools for further design refinement.

Software architecture analysis

Software architecture enables the delivery of complex software systems. A software architect does not focus on every detail, but on those that have a high impact on the solution at hand. Like building architects, software architects don't care so much about the detailed techniques necessary for pouring concrete for constructing a house, but care about the feasibility of a specific house to be constructed. Given the interconnections between elements of a solution in modern software projects, it would be fairly difficult for one person to keep track of all of them. One of the most important tasks of a software architect is to break the complexity down into manageable parts by identifying the elements that are the most relevant for success. The next logical step is to research the dynamics among quality, quality attributes, and software architecture to better understand how quality can be enhanced. To efficiently achieve that goal, a relevant analysis approach, as described in this article, should be followed.


Assessment methods

Successful architectures follow various guidelines and best practices. SEI has done extensive research in this area, leading to the creation of several methods for the improvement and assessment of architectures. The four most representative methods are:

QAW is executed before the architecture has been defined, ARID during design efforts, while ATAM and SAAM are executed after the architecture has been completed. The execution of the elicitation part of these methods is lead by a facilitator. See Resources for more information on these methods.

Quality Attributes Workshop method

The QAW method is an approach for discovering quality attributes before the software architecture is created. Achieving particular qualities, such as performance or security, is highly dependent on well-designed software architecture.

It is not uncommon for quality attributes to be often missing or not specified completely. This can spell disaster later in the life cycle, when the solution is implemented. For example, if system security is not well defined early on, it's hard to add it later because it is an attribute that affects many levels of a solution, from components to infrastructure elements.

The QAW elicitation activities are executed in a workshop composed of facilitators and system stakeholders. The QAW is divided into eight steps, as shown in Table 1.


Table 1. QAW steps
StepDescriptionActions
1 QAW presentation and introductions QAW facilitators describe rationale for the workshop, steps involved with QWE, and expectations from the effort.
2 Business and mission presentationA stakeholder presents business and mission drivers for the system. Facilitators capture relevant information.
3 Architectural plan presentationAt this point in the SLC of the solution, there might not be a detailed system architecture. Might have high-level descriptions, diagrams, or other elements with technical details. A technical stakeholder presents them to attendees. Facilitators continue to capture important aspects for later analysis.
4 Identification of architectural driversFacilitators take a break from the main group and consolidate notes. The documented important architectural drivers are presented back to stakeholders for consensus.
5 Scenario brainstormingOnce the architectural drivers are agreed upon, facilitators serve as catalyst for scenario generation activities. Each stakeholder defines scenarios that satisfy their concerns. Do at least two round-robin passes. Facilitators ensure there is at least one scenario per architectural driver.
6 Scenario consolidation Facilitators query stakeholders for possible scenario consolidations, allowing a better focus on more robust scenarios.
7 Scenario prioritization Driven by stakeholders, desired outcome is a set of goals prioritized by what is more important to the project at hand.
8 Scenario refinement Refine top four or five scenarios (depending on time), clarifying their stimulus, response, source of stimulus, environment, artifact stimulated and response measure.

The outputs of the QAW effort are a list of architectural drivers, the scenarios, a prioritized list of scenarios, and the refined scenarios. You can use this information to refine requirements, develop prototypes, influence design decisions, and so forth.

Architecture Tradeoff Analysis Method

The QAW method yielded documentation and prioritization of quality elements before an architecture was laid out. The ATAM assumes that an architecture has already been delivered. Within the ATAM, the QAW efforts can be reused to deliver a clear quality attribute definition. The ATAM includes "trade-offs" because it describes how well an architecture satisfies specific quality goals, but also provides insight into the trade-off those attributes have in the quality of the architecture.


Table 2. ATAM steps
StepDescriptionActions
1 Present the ATAM Similar to QAW Step 1.
2 Present the business drivers Similar to QAW Step 2.
3 Present the architecture Project architect presents the architecture, focusing on how it meets the business drivers.
4 Identify the architectural approaches Focusing on the drivers to be addressed, the architect identifies the approaches taken during construction of the architecture design. Facilitators document them (they are not discussed yet).
5
Generate the quality attribute utility treeAllows for better visualization and organization of the quality attributes related to the project. QAW steps can be very useful here. Attributes are decomposed all the way to their supportive scenarios.
6 Analyze the architectural approaches Architectural approaches found in Step 4 are compared against scenarios at the leaves of the quality attribute utility tree to better understand if the approaches taken match with stakeholders’ driven scenarios. Trade-off points and risks are identified.
7 Brainstorm and prioritize scenarios To make sure that no important details are ignored, another round of scenario finding activities is executed with stakeholders. Findings are prioritized (a vote is taken) and documented.
8 Analyze architectural approachesNew scenarios might exist so Step 6 activities are executed, focusing on the highly prioritized scenarios.
9 Present the resultsInformation -- approaches, scenarios, tradeoffs, risks -- is presented to stakeholders. Can make a suitability decision regarding the architecture and needs of the stakeholders.

ATAM provides a way to conduct architectural reviews to assess the suitability of the current architecture with its business drivers. It helps you to better synchronize stakeholder needs and solution design.

Software Architecture Analysis Method

SAAM, which pre-dates QAW and ATAM, is one of the earliest documented approaches for analyzing software architectures. It provides a simpler approach than ATAM. One of the motivators for SAAM was that many architects make claims that are hard to sustain, such as "my architecture is easily maintainable." Some of the SAAM steps match some of the ATAM steps; differences are noted in Table 3.


Table 3. SAAM steps
StepDescription
1 Develop scenarios
2 Describe architecture(s)
3 Classify and prioritize the scenarios
4 Individually evaluate indirect scenarios. Indirect scenarios define the areas in which there is no match between a scenario and the architecture approach described in Step 2.
5 Assess scenarios interactions. Similar to the QAW Step 6 consolidation activities.

SAAM provides a way to attach measurable quality attribute scenarios to general attribute claims, enabling circumstances that are more directly tested.

Active reviews for intermediate design method

Both ATAM and SAAM focus on completed architectures. The ARID method focuses on incomplete architectures. The benefit is that you don't have to wait until the architecture design is complete to understand if it is heading in the right direction. The steps are shown in Table 4.


Table 4. ARID steps
StepDescriptionActions
1
Identify the reviewersReviewers in ARID are the design stakeholders -- parties that have an investment in the crafting of a robust design.
2
Prepare the design briefingGoal here is for the designer to present it in enough detail so a reviewer could use the design.
3 Prepare the seed scenarios Executed by the facilitator and the designer.
4 Prepare the material
5 Present ARIDSimilar to Step 1 in QAW and ATAM.
6 Present the design
7 Brainstorm and prioritize scenariosJust as in ATAM, scenarios are used for proper requirement coverage.
8 Apply the scenariosBeginning with scenarios at the top of the prioritization list, pseudo code is used by reviewer to verify applicability of the scenarios.
9 Summarize Outcomes of assessment effort are documented and delivered to appropriate stakeholders.

Among the methods described in this article, ARID is the newest. Because it shares many of the characteristics of the other methods, it reuses many of their proven techniques.


Usage patterns

In real life these methods would be used within the context of a process framework. This is where RUP comes into the picture. RUP defines a proven software life cycle, with documented phases, well-defined disciplines, and pragmatic roles. A core principle of RUP is that it is an architecture-centric process: architecture is vital to the success of any application using RUP. The bulk of architecture development is delivered during the initial life cycle phases, and modified as needed in the later phases.

QAW fits best within RUP's inception phase, as it is then that the ideas shaping the to-be architecture are shaped. QAW can also be used in later phases to refine initial findings. The Requirements discipline would benefit from the extra focus on quality attribute analysis that QAW brings to RUP.

ARID should be executed in RUP's elaboration phase as it is at this phase that the software architecture is solidified. ARID would help in various review efforts executed as part of the RUP's Analysis and Design discipline.

ATAM/SAAM effort can occur anywhere where in the life cycle where an architectural review is needed. A good fit would be within RUP's construction phase, as it is at this phase that resources will begin executing on architecture plans.. ATAM's ability to compare delivered architectures against quality goals make it ideal for the reuse of QAW outputs.


Summary

The following table summarizes the recommendations for using the methods described in this article. They are listed in order of usage in the RUP SLC phases. Roles and disciplines are also listed to better position the effort within existing knowledge areas.


Table 5. Method and role matrix
MethodRoleDisciplinePhase
QAW Software analyst Requirements Inception
ARID Technical reviewer Analysis & Design Elaboration
ATAM/SAAM Software architect Analysis & Design Construction

Using assessment methods encourages a better understanding of current architectural designs, and enables a more efficient determination of quality in software architectures. Matching requirements to scenario-driven quality attributes encourages more accurate software architectures. The methods described in this article serve as catalysts for these types of connections, allowing for the externalization of key relationships not clearly seen before. Using the assessment methods can help ensure the suitability of architectural designs, and the enhancement of their quality.


Resources

Learn

Get products and technologies

  • Download IBM product evaluation versions and get your hands on application development tools and middleware products from DB2®, Lotus®, Rational®, Tivoli®, and WebSphere®.

Discuss

About the author

author photo

Jorge Diaz is a Senior Certified IT Architect within IBM Software Services for WebSphere, focusing on technology transformations and solution architecture consulting. He has extensive experience in a variety of industries, and a proven track record of leadership with large customers adopting service oriented architectures. Jorge holds a B.S. in Computer Science, a Master of Software Engineering, and a variety of technical certifications. He is a steering committee member of The Open Group's SOA Working Group, a senior member of IEEE, and a member of ACM and SEI.

Comments (Undergoing maintenance)



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Architecture
ArticleID=272059
ArticleTitle=Assessing quality in software architectures
publish-date=12042007
author1-email=jldiaz@us.ibm.com
author1-email-cc=

My developerWorks community

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Special offers