These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.

Slides:



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

Chapter 11 Component-Level Design
Chapter 13 Design Concepts and Principles
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.
Lecture 9 Improving Software Design CSC301-Winter 2011 – University of Toronto – Department of Computer Science Hesam C. Esfahani
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Component-Level Design
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 Chapter 16 Component-Level Design. 2 Component-Level Design  the closest design activity to coding  the approach:  review the design description.
Component-Level Design
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.
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.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Chapter 11 Component-Level Design
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Design Concepts "You can use an eraser on the drafting table or a sledge hammer on the construction site." Frank Lloyd Wright.
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.
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.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Chapter :11 Component-Level Design
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
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.
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 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e.
1 Chapter 11 Component-Level Design. 2 What is a Component? OMG Unified Modeling Language Specification [OMG01] defines a component as “… a modular, deployable,
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.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
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.
Programming Techniques Lecture 10 Component-Level Design Based on: Software Engineering, A Practitioner’s Approach, 6/e, R.S. Pressman Software Engineering.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 10a: Architectural Design Software Engineering: A Practitioner’s Approach, 6/e Chapter 10a:
1 Supplementary Slides for Software Engineering: A Practitioner's Approach, 5/e Supplementary Slides for Software Engineering: A Practitioner's Approach,
CS 8532: Adv. Software Eng. – Spring 2009 Dr. Hisham Haddad Chapter 11 CS 8532: Advanced Software Engineering Dr. Hisham Haddad Class will start momentarily.
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.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11a: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
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.
1 Chapter 16 Component-Level Design. 2 Component-Level Design  the closest design activity to coding  the approach: review the design description for.
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.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
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 14 컴포넌트-수준 설계 Component-Level Design
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
Component Design Elaborating the Design Model. Component Design Translation of the architectural design into a detailed (class-based or module- based)
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.
Component-Level Design and User Interface Design Departemen Ilmu Komputer IPB 2009.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11b: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
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.
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.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman.1.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Design Concepts ch-8
Chapter 14 Component-Level Design
Component-Level Design
Software Engineering: A Practitioner’s Approach, 6/e Chapter 9 Design Engineering copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Chapter 10 Component-Level Design
Component-Level Design
Component-Level Design
Component-Level Design
Chapter 16 Component-Level Design
Object-Oriented Design
Chapter 9 Design Engineering
COSC 4406 Software Engineering
Chapter 10 – Component-Level Design
Presentation transcript:

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach. Any other reproduction or use is expressly prohibited.

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, What is a Component? OMG Unified Modeling Language Specification [OMG01] defines a component as OMG Unified Modeling Language Specification [OMG01] defines a component as “… a modular, modular, deployable, and deployable, and replaceable replaceable part of a system that encapsulates implementation and encapsulates implementation and exposes a set of interfaces.” exposes a set of interfaces.”

OO view: OO view: a component contains a set of collaborating classes a component contains a set of collaborating classes Conventional view: functional element of a program Conventional view: functional element of a program Processing logic, Processing logic, the internal data, the internal data, an interface that enables the component to be invoked and data to be passed to it. an interface that enables the component to be invoked and data to be passed to it. Component-based (Process-related) view: Component-based (Process-related) view: Reusable, off-the-shelf (existing) components Reusable, off-the-shelf (existing) components A complete description of A complete description of their interface: communication and collaboration they require, their interface: communication and collaboration they require, function they perform function they perform These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001,

4 OO Component

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Conventional Component

6 Basic Design Principles The Open-Closed Principle (OCP). The Open-Closed Principle (OCP). “A module [component] should be open for extension but closed for modification. “A module [component] should be open for extension but closed for modification. Extensible within the functional domain it addresses without the need to make internal (code or logic-level) modifications. Extensible within the functional domain it addresses without the need to make internal (code or logic-level) modifications. There shall be an abstraction between the design class and the functionality that is likely to be extended. There shall be an abstraction between the design class and the functionality that is likely to be extended. Example: Example: A Detector class that must check the status of each type of security sensor. A Detector class that must check the status of each type of security sensor. Instead of an if-then-else, we put a “sensor interface” as a consistent view of sensors to Detector Instead of an if-then-else, we put a “sensor interface” as a consistent view of sensors to Detector A new type of sensor can be added with no change to Detector class A new type of sensor can be added with no change to Detector class

Basic Design Principles The Liskov Substitution Principle (LSP). The Liskov Substitution Principle (LSP). “Subclasses should be substitutable for their base classes. “Subclasses should be substitutable for their base classes. Any derived class must honor any contract between the base class and the components that use it Any derived class must honor any contract between the base class and the components that use it Contract: Contract: Precondition that must be true before a component uses a base class Precondition that must be true before a component uses a base class Post-condition that should be true after the component uses a base class Post-condition that should be true after the component uses a base class These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001,

Basic Design Principles Dependency Inversion Principle (DIP). Dependency Inversion Principle (DIP). “Depend on abstractions. Do not depend on concretions.” “Depend on abstractions. Do not depend on concretions.” Abstractions are the place where a design can be extended without great complication Abstractions are the place where a design can be extended without great complication Depend on abstractions (like interfaces) rather than concrete components Depend on abstractions (like interfaces) rather than concrete components The Interface Segregation (isolation) Principle (ISP). “Many client-specific interfaces are better than one general purpose interface. The Interface Segregation (isolation) Principle (ISP). “Many client-specific interfaces are better than one general purpose interface. Specialized interfaces for each major category of clients Specialized interfaces for each major category of clients Interface for a client: only operations useful for that client Interface for a client: only operations useful for that client Operations used by many, shall be specified in each interface. Operations used by many, shall be specified in each interface. 8

Packaging Principles The Release Reuse Equivalency Principle (REP). “The granule of reuse is the granule of release.” The Release Reuse Equivalency Principle (REP). “The granule of reuse is the granule of release.” Guaranteed by a release control system Guaranteed by a release control system The Common Closure Principle (CCP). “Classes that change together belong together.” The Common Closure Principle (CCP). “Classes that change together belong together.” Packaged cohesively Packaged cohesively The Common Reuse Principle (CRP). “Classes that aren’t reused together should not be grouped together.” The Common Reuse Principle (CRP). “Classes that aren’t reused together should not be grouped together.” One may change while the others are not changed, an unnecessary test and integration will occur These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001,

10 Design Guidelines Components Components Naming conventions should be established for components Naming conventions should be established for components specified as part of the architectural model specified as part of the architectural model names from problem domain names from problem domain and then refined and elaborated as part of the component- level model and then refined and elaborated as part of the component- level model Implementation-specific names Implementation-specific names Interfaces Interfaces Interfaces provide important information about communication and collaboration (as well as helping us to achieve the OCP) Interfaces provide important information about communication and collaboration (as well as helping us to achieve the OCP) Dependencies and Inheritance Dependencies and Inheritance it is a good idea to model dependencies from left to right and it is a good idea to model dependencies from left to right and inheritance from bottom (derived classes) to top (base classes). inheritance from bottom (derived classes) to top (base classes).

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Cohesion Conventional view: Conventional view: the “single-mindedness” of a module the “single-mindedness” of a module OO view: OO view: cohesion implies that a component or class encapsulates only attributes and operations that are closely related to one another and to the class or component itself cohesion implies that a component or class encapsulates only attributes and operations that are closely related to one another and to the class or component itself Levels of cohesion Levels of cohesion Functional Functional Layer Layer Communicational Communicational Sequential Sequential Procedural Procedural Temporal Temporal utility utility

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Coupling Conventional view: Conventional view: The degree to which a component is connected to other components and to the external world The degree to which a component is connected to other components and to the external world OO view: OO view: a qualitative measure of the degree to which classes are connected to one another a qualitative measure of the degree to which classes are connected to one another Level of coupling Level of coupling Content Content Common Common Control Control Stamp Stamp Data Data Routine call Routine call Type use Type use Inclusion or import Inclusion or import External External

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Component Level Design-I Step 1. Identify all design classes that correspond to the problem domain. Step 1. Identify all design classes that correspond to the problem domain. Step 2. Identify all design classes that correspond to the infrastructure domain. Step 2. Identify all design classes that correspond to the infrastructure domain. Step 3. Elaborate all design classes that are not acquired as reusable components. Step 3. Elaborate all design classes that are not acquired as reusable components. Step 3a. Specify message details when classes or component collaborate. Step 3a. Specify message details when classes or component collaborate. Step 3b. Identify appropriate interfaces for each component. Step 3b. Identify appropriate interfaces for each component.

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Component-Level Design-II Step 3c. Elaborate attributes and define data types and data structures required to implement them. Step 3c. Elaborate attributes and define data types and data structures required to implement them. Step 3d. Describe processing flow within each operation in detail. Step 3d. Describe processing flow within each operation in detail. Step 4. Describe persistent data sources (databases and files) and identify the classes required to manage them. Step 4. Describe persistent data sources (databases and files) and identify the classes required to manage them. Step 5. Develop and elaborate behavioral representations for a class or component. Step 5. Develop and elaborate behavioral representations for a class or component. Step 6. Elaborate deployment diagrams to provide additional implementation detail. Step 6. Elaborate deployment diagrams to provide additional implementation detail. Step 7. Factor every component-level design representation and always consider alternatives. Step 7. Factor every component-level design representation and always consider alternatives.

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Collaboration Diagram

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Refactoring

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Activity Diagram

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Statechart

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Algorithm Design the closest design activity to coding the closest design activity to coding the approach: the approach: review the design description for the component review the design description for the component use stepwise refinement to develop algorithm use stepwise refinement to develop algorithm use structured programming to implement procedural logic use structured programming to implement procedural logic use ‘formal methods’ to prove logic use ‘formal methods’ to prove logic

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Stepwise Refinement open walk to door; reach for knob; open door; walk through; close door. repeat until door opens turn knob clockwise; if knob doesn't turn, then take key out; take key out; find correct key; find correct key; insert in lock; insert in lock; endif pull/push door move out of way; end repeat

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Algorithm Design Model represents the algorithm at a level of detail that can be reviewed for quality represents the algorithm at a level of detail that can be reviewed for quality options: options: graphical (e.g. flowchart, box diagram) graphical (e.g. flowchart, box diagram) pseudocode (e.g., PDL)... choice of many pseudocode (e.g., PDL)... choice of many programming language programming language decision table decision table conduct walkthrough to assess quality conduct walkthrough to assess quality

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Structured Programming for Procedural Design uses a limited set of logical constructs: sequence conditional — if-then-else, select-case — if-then-else, select-case loops — do-while, repeat until — do-while, repeat until leads to more readable, testable code important for achieving high quality, but not enough can be used in conjunction with ‘proof of correctness’

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, A Structured Procedural Design

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Decision Table

These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, Program Design Language (PDL)