CBAM is an addition to ATAM
of a large software system reside principally in the system's SoftwareArchitecture
. In large systems, the achievement of qualities such as performance, availability, survivability, and modifiability depends more on the overall SoftwareArchitecture
than on code-level practices such as language choice, DetailedDesign?
, algorithms, data structures, and testing. It is cost effective to try to determine, before a system is built, whether it will satisfy its desired qualities.
Although methods for analyzing architectures with respect to QualityAttributes
exist, these analyses have typically been performed on specific qualities in isolation. However, the attributes (and hence their analyses) interact. Performance affects modifiability. Availability affects safety. Security affects performance. Everything affects cost. While experienced designers know that these tradeoffs exist, there is no codified method for characterizing them and, in particular, for characterizing their interactions. More importantly, these tradeoffs present the areas of highest risk in an architecture.
The SEI has developed the ArchitectureTradeoffAnalysisMethod
(ATAM) to analyze an architecture for these multiple quality attributes and their tradeoffs. ATAM is a risk mitigation method that can be done early in the software development life cycle when it is relatively inexpensive to change architectural decisions.
It is also important to be able to analyze the architecture of the countless legacy systems in existence. Unfortunately, the architectures of legacy systems are frequently undocumented or existing documentation is inaccurate due to the unavoidable architectural drift and erosion making analysis impossible. To address this phenomena, the SEI has developed Dali, a workbench for software architecture extraction and reconstruction, to reconstruct architectures from source code and to check the conformance of as-built systems to their documented architectures.
SEI work in the Architecture Tradeoff Analysis (ATA) Initiative includes development and validation of the technology and techniques necessary for analyzing software architectures, specifically: attribute-specific models, representation approaches, analysis methods, reconstruction and conformance tools and techniques, as well as arranged evaluations and reconstructions of architectures for customer systems.
See also: ProductLineApproach