Title :
Abstractions for software architecture and tools to support them
Author :
Shaw, Mary ; DeLine, Robert ; Klein, Daniel V. ; Ross, Theodore L. ; Young, David M. ; Zelesnik, Gregory
Author_Institution :
Dept. of Comput. Sci., Carnegie Mellon Univ., Pittsburgh, PA, USA
fDate :
4/1/1995 12:00:00 AM
Abstract :
Architectures for software use rich abstractions and idioms to describe system components, the nature of interactions among the components, and the patterns that guide the composition of components into systems. These abstractions are higher level than the elements usually supported by programming languages and tools. They capture packaging and interaction issues as well as computational functionality. Well-established (if informal) patterns guide the architectural design of systems. We sketch a model for defining architectures and present an implementation of the basic level of that model. Our purpose is to support the abstractions used in practice by software designers. The implementation provides a testbed for experiments with a variety of system construction mechanisms. It distinguishes among different types of components and different ways these components can interact. It supports abstract interactions such as data flow and scheduling on the same footing as simple procedure call. It can express and check appropriate compatibility restrictions and configuration constraints. It accepts existing code as components, incurring no runtime overhead after initialization. It allows easy incorporation of specifications and associated analysis tools developed elsewhere. The implementation provides a base for extending the notation and validating the model
Keywords :
data flow computing; scheduling; software engineering; software tools; specification languages; abstract interactions; abstractions; analysis tools; compatibility restrictions; component composition; component interactions; computational functionality; configuration constraints; data flow; idioms; informal patterns; initialization; model validation; notation; packaging; scheduling; software architecture; software design; software tools; specifications; system component descriptions; system construction mechanisms; Computer architecture; Computer languages; Computer science; Packaging; Scheduling; Software architecture; Software design; Software engineering; Software tools; System testing;
Journal_Title :
Software Engineering, IEEE Transactions on