730 likes | 941 Views
Architecture Description Languages. Mohamed Soliman (msoliman@bcr6.uwaterloo.ca) Basem Shihada (bshihada@bbcr.uwaterloo.ca) Andreas Grau (agrau@elora.math.uwaterloo.ca). Goals. Introduce Architecture Description Languages Present three different classes of ADLs and their application
E N D
Architecture Description Languages Mohamed Soliman(msoliman@bcr6.uwaterloo.ca) Basem Shihada(bshihada@bbcr.uwaterloo.ca) Andreas Grau(agrau@elora.math.uwaterloo.ca)
Goals • Introduce Architecture Description Languages • Present three different classes of ADLs and their application • Show modeling in ADLs with components
Introduction • Software can have high complexity • Coarse grain elements help to abstract • Formal architecture is needed • Model System • Test System • Avoid wrong decisions on architectural (early!) • Reusability • Reduce development costs => ADL
Introduction Nenad Medvidovic (neno@usc.edu)
Introduction Many ADLs have been proposed ACME Aesop ArTek C2 CODE Darwin Demeter FR Gestalt LILEANNA MetaH ModeChart ObjectTime Rapide RESOLVE SADL UML UniCon Weaves Wright
Introduction What is an architecture? “Software architecture involves the description of elements from which systems are built, interactions among those elements, patterns that guide their composition, and constraints on these patterns.” --Shaw and Garlan Mary.Shaw@cs.cmu.edu, Garlan@cs.cmu.edu
Introduction What is an ADL then? • An ADL is a language that provides features for modeling a software system’s conceptual architecture. • Essential features: explicit specification of • components • interfaces • connectors • configurations • Desirable features • specific aspects of components, connectors, and configurations • tool support
Outline • Background • Rapide Design goals • ADL Requirements in Rapide • Architecture components • The Event Model and Posets • Connecting Components – The Architecture • More Rapide Features • Discussion • Conclusion
Background • Created in Stanford for DARPA – early 90’s • Based on work by Prof. D. Luckham • Logician • Worked in concurrent Ada • Co-founder of Rational Software, Inc. • By then, and still, describing Software Architecture needed more attention • Hardware Description was more mature (VHDL) • Now, it is widely accepted ADL
Rapide goals • To be an Executable Architecture Description Language (EADL) that • Provides constructs for defining executable prototypes of architectures • Adopts an execution model in which the concurrency, synchronization, data flow and timing properties of the prototype are explicitly represented
Architecture Specification 1. Interfaces (External component behavior) 2. Connections – wires 3. Constraints (on interface & conn.) Architecture
Component Abstraction • Description of rich interfaces is needed – must go beyond traditional information hiding • Why? • Interface type allows two methods of communication: • Synchronous: by function calls (provides, requires) • Provides: declared functions in module • Requires: invoked functions by the module • Asynchronous: by events (in, out) • In: what actions the component will do on observing an event • Out: what events the component will generate to the parent architecture (other components) • In, Out actions are glued by connectors
Events in Rapide • Events: tuples of information containing: • What generated the event - What activity was done • Data values - Time ,… etc • Causality between events: Components reactive behavior • E.g. component X reacted to event EV1 by generating event EV2 • Poset: Partially Ordered Set of Events • Dependencies and independencies of events (ordering) • Architecture Execution generates posets as well • Event Patterns: Expressions on events used for : • Defining behavior of components and connections • Mapping between architectures • Imposing constraints on posets Constraining behavior • Generate behavior (by generating posets) • E.g. A(?I) Where ?I > 4
Connecting Components • An interface connection is a set of - Interfaces - Connections - Constraints • Connections: • Connection Rules - Creation Rules • Creation Rules: event conditions leading to creation of new components (for Dynamic architectures) • Connection Rules: • Implementation independent relationship between events or functions • Uses event pattern matching • Static and dynamic architectures
Connection Rules • ‘Wire up’ components • Provide communication abstraction • Two patterns separated by (to, =>, ||>) • Syntax: [Trigger op Right] • Functions or Events • Connects (in, out) - Synchronous (requires, provides) – Asynch.
Constraints • Example: Component uses a particular communication protocol • Generated events in interfaces and connections must match the constraints (Constraint section) • Along with connection rules, they provide communication integrity
Dynamic Architectures • Static Architectures: declare the components in object declarations • Dynamic Architectures (Evolution): • Number of components is not known • Declare the interface types of components • By using component creation rules
Hierarchy • Hierarchical composition is an important feature of ADLs • Connecting components should result in a new component • Done in Rapide by binding architectures to interfaces using connections • The Architecture is a component -> [Interconnection of Architectures – ACME]
Relativity of Architectures • Comparing the behavior of one Architecture (connected components) to another architecture • Idea: Study how events of one system correspond to the other • Different levels of abstraction • E.g.: Many events in one system map to just one • Done by MAPPINGS • Map from one name to another - Mapping rules • Several advantages: • Comparing different versions - Refinement • Evaluate proposed architectures vs. reference architecture
Architecture Execution • To test consistency of the interfaces and connections • To discover various aspects of the architecture’s behavior • To test that communication complies with constraints
Discussion • Rapide provides only one single view of a system – graphical tools support may help • Components are first-class entities while connectors are not first-class entities as in Unicon, for example • In Rapide, connectors are defined in the architecture entity • Rapide is powerful but complex … • Rapide and coordination models!
Conclusion • Rapide is an Executable Architecture Description Language (EADL) that is capable of: • Modeling and describing architectures by connecting components • Modeling and simulation of the dynamic behaviors by using Posets • Components, Connectors and Constraints are the basic entities • The Poset execution model is a powerful tool for analyzing system behavior – Not in other ADLs • Dynamic Architectures, relativity, and hierarchical refinement are achieved with Rapide
Questions?! Basem Shihada Break!
ACME: Architecture Description Interchange Language http://bbcr.uwaterloo.ca/~bshihada/cs854/acme.pdf
Background Motivation ACME ACME Goals ACME Capabilities ACME Features ACME Kernel ACME Kernel Extensions ACME Properties Interchange History ACME Infrastructure Wright to Rapide Ongoing Work Conclusion Presentation Outline
Background • Started early 1995 • By D. Garlan, R. Monroe, & D. Wile, from Garnegie Mellon Univ. & USC/Inf. Sciences Institute • Categorized under the architecture interchange languages • Support the interchange of architectural description between variety of architectural design tools. • A new design & analysis tools can be built without rebuild standard infrastructure.
Motivations • Different ADL’s provides certain distinctive capabilities • Each operates in stand-alone fashion • Many common aspects already implemented in each ADL • Adopting certain ADL requires high-learning curve
ACME • Acme is simple, generic software architectural description language that provide generic, extensible infrastructure for describing , representing, generating, and analyzing software architecture descriptions • Consist of Acme Language and Acme Tool Developer
ACME Goals • Interchange format for architectural development tools and environments • Underlying representation for developing new tolls for analyzing and visualizing architectures • Foundation for developing new, domain-specific ADLs
ACME Goals cont. • Vehicle for creating conventions: consensus building • Semantic foundations • Refinement • Event-based • Temporal logic • Architecture families • Architecture evolution • Dynamic architectures • Expressive descriptions that are easy for humans to read and write.
ACME Capabilities • Architectural Interchange • Extensible foundation for new architecture design & analysis tools • Architectural Description
ACME Features • An architecture ontology consisting of seven basic architectural design elements • A flexible annotation mechanism sporting association of non-structure information using externally defined sub languages • A type mechanism for abstracting common, reusable architecture phrase and styles • An open semantic framework for analysis about architectural descriptions
ACME Kernel • Components (box): Primary computations elements and data stores. • Connectors (Arrow): Interaction among components • Systems: configuration of components and connectors • Ports: components interfaces • Roles: connectors interfaces • Representations • Rep-maps: maps the internal and external (interfaces, ports, ..etc)
ACME Kernel Extensions • Need to extend kernel to as large a language as is acceptable by the community • Templates • Typed macros • With typed arguments • Families: Styles and other constrained aggregates • Specification as a set of templates and types • Declaration of restriction to family enforces template usage
ACME Properties Architectural Integration properties Annotation Properties list
Interchange History • Wright -> Rapide Translation • Initial translation technology developed • One-way translation (not round trip) • Aesop <-> ACME <-> UniCon • Aesop <-> ACME 1.0 works • Aesop <-> ACME 3.0 underway • Aesop <-> ACME 3.0 underway • Aesop <-> ACME <-> UniCon works
ACME Infrastructure • ACME-Lib infrastructure • Extensible ACME parser & unparsed • Extensible ACME Translation tools • Native-ADL embeddable support • Support for design traversal, manipulation, and type-checking in ACME-native tools ADL Converter ACME ACME Description Access ACME Description Target ADL Methods Parser
Ongoing Work • Prototypes for several ACME tools to be provided to the architecture and generation EDCS cluster • Prototypes for tools that allow others to provide domain-specific analyzers • Promised, type checker, visualization tools
Conclusion • Architectural description Integration Language • Capable of • Architectural integration toolkit • Extendable foundation for new tools • Architecture Description. • Consist of several elements • Elements supported with properties • Open semantic framework
Questions? Break!