Next: David Garlan
Up: Specific Research Activities
Previous: Specific Research Activities
The architecture of a software system defines that system in terms
of components and interactions, or connections, among those components. In
addition to specifying the structure and topology of the system, the
architecture shows the correspondence between the system requirements and
elements of the constructed sytem. It addresses system-level properties
such as capacity, throughput, consistency, and component compatibility.
Architectural models clarify structural and semantic differences among
components and their connectors. architectural definitions can be composed
to define larger systems. Elements are defined independently so they can
be re-used in different contexts. The architecture establishes
specifications for individual elements that may be written in a
conventional programming language. A number of commonly-used patterns, or
idioms, are in widespread informal use; these architectural styles can be
captured as general templates for families of related systems. This holds
particular promise for domain-specific systems.
My current primary concerns are identifying and supporting
architectural abstractions, localizing and codifying the ways
components interact, and
distinguishing among the various packagings of components that require
different forms of interaction.
A major thrust of the research is identifying suitable abstractions for
architectural styles and connectors, together with language to describe
them.
My focus is largely pragmatic. The first
goal of the work has been to identify, classify, and support a variety of
components and their connections. A prototype tool now supports eight
component types and six connector types.
Over time, the notation will be refined and a formal base will be developed.
Research questions of interest include:
- How can software system structure be characterized? What properties
matter?
- What abstractions are useful for structures, systems, and subsystems?
How are the abstractions related to each other?
- What textual and graphical notations for architecture are useful to
system designers?
- How do you cope when you must build a system with parts that
make incompatible assumptions about their mutual interaction?
- What kinds of checking and analysis we support?
- How can we support good architectural design decisions, especially
choices among architectural styles?
In addition to developing notations, models, and tools, I actively
disseminate the results. These activities center on developing and
presenting educational materials on software architecture. This has
to date resulted in a course, a tutorial presented at ICSE 93, SIGSOFT
93, SIGSOFT 94, and the 1996 CMU summer school, and a videotape for
distribution. I am also active in promoting the ideas in professional
forums. Currently, the CMU software architecture group is organizing
a set of model problems in the interest of sharing common examples within the research community.
References
- Shaw and Garlan 96
-
Mary Shaw and David Garlan. Software Architecture: Perspectives
on an Engineering Discipline. Prentice Hall, to appear March 1996.
- Shaw et al 96
-
Mary Shaw, Robert DeLine, Gregory Zelesnik. ``Abstractions and
Implementations for Architectural Connections.'' International
Conference on Configurable Distributed Systems, May 1996 (to appear).
- Shaw 96a
-
Mary Shaw. ``Truth vs Knowledge: The Difference Between What a
Component Does and What We Know It Does.'' Proceedings of
the 8th International Workshop on Software Specification and Design,
March 1996 (to appear).
- Shaw 96b
-
Mary Shaw. ``Some Patterns for Software Architecture.'' Results
from Second Annual Conference on Pattern Languages of Programming,
September 1995 (to be published by Prentice-Hall, 1996).
- Shaw 96c
-
Mary Shaw. ``Software Architectures for Shared Information Systems.''
Mind Matters: Contributions to Cognitive and Computer Science in
Honor of Allen Newell. Lawrence Erlbaum, to appear 1996.
- Shaw 95
-
Mary Shaw. ``Making Choices: A Comparison of Styles for Software
Architecture.'' IEEE Software, special issue on software
architecture, vol 12, no 6, November 1995, pp.27-41.
- Shaw et al 95
-
Mary Shaw, Robert DeLine, Daniel V. Klein, Theodore L. Ross, David
Young, and Gregory Zelesnik. ``Abstractions for Software Architecture
and Tools to Support Them.'' IEEE Transactions on Software
Engineering, vol 21, no 4, April 1995, pp. 314-335.
- Lane 90
-
Thomas G. Lane, ``Studying Software Architecture Through Design Spaces
and Rules,'' Technical Report CMU/SEI-90-TR18 ESD-90-TR-219, Carnegie
Mellon University, September 1990.
Next: David Garlan
Up: Specific Research Activities
Previous: Specific Research Activities
Gregory Zelesnik
Fri Feb 16 07:28:49 EST 1996