What is Software Architecture?

Slides:



Advertisements
Similar presentations
Dr. Rogelio Dávila Pérez
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Executional Architecture
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
Software Architecture in Practice (3 rd Ed) Understanding Quality Attributes Understanding the following: How to express the qualities we want our architecture.
By Philippe Kruchten Rational Software
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
Architecture is More Than Just Meeting Requirements Ron Olaski SE510 Fall 2003.
Software Architecture in Perspective SENG 480/580 (H. Muller) Today: Margaret-Anne Storey
Essential Software Architecture Ian Gorton CS590 – Winter 2008.
Software Architecture in Practice
Objectives The key roles an architecture description plays in a software project. The key roles an architecture description plays in a software project.
Software Architecture in Practice
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Course Instructor: Aisha Azeem
Chapter 10: Architectural Design
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Architectural Design.
Software Architecture in Practice (3rd Ed) Introduction
Chapter 10 Architectural Design
What is an Architecture?. An Example? Invoice OrderDelivery Customer.
© Drexel University Software Engineering Research Group (SERG) 1 Based on the paper by Philippe Kruchten from Rational Software.
Design and Architecture of Complex Software Systems Conf.dr.ing. Ioana Şora
An Introduction to Software Architecture
The Architecture Business Cycle. Software Architecture Definition The software architecture of a program or computing system is the structure or structures.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
Lecture 9: Chapter 9 Architectural Design
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
Architecting Web Services Unit – II – PART - III.
Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department of Defense © 1998 by Carnegie Mellon.
What is Software Architecture? | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS Chapter 2, Authors: Len Bass, Paul,
1 Introduction to Software Architectures Lecture - 3.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Chapter 13 Architectural Design
10 Software Architecture CSCU 411 Software Engineering.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
An Introduction to Software Architecture Software Engineering Lab.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Documenting Software Architectures 1.Uses and Audiences for Architecture Documentation Architecture documentation serves as a means of education Architecture.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
John D. McGregor Class 4 – Initial decomposition
Software Design: Principles, Process, and Concepts Getting Started with Design.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 10a: Architectural Design Software Engineering: A Practitioner’s Approach, 6/e Chapter 10a:
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
CS223: Software Engineering Lecture 13: Software Architecture.
Chapter 13 설계 개념 Architectural Design 임현승 강원대학교 Revised from the slides by Roger S. Pressman and Bruce R. Maxim for the book “Software Engineering: A Practitioner’s.
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Systems Architectures System Integration & Architecture.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
Chapter 9 Architectural Design. Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a software.
TAL Lecture 1 Introduction to Software Architecture
Unit-1 INTRODUCTION Presented by Sushma Narasimhan Asst. Professor,
OO Methodology OO Architecture.
CHAPTER 2 CREATING AN ARCHITECTURAL DESIGN.
Software Engineering D7032E
What is an Architecture?
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
An Introduction to Software Architecture
Chapter 9 Architectural Design.
What is an Architecture?
Design Yaodong Bi.
From Use Cases to Implementation
Presentation transcript:

What is Software Architecture?

An Example Architecture??? Control Process (CP) Prop Loss Model (MODP) Reverb Model (MODR) Noise Model (MODN)

Why Can the Previous Diagram Be Called an Architecture? It identifies components It indicates relationships among the components.

What Does this Picture Fail to Show? The nature of the elements What is the significance of their separation? Do they run on separate processors? Do they run at different times? Do they represent ways in which the project labor will be divided? Are they objects, tasks, functions, processes, programs, or something else?

What Does this Picture Fail to Show? (Cont’d) The responsibilities of the elements What do they do? What is their function in the system? The significance of the connections Do the connections mean that the elements communicate with each other, control each other, send data to each other, use each other, invoke each other, synchronize with each other, share some information-hiding secret with each other, or some combination of these relations?

What Does this Picture Fail to Show? (Cont’d) The significance of the layout Why is CP on a separate level? Does it call the other three elements, and are they not allowed to call it? Does it contain the other three in an implementation unit sense?

Definition of a Software Architecture 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.

Architectures Affect the Factors that Influence Them The architecture affects the structure of the developing organization. The architecture can affect the goals of the developing organization. The architecture can affect customer requirements for the next system. The architecture will affect the architectures of future systems. The architecture may affect the software engineering culture.

Software Architecture Specifics Architecture defines software elements. It embodies information about how the elements relate to each other. It is an abstraction, i.e., it omits certain information about the elements that does not pertain to their interaction. Architecture is a not a single structure, but a collection of structures E.g., runtime vs. implementation

Software Architecture Specifics (Cont’d) All computing systems have architectures. They may not be known to anyone. The architecture of a system is different from its representation. The behavior of each element is part of the architecture. The behavior, and only the behavior, that influences how another element interacts with it or influences the system as a whole, is part of the software architecture.

Software Architecture Specifics (Cont’d) Architectures can be good or bad. The careful design and evaluation of architectures is essential for producing good architectures.

Other Definitions of Software Architecture Architecture is high level design. Architecture is the overall structure of the system. Architecture is the structure of the components of a program or system, their interrelationships, and the principles and guidelines governing their design and evaluation over time. Architecture is components and connectors

Architectural Patterns An architectural pattern is a description of element and relation types together with a set of constraints on how they may be used. Client-server is an example of an architectural pattern. Picking a pattern is often the architects first major design choice.

Reference Models A reference model is a division of functionality together with data flows between the pieces. For example a database management system might have a reference model. It is a standard division of a known problem into parts that cooperatively solve the problem.

Reference Architecture A reference architecture is a reference model mapped onto software elements and the data flows between them. The software elements cooperatively implement the functionality defined in the reference model. That is,it maps the functionality of a reference model onto a system decomposition.

From Models and Patterns to Architecture Reference Model Reference Architecture Software Architecture Architectural Pattern

Why is Software Architecture Important? Communication among stakeholders Early design decisions Transferable abstraction of a system

Stakeholder Communication Different stakeholders are concerned with different system characteristics. Architecture provides a common language in which different concerns can be expressed, negotiated and resolved.

Early Design Decisions These are the most difficult to get correct. They are the hardest to change later in the development process. They have the most far-reaching effects.

Early Design Decisions The architecture defines constraints on implementation. The architecture dictates organizational structure. The architecture inhibits or enables a system’s quality attributes. Predicting system qualities by studying architecture.

Early Design Decisions (Cont’d) The architecture makes it easier to reason about and manage change. The architecture helps in evolutionary prototyping. The architecture enables more accurate cost and schedule estimates.

Transferability/Re-usability Software product lines share a common architecture. Systems can be built using large, externally developed elements. Less is more: it pays to restrict the vocabulary of design alternatives. An architecture permits template-based development. An architecture can be the basis for training.

Architectural Views and Structures Architectural structures can be divided into three groups Module structures – How is the system to be structured as a set of code units? Component-and-connector structures – How is the system to be structured as a set of elements that have running behavior and interactions? Allocation structures – How is the system to relate to nonsoftware structures in its environment?

Common Software Architecture Structures Component- And-Connector Module Allocation Client- Server Shared Data Decomposition Process Class Deployment Uses Concurrency Implementation Layered Work Assignment

Module-Based Structures Decomposition – the units are modules related by the “is a submodule of” relation. Uses – the units are modules, procedures or resources on the interfaces of modules related by the “uses” relation. Layered – when the uses relations are controlled in a particular way a system of layers emerges in which layer is a coherent set of related functionality.

Module-Based Structures (Cont’d) Class or Generalization – the module units are classes and the relation is “inherits-from or “is-an-instance of”.

Component-and-Connector Structures Process or Communicating Processes– deals with the dynamic aspects of a running system and the relation is “attachment”. It shows how processes (the units) are connected by communication, synchronization, and/or exclusion operations. Currency – the units are components and the connectors are “logical threads”. It allows determination of opportunities for parallelism and locations of resource contention.

Component-and-Connector Structures (Cont’d) Shared Data or repository – comprises components and connectors that create store and access persistent data. Client-Server – components are the clients and servers and the connectors are the protocols and messages they share.

Allocation Structures Deployment – shows how software is assigned to hardware-processing and communication elements and the relations are “allocated to” and “migrate to”. Implementation – shows how software elements (modules) are mapped to the file structure(s) in the system’s development, integration, or configuration control environments.

Allocation Structures (Cont’d) Work Assignment – assigns responsibility for implementing and integrating the modules to the appropriate development teams.

Relating Structures to Each Other Each of these structures provides a different perspective and design handle on a system. Each is valid and potentially useful in its own right They are not independent but highly interrelated. Often the module structure is dominant, but not always.

Relating Structures to Each Other (Cont’d) Not all systems warrant consideration of many architectural structures. The larger the systems the more dramatic the differences between these structures tend to be. Structures represent the primary engineering leverage point for satisfying quality attributes. Multiple structures represent a powerful separation-of-concerns approach for creating the architecture.

Which Structures to Choose? Kruchten’s “four plus one” approach recommends four views (structures): Logical – the elements are “key abstractions” (a module structure) Process – addresses concurrency and distribution of functionality (a component-and-connector structure) Development – organization of software modules, libraries, subsystems, and units of development (an allocation structure)

Which Structures to Choose? (Cont’d) Kruchten’s approach (cont’d): Physical – maps elements onto processing and communication nodes (a deployment view) The “plus one” is a a set of key use cases that serve to validate that the structures are not in conflict with each other and together describe a system meeting its requirements.