Design Xiaojun Qi.

Slides:



Advertisements
Similar presentations
Lecture 6: Software Design (Part I)
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Ch 3: Unified Process CSCI 4320: Software Engineering.
Design CS 524 – Software Engineering I Fall I 2007 – Sheldon X. Liang, PH.D. Jeff Nogy.
Design Concepts and Principles
Design Phase What’s design?
Software Design Deriving a solution which satisfies software requirements.
Design. Overview Design and abstraction Action-oriented design Data flow analysis Transaction analysis Data-oriented design Object-oriented design Challenges.
1 Postdelivery Maintenance Xiaojun Qi. 2 Why Postdelivery Maintenance Is Necessary Corrective maintenance: To correct residual faults –Analysis, design,
Component-Level Design
COMS W3156: Software Engineering, Fall 2001 Lecture #12: Design, Distributed Objects Janak J Parekh
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Slide 8A.1 Copyright © 2004 by The McGraw-Hill Companies, Inc. All rights reserved. An Introduction to Object-Oriented Systems Analysis and Design with.
Slide 14.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition,
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
C++ fundamentals.
The chapter will address the following questions:
*Object-Oriented Design (Schach Chap 14)
Objects What are Objects Observations
Chapter 7 Software Engineering Objectives Understand the software life cycle. Describe the development process models.. Understand the concept of modularity.
OBJECT-ORIENTED ANALYSIS PHASE
Slide 12.1 © The McGraw-Hill Companies, CS 4310: Software Engineering Lecture 7 Systems Analysis Object-Oriented Design.
Implementation & Integration Phase Implementation, then integration: Implementation, then integration:  Each module is implemented by member of programmer.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
Slide 12.1 Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen.
CS540 Software Design Lecture 8 1 Lecture 8: Structured Design Anita S. Malik Adapted from Schach (2004) Chapter 13 and Appendix.
DESIGN.
Chapter 9 Moving to Design
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software requirements.
1 Analysis Extracting from Use Cases to Create Diagrams.
Lecture 14 & 15: Object- Oriented Analysis Anita S. Malik Adapted from Schach (2004) Chapter 12.
Software Engineering SI334 Lessons 24, 26 – 28 & 30: Classical & Object-Oriented Design October 6, 8, 10, 15, 2014.
Software Design Deriving a solution which satisfies software requirements.
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
SE: CHAPTER 7 Writing The Program
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Slide 11C.104 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach.
Systems Analysis and Design in a Changing World, 3rd Edition
Chapter 12: Design Phase n 12.1 Design and Abstraction n 12.2 Action-Oriented Design n 12.3 Data Flow Analysis n Data Flow Analysis Example n
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
Slide 13B.22 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach.
THE DESIGN WORKFLOW  Object-oriented design  The design workflow  The test workflow: Design  CASE tools for design  Challenges of the design workflow.
 Repository Model  Client-Server Model  Layered Model  Modular decomposition styles  Object Models  Function Oriented Pipelining  Control Styles.
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
Slide 20.1 Copyright © 2004 by The McGraw-Hill Companies, Inc. All rights reserved. An Introduction to Object-Oriented Systems Analysis and Design with.
Slide 12A.1 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
Petri Nets Invented by Carl Adam Petri in 1962 Concurrent systems with timing problems  Synchronization, race problem, deadlock A petri net consists of.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Slide 13.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach.
Slide 13.1 © The McGraw-Hill Companies, 2007 Object-Oriented and Classical Software Engineering Seventh Edition, WCB/McGraw-Hill, 2007 Stephen R. Schach.
THE ANALYSIS WORKFLOW  The specification document  Informal specifications  The analysis workflow  Extracting the entity classes  Functional modeling:
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering Zhang Shuang
Slide 12F.135 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
OBJECT-ORIENTED TESTING. TESTING OOA AND OOD MODELS Analysis and design models cannot be tested in the conventional sense. However, formal technical reviews.
Basic Characteristics of Object-Oriented Systems
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.
Slide 13A.1 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach.
1 of 53 THE OBJECT-ORIENTED DESIGN WORKFLOW. 2 of 53 Overview The Design Workflow Traditional versus Object-Oriented Design Formats of the Attributes.
Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R
Software Engineering Design
CHAPTER 14 DESIGN.
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
From Use Cases to Implementation
Presentation transcript:

Design Xiaojun Qi

Data and Actions Two aspects of a product Actions that operate on data Data on which actions operate The two basic ways of designing a product Operation-oriented design Data-oriented design Third way Hybrid methods For example, object-oriented design

Design and Abstraction Classical design activities Architectural design Input: Specifications Output: Modular decomposition Detailed design Each module is designed Specific algorithms Specific data structures Design testing An integral part of design

Operation-Oriented Design Data flow analysis (DFA): Achieve modules with high cohesion. Use it with most specification methods (e.g., Structured Systems Analysis) Key point: We have detailed action information from the data flow diagram (DFD) Every product transforms input into output. Determine “Point of highest abstraction of input” and “Point of highest abstract of output” Figure 13.2

Data Flow Analysis (Cont.) Point of highest abstraction of input: The point at which the input loses the quality of being input and simply becomes internal data operated on by the product. Point of highest abstraction of output: The first point in the flow of data at which the output can be identified. Decompose the product into three modules Repeat stepwise until each module has high cohesion Minor modifications may be needed to lower the coupling

Mini Case Study: Word Counting Example: Design a product which takes as input a file name, and returns the number of words in that file (like UNIX wc ) Figure 13.3: Data Flow Diagram

Word Counting: First Refinement Figure 13.4 Now refine the two modules (e.g., read-and-validate-file_name and format-and-display-word_count) of communicational cohesion

Word Counting: Second Refinement All 8 modules now have functional cohesion, with either data coupling or no coupling between them Figure 13.5

Word Counting: Detailed Design The architectural design is complete So proceed to the detailed design Two formats for representing the detailed design: Tabular Pseudocode (PDL—program description language: It consists of comments connected by the control statements of the chosen implementation language.)

Detailed Design: Tabular Format Figure 13.6(a) Refer to Figures 13.6(b), (c), and (d) for more details

Detailed Design: PDL Format Part of Figure 13.7

Data Flow Analysis Extensions In real-world products, there is More than one input stream, and More than one output stream Find the point of highest abstraction for each stream Continue until each module has high cohesion Adjust the coupling if needed Figure 13.8

Transaction Analysis DFA is poor for transaction (an operation from the viewpoint of the user of the product) processing products Example: ATM (automated teller machine) Figure 13.9

Corrected Design Using Transaction Analysis The righthand side is a poor design There is logical cohesion and control coupling Have one generic edit module, one generic update moduleSoftware reuse Instantiate them 5 times Figure 13.10

Data-Oriented Design Basic principle Three very similar methods The structure of a product must conform to the structure of its data Three very similar methods Michael Jackson [1975], Warnier [1976], Orr [1981] Data-oriented design Has never been as popular as action-oriented design With the rise of OOD, data-oriented design has largely fallen out of fashion

Object-Oriented Design (OOD) Aim: Design the product in terms of the classes extracted during OOA If we are using a language without inheritance (e.g., C, Ada 83) Use abstract data type design If we are using a language without a type statement (e.g., FORTRAN, COBOL) Use data encapsulation The developers should ensure their design uses the highest possible concept in the hierarchy of Fig. 7.28 their implementation language supports.

Object-Oriented Design Steps Step 1: Complete the class diagram Determine the formats of the attributes The formats of the attributes can be directly deduced from the analysis artifacts Example: Dates U.S. format (mm/mm/yyyy); European format (dd/mm/yyyy); In both instances, 10 characters are needed The formats could be added during analysis To minimize rework, never add an item to a UML diagram until strictly necessary

Object-Oriented Design Steps (Cont.) Step 1: Complete the class diagram Assign each method, either to a class or to a client that sends a message to an object of that class Principle A: Information hiding. The operations performed on state variables must be local to that class. Principle B: If an operation is invoked by many clients of an object, assign the method to the object, not the clients Principle C: Responsibility-driven design Step 2: Perform the detailed design

OOD: Elevator Problem Case Study Step 1: Complete the class diagram Consider the second iteration of the CRC card for the elevator controller Figure 12.9 (again)

OOD: Elevator Problem Case Study (Cont.) Responsibilities 8. Start timer 10. Check requests, and 11. Update requests are assigned to the elevator controller Because they are carried out by the elevator controller

OOD: Elevator Problem Case Study (Cont.) The remaining 8 responsibilities have the form “Send a message to another class to tell it do something” These should be assigned to that other class Responsibility-driven design Safety considerations (Information Hiding) Methods move down one floor and move up one floor are assigned to class Elevator. Methods open doors, close doors are assigned to class Elevator Doors. Methods turn off button, turn on button are assigned to classes Floor Button and Elevator Problem

Detailed Class Diagram: Elevator Problem Step 2: Perform the detailed design. Detailed design of elevatorEventLoop is constructed from the statechart. Refer to Fig. 13.12 Figure 13.11

OOD: Osbert Oglesby Case Study Step 1: Complete the class diagram Note: The Date class is needed for C++ Java has built-it functions for handling dates Figure 13.13 On the sixth edition

Class Diagram with Attributes: Osbert Oglesby Figure 13.14 on the sixth edition

Assigning Methods to Classes: Osbert Oglesby Example: setTitle, getTitle These methods should be assigned to Painting Class so that they can be inherited by all the subclasses of Painting Class Assigning the other methods is equally straightforward. Refer to Appendix G on the sixth edition Determine what each method does Represent the detailed design in an appropriate format: PDL (pseudocode) Refer to Fig. 13.15 and 13.16 on the sixth edition

The Design Workflow Summary of the input to the design workflow: The analysis workflow artifacts are iterated and incremented until the programmers can utilize them Design workflow: Identify methods and allocate them to the appropriate classes. Perform the detailed design. Additional decisions to be made include: Implementation language Reuse Portability

The Design Workflow (Cont.) The idea of decomposing a large workflow into independent smaller workflows (packages) is carried forward to the design workflow The objective is to break up the upcoming implementation workflow into manageable pieces Subsystems It does not make sense to break up the Osbert Oglesby case study into subsystems — it is too small

The Design Workflow (Cont.) Why the product is broken into subsystems: It is easier to implement a number of smaller subsystems than one large system If the subsystems are independent, they can be implemented by programming teams working in parallel The software product as a whole can then be delivered sooner The architecture of a software product includes The various components How they fit together The allocation of components to subsystems

The Design Workflow (Cont.) The task of designing the architecture is specialized. It is performed by a software architect The architect needs to make trade-offs Every software product must satisfy its functional requirements (the use cases) It also must satisfy its nonfunctional requirements, including portability, reliability, robustness, maintainability, and security It must do all these things within budget and time constraints The architect must assist the client by laying out the trade-offs

The Design Workflow (Cont.) It is usually impossible to satisfy all the requirements, functional and nonfunctional, within the cost and time constraints Some sort of compromises have to be made The client has to Relax some of the requirements; Increase the budget; Move the delivery deadline; Or do more than one of these.

The Design Workflow (Cont.) The architecture of a software product is critical The requirements workflow can be fixed during the analysis workflow The analysis workflow can be fixed during the design workflow The design workflow can be fixed during the implementation workflow But there is no way to recover from a suboptimal architecture The architecture must immediately be redesigned

The Test Workflow: Design Design reviews must be performed The design must correctly reflect the specifications The design itself must be correct Transaction-driven inspections Essential for transaction-oriented products Specification-driven inspections are also needed A design inspection must be performed All aspects of the design must be checked Even if no faults are found, the design may be changed during the implementation workflow

Formal Techniques for Detailed Design Implementing a complete product and then proving it correct is hard Use of formal techniques during detailed design can help Correctness proving can be applied to module-sized pieces The design should have fewer faults if it is developed in parallel with a correctness proof If the same programmer does the detailed design and implementation The programmer will have a positive attitude to the detailed design This should lead to fewer faults

Real-Time Design Techniques Difficulties associated with real-time systems Inputs come from the real world Software has no control over the timing of the inputs Frequently implemented on distributed software Communications implications Timing issues Problems of synchronization Race conditions Deadlock (deadly embrace)

Real-Time Design Techniques (Cont.) The major difficulty in the design of real-time systems Determining whether the timing constraints are met by the design Most real-time design methods are extensions of non-real-time methods to real-time We have limited experience in the use of any real-time methods The state-of-the-art is not where we would like it to be

CASE Tools for Design It is critical to check that the design artifacts incorporate all aspects of the analysis To handle analysis and design artifacts we therefore need upperCASE tools UpperCASE tools Are built around a data dictionary They incorporate a consistency checker, and Screen and report generators Management tools are sometimes included, for Estimating Planning

CASE Tools for Design (Cont.) Examples of tools for object-oriented design Commercial tools Software through Pictures Rose Together Open-source tool ArgoUML

Metrics for Design Measures of design quality Cohesion Coupling Fault statistics Cyclomatic complexity (The cyclomatic complexity of M of a detailed design is the number of binary decisions plus 1) is problematic Data complexity is ignored It is not used much with the OO paradigm

Metrics for Design (Cont.) Other metrics: Fan-in: The number of flows into the module plus the number of global data structures accessed by the module. Fan-out: The number of flows out of the module plus the number of global data structures updated by the module. Metrics have been put forward for the OO paradigm They have been challenged on both theoretical and experimental grounds

Challenges of the Design Phase The design team should not do too much The detailed design should not become code The design team should not do too little It is essential for the design team to produce a complete detailed design We need to “grow” great designers. Potential great designers must be Identified Provided with a formal education, Apprenticed to great designers, and Allowed to interact with other designers