Abstract
Software connectors are increasingly recognized as an important consideration in the design and implementation of object-oriented software systems. Connectors can be used to communicate across a distributed system, coordinate the activities of several objects, or adapt one object’s interface to the interface of another. Mainstream object-oriented languages, however, do not provide explicit support for connectors. As a result, connection code is intermingled with application code, making it difficult to understand, evolve, and reuse connection mechanisms.
In this paper, we add language support for user-defined connectors to the ArchJava language. Our design enables a wide range of connector abstractions, including caches, events, streams, and remote method calls. Developers can describe both the run-time semantics of connectors and the typechecking semantics. The connector abstraction supported by ArchJava cleanly separates reusable connection code from application logic, making the semantics of connections more explicit and allowing engineers to easily change the connection mechanisms used in a program. We evaluate the expressiveness and the engineering benefits of our design in a case study applying ArchJava to the PlantCare ubiquitous computing application.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Aldrich, J., Chambers, C., Notkin, D.: ArchJava: Connecting Software Architecture to Implementation. In: Proc. International Conference on Software Engineering, Orlando, Florida (May 2002)
Aldrich, J., Chambers, C., Notkin, D.: Architectural Reasoning in ArchJava. In: Proc. European Conference on Object-Oriented Programming, Málaga, Spain (June 2002)
Allen, R., Garlan, D.: A Formal Basis for Architectural Connection. ACM Transactions on Software Engineering and Methodology 6(3), 213–249 (1997)
ArchJava web site, http://www.archjava.org/
Bergmans, L., Aksit, M.: Composing Crosscutting Concerns Using Composition Filters. Communications of the ACM 44(10), 51–57 (2001)
Blair, G.S., Coulson, G., Andersen, A., Blair, L., Clarke, M., Costa, F., Duran-Limon, H., Fitzpatrick, T., Johnston, L., Moreira, R., Parlavantzas, N., Saikoski, K.: The Design and Implementation of Open ORB 2. IEEE Distributed Systems Online Journal 2(6) (2001)
Bershad, B., Ching, D., Lazowska, E., Sanislo, J., Schwartz, M.: A Remote Procedure Call Facility for Interconnecting Heterogeneous Computer Systems. IEEE Trans. Software Engineering 13(8), 880–894 (1987)
Bracha, G., Odersky, M., Stoutamire, D., Wadler, P.: Making the Future Safe for the Past: Adding Genericity to the Java Programming Language. In: Proc. Object Oriented Programming Systems, Languages, and Applications, Vancouver, British Columbia (October 1998)
Dashofy, E.M., Medvidovic, N., Taylor, R.N.: Using Off-the-Shelf Middleware to Implement Connectors in Distributed Software Architectures. In: Proc. International Conference on Software Engineering, Los Angeles, California (May 1999)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1994)
Garlan, D., Shaw, M.: An Introduction to Software Architecture. In: Ambriola, V., Tortora, G. (eds.) Advances in Software Engineering and Knowledge Engineering, vol. I. World Scientific Publishing Company, Singapore (1993)
Javasoft Java RMI Team. Java Remote Method Invocation Specification, Sun Microsystems (1997)
Jul, E., Levy, H., Hutchinson, N., Black, A.: Fine-Grained Mobility in the Emerald System. ACM Trans. Computer Systems 6(1), 109–133 (1988)
Kiczales, G., des Rivières, J., Bobrow, D.G.: The Art of the Meta-Object Protocol. MIT Press, Cambridge (1991)
LaMarca, A., Brunette, W., Koizumi, D., Lease, M., Sigurdsson, S.B., Sikorski, K., Fox, D., Borriello, G.: PlantCare: An Investigation in Practical Ubiquitous Systems. In: Proc. International Conference on Ubiquitous Computing, Göteborg, Sweden (September 2002)
Luckham, D.C., Vera, J.: An Event Based Architecture Definition Language. IEEE Trans. Software Engineering 21(9)(September 1995)
Microsoft Corporation. The Component Object Model Specification, Version 0.9 (October 1995)
Magee, J., Kramer, J.: Dynamic Structure in Software Architectures. In: Proc. Foundations of Software Engineering, San Francisco, California (October 1996)
Mehta, N.R., Medvidovic, N., Phadke, S.: Towards a Taxonomy of Software Connectors. In: Proc. International Conference on Software Engineering, Limerick, Ireland (June 2000)
Mezini, M., Ostermann, K.: Integrating Independent Components with On-Demand Remodularization. In: Proc. Object-Oriented Programming Systems, Languages, and Applications, Seattle, Washington (November 2002)
Medvidovic, N., Oreizy, P., Robbins, J.E., Taylor, R.N.: Using Object-Oriented Typing to Support Architectural Design in the C2 Style. In: Proc. Foundations of Software Engineering, San Francisco, California (October 1996)
Moriconi, M., Qian, X., Riemenschneider, R.A.: Correct Architecture Refinement. IEEE Trans. Software Engineering 21(4), 356–372 (1995)
Medvidovic, N., Taylor, R.N.: A Classification and Comparison Framework for Software Architecture Description Languages. IEEE Trans. Software Engineering 26(1), 70–93 (2000)
Object Management Group. The Common Object Request Broker: Architecture and Specification (CORBA), revision 2.0 (1995)
Perry, D.E., Wolf, A.L.: Foundations for the Study of Software Architecture. ACM SIGSOFT Software Engineering Notes 17, 40–52 (1992)
Seco, J.C., Caires, L.: A Basic Model of Typed Components. In: Proc. European Conference on Object-Oriented Programming, Cannes, France (June 2000)
Shaw, M., DeLine, R., Klein, D.V., Ross, T.L., Young, D.M., Zelesnik, G.: Abstractions for Software Architecture and Tools to Support Them. IEEE Trans. Software Engineering 21(4), 314–335 (1995)
Shaw, M., DeLine, R., Zelesnik, G.: Abstractions and Implementations for Architectural Connections. In: Proc. International Conference on Configurable Distributed Systems, Annapolis, Maryland (May 1996)
Soares, S., Laureano, E., Borba, P.: Implementing Distribution and Persistance Aspects with AspectJ. In: Proc. Object- Oriented Programming Systems, Languages, and Applications, Seattle, Washington (November 2002)
Sreedhar, V.C.: Mixin’ Up Components. In: Proc. International Conference on Software Engineering, Orlando, Florida (May 2002)
UbiCore LLC. Universally Interoperable Core, Description at http://www.ubi-core.com/Documentation/Universally_Interoperable_Core/universally_interoperable_core.html
Wohlstadter, E., Jackson, S., Devanbu, P.: DADO: Enhancing Middleware to Support Cross-Cutting Features in Distributed, Heterogeneous Systems. In: Proc. International Conference on Software Engineering, Portland, Oregon (May 2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Aldrich, J., Sazawal, V., Chambers, C., Notkin, D. (2003). Language Support for Connector Abstractions. In: Cardelli, L. (eds) ECOOP 2003 – Object-Oriented Programming. ECOOP 2003. Lecture Notes in Computer Science, vol 2743. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-45070-2_5
Download citation
DOI: https://doi.org/10.1007/978-3-540-45070-2_5
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40531-3
Online ISBN: 978-3-540-45070-2
eBook Packages: Springer Book Archive