Ch 1: The Architecture Business Cycle

Similar documents
Ch 1: The Architecture Business Cycle

What is Software Architecture

WHAT IS SOFTWARE ARCHITECTURE?

Software Architectures. Lecture 6 (part 1)

Software Architecture

Dog Houses to sky scrapers

Architectural Blueprint

Software Architectures

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

Software Architecture. Lecture 5

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

SOFTWARE ARCHITECTURES UNIT I INTRODUCTION AND ARCHITECTURAL DRIVERS

Chapter 6 Architectural Design. Chapter 6 Architectural design

Current Best Practices in Software Architecture. Session 1: What Is Software Architecture? Why Is It Important?

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION

SOFTWARE ARCHITECTURE INTRODUCTION TO SOFTWARE ENGINEERING PHILIPPE LALANDA

Architectural Design

Software Reuse and Component-Based Software Engineering

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

Software MEIC. (Lesson 4)

Introduction to software architecture Revision : 732

The Open Group SOA Ontology Technical Standard. Clive Hatton

Architectural Design

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

Minsoo Ryu. College of Information and Communications Hanyang University.

Software Architecture and Design I

Overview of the course. User-Centred Design. Group. Practical issue. Writting the report. Project work. Fang Chen

Architectural Design. Topics covered. Architectural Design. Software architecture. Recall the design process

Presenter: Dong hyun Park

1: Software Development and.net. An approach to building software

A Comparison of Service-oriented, Resource-oriented, and Object-oriented Architecture Styles

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

Architectural Design

Fundamentals to Creating Architectures using ISO/IEC/IEEE Standards

CS SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS

Software Architecture in Practice

Architecture and Design Evolution

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Architectural Prescriptions for Dependable Systems

Introduction to Software Engineering 10. Software Architecture

What is your definition of software architecture?


Software Architecture

Using the UML for Architectural Description Rich Hilliard

CSCI 3130 Software Architectures 1/3. February 5, 2013

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

ISO/IEC/ IEEE INTERNATIONAL STANDARD. Systems and software engineering Architecture description

Unit 1 Introduction to Software Engineering

Requirements to models: goals and methods

Software Requirements Specification

Software Architecture. Definition of Software Architecture. The importance of software architecture. Contents of a good architectural model

10조 이호진 이지 호

What is a software architecture?

Design of Embedded Systems

Requirements Validation and Negotiation

ESE Einführung in Software Engineering!

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

Final Exam Review (extended)

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

Evolutionary Architecture and Design

Requirements Validation and Negotiation

Systems-Level Architecture. A Re-Introduction Arch. Reintro CSC Level of Design. Divide into two levels:

COMP 354 Introduction to Software Engineering

Software Design. Levels in Design Process. Design Methodologies. Levels..

Software Architecture

Product Quality Engineering. RIT Software Engineering

ADD 3.0: Rethinking Drivers and Decisions in the Design Process

Introduction to Architecture. Introduction to Architecture 1

Component-Based Software Engineering TIP

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright

CS 575: Software Design

Architectural Decomposition Mei Nagappan

Software Service Engineering

Software Architecture Thoughts for the System Security Design

Architectural Design. CSCE Lecture 12-09/27/2016

What is Software Architecture? What is Principal?

Diseño y Evaluación de Arquitecturas de Software. Architecture Based Design Method

Sommerville Chapter 6 The High-Level Structure of a Software Intensive System. Architectural Design. Slides courtesy Prof.

<<Subsystem>> Software Architecture Document

ICS 52: Introduction to Software Engineering

Lecture 13 Introduction to Software Architecture

What s a BA to do with Data? Discover and define standard data elements in business terms

Chapter : Analysis Modeling

Architectural Decomposition Reid Holmes

Architectural Decomposition & Representations Reid Holmes

Microsoft SharePoint End User level 1 course content (3-day)

Software Architecture

PROCESSES AND THREADS

Chapter 6 Architectural Design

Architecture of Business Systems Architecture and the Role of the Architect

Lecture 1. Chapter 6 Architectural design

CSE 333 Lecture 1 - Systems programming

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

Style-specific techniques to design product-line architectures

Maintaining & Increasing Stakeholder Confidence in IT Architecture

CSC Advanced Object Oriented Programming, Spring Overview

ECE-492 SENIOR ADVANCED DESIGN PROJECT

Topic 3 Unified Modeling Language UML. Objective: Student will use UML to represent relationshiops between objects, its structure and dynamics.

interaction design Thanks to JoEllen Kames

Towards Reusable Heterogeneous Data-Centric Disentangled Parts

Transcription:

Ch 1: The Architecture Business Cycle For decades, software designers have been taught to build systems based exclusively on the technical requirements. Software architecture encompasses the structures of large software systems: abstract view eliminates details of implementation, algorithm, & data representation concentrates on the behavior & interaction of black box elements

Definition The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.

Architecture Business Cycle (ABC) Quick Exercise : What is the relationship of a system s software architecture to the environment in which the system will be constructed and exist?

Architecture Business Cycle (ABC) Answer: Software architecture is a result of technical, business, and social influences. In turn, it affects each of these environments.

Figure 1.2 Influence of stakeholders on the architect

Architectural Activities Creating the Business Case for the System Understanding the Requirements Creating or Selecting the Architecture Communicating the Architecture Analyzing or Evaluating the Architecture Implementing Based on the Architecture Ensuring Conformance to an Architecture

What makes a Good Architecture? No such thing as an inherently good or bad architecture. Architectures are more or less fit for some stated purpose. Architectures can be evaluated -one of the great benefits of paying attention to them - but only in the context of specific goals. Rules of Thumb: process & product (structural) recommendations

Rules of Thumb (pp 15 & 16) Process Recommendations: include functional requirements and a prioritized list of quality attributes the system must satisfy analyze & formally evaluate before it is too late to change Product Recommendations: well-defined modules using principles of information hiding & separation of concerns separate modules that produce data from those that consume data to increase modifiability & staged upgrades write tasks or processes to allow easy reallocation, perhaps at runtime

Ch 2: What is Software Architecture? Quite often shown as box-and-arrow diagrams. Control Process (CP) Prop Loss Model (MODP) Reverb Model (MODR) Noise Model (MODN) Figure 2.1

What s Missing? What is the nature of the elements? What are the responsibilities of the elements? What is the significance of the connections? What is the significance of the layout? Unless we know precisely what the elements are & how they cooperate to accomplish the purpose of the system, this diagram is unhelpful!

Definition Again The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, an the relationships between them. We see the elements, but what properties do they or their relationships have?

Externally Visible Properties The assumptions that other elements can make of an element, such as: its provided services, performance characteristics, fault handling, shared resource usage, etc.

Definition Implications 1 - architecture defines software elements. 2 - systems can and do comprise more than one structure, all are part of the architecture. 3 - every computing system with software has an architecture. 4 - the behavior of each element is part of the architecture as far as its behavior can be observed or discerned from the point of view of another element. 5 - the definition doesn t judge goodness or badness.

Another Definition for SA (Garlan and Shaw) Components Connectors Constraints

Useful Concepts Three stages that capture characteristics of an architecture, on the way from box-and-arrow to full software architectures: Architectural Patterns Reference Models Reference Architectures Figure 2.2 Reference Model Architectural Pattern Reference Architecture Software Architecture

Architectural Patterns A description of element & relation types together with a set of constraints on how they may be used. These constraints on an architecture define a set or family of architectures. For example, the client-server pattern has 2 element types (?); their relationship is a protocol that the server uses to communicate with each of its clients, the clients don t communicate directly. Functionality is excluded.

الگوی معماری

Value of Patterns They exhibit known quality attributes, and are a reuse of experience. Some patterns solve performance problems, others apply to high-security systems, or high-availability goals. Often the architect s first major design decision. Also referred to as architectural styles.

Reference Models A division of functionality together with data flow between the pieces. A standard decomposition of a known problem into parts that cooperatively solve the problem. They arise from experience, and are thus a characteristic of mature domains. For example, the standard parts of a compiler or database management system & how they work together.

مدل مرجع

Reference Architectures A reference model mapped onto software elements and the data flows between them. The elements must cooperatively implement the functionality defined in the reference model. The mapping may be 1-1, but an element may implement a part of a function or several functions.

معماری مرجع

Why is Architecture Important? Three fundamental reasons from a technical perspective: Communication among stakeholders a basis for mutual understanding, negotiation, & consensus Early design decisions earliest point at which decisions can be analyzed Transferable abstraction of a system can promote large-scale reuse

دلايل اهميت ويژه معماری نرم افزار

Early design decisions The architecture: defines constraints on implementation dictates organizational structure inhibits or enables a system s quality attributes studying it can predict system qualities easier to reason about and manage change helps in evolutionary prototyping enables more accurate cost & schedule estimates

تصميم های اوليه طراحی

Quality Attributes High performance Scalability Deliver incremental subsets Re-usable elements Manage the time-based behavior of elements; the frequency & volume of inter-element communication Carefully localize the use of resources to facilitate the introduction of high-capacity replacements Carefully manage intercomponent usage Restrict inter-element couplings so an extraction doesn t have too many environment attachments to be useful

Architecture: a Transferable, Reusable Model The earlier in the lifecycle re-use is applied, the greater the benefit. Software Product Lines share a common architecture. Composing with large, externally developed elements. Restrict the vocabulary of design alternatives: patterns. Architecture permits template-based development. Used as the basis for training.

Software Architecture vs. System Architecture

Structures and Views A view is a representation of a coherent set of architectural elements, consisting of: a set of elements the relationships among them A structure is the set of elements itself, as they exist in software or hardware. Often used interchangeably, text will distinguish.

Groups of Architectural Structures Module structures units of implementation with assigned areas of functionality - usually static Component-and-connector structures runtime components (principal units of computation) and connectors (communication vehicles) Allocation structures show relationships between software elements & external environments (creation or execution)

Three Types of Structures Correspond to the three broad types of decisions that architectural design involves: How is the system to be structured as a set of code units (modules?) How is the system to be structured as a set of elements that have runtime behavior (components) and interactions (connectors)? How is the system to relate to non-software structures in its environment (i.e., CPUs, file systems, networks, development teams, etc. - allocation)?

General SA Structure

Module structures

Component-and-connector structures

Allocation structures

Module: Decomposition

Module: Uses

Module: Class

Component and Connector (C&C): Client Server

Component and Connector (C&C): Concurrency

Component and Connector (C&C): Process

Component and Connector (C&C): Shared Data

Allocation: Deployment

Allocation: Implementation

Allocation: Work Assignment

خلاصه و جمع بندی ساختار های معماری

Choosing Structures Kruchten s Four + One Views: Logical - elements are key abstractions that are objects or classes in OO. This is a module view. Process - addresses concurrency & distribution of functionality. This is a C&C view. Development - shows organization of software modules, libraries, subsystems, and units of development. This is an allocation view. Physical - maps other elements onto processing & communication nodes, also an allocation view, but usually referred to specifically as the deployment view.

4+1 View

4+1 View

Non-functional Properties Each structure provides a method for reasoning about some of the relevant quality attributes, for example: the uses structure, must be engineered to build a system that can be easily extended or contracted the process structure is engineered to eliminate deadlock and reduce bottlenecks the module decomposition structure is engineered to produce modifiable systems, etc.

Relating Structures to Each Other Although the structures give different system perspectives, they are not independent. Elements of one structure are related to elements in another, and we need to reason about these relationships. For example, a module in a decomposition structure may map to one, part of one, or several, components in a component-and-connector structure at runtime. In general, mappings are many-many.