Amirkabir University of Technology Computer Engineering Faculty ARCHITECTURAL

Amirkabir University of Technology Computer Engineering Faculty ARCHITECTURAL

Amirkabir University of Technology Computer Engineering Faculty ARCHITECTURAL DESIGN PATTERNS Ani Megerdoumian Design patterns Course Dr. Noorhosseini Winter 2010 Introduction Classification of patterns Programming Design Architectural Organizational The software architecture of a system is set of structures needed to reason about the system, which comprise software elements,

relations among them, and properties of both Amirkabir University of Technology - Computer Engineering Faculty 2 Software Architectural Patterns(1) Software Architectural Patterns address various issues in Software Engineering Hardware performance limitations High availability Minimization of business risk An architectural pattern is rather a concept that solves and delineates some essential cohesive elements of a software architecture. Amirkabir University of Technology - Computer Engineering Faculty

3 Software Architectural Patterns(2)patterns are a key concept Architectural in the field of software architecture: They offer solutions to architectural problems, Help to document the architectural design decisions, Facilitate communication between stakeholders through a common vocabulary, Describe the quality attributes of a software system as forces. It is adhoc and systematic Amirkabir University of Technology - Computer Engineering Faculty 4 Software Architectural

Patterns(3) Architectural patterns express fundamental structural organisation schemas for software systems set of predefined subsystems specify responsibilities rules and guidelines for organizing subsystem relationships For example INTERPRETER pattern for view software inside elements Amirkabir University of Technology - Computer Engineering Faculty 5 Classifying Architectural Patterns: Categorized according to the global system properties that they support

F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Patternorinented Software Architecture - A System of Patterns. J.Wiley and Sons Ltd., 1996. Classified with respect to a framework of features [1997,1998] like the types of components and connectors, and control and data issues M. Shaw and P. C. Clements. A field guide to boxology: Preliminary classification of architectural styles for software systems. In COMPSAC 97: Proceedingsbof the 21st International Computer Software and Applications Conference, pages 613. IEEE Computer Society, 1997. L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice. Addison-Wesley Longman, Reading, MA, 1998. Based on the concept of architectural views P. Clements, F. Bachmann, et al,Documenting Software Architectures: Views and Beyond. Addison-Wesley, 2002. Amirkabir University of Technology - Computer Engineering Faculty 6 Architectural View

An Architectural View is a representation of a system from the perspective of a related set of concerns An Architectural Pattern defines types of elements and relationships that work together in order to solve a particular problem from some perspective. Views Components Connectors Module Allocation Amirkabir University of Technology - Computer Engineering Faculty 7 An Overview on Patterns(1) 1. The Layered View deals with how the system as a complex heterogeneous entity can be decomposed into interacting parts.

LAYERS INDIRECTION LAYER (a variant of this pattern is called virtual Machine 2. The Data Flow View deals with how streams of data are successively processed or transformed by components. BATCH SEQUENTIAL PIPES AND FILTERS 3. The Data-centered View is appropriate when the concerns involve how a central repository of data is accessed by multiple components.

SHARED REPOSITORY ACTIVE REPOSITORY BLACKBOARD 4. The Adaptation View deals with how the system adapts itself during evolution. MICROKERNEL REFLECTION Amirkabir University of Technology INTERCEPTOR - Computer Engineering Faculty 8 An Overview on Patterns(2)

5. The Language Extension View is concerned with how systems offer an abstraction layer to the computation infrastructure. INTERPRETER VIRTUAL MACHINE RULE-BASED SYSTEM 6. The User Interaction View shows the runtime structure of components that offer a user interface. MODEL-VIEW-CONTROLLER PRESENTATION-ABSTRACTION-CONTROL C2

7. The Component Interaction View focuses on how individual components exchange messages but retain their autonomy. EXPLICIT INVOCATION (called communicating processes) IMPLICIT INVOCATION (also called event systems) CLIENT-SERVER PEER-TO-PEER PUBLISH-SUBSCRIBE (called publisher-subscriber ) 8. The Distribution View tackles concerns about disseminating components in a networked environment.

BROKER REMOTE PROCEDURE CALLS (called distributed objects) MESSAGE QUEUING (called messaging ) Amirkabir University of Technology - Computer Engineering Faculty 9 1.Layered View In the Layered View the system is viewed as a complex heterogeneous entity that can be decomposed into interacting parts. The concerns addressed by this view are: What are the parts that make up the whole system? How do these parts interact with each other? How do the parts perform their functionality and still remain decoupled from each other? How are the quality attributes of modifiability, scalability, and integrability supported?

Amirkabir University of Technology - Computer Engineering Faculty 10 Layered View Pattern: LAYERS Decoupling the components in a vertical manner On the other hand components also require some horizontal structuring Within each LAYER all constituent components work at the same level of abstraction and can interact through connectors. In the pure form of the pattern, layers should not be by-passed: higher-level layers access lowerlevel layers only through the layer beneath. Explicit interface/change the details inside

Two adjacent LAYERS can be considered as a CLIENT-SERVER pair, the higher layer being the client and the lower layer being the server. It can be used in other patterns: MICROKERNEL PRESENTATION-ABSTRACTION-CONTROL Amirkabir University of Technology - Computer Engineering Faculty 11 Layered View Pattern: INDIRECTION LAYER A sub-system should be accessed by one or more components, but direct access to the subsystem is problematic. The same problem appears at different levels of scale: it can happen between two ordinary components in one environment, components in two different languages,

components in two different systems INDIRECTION LAYER wraps all accesses to the relevant sub-system and should not be bypassed The INDIRECTION LAYER can either be: integrated to the sub-system (as in virtual machine) be an independent entity (as in ADAPTER or FAADE) The INDIRECTION LAYER pattern is a foundation for the architectures of INTERPRETER, VIRTUAL MACHINE, and RULE-BASED SYSTEM. Amirkabir University of Technology - Computer Engineering Faculty 12 2.Data Flow View In the Data Flow View the system is viewed as a number of subsequent transformations upon streams of input data. The concerns addressed by this view are:

What are the elements that perform the transformations? Are components that are independent of one another, and have input and output ports. What are the elements that carry the streams of data? Are connectors and similarly have data-in and data-out roles. How are the two aforementioned types of elements connected to each other? How are the quality attributes of modifiability, reusability, and integrability supported? Amirkabir University of Technology - Computer Engineering Faculty 13 Data Flow View Pattern: BATCH SEQUENTIAL In a BATCH SEQUENTIAL architecture the

whole task is sub-divided into small processing steps, which are realized as separate, independent components It is useful for simple data flows Entails severe overhead Makes the component complex Hinders modifiability and reusability Amirkabir University of Technology - Computer Engineering Faculty 14 Data Flow View PATTERN: PIPES AND FILTERS In a PIPES AND FILTERS architecture a complex task is divided into several sequential subtasks. Each of these sub-tasks is implemented by a separate, independent

component, a filter, which handles only this task. Filters: Filters have a number of inputs and a number of outputs and they are connected flexibly using pipes but they are never aware of the identity of adjacent filters. Each filter consumes and delivers data incrementally, which maximizes the throughput of each individual filter, since filters can potentially work in parallel. Pipes: Each pipe realizes a stream of data between two components Pipes act as data buffers between adjacent filters. There are performance overheads for transferring data in pipes and data transformations, and error handling is rather difficult. Amirkabir University of Technology - Computer Engineering Faculty 15

Traditional Compiler Architecture Lex Syn Sem Opt Code program source Pipelined Compiler Architecture Lex Syn Sem Opt

program source object code Code object code Amirkabir University of Technology - Computer Engineering Faculty 16 3.Data-centered View In the Data-centered View the system is viewed as a persistent, shared data store that is accessed and modified by a number of elements. The concerns addressed by this view are: How is the shared data store created, accessed, and updated? How is data distributed?

Is the data store passive or active, i.e. does it notify its accessors or are the accessors responsible of finding data of interest to them? How does the data store communicate with the elements that access it? Do the accessor elements communicate indirectly through the shared data or also directly with each other? How are the quality attributes of scalability, modifiability, reusability, and integrability supported? The data store and the elements that access it are components. The data store is independent of the components, and the components are usually independent of one another. Amirkabir University of Technology - Computer Engineering Faculty 17 Data-centered View Pattern: SHARED REPOSITORY In the SHARED REPOSITORY pattern one component of the system is used as a central data store, accessed by all

other independent components. The SHARED REPOSITORY must be scalable to meet the clients requirements it must ensure data consistency It must handle problems of resource contention for example by locking accessed data. The SHARED REPOSITORY might also introduce transaction mechanisms. A SHARED REPOSITORY also might offer additional services,Amirkabir suchUniversity as security. 18 of Technology - Computer Engineering Faculty Data-centered View Pattern: ACTIVE REPOSITORY A system needs to have a SHARED REPOSITORY, but it

should not just be passively accessed by accessor components. Clients need to be immediately informed of specific events in the shared repository, such as changes of data or access of data. An ACTIVE REPOSITORY is a SHARED REPOSITORY that is active in the sense that it informs a number of subscribers of specific events that happen in the shared repository. The ACTIVE REPOSITORY maintains a registry of clients and informs them through appropriate notification mechanisms. EXPLICIT INVOCATIONS IMPLICIT INVOCATIONS PUBLISH-SUBSCRIBE Amirkabir University of Technology - Computer Engineering Faculty 19 Data-centered View Pattern: BLACKBOARD

In an immature domain in which no deterministic approach to a solution is known Step-wise improvement of the solution. The complex task is divided into smaller sub-tasks for which Each client can access the BLACKBOARD to see if new inputs are presented for further processing and to deliver results after processing. Image and speech recognition application A control component monitors the blackboard and coordinates the clients according to the state of the blackboard separate component, it may be part of the clients, the blackboard itself, or a combination of the above.

20 Overview: Patterns of the Layered, Data Flow and Data-centered Views Amirkabir University of Technology - Computer Engineering Faculty 21 4.Adaptation View In the Adaptation View the system is viewed as a core part that remains invariable and an adaptable part that either changes over time or in different versions of a system. The concerns addressed by this view are: How can a system adapt better to evolution over time or to multiple different versions of a basic architecture? What is the system functionality that is more likely to change and what will possibly remain invariable? How do the invariable parts communicate with the adaptable parts?

How are the quality attributes of modifiability, reusability, evolvability, and integrability supported? 1. Invariable components 2. Adaptable components(Variation points) Amirkabir University of Technology - Computer Engineering Faculty 22 Adaptation View Pattern: MICROKERNEL Consider a system family where different versions of a system need to be supported. Nonetheless, the system family should be realized using a common architecture to ease software maintenance and foster reuse.

A MICROKERNEL realizes services that all systems, derived from the system family, need and a plug-and-play infrastructure for the system-specific services. Internal servers (not visible to clients) are used to realize versionspecific services and they are only accessed through the MICROKERNEL. External servers offer APIs and user interfaces to clients by using the MICROKERNEL. Amirkabir University of Technology - Computer Engineering Faculty 23 Adaptation View Pattern: REFLECTION Also Known As: Open Implementation, Meta-Level Architecture In a REFLECTION architecture all structural and behavioral aspects of a system are stored into meta-objects and separated from the application logic components. The latter can query the former (that may have changed at any point of time) in order to execute their functionality.

The REFLECTION pattern is organized into LAYERS: the meta-level the base level It can be used in Aspect-Oriented composition frameworks Amirkabir University of Technology - Computer Engineering Faculty 24 Adaptation View Pattern: INTERCEPTOR Another variant of Chain of Responsibility pattern In cases where we need an adaptable framework to accommodate future services, the INTERCEPTOR pattern is appropriate registering new services with the system, letting the system trigger these services automatically when certain events occur, letting the new services access the systems internal state and control its behavior. An application can register with the framework any number of INTERCEPTORS that implement new services.

for aspect-oriented composition as MESSAGE INTERCEPTOR for middleware architectures as INVOCATION INTERCEPTOR Amirkabir University of Technology - Computer Engineering Faculty 25 5.Language Extension View In the Language Extension View the system is viewed as a part that is native to the software/hardware environment and another part that is not. The concerns addressed by this view are: How can a part of the system that is written in a non- native language be integrated with the software system? How can the non-native part be translated into the native environment? How are the quality attribute of portability and modifiability supported? These communicate indirectly through another type

of component, an interpreter component that translates the latter into the former. Amirkabir University of Technology - Computer Engineering Faculty 26 Language Extension View Pattern: INTERPRETER An INTERPRETER for the language is provided, which provides both parsing facilities and an execution environment. The program that needs to be interpreted is provided in form of scripts which are interpreted at runtime. Amirkabir University of Technology - Computer Engineering Faculty

27 Language Extension View Pattern: VIRTUAL MACHINE An efficient execution environment for a programming language is needed. The architecture should facilitate portability, code optimizations, and native machine code generation Runtime interpretation of the language is not necessarily required. A VIRTUAL MACHINE defines a simple machine architecture on which not machine code but an intermediate form called the byte-code can be executed. The language is compiled into that byte-code. Amirkabir University of Technology - Computer Engineering Faculty 28 Language Extension View

Pattern: RULE-BASED SYSTEM Logical problems are hard to express an expert system that provides the knowledge of an expert or a set of constraints Alternative for if-else statements It consists mainly of three things: facts, represent data Rules, Represent knowledge in form of a condition and associated actions an engine that acts on them A RULE-BASED SYSTEM applies its rules to the known facts. The actions of a rule might assert new facts, which, in turn, trigger other rules. Amirkabir University of Technology - Computer Engineering Faculty

29 Overview: patterns of the Adaptation and Language Extension View Amirkabir University of Technology - Computer Engineering Faculty 30 6.User Interaction View In the User Interaction View the system is viewed as a part that represents the user interface and a part that contains the application logic, associated with the user interface. The concerns addressed by this view are: What is the data and the application logic that is associated to the user interface? How is the user interface decoupled from the application logic?

How are the quality attributes of usability, modifiability, and reusability supported? Amirkabir University of Technology - Computer Engineering Faculty 31 User Interaction View Pattern: MODEL-VIEW-CONTROLLER Amirkabir University of Technology - Computer Engineering Faculty 32 User Interaction View Pattern: PRESENTATION-ABSTRACTION An interactive systemCONTROL may offer multiple diverse functionalities that need to be presented to the user through a coherent user interface. 1. the leaves of the tree are agents that are responsible for specific

functionalities 2. At the middle layers there are agents that combine the functionalities of related lower-level agents to offer greater services; 3. at the top of the tree, there is only one agent that orchestrates the middle-layer agents to offer the collective functionality. Each agent is comprised of three parts: A Presentation takes care of the user interface; An Abstraction maintains application data and the logic that modifies it; A Control intermediates between the Presentation and the Abstraction and handles all communication with the Controls of other Agents. Amirkabir University of Technology - Computer Engineering Faculty 33 User Interaction View Pattern: C2

An interactive system is comprised of multiple components The system may need to support several requirements Yet the system needs to be designed to achieve separation of concerns and satisfy its performance constraints. The system is decomposed into a top-to-bottom hierarchy of concurrent components that interact asynchronously by sending messages through explicit connectors. Components submit request messages upwards in the hierarchy, knowing the components above, but they send notification messages downwards in the hierarchy, without knowing the components lying beneath. The purposes of connectors is to broadcast, route, and filter messages. 34 Overview: patterns of the User Interaction View Amirkabir University of Technology - Computer Engineering Faculty 35 REFERENCES

P. Avgeriou, U. Zdun, Architectural Patterns Revisited A Pattern Language, the European Pattern Languages of Programming (EuroPLOP) 610 July 2005, Irsee, Germany. Amirkabir University of Technology - Computer Engineering Faculty 36 Thanks for you attention Amirkabir University of Technology - Computer Engineering Faculty 37

Recently Viewed Presentations

  • Title slide with picture - Airheads Community

    Title slide with picture - Airheads Community

    What is Tunneled Node? Tunneled Node. Extends the AP-controller tunneling scheme to the access switches. Per-port tunnel. A single GRE tunnel transports all traffic to/from "tunneled" interfaces
  • Technology Update - IASA

    Technology Update - IASA

    802.11ac. Working Group TGac specifies IEEE 802.11ac as an extension of 802.11n. Meanwhile, Working Group TGad and the Wireless Gigabit Alliance (WiGig) jointly proposed IEEE 802.11ad, which is targeting short-range speeds to 7 Gb/s in approximately 2 GHz of spectrum...
  • Genu valgus & Genu Varus - Weebly

    Genu valgus & Genu Varus - Weebly

    GENU VALGUS & GENU VARUS Prognosis If hip dysplasia is found in the first few months of life, it can almost always be treated successfully with a positioning device (bracing). In a few cases, surgery is needed to put the...
  • Chemical and Physical Structures of the Ocean

    Chemical and Physical Structures of the Ocean

    2. The pycnocline is transitional between the surface and deep layers and comprises 18% of the ocean basin. a. In the low latitudes, the pycnocline coincides with the thermocline, but in the mid-latitudes it is the halocline.
  • District 12 Little League Coaches Clinic

    District 12 Little League Coaches Clinic

    A runner who runs more the three feet away from a direct line between bases is out of the baseline and should be called out. The runner is out if tagged when she turns to the left after crossing first...
  • Outdoor Scoreekeeping Clinic - VolleyballRefTraining.com

    Outdoor Scoreekeeping Clinic - VolleyballRefTraining.com

    Junior Scoring Clinic. Introduction. Introduce yourself. Set expectations for the presentation - timing, breaks, what materials you will need. ... Use your whistle (or shout) to request the Captain's to stop their warm-up and come to the meeting. ... Outdoor...
  • What Do We Need from Jonah? God is

    What Do We Need from Jonah? God is

    Type to enter a caption. 2) Free Us from Escape & Isolation. 3 But Jonah rose up to flee unto Tarshish from the presence of the LORD, and went down to Joppa; and he found a ship going to Tarshish:...
  • Understanding WRLC: - Howard University

    Understanding WRLC: - Howard University

    In the Beginning . The Washington Research Library Consortium (WRLC) was established in 1987 by some of the major universities in the Washington D.C. area to share library collections and information technology in order to enhance the resources available to...