Ch4: Software Architecture and Design. 1 What is a design?

Slides:



Advertisements
Similar presentations
The Modular Structure of Complex Systems Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
Advertisements

Software Design Fundamentals
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Addressing the Challenges of Current Software. Questions to Address Why? What? Where? How?
Architecture Representation
Design Concepts and Principles
Entity Relationship (ER) Modeling
Chapter 13 Design Concepts and Principles
Issues of Security and Privacy in Networking in the CBA Karen Sollins Laboratory for Computer Science July 17, 2002.
© Copyright 2011 John Wiley & Sons, Inc.
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 17: Topological Sort Algorithm.
Software Architecture Design Instructor: Dr. Jerry Gao.
Capturing the requirements
PVK-Ht061 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance.
Ch4: Software Architecture and Design. 1 Modules: Interface vs. Implementation (contd..)  Interface design considerations:
Introduction to Software Engineering Lecture 8 André van der Hoek.
PVK-Ht051 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance.
Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Architecture for DSD The “Uses” Relation.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
What is design? Provides structure to any artifact Decomposes system into parts, assigns responsibilities, ensures that parts fit together to achieve a.
Design Patterns Discussion of pages: xi-11 Sections: Preface, Forward, Chapter
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
 2004 by SEC Chapter 4 Software Design. 2  2004 by SEC Chapter 4 Software Design 4.1 Design Fundamentals 4.2 Design Method 4.3 Architecture Design
SOFTWARE DESIGN.
Ch. 41 Design and Software Architecture. Ch. 42 Outline What is design How can a system be decomposed into modules What is a module’s interface What are.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.
David Weiss Software Product-Line Engineering: A Family-Based Software Development Process: Designing The Family David Weiss
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Fall 2010 CS4310 Requirements Engineering A Brief Review of UML & OO Dr. Guoqiang Hu Department of Computer Science UTEP 1.
Design Concepts By Deepika Chaudhary.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
1 Chapter 1 Introduction to Databases Transparencies.
Software Design Process
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 303 – Software Design and Architecture
1 Introduction to Design. 2 Outline Basics of design Design approaches.
ANU comp2110 Software Design lecture 8 COMP2110 Software Design in 2004 lecture 8 Software Architecture 1 of 2 (design, lecture 3 of 6) Goal of this small.
Architectural Design Introduction Design has been described as a multistep process in which representations of data and program structure,
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Chapter 2 Principles of Programming and Software Engineering.
Optimally Modifying Software for Safety and Functionality Sampath Kannan U.Penn (with Arvind Easwaran & Insup Lee)
What is a matroid? A matroid M is a finite set E, with a set I of subsets of E satisfying: 1.The empty set is in I 2.If X is in I, then every subset of.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
Software Design.
Software Design Principles
Object-Oriented Analysis and Design
System Design and Modeling
Software Design.
Software Design Mr. Manoj Kumar Kar.
Project Topic 2: Migration to Java 9
Designing Software for Ease of Extension and Contraction
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
High-Level Abstraction of Concurrent Finite Automata
CS223: Software Engineering
Design for Ease in Contraction and Extension
Project Deliverables ECE 545 – Introduction to VHDL.
Chapter 2. Problem Solving and Software Engineering
Definitions of “Design”
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

Ch4: Software Architecture and Design

1 What is a design?

2 Software design  What is a software design?  Software architecture and detailed design

3 Goals for a software design  Design for change:  Maintainability addressed during design:  Most challenging responsibility!

4 Types of changes  Replace an existing algorithm by a more efficient one.  Example: Sorting algorithms

5 Types of changes (contd..)  Change the data representation  Change in an algorithm or a data structure may be necessary to improve the performance of the system

6 Types of changes (contd..)  Programs are written to run on a particular abstract machine:  Hopefully changes in the abstract machine have minimal impact on the product  Example

7 Types of changes (contd..)  Change in peripheral devices  Change of “social environment”  Change in the development process

8 Case study: Classification of changes  Classify the changes described earlier into corrective, adaptive, and perfective.  Summary of changes:  Change in the algorithm.  Change in the data structure  Change in the underlying abstract machine  Change in peripheral devices  Change of social environment  Change in the development process

9 Goals for a software design  Support for product families.  What is a product family?  How to design software for product families?  More information on product families:  C. Hofmeister, D. Nord, and R. Soni, “Applied Software Architecture”

10 Product families Requirements Model #1 Model # Model # Model #2 5 Model #1 4 intermediate design final product Sequential Completion: Wrong Way

11 Product families (contd..) Model #1 Model #2 Model #3

12 Product families (contd..)  Better way to design and develop product families:

13 Case study: Product families Any other examples of product families? 1. Facility reservation system (conference rooms, hotels, etc.)

14 Modules  What is a module?

15 Modules: Structure and representation  What does a software design depict?  How to depict the relationships among the modules?

16 Mathematical notation  Let S be a set of modules S = {M 1, M 2,..., M n }  A binary relation r on S is a subset of S x S  If M i and M j are in S,  r can be written as M i r M j  Transitive closure r + of r M i r + M j iff M i r M j or  M k in S s.t. M i r M k and M k r + M j (We assume our relations to be irreflexive)  r is a hierarchy iff there are no two elements M i, M j s.t. M i r + M j  M j r + M i

17 Mathematical notation (contd..)  Cardinality of relation r:  Low cardinality is preferred, Why?  How does low cardinality relate to low coupling?

18 Graphical representation Relations are more intuitively represented by a graph M M M M M M M 1 is related to M 2 M 5 is related to M 6

19 Graphical representation (contd..)  Directed Acyclic Graph (DAG) M 1 M 2 M 3 M 4 M 1,1 M 1,2 M 1,3 M 1,2,1 M 1,2,2 M 1,2,1,1 a DAG

20 The USES relation  Defined by Parnas  Module M i USES Module M j :

21 USES relation (contd..) USES relation is statically defined. Cond M1 Proc 1 M2 Proc 2 Proc1 in M1 Proc2 in M2 M uses M1 M uses M2 Procedure M

22 Hierarchy and the USES relation  USES relation should be a hierarchy:  Advantages of hierarchical uses relation:

23 Properties of the USES relation  Fan-out:  Fan-in:  Low fan-out/high fan-in is preferable

24 Examples of module use (USES):

25 The IS_COMPONENT_OF relation  Purpose:  M i IS_COMPONENT_OF M j  M j COMPRISES M i  M S,i ={M k |M k  S  M k IS_COMPONENT_OF M i } we say that M S,i IMPLEMENTS M i

26 The IS_COMPONENT_OF relation (contd..) M 1 M M M M MM M M 3 M M MM M M 2 M 3 M 4 M 1 (IS_COMPONENT_OF) (COMPRISES) A Graphical View IS_COMPONENT_OF relation constitutes a hierarchy

27 Conceptual view of a module “Services needed” “Services provided” “CODE”

28 Modules: Interface vs. implementation  Interface:  Implementation:  Separation of concerns is supported by division between module’s interface and implementation

29 Case study: Example of modularization  Modules in an operating system:

30 Case study: Example of modularization  Modules in a word processing application: