Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Software Architectures
High-level modeling primitives
Components, connectors, configurations [SG96] To mediate interactions among components To provide auxiliary mechanisms for interaction Impact aggregate system properties
Liveness, throughput, dependability, evolvability
Software connectors
Complementary approaches
Component scale, complexity requires greater distribution Complexity of interactions a bigger concern than complexity of algorithms Procedure calls, module dependencies, pipes DNS, remote procedure calls, repository access Model arbitrarily complex - implement simple ones
Simple connectors
Complex connectors
Transmission of data Exchange of control Transform interactions to remedy heterogeneity Streamline interactions for interoperation
Coordination
Conversion
Facilitation
Classification Framework
Connector Taxonomy
Hybrid Connectors
Real-world situations often require sophisticated connectors
E.g. RPC with privacy and integrity Hard to systematically compose hybrid connectors Interoperability of connectors Mismatching assumptions about interaction Cause for project failures [GAO95, GB98]
Integration issues
Does not combine connector types e.g. objectoriented method call Combine dimensions from different connector types e.g. RPC, SSL
Higher order
Not all combinations of dimensions result in meaningful, or safe connectors Taxonomy provides empirical rules of compatibility between connector dimensions
Certain combination of dimensions required to be used in conjunction are unsafe Dimensions required to be used in conjunction, no unsafe combinations Dimensions may be combined, some combinations are unsafe Dimensions cannot be combined
Requires (=)
Restricts (:)
Prohibits (7)
Procedure call
Event
Data access
Stream
Linkage
Arbitrator
Adaptor
Distributor
Procedure call
Event
Data access
Stream
Linkage
Arbitrator
Adaptor
Distributor
Parameters Entry point Invocation Synchronicity Cardinality Accessibility Cardinality Delivery Priority Synchronicity Notification Causality Mode Locality Mode Availability Accessibility Cardinality Delivery Format Directionality Cardinality State Granularity Cardinality Resolution Fault handling Concurrency Transactions Logging Security Scheduling Pooling Invocation Data Presentation Deployment Naming Delivery Routing
Parameters Entry point Invocation Synchronicity Cardinality Accessibility Cardinality Delivery Priority Synchronicity Notification Causality Mode Locality Mode Availability Accessibility Cardinality Delivery Format Directionality Cardinality State Granularity Cardinality Resolution Fault handling Concurrency Transactions Logging Security Scheduling Pooling Invocation Data Presentation Deployment Naming Delivery Routing
= = = ? ? = ? = = = = = = :
? = ? ? ? = : : = : : : : :
= = ? : = = ? ?
: : :
: = = = = = = =
? ? =
? : : : : = = = = = = 7 = = = = ? = = = = = = = = ? : = ? ? ? = =
7 =
: = =
= =
= =
= ? = = = = = = = = =
= = = = =
= =
= =
? ?
= = = = ? = ?
7 7 = = = 7 = =
= = ? =
= = = =
= =
= =
= = =
Applications/Evaluation
Stability of taxonomy
Taxonomy applied to architecture of Linux [MMP00] Sparser reflexive sections reflect lack of known incompatibilities Rich constraints indicate greater cohesion and stability Rule out potentially unstable connector species Create higher-order connectors using transitive application of constraints
Compatibility constraints
N. R. Mehta & N. Medvidovic. Understanding software connector compatibilities using a connector taxonomy, SoDA 02, Bangalore, India Expert knowledge capture tool for connector compatibilities Design guidance using compatibility matrix Composition of architectural style elements including connectors from architectural primitives
(http://sunset.usc.edu/~softarch/Alfa)
ACTiVE
Alfa