A number of techniques have recently emerged to address the problem of consistently engineering large, complex software systems. The three most widely embraced efforts have been component-based software development standards (e.g., J2EE), middleware platforms (e.g., CORBA, .NET), and software architecture. They present complementary, often overlapping approaches, centered around composing software systems from coarse-grained components.

Although components have been the predominant focus of researchers and practitioners, they address only one aspect of large-scale development. Another important aspect, particularly magnified by the emergence of the Internet and the growing need for distribution, is interaction among components. Component interaction is embodied in the notion of software connectors. Connectors manifest themselves in a software system as shared variable accesses, table entries, buffers, instructions to a linker, procedure calls, networking protocols, pipes, SQL links between a database and an application, and so forth. In large, and especially distributed and mobile systems, connectors become key determinants of system properties, such as performance, resource utilization, global rates of flow, scalability, reliability, security, evolvability, and so forth.

Software architecture-based approaches have come furthest in their treatment of connectors. They typically separate computation (components) from interaction (connectors) in a system. Several existing architecture-based technologies have provided support for modeling or implementing certain classes of connectors. Despite this, the current level of understanding and support for connectors in architectures is insufficient.

None of these approaches furthers our understanding of what the fundamental building blocks of software interaction are and how they can be composed into more complex interactions. Such level of understanding is necessary in order to fully meet the challenge posed to software architecture researchers of giving connectors "a first-class status". Our work has produced an extensive study and classification of interaction mechanisms employed in software systems. The classification supports deeper understanding of existing connectors and their relationships. It also provides the information needed to design new, more powerful connectors by combining existing mechanisms.

The classification identifies four major categories of connectors, based on the services they provide to interacting components: communication, coordination, conversion, and facilitation. We also identify the major connector types: procedure call, data access, linkage, stream, event, arbitrator, adaptor, and distributor. The connector categories and types have been identified from an extensive study of software interaction mechanisms proposed in computer systems research and employed across research and commercial software systems.

Our publications on software connectors can be found here.


WelcomeResearchCV | Publications | HomeResources

Phone: +1 (213) 740-6504
Fax: +1 (419) 831-9609
Email: mehta@sunset.usc.edu

941 W. 37th Pl., SAL 327
University of Southern California
Los Angeles, CA 90089-0781, USA