Software Architectures

Similar documents
Introduction. ADL Roles

Review Sources of Architecture. Why Domain-Specific?

Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms?

Review Architectural Style. Review Style Properties and Benefits

Domains of Concern in Software Architectures and Architecture Description Languages

Architectural Blueprint

GSAW Software Architectures: What are we Building? March 1999

Introduction to Modeling

What is your definition of software architecture?

Architectures in Context

Acme: a Language for Architecture Exchange and Analysis. Talk Outline

What is Software Architecture? What is Principal?

A SIMULATION ARCHITECTURE DESCRIPTION LANGUAGE FOR HARDWARE-IN-LOOP SIMULATION OF SAFETY CRITICAL SYSTEMS

Software Architecture: A quick journey

Overview (and reorientation) of SE

Ch 1: The Architecture Business Cycle

Requirements to models: goals and methods

On ADLs and tool support for documenting view-based architectural descriptions

Software Architectures. Lecture 8

Architectural Blueprint The 4+1 View Model of Software Architecture. Philippe Kruchten

Software Architecture

Software Architecture and Design I

Lecture 13 Introduction to Software Architecture

Current Issues and Future Trends. Architectural Interchange

What is Software Architecture

A Framework for Classifying and Comparing Architecture Description Languages

Architectural Design Rewriting as Architectural Description Language

Presenter: Dong hyun Park

Architecture. Readings and References. Software Architecture. View. References. CSE 403, Spring 2003 Software Engineering

Chapter 6 Architectural Design

Architecture. CSE 403, Winter 2003 Software Engineering.

Software Architecture. Lecture 5

Ch 1: The Architecture Business Cycle

Describing Information Systems Moving Beyond UML

Why Consider Implementation-Level Decisions in Software Architectures?

Chapter 6 Architectural Design. Chapter 6 Architectural design

Architectural Design

A Classification and Comparison Framework for Software Architecture Description Languages

Software architecture: Introduction

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

The Method for Verifying Software Architecture with FSP Model

Software Architectures. Lecture 6 (part 1)

WHAT IS SOFTWARE ARCHITECTURE?

Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila

Architectural Design

Software architecture: Introduction

From cradle to grave: An architecture substrate for software lifecycles

SoberIT Software Business and Engineering Institute. SoberIT Software Business and Engineering Institute. Contents

How Do You Design? Where do architectures come from? Creativity. Method

Creating and Analyzing Software Architecture

ICS 52: Introduction to Software Engineering

Software Interconnection Models. Unit Interconnection

Software Architecture

Introduction to software architecture Revision : 732

An Introduction to Software Architecture. David Garlan & Mary Shaw 94

Minsoo Ryu. College of Information and Communications Hanyang University.

LOG8430: Architecture logicielle et conception avancée

CS560 Lecture: Software Architecture Includes slides by I. Sommerville

Software Architectures. Lecture 7 15 Oct 2014

Lecture 1. Chapter 6 Architectural design

Software Architecture Extraction

SOFTWARE ARCHITECTURES UNIT I INTRODUCTION AND ARCHITECTURAL DRIVERS

Exploiting Architectural Style to Develop a Family of Applications

Semantics-Based Integration of Embedded Systems Models

Meta Architecting: Towered a New Generation of Architecture Description Languages

Lecture Notes UML UNIT-II. Subject: OOAD Semester: 8TH Course No: CSE-802

Software Reuse and Component-Based Software Engineering

ICS 52: Introduction to Software Engineering

An Introduction to Software Architecture

Architectural Decomposition Reid Holmes

Fundamentals to Creating Architectures using ISO/IEC/IEEE Standards

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design

Implementing Architectures

An Introduction to Software Architecture

ADD 3.0: Rethinking Drivers and Decisions in the Design Process

Unit 1 Introduction to Software Engineering

Software Architecture

What is a Data Model?

An Information Model for High-Integrity Real Time Systems

Objectives. Architectural Design. Software architecture. Topics covered. Architectural design. Advantages of explicit architecture

Introduction to Formal Methods

AADL Graphical Editor Design

Architectural Styles. Software Architecture Lecture 5. Copyright Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved.

CS 307: Software Engineering. Lecture 10: Software Design and Architecture

Constraint-based Generation of Connectors

On the Role of Connectors in Modeling and Implementing Software Architectures

Architectural Styles: Definitions

Using Architectural Models at Runtime: Research Challenges

1 Executive Overview The Benefits and Objectives of BPDM

Q Body of techniques supported by. R precise mathematics. R powerful analysis tools. Q Rigorous, effective mechanisms for system.

Components Based Design and Development. Unit 3: Software Design Quick Overview

Architectural Decomposition & Representations Reid Holmes

Capturing Design Expertise in Customized Software Architecture Design Environments

Object-Oriented Design

Software Architecture in Practice

Proposed Revisions to ebxml Technical. Architecture Specification v1.04

From MDD back to basic: Building DRE systems

Architectural Design

! Use of formal notations. ! in software system descriptions. ! for a broad range of effects. ! and varying levels of use. !

Architectural Decomposition Mei Nagappan

Transcription:

Software Architectures Richard N. Taylor Information and Computer Science University of California, Irvine Irvine, California 92697-3425 taylor@ics.uci.edu http://www.ics.uci.edu/~taylor +1-949-824-6429 +1-949-824-1715 (fax)

Acknowledgments Will Tracz Neno Medvidovic Peyman Oreizy Dewayne Perry

Overview Rationale: why the focus, and what s new Definitions and focus areas Processes and domain-specific software architectures Dynamic change

Why the Focus on Architecture? Architectures are not new -- there has long been a focus on getting the high-level design in good shape. So what s new? Making the architecture explicit Retaining the description Using the description as the basis for system evolution, runtime change, and for analysis Separating computation from communication Separating architecture from implementation Component-based development emphasis A shift in developer focus

Explicit versus Implicit The architecture is there whether we make it explicit or not If it is implicit, then we have no way of understanding it conforming to it (architectural mismatch) controlling or directing its change (architectural drift or erosion)

An Explicit Architecture Provides a Structural Framework for: System development Component design and implementation System evolution Composition of systems Systematic reuse Retention and exploitation of domain knowledge

Differences Between Architecture and Design Architecture is concerned about higher level issues components v. procedures or simple objects interactions among components v. interface design constraints on components and interactions v. algorithms, procedures, and types Architecture is concerned with a different set of structural issues Large-grained composition v. procedural composition Component interactions (protocols) v. interaction mechanisms (implementations) Information content v. data types and representations Architecture and Patterns

Architectures and Implementations A one-to-many relationship Bi-directional mapping must be maintained Some components may be generated The special role of connectors

Definitions Perry and Wolf Software Architecture = {Elements, Form, Rationale} Garlan and Shaw Kruchten [Software architecture is a level of design that] goes beyond the algorithms and data structures of the computation: designing and specifying the overall system structure emerges as a new kind of problem. Structural issues include gross organization and global control structure; protocols for communication, synchronization, and data access; assignment of functionality to design elements; physical distribution; composition of design elements; scaling and performance; and selection among design alternatives. Software architecture deals with the design and implementation of the high-level structure of software. Architecture deals with abstraction, decomposition, composition, style, and aesthetics.

Key Architectural Concepts A component is a unit of computation or a data store. Components are loci of computation and state. A connector is an architectural building block used to model interactions among components and rules that govern those interactions. An architectural configuration or topology is a connected graph of components and connectors which describes architectural structure. proper connectivity concurrent and distributed properties adherence to design heuristics and style rules

Architecture-Based Software Engineering An approach to software systems development which uses as its primary abstraction a model of the system s components, connectors, and interconnection topology

Focus Areas Architecture description techniques Analysis based on architectural descriptions Program-like analyses Predictive performance analyses Static and dynamic Architectural styles Evolution Specification-time Run-time Refinement Traceability Design process support

Architecture Description Techniques Principal Problems Aid stakeholder communication and understanding Desired Solutions Multiple perspectives

Architecture Description Languages Architectural models as distinct software artifacts communication analysis simulation / system generation evolution Informal vs. formal models General-purpose vs. special-purpose languages Several prototype ADLs have been developed ACME Aesop ArTek C2 Darwin LILEANNA MetaH Rapide SADL UniCon Wright

ADL Definition An ADL is a language that provides features for modeling a software system s conceptual architecture. Essential features: explicit specification of components component interfaces connectors configurations Desirable features specific aspects of components, connectors, and configurations tool support

Classifying Existing Notations Approaches to modeling configurations implicit configuration in-line configuration explicit configuration Associating architecture with implementation implementation constraining implementation independent

Related Notations High-level design notations e.g., LILEANNA, ArTek Module interconnection languages e.g., MIL Object-oriented notations e.g., Booch diagrams, UML Programming languages e.g., Ada, Java Formal specification languages e.g., Z, Obj, CHAM

Analysis Principal Problems Evaluate system properties upstream to reduce number and cost of errors Desired Solutions Static analysis internal consistency concurrent and distributed properties design heuristics and style rules Dynamic analysis testing and debugging assertion checking runtime properties Predictive performance

Principal Problems Refinement Bridge the gap between architecture descriptions and programming languages Desired Solutions Specify architectures at different abstraction levels Correct and consistent refinement across levels

Principal Problems Traceability Multiple abstraction levels + multiple perspectives Desired Solutions Traceability across architectural cross-sections

Design Process Support Principal Problems Decompose large, distributed, heterogeneous systems Desired Solutions Multiple perspectives Design guidance and rationale

Origins: Where do Architectures Come From? Theft, method, or intuition? Krutchen s view: scenario-driven, iterative design Recovery DSSA approach: domain model, reference requirements, and reference architecture (reflecting experience)

5 views of architectures Kruchten s Views conceptual the object model of the design dynamic concurrency and synchronization aspects physical static mapping of software onto hardware organization of software in the development environment scenarios

The 4+1 View Model Conceptual View Static View Scenarios Dynamic View Physical View

Scenario-Driven Iterative Approach Prototype, test, measure, analyze, and refine the architecture in subsequent iterations Summary of the Approach: choose scenarios and identify major abstractions map the abstractions to the 4 blueprints implement, test, measure, and analyze the architecture select additional scenarios and reassess the risks fit new scenarios into the original architecture and update blueprints measure under load, in real target environment review all 5 blueprints to detect potential for simplification and reuse update rationale

Architecture Recovery Process The models are suggestive of a recovery process create a configuration model determine the types of the components and connectors determine the patterns of interactions among the components abstract the properties of and relationships among the components and connectors abstract useful styles

The DSSA Insight Reuse in particular domains is the most realistic approach to reuse reuse in general is too difficult to achieve therefore focus on classes of applications with similar characteristics Software architectures provide a framework for reuse

Domain-Specific Software Architectures DSSA is an assemblage of software components specialized for a particular type of task (domain) generalized for effective use across that domain composed in a standardized structure (topology) effective for building successful applications - Rick Hayes-Roth, Teknowledge, 1994 DSSA is comprised of a domain model, reference requirements, a reference (parameterized) architecture (expressed in an ADL), its supporting infrastructure/environment, and a process/methodology to instantiate/refine and evaluate it. - Will Tracz, Loral, 1995

What Is a Domain Model? A domain model is a representation of functions being performed in a domain data, information, and entities flowing among the functions It deals with the problem space Domain model is a product of domain analysis it is like several blind men describing an elephant Fundamental objectives of domain analysis: standardize domain terminology and semantics provide basis for standardized descriptions of specific problems to be solved in the domain Domain model elements customer needs statement, scenarios, domain dictionary, context and ER diagrams, data-flow, state-transition, and object models

What Are Reference Requirements? Requirements that apply to the entire domain Reference requirements contain defining characteristics of the problem space functional requirements limiting characteristics (constraints) in the solution space non-functional requirements (e.g., security, performance) design requirements (e.g., architectural style, UI style) implementation requirements (e.g., platform, language)

What Is a Reference Architecture? Standardized, generic architecture(s) describing all systems in a domain Based on the constraints in reference requirements Specifies syntax and semantics of high-level components It is reusable, extendable, and configurable Instantiated to create a specific application s architecture Reference architecture elements model (topology), configuration decision tree, architecture schema (design record), dependency diagram, component interface descriptions, constraints, rationale

A Simplified DSSA Process with Principal Supporting Tool Types Modeling Tools Domain Model: Context + Reference Requirements Repository Tools Component Selection Tools Component Generators Configuration Package, Load, and Exercise Tools Requirements Management Tools Application Requirements Analysis Application Requirements Application Design & Development Application System: Architecture + Components + Platform Specs Test & Validation System Architecture Specification Tools Reference Architecture Architecture Refinement & Evolution Tools Requirements Validation Tools Performance Validation Tools

Another Simplified View of the DSSA Process Reference Architecture Application Architecture Implementation

Organizational Considerations Architecture/Asset base across product lines product line specific product specific Supporting technology global to the company Processes - support multiple product lines

Architectural Style Garlan: Architectural styles are recurring organizational patterns and idioms. Medvidovic, Oreizy, Robbins, Taylor: Architectural style is an abstraction of recurring composition and communication characteristics of a set of architectures. Styles are key design idioms that enable exploitation of suitable structural and evolution patterns and facilitate component and process reuse.

Design Reuse Benefits of Styles (1) solutions with well-understood properties can be reapplied to new problems Code Reuse invariant aspects of a style lend themselves to shared implementations Understandability of system organization just knowing that something is a client-server architecture conveys a lot of information

Interoperability Benefits of Styles (2) supported by style standardization (e.g., CORBA, SoftBench) Style-specific analyses constrained design space some analyses not possible on ad-hoc architectures or architectures in certain styles Visualizations style-specific depictions that match engineers mental models

Basic Properties of Styles They provide a vocabulary of design elements component and connector types (e.g., pipes, filters, servers...) They define a set of configuration rules topological constraints that determine permitted composition of elements They define a semantic interpretation compositions of design elements have well-defined meanings They define analyses that can be performed on systems built in the style code generation is a special kind of analysis

Three Views of Architectural Style Vocabulary Configuration Rules Semantic Interpretations Analyses Language System of Types Theory a set of grammatical productions context-free and -sensitive grammar rules standard techniques for assigning meaning to languages performed on architectural programs (compilation, flow) a set of types; in OO, sub- and super-types possible; maintained as type invariants operationally realized in the code that modifies type instances dependent on types involved (type checking, code generation) represented indirectly, in terms of elements logical properties defined as further axioms defined as further axioms by proving theorems, thereby extending the theory of the style

Comparisons of Style Views Representation of Structure Substyles Refinement Automated Support Language System of Types Theory explicit (language expression or abstract syntax tree) no way to define them explicit (interconnected collection of objects) new style types are subtypes of superstyle (e.g., Aesop) implicit (set of assertions) defined in terms of theory inclusion not handled not handled natural for defining inter-layer abstraction mappings programming language tools, e.g., type checkers, code generators, etc. OO databases and tools for storing, visualizing, and manipulating designs formal manipulation systems, e.g., theorem provers and model checkers

Overview of the C2 Style A component- and message-based style C2 architectures are networks of concurrent components hooked together by connectors C3 C2 C1 C4 no component-to-component links one up, one down rule for components connector-to-connector links are allowed many up, many down rule for connectors all communication by exchanging messages substrate independence

Internal Architecture of a C2 Component Domain Translator Wrapper Dialog & Constraints Internal Object

Clock Logic Example C2-Style Architecture Status ADT Chute ADT Well ADT Palette ADT Next Tile Placing Logic Tile Match Logic Relative Pos Logic Status Logic Status Artist Well Artist Chute Artist Palette Artist Tile Artist Manager Layout Manager Graphics Binding

Architectural Evolution Principal Problems Evolution of design elements Evolution of system families Desired Solutions Specification-time evolution subtyping incremental specification system families Execution-time evolution replication, insertion, removal, and reconnection planned or unplanned constraint satisfaction

Execution-Time Evolution The role of architectures at run-time The special role of connectors The C2 project