Software Engineering Institute | Carnegie Mellon University
Software Engineering Institute | Carnegie Mellon University

Tools and Methods for Evaluating the Architecture

Do you want to…

Then look at…

Evaluate and improve software architectures relative to quality attribute goals?

Architecture Improvement Workshop

Apply the leading method for evaluating a software architecture?

Architecture Tradeoff Analysis Method

Use mission threads to evaluate system and software architectures?

System Architecture Tradeoff Analysis Method

Provide an initial identification of SoS architectural risks and quality attribute inconsistencies across the constituent systems?

System of Systems (SoS) Architecture Evaluation

Find out if a software architecture for a system is suitable without having to build it first?

Active Reviews for Intermediate Design

How do you know if a software architecture is deficient or at risk relative to its target system qualities?

The answer is to conduct an evaluation of it. A formal software architecture evaluation should be a standard part of the architecture-based software development life cycle. Architecture evaluation is a cost-effective way of mitigating the substantial risks associated with this highly important artifact.

The achievement of a software system's quality attributes depends much more on the software architecture than on code-related issues such as language choice, fine-grained design, algorithms, data structures, testing, and so forth. Most complex software systems are required to be modifiable and have good performance. They may also need to be secure, interoperable, portable, and reliable. But for any particular system, what precisely do these quality attributes—modifiability, security, performance, reliability—mean? Can a system be analyzed to determine these desired qualities? How soon can such an analysis occur? What happens these quality attributes are in conflict with each other? How can the tradeoffs be examined, analyzed, and captured?

The tools and methods in the table above can be used alone or in combination to obtain early and continuous benefits to any software development project.