Software Architecture in Practice (3rd Ed) Introduction

Slides:



Advertisements
Similar presentations
Software Architecture in Practice (3 rd Ed) Understanding Quality Attributes Understanding the following: How to express the qualities we want our architecture.
Advertisements

Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department of Defense © 1998 by Carnegie Mellon.
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 5 Architecture-Driven Component Development.
Architecture is More Than Just Meeting Requirements Ron Olaski SE510 Fall 2003.
The Architecture Design Process
Site Skin Structure Services Space plan Stuff Software Architecture and Software Architecture Patterns (1)
Software Architecture in Perspective SENG 480/580 (H. Muller) Today: Margaret-Anne Storey
- 1 - Component Based Development R&D SDM Theo Schouten.
Essential Software Architecture Ian Gorton CS590 – Winter 2008.
Software Architecture in Practice
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Software Architecture in Practice
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
CHAPTER 9 DEVELOPING BUSINESS/IT STRATEGIES. IT Planning Planning an information system doesn’t start with bits, and bytes, or a Web site. It starts with.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
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. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Software Architecture premaster course 1.  Israa Mosatafa Islam  Neveen Adel Mohamed  Omnia Ibrahim Ahmed  Dr Hany Ammar 2.
Software Architecture for DSD The “Uses” Relation.
What is Software Architecture?
Documenting Software Architectures
What is an Architecture?. An Example? Invoice OrderDelivery Customer.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Design and Architecture of Complex Software Systems Conf.dr.ing. Ioana Şora
Engineering, Operations & Technology | Information TechnologyAPEX | 1 Copyright © 2009 Boeing. All rights reserved. Architecture Concept UG D- DOC UG D-
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.
Architecture Business Cycle
Role-Based Guide to the RUP Architect. 2 Mission of an Architect A software architect leads and coordinates technical activities and artifacts throughout.
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.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Copyright 2002 Prentice-Hall, Inc. Chapter 2 Object-Oriented Analysis and Design Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey.
CSE 219 Computer Science III Program Design Principles.
10 Software Architecture CSCU 411 Software Engineering.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Architectural Design Identifying system components and their interfaces.
An Introduction to Software Architecture Software Engineering Lab.
Lecture 11 Enterprise Systems Development ( CSC447 ) COMSATS Islamabad Muhammad Usman, Assistant Professor.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Documenting Software Architectures 1.Uses and Audiences for Architecture Documentation Architecture documentation serves as a means of education Architecture.
CPSC 372 John D. McGregor Module 3 Session 1 Architecture.
John D. McGregor Class 4 – Initial decomposition
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Chapter 1: What is Software Architecture? © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
Overview of SAIP and LSSA. Software Architecture in Practice Provides a set of techniques, not a prescriptive method for architectural design. Based on.
CSC 480 Software Engineering High Level Design. Topics Architectural Design Overview of Distributed Architectures User Interface Design Guidelines.
Documenting Software Architectures. Outline  Introduction  Uses of Architectural Documentation  Views  Choosing the Relevant Views  Documenting a.
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.
Process 4 Hours.
Unit-1 INTRODUCTION Presented by Sushma Narasimhan Asst. Professor,
OO Methodology OO Architecture.
Chapter 25: Architecture and Product Lines
Software Architecture and
Software Engineering D7032E
What is an Architecture?
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Architecture
An Introduction to Software Architecture
What is an Architecture?
Software Architecture
Presentation transcript:

Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture What software architecture is and what it is not The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both. Architecture is a set of software structures (program) decomposition structures, component-and-connector structures (C&C), allocation structures Architecture is an abstraction Model of a software system Every software system has a software architecture documented or undocumented Architecture includes behavior (external) behaviors/properties of architectural elements are part of architecture Not all architectures are good architectures determined by architecture’s quality attributes System architecture vs. enterprise architecture System architecture is concerned with a total system, including hardware, software, and humans. Enterprise architecture is a description of the structure and behavior of an organization’s processes, information flow, personnel, and organizational subunits, aligned with the organization’s core goals and strategic direction.

Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Architectural Structures and Views A view is a representation of a coherent set of architectural elements, as written by and read by system stakeholders. It consists of a representation of a set of elements and relations among them. A Structure is the set of elements itself, as they exist in software or hardware. Three kinds of structures Module structures Module structures embody decisions as to how the system is to be structured as a set of code or data units that have to be constructed or procured. Modules represent a static way of considering the system. Modules are assigned areas of functional responsibility Module structures allow us to answer questions such as these: ■ What is the primary functional responsibility assigned to each module? ■ What other software elements is a module allowed to use? ■ What other software does it actually use and depend on? ■ What modules are related to other modules by generalization or specialization (i.e.,inheritance) relationships? Component-and-connector structures Allocation structures

Module structures Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Three kinds of structures Module structures Component-and-connector structures Embody decisions as to how the system is to be structured as a set of elements that have runtime behavior (components) and interactions (connectors). In C&C, the elements are runtime components Component-and-connector views help to answer questions such as these: ■ What are the major executing components and how do they interact at runtime? ■ What are the major shared data stores? ■ Which parts of the system are replicated? ■ How does data progress through the system? ■ What parts of the system can run in parallel? ■ Can the system’s structure change as it executes and, if so, how? By extension, component-and-connector views are crucially important for asking questions about the system’s runtime properties such as performance, security, availability, and more. Allocation structures

Module structures Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Three kinds of structures Module structures Component-and-connector structures Allocation structures Embody decisions as to how the system will relate nonsoftware structures in its environment (such as CPUs, file systems, networks, development teams, etc.). These structures show the relationship between the software elements and elements in one or more external environments in which the software is created and executed. Allocation views help us answer questions such as these: ■ What processor does each software element execute on? ■ In what directories or files is each element stored during development, testing, and system building? ■ What is the assignment of each software element to development teams?

Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Relating structures to each other

Software Architecture in Practice (3rd Ed) Introduction What is Software Architecture Architectural Patterns In some cases, architectural elements are composed in ways that solve particular problems. The compositions have been found useful over time, and over many different domains, and so they have been documented and disseminated. These compositions of architectural elements, called architectural patterns, provide packaged strategies for solving some of the problems facing a system. Example module type pattern: Layered pattern Example C&C type patterns: Shared-data (or repository) pattern Client-server pattern Example allocation type patterns: Multi-tier pattern (software-to-hardware allocation) Competence center and platform (work assignment structure) Competence center: work is allocated to sites depending on the technical or domain expertise located at a site. Platform: one site is tasked with developing reusable core assets of a software product line, and other sites develop applications that use the core assets.

What makes a “Good Architecture” Process recommendation The architecture should be the product of a single architect or a small group of architects with an identified technical leader. The architect (or architecture team) should, on an ongoing basis, base the architecture on a prioritized list of well-specified quality attribute requirements. The architecture should be documented using views. The views should address the concerns of the most important stakeholders in support of the project timeline. The architecture should be evaluated for its ability to deliver the system’s important quality attributes. The architecture should lend itself to incremental implementation, to avoid having to integrate everything at once (which almost never works) as well as to discover problems early. Product/Structural recommendation The architecture should feature well-defined modules whose functional responsibilities are assigned on the principles of information hiding and separation of concerns. Quality attributes should be achieved using well-known architectural patterns and tactics. The architecture should never depend on a particular version of a commercial product or tool. Modules that produce data should be separate from modules that consume data. Don’t expect a one-to-one correspondence between modules and components. Every process should be written so that its assignment to a specific processor can be easily changed, perhaps even at runtime. The architecture should feature a small number of ways for components to interact. The architecture should contain a specific (and small) set of resource contention areas, the resolution of which is clearly specified and maintained.