Software Architecture: Foundations, Theory, and Practice
What is a Software Connector?
Architectural element that models
uInteractions among components
uRules that govern those interactions
Simple interactions
uProcedure calls
uShared variable access
Complex & semantically rich interactions
uClient-server protocols
uDatabase access protocols
uAsynchronous event multicast
Each connector provides
uInteraction duct(s)
uTransfer of control and/or data 2
Software Architecture: Foundations, Theory, and Practice
Implemented vs. Conceptual
Connectors
Connectors in software system implementations
uFrequently no dedicated code
uFrequently no identity
uTypically do not correspond to compilation units
uDistributed implementation
Across multiple modules
Across interaction mechanisms
4
Software Architecture: Foundations, Theory, and Practice
Implemented vs. Conceptual
Connectors (cont’d)
Connectors in software architectures
uFirst-class entities
uHave identity
uDescribe all system interaction
uEntitled to their own specifications & abstractions
5
Software Architecture: Foundations, Theory, and Practice
Reasons for Treating Connectors
Independently
Connector ¹ Component
uComponents provide application-specific functionality
uConnectors provide application-independent
interaction mechanisms
Interaction abstraction and/or parameterization
Specification of complex interactions
uBinary vs. N-ary
uAsymmetric vs. Symmetric
uInteraction protocols
6
Software Architecture: Foundations, Theory, and Practice
Treating Connectors Independently
(cont’d)
Localization of interaction definition
Extra-component system (interaction) information
Component independence
Component interaction flexibility
7
Software Architecture: Foundations, Theory, and Practice
Benefits of First-Class Connectors
Separate computation from interaction
Minimize component interdependencies
Support software evolution
uAt component-, connector-, & system-level
Potential for supporting dynamism
Facilitate heterogeneity
Become points of distribution
Aid system analysis & testing
8
Software Architecture: Foundations, Theory, and Practice
Software Connector Roles
Locus of interaction among set of components
Protocol specification (sometimes implicit) that defines its
properties
uTypes of interfaces it is able to mediate
uAssurances about interaction properties
uRules about interaction ordering
uInteraction commitments (e.g., performance)
Roles
uCommunication
uCoordination
uConversion
uFacilitation
11
Software Architecture: Foundations, Theory, and Practice
Connectors as Communicators
Main role associated with connectors
Supports
uDifferent communication mechanisms
e.g. procedure call, RPC, shared data access, message
passing
uConstraints on communication structure/direction
e.g. pipes
uConstraints on quality of service
e.g. persistence
Separates communication from computation
May influence non-functional system characteristics
ue.g. performance, scalability, security
12
Software Architecture: Foundations, Theory, and Practice
Connectors as Coordinators
Determine computation control
Control delivery of data
Separates control from computation
Orthogonal to communication, conversion, and
facilitation
uElements of control are in communication, conversion
and facilitation
13
Software Architecture: Foundations, Theory, and Practice
Connectors as Converters
Enable interaction of independently developed,
mismatched components
Mismatches based on interaction
uType
uNumber
uFrequency
uOrder
Examples of converters
uAdaptors
uWrappers
14
Software Architecture: Foundations, Theory, and Practice
Connectors as Facilitators
Enable interaction of components intended to
interoperate
uMediate and streamline interaction
Govern access to shared information
Ensure proper performance profiles
ue.g., load balancing
Provide synchronization mechanisms
uCritical sections
uMonitors
15
Software Architecture: Foundations, Theory, and Practice
Connector Types
Procedure call
Data access
Event
Stream
Linkage
Distributor
Arbitrator
Adaptor
16
Software Architecture: Foundations, Theory, and Practice
Discussion
Connectors allow modeling of arbitrarily complex
interactions
Connector flexibility aids system evolution
uComponent addition, removal, replacement,
reconnection, migration
Support for connector interchange is desired
uAids system evolution
uMay not affect system functionality
26
Software Architecture: Foundations, Theory, and Practice
Discussion
Libraries of OTS connector implementations allow
developers to focus on application-specific issues
Difficulties
uRigid connectors
uConnector “dispersion” in implementations
Key issue
uPerformance vs. flexibility
27