This Article 
 Bibliographic References 
 Add to: 
Abstractions for Software Architecture and Tools to Support Them
April 1995 (vol. 21 no. 4)
pp. 314-335
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 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.

[1] G. Abowd, R. Allen, and D. Garlan,“Using style to understand descriptions of software architecture,”inProc. First ACM SIGSOFT Symp. Foundations of Software Eng., Dec. 1993.
[2] R. Allen and D. Garlan,“Beyond definition/use: Architectural interconnection,”inProc. Workshop on Interface Definition Languages, 1994.
[3] ——,“Formalizing architectural connection,”inProc. Sixteenth Int. Conf. Software Eng., 1994.
[4] D. Barstow and A. Wolf,“Design methods and software architectures track,”inProc. 7th Int. Workshop in Software Specification and Design, New York: IEEE Press, 1993.
[5] C. G. Bell and A. Newell,Computer Structures: Readings and Examples. New York: McGraw-Hill, 1971.
[6] Megaprogramming, inProc. Software Technol. Conf. 1992, DARPA.
[7] J. R. Callahan and J. M. Purtilo,“A packaging system for heterogeneous execution environments,”IEEE Trans. Software Eng., vol. 17, pp. 626–635, June 1991.
[8] “SARA aided design of software for concurrent systems,”inProc. Nat. Comput. Conf., 1978.
[9] L. W. Cooprider,“The representation of families of software systems,”Ph.D. dissertation, Carnegie Mellon Univ., Apr. 1979.
[10] T. R. Dean and J. R. Cordy,“Software structure characterization using connectivity,”inProc. Workshop on Studies of Software Design, inLecture Notes in Computer Science. New York: Springer-Verlag, 1995.
[11] F. DeRemer and H. H. Kron,“Programming-in-the-large versus programming-in-the-small,”IEEE Trans. Software Eng., vol. SE-2, pp. 80–86, June 1976.
[12] D. Garlan and M. Shaw,“An introduction to software architecture, inAdvances in Software Engineering and Knowledge Engineering, V. Ambriola and G. Tortora, Eds. New York: World Scientific, 1993, vol. 2, pp. 1–39.
[13] ——,“Software development assignments for a software architecture course,”submitted for publication.
[14] N. Habermann and W. Tichy,“Future directions in software engineering,”Dagstuhl Sem. Rep. 32, Feb. 1992.
[15] “DSSA tool requirements for key process functions,”unpublished manuscript, version 1.0, Oct. 1993.
[16] C. A. R. Hoare,“Proof of correctness of data representations,”Acta Informatica, vol. 1, no. 4, pp. 271–281, 1972.
[17] T. Kitayama, C. W. Mercer, T. Nakajima, S. Savage, H. Tokuda, and J. Zelenka,Real-Time Mach 3.0 User Reference Manual, School of Comput. Sci., Carnegie Mellon Univ., Pittsburgh, PA, Aug. 1993. (Preliminary edition.)
[18] M. H. Klein, T. Ralya, B. Pollak, R. Obenza, and M. G. Harobur,A Practitioner's Handbook for Real-Time Analysis: Guide to Rate Monotonic Analysis for Real-Time Systems. New York: Kluwer–Academic, 1993.
[19] “A Theory of Interfaces and Modules I—Composition Theorem,”IEEE Trans. Software Eng., vol. 20, pp. 55–71, Jan. 1994.
[20] D. A. Lamb, Ed.,Proc. Workshop on Studies of Software Design, inLecture Notes in Computer Science. New York: Springer-Verlag, 1995.
[21] J. Magee, J. Kramer, and Morris Sloman,“Constructing distributed systems in CONIC,”IEEE Trans. Software Eng., vol. SE-15, pp. 663–675, 1989.
[22] J. Magee, N. Dulay, and J. Kramer,“Structuring parallel and distributed programs,”Software Eng. J., vol. 8, no. 2, pp. 73–82, Mar. 1993.
[23] E. Mettala and M. H. Graham,“The domain-specific software architecture program,”CMU/SEI Rep. CMU/SEI-92-SR-9, June 1992.
[24] J. G. Mitchell, W. Maybury, and R. E. Sweet,“Mesa language manual,”Xerox Corp., Palo Alto Res. Cen., Tech. Rep. CSL-79-3, Apr. 1979.
[25] T. Nakajima, T. Kitayama, H. Arakawa, and H. Tokuda,“Integrated management of priority inversion in RT-Mach,”inProc. IEEE Real-Time Syst. Symp., Dec. 1993.
[26] D. E. Perry,“Software interconnection models,”inProc. Ninth Int. Conf. Software Eng., IEEE Computer Society Press, Mar. 1987.
[27] D. E. Perry and A. L. Wolf,“Foundations for the study of software architecture,”inACM SIGSOFT Software Eng. Notes, Oct. 1992, vol. 17, no. 4, pp. 40–52.
[28] ——,Proc. First Annu. Workshop Pattern Languages for Programming, to be published.
[29] R. Prieto-Diaz and J. M. Neighbors,“Module interconnection languages,”J. Syst. Software, vol. 6, no. 4, pp. 307–334, Nov. 1986.
[30] J. Purtilo,The Polylith Software Bus., Dep. Comput. Sci., Univ. Maryland, Tech. Rep. 2469, 1990.
[31] The PAVG Group,The Rapide-1 Executable Language Reference Manual; the Rapide-1 Types Reference Manual, Stanford Univ. Rep., Mar. 1993.
[32] D. M. Ritchie and K. Thompson,“The UNIX time sharing system,”Commun. ACM, vol. 17, no. 7, pp. 365–375, July 1974.
[33] M. Shaw, Ed.,Alphard, Form and Content. New York: Springer-Verlag 1981.
[34] ——,“Toward higher-level abstractions for software systems,”inProc. Tercer Simposio Int. del Conocimiento y su Ingerieria, Oct. 1988.
[35] ——,Making Choices: A Comparison of Styles for Software Architecture, Carnegie Mellon Univ., Tech. Rep., 1995.
[36] M. Shaw and D. Garlan,“Characteristics of higher-level languages for software architecture,”Carnegie-Mellon Univ., Tech. Rep., 1993.
[37] J. W. Thomas,“Module interconnection in programming systems supporting abstraction,”Ph.D. dissertation, Brown Univ., June 1976.
[38] W. F. Tichy,“Software development control based on module interconnection,”inProc. 4th Int. Conf. Software Eng., Munich, Germany, 1979, pp. 29–41.
[39] J. M. Wing, Ed., inProc. Workshop on Interface Definition Languages, Carnegie Mellon Univ., Tech. Rep. CMU-CS-94-WIDL-1, Jan. 1994.

Index Terms:
Software architecture, architecture description language, software system organization, architectural abstraction, software engineering
Mary Shaw, Robert DeLine, Daniel V. Klein, Theodore L. Ross, David M. Young, Gregory Zelesnik, "Abstractions for Software Architecture and Tools to Support Them," IEEE Transactions on Software Engineering, vol. 21, no. 4, pp. 314-335, April 1995, doi:10.1109/32.385970
Usage of this product signifies your acceptance of the Terms of Use.