Download presentation
Presentation is loading. Please wait.
Published byRodger Armstrong Modified over 9 years ago
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 R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 1 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.
2
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, 2005 2 What is a Component? Unified Modeling Language Specification [OMG01] defines a component as Unified Modeling Language Specification [OMG01] defines a component as “… a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.” “… a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces.” OO view: a component contains a set of collaborating classes. OO view: a component contains a set of collaborating classes. Conventional view: logic, the internal data structures that are required to implement the processing logic, and an interface that enables the component to be invoked and data to be passed to it. Conventional view: logic, the internal data structures that are required to implement the processing logic, and an interface that enables the component to be invoked and data to be passed to it.
3
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, 2005 3 OO Component
4
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, 2005 4 Conventional Component
5
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, 2005 5 Basic Design Principles The Open-Closed Principle (OCP). “A module [component] should be open for extension but closed for modification. The Open-Closed Principle (OCP). “A module [component] should be open for extension but closed for modification. The Liskov Substitution Principle (LSP). “Subclasses should be substitutable for their base classes, honouring pre- and post-conditions. The Liskov Substitution Principle (LSP). “Subclasses should be substitutable for their base classes, honouring pre- and post-conditions. Dependency Inversion Principle (DIP). “Depend on abstractions. Do not depend on concretions. This enhances extensibility. Dependency Inversion Principle (DIP). “Depend on abstractions. Do not depend on concretions. This enhances extensibility. The Interface Segregation Principle (ISP). “Many client-specific interfaces are better than one general purpose interface. The Interface Segregation Principle (ISP). “Many client-specific interfaces are better than one general purpose interface. The Release Reuse Equivalency Principle (REP). “The granule of reuse is the granule of release. Grouping of classes is advised. The Release Reuse Equivalency Principle (REP). “The granule of reuse is the granule of release. Grouping of classes is advised. The Common Closure Principle (CCP). “Classes that change together belong together. This enhances cohesion. The Common Closure Principle (CCP). “Classes that change together belong together. This enhances cohesion. 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.” Source: Martin, R., “Design Principles and Design Patterns,” downloaded from http:www.objectmentor.com, 2000.
6
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, 2005 6 Design Guidelines Components Components Naming conventions should be established for components that are specified as part of the architectural model and then refined and elaborated as part of the component-level model Naming conventions should be established for components that are specified as part of the architectural model and then refined and elaborated as part of the component-level model Interfaces Interfaces Interfaces provide important information about communication and collaboration (as well as helping us to achieve the OPC) Interfaces provide important information about communication and collaboration (as well as helping us to achieve the OPC) Dependencies and Inheritance Dependencies and Inheritance it is a good idea to model dependencies from left to right and inheritance from bottom (derived classes) to top (base classes). it is a good idea to model dependencies from left to right and inheritance from bottom (derived classes) to top (base classes).
7
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, 2005 7Cohesion 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
8
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, 2005 8Coupling 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 - violates info. hiding Content - violates info. hiding Common - use of global variables, etc. Common - use of global variables, etc. Control - when a called operation assumes exec. control Control - when a called operation assumes exec. control Stamp - when ClassA uses args of type ClassB (complex modifications) Stamp - when ClassA uses args of type ClassB (complex modifications) Data - use of large no. of args. (complex testing and maintenance) Data - use of large no. of args. (complex testing and maintenance) Routine call - increases connectedness of a system Routine call - increases connectedness of a system Type use - use in ClassA types from ClassB (complex modifications) Type use - use in ClassA types from ClassB (complex modifications) Inclusion or import - occurs when CompA incs./imports CompB Inclusion or import - occurs when CompA incs./imports CompB External - occurs when calling OS system calls, DBMS services, etc. External - occurs when calling OS system calls, DBMS services, etc.
9
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, 2005 9 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 (GUI, OS, DBMS, etc.) Step 2. Identify all design classes that correspond to the infrastructure domain (GUI, OS, DBMS, etc.) 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.
10
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, 2005 10 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.
11
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, 2005 11 Collaboration Diagram
12
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, 2005 12 Refactoring
13
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, 2005 13 Activity Diagram
14
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, 2005 14Statechart
15
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, 2005 15 Object Constraint Language (OCL) Complements UML by allowing a software engineer to use a formal grammar and syntax to construct unambiguous statements about various design model elements Complements UML by allowing a software engineer to use a formal grammar and syntax to construct unambiguous statements about various design model elements Simplest OCL language statements are constructed in four parts: Simplest OCL language statements are constructed in four parts: (1) a context that defines the limited situation in which the statement is valid; (1) a context that defines the limited situation in which the statement is valid; (2) a property that represents some characteristics of the context (e.g., if the context is a class, a property might be an attribute) (2) a property that represents some characteristics of the context (e.g., if the context is a class, a property might be an attribute) (3) an operation (e.g., arithmetic, set-oriented) that manipulates or qualifies a property, and (3) an operation (e.g., arithmetic, set-oriented) that manipulates or qualifies a property, and (4) keywords (e.g., if, then, else, and, or, not, implies) that are used to specify conditional expressions. (4) keywords (e.g., if, then, else, and, or, not, implies) that are used to specify conditional expressions.
16
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, 2005 16 OCL Example context PrintJob::validate(upperCostBound : Integer, custDeliveryReq : Integer) Integer) pre: upperCostBound > 0 pre: upperCostBound > 0 and custDeliveryReq > 0 and custDeliveryReq > 0 and self.jobAuthorization = 'no' and self.jobAuthorization = 'no' post: if self.totalJobCost <= upperCostBound post: if self.totalJobCost <= upperCostBound and self.deliveryDate <= custDeliveryReq and self.deliveryDate <= custDeliveryReq then then self.jobAuthorization = 'yes' self.jobAuthorization = 'yes' endif endif
17
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, 2005 17 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
18
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, 2005 18 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
19
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, 2005 19 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
20
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, 2005 20 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’
21
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, 2005 21 A Structured Procedural Design
22
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, 2005 22 Decision Table
23
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, 2005 23 Program Design Language (PDL)
24
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, 2005 24 Why Design Language?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.