How do you know if a software architecture for a system is suitable without having to build the system first? 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.
Architects and designers often need insight into the viability of their early design strategies (or portions of their designs) before conducting a comprehensive architecture evaluation of their software architecture. These early designs are often poorly documented and sketchy, lacking important details that will emerge later. Nevertheless, reviewing a design in its pre-release stages can uncover important inconsistencies or oversights whose early correction can be invaluable.
To provide this insight, the SEI developed Active Reviews for Intermediate Designs (ARID). ARID is a blend of a stakeholder-centric, scenario-based, architecture evaluation method and an active design review (ADR) of design specifications.
ADRs are an effective technique for insuring quality detailed designs in software. The method ensures reviewers' active participation by asking them to utilize the design in a series of exercises, while carefully avoiding yes/no questions that are easy for a reviewer to undermine with a carelessly considered answer. This tests actual, not feigned, understanding.
The major steps of ARID are
A typical ARID exercise takes about a day and a half.
For consulting information about ARID, visit our consulting pages. Direct technical questions about ARID to us using the link in the For more information box at the bottom of this page.
Active Reviews for Intermediate Designs
Paul C. Clements
Evaluating Software Architectures: Methods and Case Studies
Paul Clements, Rick Kazman, & Mark Klein
Integrating Software-Architecture-Centric Methods into Extreme Programming (XP)
Robert L. Nord, James E. Tomayko, & Rob Wojcik