170 likes | 311 Views
Architectural Mismatch: Why reuse is so hard?. Garlan, Allen, Ockerbloom; 1994. Low level problems of interoperability as: incompatibilities in programming languages/platforms/data bases More discussed. Architectural mismatch: mismatch assumptions on the architecture of the system.
E N D
Architectural Mismatch: Why reuse is so hard? Garlan, Allen, Ockerbloom; 1994
Low level problems of interoperability as: incompatibilities in programming languages/platforms/data bases More discussed Architectural mismatch: mismatch assumptions on the architecture of the system. Two kinds of mismatch
Project: Aesop System • Environment generator for architecture styles • Input: Style and a shared infrastructure • Output: An environment which consists of: • tools that access the design database (OO) • GUI for modifying and creating new designs • repository of previous designs
Requirements for interaction with DB • Tools may access the DB through RPC (invoking methods on objects in the DB) • Support for event broadcasting: Tools can register to be notified about changes in DB or announce events to other tools.
Wishes on reusable parts • An OO Database -> OBST • A toolkit for constructing GUIs -> InterViews from Stanford University • An event-based tool-integration mechanism -> SoftBench from HP • An RPC mechanism -> Mach RPC Interface Generator • All in C++ or C, available source code.
Discovered Integration Problems • Excessive code • Poor performance: save took several minutes, start overhead • Need to modify external packages to work together. • Need to reinvent existing functions • Unnecessarily complicated tools • Error-prone construction process: recompilation took time, code dependencies
Architectural overview of the system • A system is a configuration of components and connectors. • Components: Entities of the system as tools, DB, servers, filters, etc • Connectors determine the interaction between components as client-server protocols, RPC, pipes.
Four main assumptions that can lead to arch.mismatch • Nature of components • Nature of connectors • Global architectural structure • Construction process
Nature of components • Infrastructure: Nature of the underlying support they need, additional infrastructure that they provide or use. Here all components provided additional. • Control model: Assumptions on what part of the system holds the main thread of control. • Data model: Nature of the data that components manipulate. E.g. InterViews has a hierarchical data structure where one object is part of another and can be modified only by the parent.
Nature of Connectors • Protocols: E.g. SoftBench forces the clients to implement multiple threads of control; one for each request. • Data model: Assumptions about data that is communicated over connectors. E.g. MAC RPC supports data passes through procedures while SoftBench assumes passing of files.
Global structure • E.g. OBST requires that tools are totally independent of each other. In Aesop, tools can delegate part of their computation to other tools.
Construction Process • Dependencies between packages to compile, assumptions in each component on the structure of the code
Solutions • Make architectural assumptions explicit • Construct large systems using orthogonal subcomponents • Provide bridging • Develop architectural design guidelines
Make Assumptions Explicit • Document assumptions • Develop description vocabulary and languages for software architecture
Use Orthogonal Subcomponents • Components with clear dependencies, easy to replace with other modules, easy to reconfigure
Bridging Techniques • Mediators components that take over some of the tasks. • Smart connectors that translate data in multiple protocols. • Wrapper around a component or connector to offer a convenient interface • Negotiated interfaces: Components and connectors that handle several styles and can configure themselves dynamically.
Design Guidance • Find rules and principles for composition • Develop guidance for certain application domains