Architecture Representation

Slides:



Advertisements
Similar presentations
ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Kellan Hilscher. Definition Different perspectives on the components, behavioral specifications, and interactions that make up a software system Importance.
IT Requirements Capture Process. Motivation for this seminar Discovering system requirements is hard. Formally testing use case conformance is hard. We.
Software Connectors Software Architecture. Importance of Connectors Complex, distributed, multilingual, modern software system functionality and managing.
Presented by: Thabet Kacem Spring Outline Contributions Introduction Proposed Approach Related Work Reconception of ADLs XTEAM Tool Chain Discussion.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Object-Oriented Analysis and Design
Applying Architectural Styles and Patterns. Outline  Defining Architectural Patterns and Style The activation model Styles and Quality Attributes  Common.
Architecture-driven Modeling and Analysis By David Garlan and Bradley Schmerl Presented by Charita Feldman.
Domain-Specific Software Engineering (DSSE). Software Engineering Concerns  There are many of them  “Classical” software architecture research has focused.
The Architecture Design Process
Demystifying Architectural Styles Nikunj Mehta 3/11/02Demystifying Architectural Styles2 Agenda Architectural Styles The Alfa Project Architectural framework.
21-February-2003cse Architecture © 2003 University of Washington1 Architecture CSE 403, Winter 2003 Software Engineering
Unified Modeling (Part I) Overview of UML & Modeling
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Demystifying Architectural Styles Nikunj Mehta 3/11/02Demystifying Architectural Styles2 Architectural Styles Characterize –Structure, i.e. external.
Software Architecture in Practice
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
Institute for Software Research©2001, University of California, Irvine Product-Line Architectures André van der Hoek Institute for Software Research University.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture premaster course 1.  Israa Mosatafa Islam  Neveen Adel Mohamed  Omnia Ibrahim Ahmed  Dr Hany Ammar 2.
Architectural Design.
© Drexel University Software Engineering Research Group (SERG) 1 Based on the paper by Philippe Kruchten from Rational Software.
Chapter 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
International Workshop on Web Engineering ACM Hypertext 2004 Santa Cruz, August 9-13 An Engineering Perspective on Structural Computing: Developing Component-Based.
An Introduction to Software Architecture
Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a software engineer to: (1) analyze the.
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
Lecture 9: Chapter 9 Architectural Design
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
Unified Modeling Language, Version 2.0
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
Object Management Group (OMG) Specifies open standards for every aspect of distributed computing Multiplatform Model Driven Architecture (MDA)
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Model-Driven Analysis Frameworks for Embedded Systems George Edwards USC Center for Systems and Software Engineering
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
An Ontological Framework for Web Service Processes By Claus Pahl and Ronan Barrett.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design.
Models and Knowledge Representation. Outline  What are models? The language of models Models and human comprehension  What are models used for? Systems.
Documenting Software Architectures 1.Uses and Audiences for Architecture Documentation Architecture documentation serves as a means of education Architecture.
CPSC 871 John D. McGregor Module 3 Session 1 Architecture.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 13. Review Shared Data Software Architectures – Black board Style architecture.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
1 Unified Modeling Language, Version 2.0 Chapter 2.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
What’s Ahead for Embedded Software? (Wed) Gilsoo Kim
Basic Concepts and Definitions
Basic Characteristics of Object-Oriented Systems
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Object-Oriented Analysis and Design
Unified Modeling Language
System Design and Modeling
Software Design and Architecture
Model-Driven Analysis Frameworks for Embedded Systems
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Architecture Description Languages
An Introduction to Software Architecture
Chapter 5 Architectural Design.
Presentation transcript:

Architecture Representation

Outline Goals of Architecture Representation Foundations of Software Architecture Representation Architecture Description Languages Design language elements First-class connectors Modules and Components Applying ADLs Summary

Outline (Cont’d) Modeling the problem and the solution domains Views Problem domain models Solution domain models Views Objectives and purpose models Behavioral/functional models Information/data models Models of form Nonfunctional/performance models Summary

A Model for Representing a Software Architecture Goals of architecture representation – a representation of a system that can be used to: Design a system Analyze a design Generate a system Foundations of software architecture representation – the elements for describing an architecture are: Components Connectors Architectural constraints

A Model for Representing a Software Architecture (Cont’d) Architectural description languages – ADLs are (machine readable) design languages used to describe a system that possess design language properties like: Composition Abstraction Reusability Configuration Heterogeneity Analysis

Foundations of Software Architecture Three types of constructs are necessary in representing software architectures: Elements Form Rationale Their elements are classified as: Data Processing Connecting

Foundations of Software Architecture (Cont’d) The architectural form is composed of weighted (by importance or necessity) properties and relationships. Properties may be used to define constraints. Relationships may be used to show how different architectural elements interact. Rationales capture the motivation behind various decisions; they are inferences that can be structured as an argument with the design decision being the conclusion.

Fundamental Software Design Views (Cont’d) Architectural styles can be sequential or parallel In the sequential style the connecting elements are procedure calls and parameters In the parallel style the connecting element is a shared representation of the data (a repositiory)

Architecture Description Languages Programming language structures are inadequate for describing architectural elements. Furthermore, they provide no way to model a strict separation of concerns between architectural-level design issues and detail design issues. Languages in general serve the purpose of describing complex relationships among primitive elements and element combinations.

Architecture Description Languages (Cont’d) Having identified semantic constructs it makes sense to define a language around them. Common architectural description elements include: (Pure) computation (processing elements) – simple input/output relations with no retained state Memory (data elements) – shared collections of persistent structured data Manager – manage state and closely related operations Controller – governs the sequence of operations Link – transmit information between elements

Common Component Interactions Procedure call Data flow Implicit invocation Message passing Shared data Instantiation

Design Language Elements -- Albin Components – the primitive semantic elements Operators – functions that combine components Abstraction rules – allow for the definition of named expressions of components and operators Closure rules – determines which abstractions can be added to the classes of primitive components and operators Specification – associates semantics to syntactic forms

Design Language Elements – Shaw and Garlan Components – the modules that compose the architectural level of design Operators – the inter-component connection mechanisms Patterns – design templates that solve a particular set of problems (a framework) Closure – defines the conditions under which a particular assembly of components and operators may also be used as an atomic component Specification – associates semantics such as functionality and other quality attributes to the syntactic forms

Six Classes of Properties that Should Characterize an ADL Composition Abstraction Reusability Configuration Heterogeneity Architectural Analysis

Composition An ADL should allow for the description of a system as a composition of components and connectors. It must support the ability to split a system or module into two modules It must support the ability to synthesize or combine modules to create new forms. These splitting or synthesis operations should be independent of implementation design decisions (choice of algorithms, data structures, connecting technology, etc.) A composition of elements must be allowed to be viewed as a single component. It must be possible to operate on the individual components of the composition.

Abstraction An ADL should allow a designer to focus on high-level concerns without having to think in terms of programming level constructs. Architectural abstractions are patterns of programming language constructs. An architect can think in terms of components and connectors focusing on the architectural concerns of modifiability, reliability, performance, etc. without having to map them to specific programming language elements.

Reusability It should be possible to modularize a specification written in a particular ADL so that the components can be used in other systems. These specifications are reusable patterns of components. For example, a certain client-server pattern might identify a database server component with a particular database table structure (a reusable data model). Each physical database implementation might look different but each would have the same core data and enforce the same semantic rules.

Configuration It should be possible with an ADL to describe a composite structure separately from its elements so that the composition can be reasoned about as an atomic element. It should support the dynamic reconfiguration of a system in terms of restructuring compositions without knowing their internal structure. For example, in a client/server system, an indefinite number of clients may be executing at any time.

Heterogeneity This is the ability to mix architectural styles within a single architectural specification. At one level, the architecture may exhibit a particular pattern of compositions, but the structure of each composition may follow a different pattern. An ADL should allow different compositions to be compiled to different languages.

Architecture Analysis An ADL should support the ability to analyze an architecture. Analysis of architecture includes both automated and non automated reasoning about quality attributes of a system. ADL research aims to automate this analysis by providing machine-readable specifications of specific quality attribute requirements and then checking to see if the architecture specification conforms to it.

First-Class Connectors Connectors should be considered equal to components. Connectors often embody the nonfunctional quality attributes and bring form to the architecture.

Modules and Components “A module is a unit whose structural elements are powerfully connected among themselves and relatively weakly connected to elements of other units. Clearly there degrees of connection; thus gradations of modularity.” – Baldwin Programming languages are insufficient for representing architectural level designs because they lack explicit connecting elements. Connecting elements are just as important from the architectural level of design as processing and data elements. The ability to abstract the implementation of a connecting element within an architecture specification is what makes an ADL so powerful.

An ADL Example – C2 SADL The C2 Software Architecture Description Language is intended for designing a flexible, extensible component- and message- based system that has a graphical user interface. A C2-based system is structured as a hierarchy of concurrent components that communicate via connectors, which are message-routing mechanisms. A component can have at most two connectors – a top connector and a bottom connector, which attach to components either up one level in the hierarchy or down one level. The top connector of one component is coupled with the bottom connectors of other components, and vice versa.

An ADL Example – C2 SADL (Cont’d) There is no limit to the number of connectors that ma be coupled with a single connector. A C2 component is only aware of the components above it, not those below. Requests go up and notifications go down. There is one component at the top. The C2 architectural style relies on a programming language neutral event mechanism, such as a message queue.

An ADL Example – C2 SADL (Cont’d) C2 SADL is composed of three parts: Interface Definition Notation (IDN) Supports textual specification of C2 component interfaces Consists of specifications for parameters, methods, behavior, and context Architecture Description Notation (ADN) Supports textual specification of a C2 architecture Architecture Construction Notation (ACN) Supports textural specification of architecture changes

Applying ADL’s ADLs are not commonly used. Most are experimental. Understanding the problems that ADLs attempt to solve, can help an architect to think about the solution to a particular problem. Understanding ADLs helps the architect to focus on the nature of connections between components.

Summary The component level of design allows us to reason about the properties of the system without first constructing the entire system. The fundamental language of specifying architecture design is composed of elements, form, and rationale. Elements are processing, data, and connecting Form is composed of weighted properties and relationships. Rationales capture the reasons why certain design decisions were made.

Summary (Cont’d) Architecture Description Languages (ADLs) are high-level languages for describing the component view of a software system. ADLs have not been applied much in practice. UML is often used as an ADL even though it is inadequate. The dependency (design) structure matrix is still one of the most powerful representation tools.