Software Architecture Analysis
Software architecture is the study of large software systems, from the
perspective of their structure. This is in contrast to traditional
computer science approaches to the design and creation of software
systems, which emphasize data structures and algorithms over structure.
The study of software architecture concerns itself with achieving
non-functional qualities (portability, scalability, performance,
modifiability, integrability, etc.) in large systems.
Software architectural analysis, in particular, looks at how to analyze
existing systems, or designed (but not yet built) systems, with a view to
predicting its non-functional qualities.
I have been approaching the problem of achieving software quality
through architecture-level analysis in four ways:
- Establishing a process for architecture analysis and reviews.
This includes codifying current best practices in industry.
- Searching for, and empirically validating, the building blocks of
design at the architectural level, and linking this to the
achievement of non-functional qualities.
- Devising a set of primitives with which to describe architectural
mechanisms (the things that we informally think of as components
and connectors).
- Adding tool support for architectural design and analysis.
This has led to the development of: SAAM, a scenario-based method for
analyzing software architectures with respect to its non-functional
qualities; SAAMtool, a tool that supports the SAAM method; a theory of
"unit operations", which are primitive architectural design operations;
and a set of primitives for describing architectural mechanisms.
Further elaboration of these topics can be found in the papers below.
My
papers on Software Architecture.
Bibliography of research on Software
Architecture
Other Web sites on Software
Architecture.
Courses in Software Architecture.
Maintained by: Rick Kazman (rnkazman@cgl.uwaterloo.ca)
You are visitor number
since April 28, 1996.
Go to Rick Kazman's
home page. Go to the
UW Software
Engineering Lab