Architecture with Components
What Changes? Components reduce the architectural control Remove some qualities from your direct influence Which can force “how-important-is-this” decisions about requirements Search becomes a part of the problem
Searching for workable component ensembles Define constraints that the ensemble must meet Define a first cut at other success criteria Try to make it work Revise (usually, add to) the success criteria Modify the ensemble Repeat 3-5 until An adequate ensemble is found, OR You give up
Remember You are searching for a working ensemble of components Working one component at a time will probably waste time and energy
Mismatch can make an ensemble unworkable Each OTS component comes with an architectural style Architectural Mismatch! Requires Provides What to do? Detect mismatch during search and avoid it Detect it during design/implementation and fix it
Detect mismatch during search Inspect each candidate component to discover Requires Provides Make sure each requires can be satisfied by a provides Parameterized interfaces can give you some control over requires/provides Unfortunately, examining all assumptions for components is not possible!
Detect mismatch during design/implementation Qualify the interfaces by discovering requires and provides while Designing the architecture Integrating the ensemble Prototyping Building a skeletal system
When qualifying an interface, remember An interface is more than method signatures It may also include assumptions about Ordering of method calls Threading Resource availability and consumption Authorization Security Persistent storage Network access Error reporting and handling Logging
Fixing mismatch Wrappers Bridges Mediators
Fixing Mismatch 1 - Wrappers Encase the component to Translate an element Hide an element Preserving an element without change Usually specific to the using and used components Examples: Screen scraping Most legacy wrappers What experience do you have with wrappers?
Fixing Mismatch 2 - Bridges An independent component Translate a requires of one side to a provides of the other Translation is defined at design time Often independent of the components Example: postscript to PDF Experience with bridges?
Fixing Mismatch 3 - Mediators Planning Is often a first class component in the architecture Examples: Sensor fusion (p 459) EAI platform Experience with mediators?