Implementing ArchitecturesObjectivesSlide 3The Mapping ProblemCommon Element MappingCommon Element Mapping (cont’d)Slide 7One-Way vs. Round Trip MappingOne-Way vs. Round Trip Mapping (cont’d)Slide 10Architecture Implementation FrameworksSlide 12Slide 13Canonical ExampleMore on FrameworksSame Style, Different FrameworksEvaluating FrameworksEvaluating Frameworks (cont’d)Slide 19Middleware and Component ModelsMiddleware and Component Models (cont’d)Slide 22Resolving MismatchesHiding Middleware in ConnectorsBuilding a New FrameworkNew Framework GuidelinesNew Framework Guidelines (cont’d)Slide 28ConcurrencyGenerative TechnologiesMaintaining ConsistencyCopyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.ImplementingArchitecturesSoftware ArchitectureFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture2ObjectivesConceptsImplementation as a mapping problemArchitecture implementation frameworksEvaluating frameworksRelationships between middleware, frameworks, component modelsBuilding new frameworksConcurrency and generative technologiesEnsuring architecture-to-implementation consistencyExamplesDifferent frameworks for pipe-and-filterDifferent frameworks for the C2 styleApplicationImplementing Lunar Lander in different frameworksFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture3ObjectivesConceptsImplementation as a mapping problemArchitecture implementation frameworksEvaluating frameworksRelationships between middleware, frameworks, component modelsBuilding new frameworksConcurrency and generative technologiesEnsuring architecture-to-implementation consistencyExamplesDifferent frameworks for pipe-and-filterDifferent frameworks for the C2 styleApplicationImplementing Lunar Lander in different frameworksFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture4The Mapping ProblemImplementation is the one phase of software engineering that is not optionalArchitecture-based development provides a unique twist on the classic problemIt becomes, in large measure, a mapping activityMaintaining mapping means ensuring that our architectural intent is reflected in our constructed systemsDesignDecisionsDesignDecisionsImplementationArtifactsImplementationArtifactsFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture5Common Element MappingComponents and ConnectorsPartitions of application computation and communication functionalityModules, packages, libraries, classes, explicit components/connectors in middlewareInterfacesProgramming-language level interfaces (e.g., APIs/function or method signatures) are commonState machines or protocols are harder to mapFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture6Common Element Mapping (cont’d)ConfigurationsInterconnections, references, or dependencies between functional partitionsMay be implicit in the implementationMay be externally specified through a MIL and enabled through middlewareMay involve use of reflectionDesign rationaleOften does not appear directly in implementationRetained in comments and other documentationFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture7Common Element Mapping (cont’d)Dynamic Properties (e.g., behavior):Usually translate to algorithms of some sortMapping strategy depends on how the behaviors are specified and what translations are availableSome behavioral specifications are more useful for generating analyses or testing plansNon-Functional PropertiesExtremely difficult to do since non-functional properties are abstract and implementations are concreteAchieved through a combination of human-centric strategies like inspections, reviews, focus groups, user studies, beta testing, and so onFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture8One-Way vs. Round Trip MappingArchitectures inevitably change after implementation beginsFor maintenance purposesBecause of time pressuresBecause of new informationImplementations can be a source of new informationWe learn more about the feasibility of our designs when we implementWe also learn how to optimize themDesignDecisionsDesignDecisionsImplementationArtifactsImplementationArtifactsFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture9One-Way vs. Round Trip Mapping (cont’d)Keeping the two in sync is a difficult technical and managerial problemPlaces where strong mappings are not present are often the first to divergeOne-way mappings are easierMust be able to understand impact on implementation for an architectural design decision or changeTwo way mappings require more insightMust understand how a change in the implementation impacts architecture-level design decisionsFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture10One-Way vs. Round Trip Mapping (cont’d)One strategy: limit changesIf all system changes must be done to the architecture first, only one-way mappings are neededWorks very well if many generative technologies in useOften hard to control in practice; introduces process delays and limits implementer freedomAlternative: allow changes in either architecture or implementationRequires round-trip mappings and maintenance strategiesCan be assisted (to a point) with automated toolsFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture11Architecture Implementation FrameworksIdeal approach: develop architecture based on a known style, select technologies that provide implementation support for each architectural elementDesignDecisionsDesignDecisionsDatabaseSoftwareLibraryOO ClassFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture12Architecture Implementation FrameworksThis is rarely easy or trivialFew programming languages have explicit support for architecture-level constructsSupport infrastructure (libraries, operating systems, etc.) also has its own sets of concepts, metaphors, and rulesTo mitigate these mismatches, we leverage an architecture implementation frameworkFoundations, Theory, and PracticeSoftware ArchitectureSoftware Architecture13Architecture Implementation FrameworksDefinition: An architecture implementation framework is a piece of
View Full Document