Pattern-Oriented Distributed Software Architectures

  • View

  • Download

Embed Size (px)


Dr. Douglas C. Schmidt Pattern-Oriented Distributed Software Architectures. Professor of EECS Vanderbilt University Nashville, Tennessee. Tutorial Motivation. Stand-alone Architecture. Networked Architecture. - PowerPoint PPT Presentation

Text of Pattern-Oriented Distributed Software Architectures

  • Pattern-Oriented Distributed Software Architectures Dr. Douglas C. Schmidt of EECS Vanderbilt University Nashville, Tennessee

  • Tutorial MotivationBuilding robust, efficient, & extensible concurrent & networked applications is harde.g., we must address many complex topics that are less problematic for non-concurrent, stand-alone applications


  • Tutorial OutlineOO techniques & language features:Frameworks & components, which embody reusable software implementationsPatterns (25+), which embody reusable software architectures & designsOO language features, e.g., classes, dynamic binding & inheritance, parameterized typesCover OO techniques & language features that enhance software quality

  • The Road AheadExtrapolating this trend to 2010 yields ~100 Gigahertz desktops ~100 Gigabits/sec LANs ~100 Megabits/sec wireless ~10 Terabits/sec Internet backboneIn general, software has not improved as rapidly or as effectively as hardware

  • Addressing the COTS CrisisHowever, this trend presents many vexing R&D challenges for mission-critical systems, e.g., Inflexibility & lack of QoS Security & global competitionWhy we should care:Despite IT commoditization, progress in COTS hardware & software is often not applicable for mission-critical distributed systemsRecent advances in COTS software technology can help to fundamentally reshape distributed system R&D

  • R&D Challenges & OpportunitiesChallenges

  • The Evolution of COTSThere are multiple COTS layers & research/ business opportunitiesTedious, error-prone, & costly over lifecyclesStandards-based COTS middleware helps:Control end-to-end resources & QoSLeverage hardware & software technology advancesEvolve to new environments & requirementsProvide a wide array of reuseable, off-the-shelf developer-oriented services There are layers of middleware, just like there are layers of networking protocols

  • Operating System & ProtocolsOperating systems & protocols provide mechanisms to manage endsystem resources, e.g.,CPU scheduling & dispatchingVirtual memory managementSecondary storage, persistence, & file systemsLocal & remove interprocess communication (IPC)OS examplesUNIX/Linux, Windows, VxWorks, QNX, etc.Protocol examplesTCP, UDP, IP, SCTP, RTP, etc.

  • Host Infrastructure MiddlewareHost infrastructure middleware encapsulates & enhances native OS communication & concurrency mechanisms to create reusable network programming componentsThese components abstract away many tedious & error-prone aspects of programming to low-level operating system APIsExamplesJava Virtual Machine (JVM), Microsoft Common Language Runtime (CLR), ADAPTIVE Communication Environment (ACE)

  • Distribution MiddlewareDistribution middleware defines higher-level distributed programming models whose reusable APIs & components automate & extend the native OS network programming capabilities ExamplesOMG CORBA, Suns Remote Method Invocation (RMI), Microsofts Distributed Component Object Model (DCOM)Distribution middleware enables clients to program distributed applications much like stand-alone applicationsi.e., by invoking operations on target objects without hard-coding dependencies on their location, language, OS, protocols, & hardware

  • Common Middleware ServicesCommon middleware services augment distribution middleware by defining higher-level domain-independent services that allow application developers to concentrate on programming business logicExamplesCORBA Component Model & Object Services, Suns J2EE, Microsofts .NETCommon middleware services alleviate need to write the plumbing code required to develop distributed applications by using lower-level middleware directlye.g., application developers no longer need to write code that handles transactional behavior, security, database connection pooling or threading

  • Domain-Specific MiddlewareDomain-specific middleware services are tailored to the requirements of particular domains, such as telecom, e-commerce, health care, process automation, or aerospaceExamples The domain-specific services layer is where system integrators can provide the most value & derive the most benefits

  • Consequences of COTS & IT CommoditizationMore emphasis on integration rather than programming Increased technology convergence & standardization Mass market economies of scale for technology & personnelMore disruptive technologies & global competition Lower priced--but often lower quality--hardware & software components The decline of internally funded R&DPotential for complexity cap in next-generation complex systemsNot all trends bode well for long-term competitiveness of traditional R&D leadersUltimately, competitiveness depends on success of long-term R&D on complex distributed real-time & embedded (DRE) systems

  • Why We are Succeeding NowWhy middleware-centric reuse worksHardware advancese.g., faster CPUs & networksSoftware/system architecture advancese.g., inter-layer optimizations & meta-programming mechanismsEconomic necessitye.g., global competition for customers & engineers

    Recent synergistic advances in fundamental technologies & processes:

  • Example:Applying COTS in Real-time AvionicsKey System CharacteristicsDeterministic & statistical deadlines~20 HzLow latency & jitter ~250 usecsPeriodic & aperiodic processingComplex dependenciesContinuous platform upgradesGoalsApply COTS & open systems to mission-critical real-time avionics

  • Example:Applying COTS to Time-Critical Targets

  • Example: Applying COTS to Large-scale RoutersGoalSwitch ATM cells + IP packets at terabit ratesKey System CharacteristicsVery high-speed WDM links102/103 line cardsStringent requirements for availabilityMulti-layer load balancing, e.g.:Layer 3+4Layer 5

  • Example:Applying COTS to Hot Rolling MillsGoalsControl the processing of molten steel moving through a hot rolling mill in real-timeSystem CharacteristicsHard real-time process automation requirements i.e., 250 ms real-time cyclesSystem acquires values representing plants current state, tracks material flow, calculates new settings for the rolls & devices, & submits new settings back to plant

  • Example:Applying COTS to Real-time Image ProcessingGoalsExamine glass bottles for defects in real-timeSystem CharacteristicsProcess 20 bottles per seci.e., ~50 msec per bottleNetworked configuration~10 cameras

  • Key Opportunities & Challenges in Concurrent ApplicationsMotivationsLeverage hardware/software advancesSimplify program structureIncrease performanceImprove response-timeAccidental ComplexitiesLow-level APIsPoor debugging tools

    Inherent ComplexitiesSchedulingSynchronizationDeadlocks

  • Key Opportunities & Challenges in Networked & Distributed ApplicationsMotivations Collaboration Performance Reliability & availability Scalability & portability Extensibility Cost effectivenessAccidental ComplexitiesAlgorithmic decompositionContinuous re-invention & re-discovery of core concepts & componentsInherent ComplexitiesLatencyReliabilityLoad balancingCausal ordering

  • Overview of Patterns

  • Overview of Pattern LanguagesBenefits of Pattern LanguagesDefine a vocabulary for talking about software development problemsProvide a process for the orderly resolution of these problemsHelp to generate & reuse software architecturesMotivationIndividual patterns & pattern catalogs are insufficientSoftware modeling methods & tools that just illustrate how, not why, systems are designed

  • Taxonomy of Patterns & Idioms

    TypeDescriptionExamplesIdiomsRestricted to a particular language, system, or toolScoped lockingDesign patternsCapture the static & dynamic roles & relationships in solutions that occur repeatedly Active Object, Bridge, Proxy, Wrapper Faade, & VisitorArchitectural patternsExpress a fundamental structural organization for software systems that provide a set of predefined subsystems, specify their relationships, & include the rules and guidelines for organizing the relationships between themHalf-Sync/Half-Async, Layers, Proactor, Publisher-Subscriber, & ReactorOptimization principle patternsDocument rules for avoiding common design & implementation mistakes that degrade performanceOptimize for common case, pass information between layers

  • Software Design Abstractions for Concurrent & Networked ApplicationsProblemDistributed app & middleware functionality is subject to change since its often reused in unforeseen contexts, e.g., Accessed from different clientsRun on different platformsConfigured into different run-time contexts

  • A Comparison of Class Libraries, Frameworks, & Components

  • Using Frameworks & Components EffectivelyObservationsFrameworks are powerful, but hard to develop & use effectively by application developersIts often better to use & customize COTS frameworks than to develop in-house frameworksComponents are easier for application developers to use, but arent as powerful or flexible as frameworks

  • The Layered Architecture of ACEFeaturesOpen-source200,000+ lines of C++30+ person-years of effortPorted to Win32, UNIX, & RTOSse.g., VxWorks, pSoS, LynxOS, Chorus, QNXLarge open-source user support by Riverace

  • Key Capabilities Provided by ACE

  • The