Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Design Concepts and Principles
Design Creative Process of transferring the problem into a solution
Designing the system Conceptual design and technical design
Software Architecture Design Instructor: Dr. Jerry Gao.
The Architecture Design Process
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
SE 555 – Software Requirements & Specifications Introduction
Course Instructor: Aisha Azeem
CSC230 Software Design (Engineering)
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Architectural Design.
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
Chapter 10 Architectural Design
1 Lecture 5.3: SEF Ch 4 Requirements Analysis Dr. John MacCarthy UMBC CMSC 615 Fall, 2006.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Lesson 7 Guide for Software Design Description (SDD)
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Detailed Design Overview and Mid-Level Class Modeling.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
An Introduction to Software Architecture
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
SOFTWARE DESIGN.
Slide 1 Introduction to Software Architecture TV Prabhakar.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
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 lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
Chapter 6 Architectural Design.
1 Introduction to Software Engineering Lecture 1.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Design Concepts By Deepika Chaudhary.
John D. McGregor Class 4 – Initial decomposition
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software 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.
CSE 303 – Software Design and Architecture
Chapter : 9 Architectural Design
 System Requirement Specification and System Planning.
Software Engineering 2007/2008 Chapter 5 Designing the System.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
7. Modular and structured design
CompSci 280 S Introduction to Software Development
Algorithms and Problem Solving
CompSci 280 S Introduction to Software Development
IS301 – Software Engineering Dept of Computer Information Systems
Lecture 9- Design Concepts and Principles
Software Engineering Architectural Design Chapter 6 Dr.Doaa Sami
Part 3 Design What does design mean in different fields?
Software Quality Engineering
Chapter 25: Architecture and Product Lines
CHAPTER 2 CREATING AN ARCHITECTURAL DESIGN.
Model-Driven Analysis Frameworks for Embedded Systems
Software Engineering Architectural Design Chapter 6 Dr.Doaa Samy
Software Architecture
Architectural Design.
Software Requirements Specification Document
Lecture 9- Design Concepts and Principles
Chapter 5 Architectural Design.
An Introduction to Software Architecture
Chapter 9 Architectural Design.
Chapter 5 Designing the Architecture 4th Edition Shari L. Pfleeger
Requirements Document
Chapter 5 Architectural Design.
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Chapter 6: Architectural Design
Presentation transcript:

Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee 4th Edition

5.1 The Design Process Design is the creative process of figuring out how to implement all of the customer’s requirements; the resulting plan is also called the design Early design decisions address the system’s architecture Later design decisions address how to implement the individual units

5.1 The Design Process Design is a Creative Process (continued) Many ways to leverage existing solutions Cloning: Borrow design/code in its entirety, with minor adjustments Reference models: Generic architectures that suggest how to decompose a system

5.1 The Design Process Design is a Creative Process – Use a Reference Model A reference model for a compiler

5.1 The Design Process Design is a Creative Process -- Architectural Styles More typically, a reference model will not exist for the problem Software architectures have generic solutions too, referred to as architectural styles Focusing on one architectural style can create problems Good design is about selecting, adapting, and integrating several architectural design styles to produce the desired result

5.1 The Design Process Design Process Model Designing a software system is an iterative process The final outcome is the software architecture document (SAD)

5.3 Decomposition and Views High-level description of a system’s key elements Creating a hierarchy of information with increasing details Top level First level of decomposition Second level of

5.3 Decomposition and Views Popular Design Methods Some design problems have no existing solutions Designers must decompose to isolate key problems Some popular design decomposition methods: Functional decomposition Data-oriented decomposition Process-oriented decomposition Event-oriented decomposition Object-oriented design

5.3 Decomposition and Views Popular Design Methods Functional decomposition partitions functions or requirements into modules begins with the functions that are listed in the requirements specification lower-level designs divide these functions into sub functions, which are then assigned to smaller modules describes which modules (sub functions) call each other

5.3 Decomposition and Views Popular Design Methods Object-oriented decomposition assigns objects to modules high-level design identifies the system’s object types and explains how objects are related to one another lower-level designs detail the objects’ attributes and operations

5.3 Decomposition and Views Popular Design Methods (continued) A design is modular when each activity of the system is performed by exactly one software unit, and when the inputs and outputs of each software unit are well- defined A software unit is well-defined if its interface accurately and precisely specifies the unit’s externally visible behavior

5.3 Decomposition and Views Several Types of Software Units Component Subsystem Runtime process Module Class Package Library Procedure Software unit Modular Well-defined

5.3 Decomposition and Views Architectural Views Common types of architectural views include: Decomposition view Dependencies view Generalization view Execution view Implementation view Deployment view Work-assignment view

5.4 Architectural Styles and Strategies Pipes-and-Filter Client-Server Peer-to-Peer Publish-Subscribe Repositories Layering

5.4 Architectural Styles and Strategies Combining Architectural Styles Actual software architectures rarely based on purely one style Architectural styles can be combined in several ways Use different styles at different layers (e.g., overall client-server architecture with server component decomposed into layers) Use mixture of styles to model different components or types of interaction (e.g., client components interact with one another using publish-subscribe communications) If architecture is expressed as a collection of models, documentation must be created to show relationship between models

5.4 Architectural Styles and Strategies Combination of Publish-Subscribe, Client-Server, and Repository Architecture Styles

5.5 Achieving Quality Attributes Architectural styles provide general beneficial properties To support specific quality attribute tactics are utilized: Modifiability Performance Security Reliability Robustness Usability Business goals

5.7 Architecture Evaluation and Refinement One Specification, Many Designs One specification, many designs: to see how different designs can be used to solve the same problem Shaw and Garlan present four different architectural designs to implement the KWIC (Key Word in Context) problem shared data abstract data type implicit invocation pipe and filter

5.7 Architecture Evaluation and Refinement One Specification, Many Designs (continued)

5.7 Architecture Evaluation and Refinement One Specification, Many Designs (continued) A weighted comparison of proposed KWIC solutions Attribute Priority Shared data Abstract data type Implicit invocation Pipe and filter Easy to change algorithm 1 2 4 5 Easy to change data representation Easy to change function 3 Good performance Easy to reuse

5.8 Documenting Software Architectures A system's architecture is vital to overall development and serves as the basis on decisions for: Design Quality assurance Project management The SAD serves as the repository for design information and includes: System overview Views Software units Analysis data and results Design rationale Definitions, glossary, acronyms

5.8 Documenting Software Architectures Documenting Rationale Document rationale: outlining critical issues and trade-offs When to document the rationale behind decision: Significant time spent on a decision The decision is critical The decision is counterintuitive Costly to change the decision

5.9 Architecture Design Review Validation Make sure that all aspects of the requirements are addressed Several key people included in review: The analyst(s) who helped define the system requirements The system architect(s) The program designer(s) for this project A system tester A system maintainer A moderator A recorder Other interested developers not otherwise involved in this project

5.10 Software Product Lines Organizations can find success by reusing their expertise and software assets across families of related products The corporate strategy for designing and developing the related products is based on the reuse of elements of a common product line A distinguishing feature of building a product line is the treatment of the derived products as a product family; their simultaneous development is planned from the beginning The family’s commonalities are described as a collection of reusable assets (including requirements, designs, code, and test cases), all stored in a core asset base

5.10 Software Product Lines Core Asset Base Candidate elements in a core asset base: Requirements Software architecture Models and analysis results Software units Testing Project planning Team organization

5.13 What This Chapter Means For You Systems need to be designed based on carefully expressed requirements Design begins with a high-level architecture, where architectural decisions are based not only on system functionality and required constraints but also on desirable attributes and the long-term intended use of the system (including product-lines, reuse, and likely modification)

5.13 What This Chapter Means For You (continued) Keep in mind several characteristics of good architecture as you go, including appropriate user interfaces, performance, modularity, security, and fault tolerance The goal is not to design the ideal software architecture for a system, because such an architecture might not even exist; rather, the goal is to design an architecture that meets all of the customer’s requirements while staying within the cost and schedule constraints