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
Design Engineering
based on
Chapter 9 Software Engineering: A Practitioner’s Approach, 6/e
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, 2005 2
Analysis Model -> Design Model
Analysis Model
use-cases - text
use-case diagrams
activity diagrams
swim lane diagrams
data flow diagrams
control-flow diagrams
processing narratives
f low- or ie nt e d
e le me nt s
be ha v ior a l
e le me nt s
c la ss- ba se d
e le me nt s
sc e na r io- ba se d
e le me nt s
class diagrams
analysis packages
CR
C models
collaboration diagrams
state diagrams
sequence diagrams
D a t a / Cla ss D e sign
Arc hit e c t ura l De sign
Int e rf a c e De sign
Com pone nt -
Le v e l D e sign
Design Model
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
Design and Quality
 the design must implement all of the explicit requirements
contained in the analysis model,
… and it must accommodate all of the implicit requirements desired by the
customer(?)
 the design must be a readable, understandable guide for those
who generate code and for those who test and subsequently support
the software.
 the design should provide a complete picture of the software,
addressing the data, functional, and behavioral domains from an
implementation perspective.
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
Quality Guidelines
 A design should exhibit an architecture that
 (1) has been created using recognizable architectural styles or patterns, (2) is composed of
components that exhibit good design characteristics (3) can be implemented in an
evolutionary fashion
 A design should be modular; that is, the software should be logically partitioned into
elements or subsystems
 A design should contain distinct representations of data, architecture, interfaces, and
components.
 A design should lead to components that exhibit independent functional
characteristics.
 A design should be represented using a notation that effectively communicates its
meaning.
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
Fundamental Concepts
 abstraction—data, procedure, control
 architecture—the overall structure of the software
 modularity—compartmentalization of data and function
 Functional independence—single-minded function and low coupling
 hiding—controlled interfaces
 refinement—elaboration of detail for all abstractions
 Refactoring—a reorganization technique that simplifies the 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, 2005 6
Data Abstraction
door
implemented as a data structure
manufacturer
model number
type
swing direction
inserts
lights
type
number
weight
opening mechanism
abstraction
architecture
modularity
functional independence
hiding
refinement
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, 2005 7
Procedural Abstraction
open
implemented with a "knowledge" of the
object that is associated with enter
details of enter
algorithm
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 8
Architecture
“The overall structure of the software and the ways in
which that structure provides conceptual integrity for a
system.” [SHA95a]
Structural properties. This aspect of the architectural design representation
defines the components of a system (e.g., modules, objects, filters) and the
manner in which those components are packaged and interact with one
another. For example, objects are packaged to encapsulate both data and the
processing that manipulates the data and interact via the invocation of methods
Extra-functional properties. achieves requirements for performance, capacity,
reliability, security, adaptability, and other system characteristics.
Families of related systems. The architectural design should draw upon
repeatable patterns that are commonly encountered in the design of families of
similar systems. In essence, the design should have the ability to reuse
architectural building blocks.
abstraction
architecture
modularity
functional independence
hiding
refinement
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, 2005 9
Modular Design
easier to build, easier to change, easier to fix ...
abstraction
architecture
modularity
functional independence
hiding
refinement
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, 2005 10
Modularity: Trade-offs
What is the "right" number of modules
for a specific software design?
optimal number
of modules
cost of
software
number of modules
module
integration
cost
module development cost
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
Functional Independence
COHESION - the degree to which a
module performs one and only one
function.
COUPLING - the degree to which a
module is "connected" to other
modules in the system.
abstraction
architecture
modularity
functional independence
hiding
refinement
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, 2005 12
Information Hiding
module
controlled
interface
"secret"
• algorithm
• data structure
• details of external interface
• resource allocation policy
clients
a specific design decision
abstraction
architecture
modularity
functional independence
hiding
refinement
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, 2005 13
Why Information Hiding?
 reduces the likelihood of “side effects”
 limits the global impact of local design
decisions
 emphasizes communication through
controlled interfaces
 discourages the use of global data
 leads to encapsulation—an attribute of
high quality design
 results in higher quality software
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 14
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;
find correct key;
insert in lock;
endif
pull/push door
move out of way;
end repeat
abstraction
architecture
modularity
functional independence
hiding
refinement
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, 2005 15
Refactoring
 Fowler [FOW99] defines refactoring in the following manner:
 "Refactoring is the process of changing a software system in
such a way that it does not alter the external behavior of the
code [design] yet improves its internal structure.”
 When software is refactored, the existing design is examined
for
 redundancy
 unused design elements
 inefficient or unnecessary algorithms
 poorly constructed or inappropriate data structures
 or any other design failure that can be corrected to yield a better
design.
abstraction
architecture
modularity
functional independence
hiding
refinement
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, 2005 16
OO Design Concepts
 Design classes
 Entity classes
 Boundary classes
 Controller classes
 Inheritance—all responsibilities of a superclass is
immediately inherited by all subclasses
 Messages—stimulate some behavior to occur in the
receiving object
 Polymorphism—a characteristic that greatly reduces the
effort required to extend the 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, 2005 17
Design Classes
 Analysis classes are refined during design to become entity
classes
 Boundary classes are developed during design to create the
interface (e.g., interactive screen or printed reports) that the user
sees and interacts with as the software is used.
 Boundary classes are designed with the responsibility of managing
the way entity objects are represented to users.
 Controller classes are designed to manage
 the creation or update of entity objects;
 the instantiation of boundary objects as they obtain information from
entity objects;
 complex communication between sets of objects;
 validation of data communicated between objects or between the
user and the application.
Design classes
Inheritance
Messages
Polymorphism
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
What can be in the top boxes?
(http://www.agilemodeling.com/artifacts/sequenceDiagram.htm)
Outputting
transcripts
Boundary/interface elements: software elements such as screens, reports, HTML pages, or
system interfaces that actors interact with.
Control/process elements (controllers): These serve as the glue between boundary elements
and entity elements, implementing the logic required to manage the various elements and their
interactions. Often implemented using objects, but simple ones using methods of an entity or boundary
class.
Entity elements
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
Inheritance
 Design options:
 The class can be designed and built from scratch. That is, if
inheritance is not used.
 The class hierarchy can be searched to determine if a class
higher in the hierarchy (a superclass) contains most of the
required attributes and operations. The new class inherits from
the superclass and additions may then be added, as required.
 The class hierarchy can be restructured so that the required
attributes and operations can be inherited by the new class.
 Characteristics of an existing class can be overridden and
different versions of attributes or operations are implemented for
the new class.
Design classes
Inheritance
Messages
Polymorphism
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
Messages
:SenderObject
:ReceiverObject
message (<parameters>)
Design classes
Inheritance
Messages
Polymorphism
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
Polymorphism
case of graphtype:
if graphtype = linegraph then DrawLineGraph (data);
if graphtype = piechart then DrawPieChart (data);
if graphtype = histogram then DrawHisto (data);
if graphtype = kiviat then DrawKiviat (data);
end case;
All of the graphs become subclasses of a general class called graph.
Using a concept called overloading [TAY90], each subclass defines an
operation called draw. An object can send a draw message to any one
of the objects instantiated from any one of the subclasses. The object
receiving the message will invoke its own draw operation to create the
appropriate graph.
graphtype draw
Conventional approach …
Design classes
Inheritance
Messages
Polymorphism
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
Design Model Elements
 Data elements
 Data model --> data structures
 Data model --> database architecture
 Architectural elements
 Application domain
 Analysis classes, their relationships, collaborations and behaviors are
transformed into design realizations
 Patterns and “styles” (Chapter 10)
 Interface elements
 the user interface (UI)
 external interfaces to other systems, devices, networks or other producers or
consumers of information
 internal interfaces between various design components.
 Component elements
 Deployment elements
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
Interface Elements
Cont rolPanel
LCDdisplay
LEDindicat ors
keyPadCharact eristics
speaker
wirelessInterf ace
readKeySt roke()
decodeKey ()
displaySt at us()
lightLEDs()
sendControlMsg()
Figure 9 .6 UML int erface represent at ion for Cont rolPa ne l
KeyPad
readKeyst roke()
decodeKey()
< < int erface> >
WirelessPDA
KeyPad
MobilePhone
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
Component Elements
SensorManagement
Sensor
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 25
Deployment Elements
Figure 9 .8 UML deploym ent diagram for SafeHom e
Personal computer
Security
homeManagement
Surveillance
communication
Cont rol Panel CPI server
Security homeownerAccess
externalAccess
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 26
Omitted Slides
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 27
Patterns
Design Pattern Template
Pattern name—describes the essence of the pattern in a short but expressive name
Intent—describes the pattern and what it does
Also-known-as—lists any synonyms for the pattern
Motivation—provides an example of the problem
Applicability—notes specific design situations in which the pattern is applicable
Structure—describes the classes that are required to implement the pattern
Participants—describes the responsibilities of the classes that are required to implement
the pattern
Collaborations—describes how the participants collaborate to carry out their
responsibilities
Consequences—describes the “design forces” that affect the pattern and the potential
trade-offs that must be considered when the pattern is implemented
Related patterns—cross-references related design patterns
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 28
Design Patterns
 The best designers in any field have an uncanny ability to see patterns that
characterize a problem and corresponding patterns that can be combined to
create a solution
 A description of a design pattern may also consider a set of design forces.
 Design forces describe non-functional requirements (e.g., ease of maintainability,
portability) associated the software for which the pattern is to be applied.
 The pattern characteristics (classes, responsibilities, and collaborations)
indicate the attributes of the design that may be adjusted to enable the
pattern to accommodate a variety of problems.
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 29
Frameworks
 A framework is not an architectural pattern, but rather a
skeleton with a collection of “plug points” (also called
hooks and slots) that enable it to be adapted to a specific
problem domain.
 Gamma et al note that:
 Design patterns are more abstract than frameworks.
 Design patterns are smaller architectural elements than
frameworks
 Design patterns are less specialized than frameworks
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 30
The Design Model
process dimension
archit ect ure
element s
int erface
element s
component -level
element s
deployment -level
element s
low
high
class diagrams
analysis packages
CRCmodels
collaboration diagrams
use-cases - text
use-case diagrams
activit y diagrams
swim lane diagrams
collaborat ion diagrams data f low diagrams
control-f low diagrams
processing narratives
dat a flow diagrams
control-flow diagrams
processing narrat ives
state diagrams
sequence diagrams
state diagrams
sequence diagrams
design class realizations
subsyst ems
collaboration diagrams
design class realizat ions
subsystems
collaboration diagrams
ref inement s to:
deployment diagrams
class diagrams
analysis packages
CRC models
collaborat ion diagrams
component diagrams
design classes
act ivity diagrams
sequence diagrams
ref inement s to:
component diagrams
design classes
act ivity diagrams
sequence diagrams
design class realizations
subsyst ems
collaborat ion diagrams
component diagrams
design classes
act ivity diagrams
sequence diagrams
analysis model
design model
Requirement s:
const raint s
int eroperabilit y
t arget s and
conf igurat ion
technical int erface
design
Navigat ion design
GUIdesign

Ppt on Design engineering which is chapter 9

  • 1.
    These courseware materialsare 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 Design Engineering based on Chapter 9 Software Engineering: A Practitioner’s Approach, 6/e 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 materialsare 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 Analysis Model -> Design Model Analysis Model use-cases - text use-case diagrams activity diagrams swim lane diagrams data flow diagrams control-flow diagrams processing narratives f low- or ie nt e d e le me nt s be ha v ior a l e le me nt s c la ss- ba se d e le me nt s sc e na r io- ba se d e le me nt s class diagrams analysis packages CR C models collaboration diagrams state diagrams sequence diagrams D a t a / Cla ss D e sign Arc hit e c t ura l De sign Int e rf a c e De sign Com pone nt - Le v e l D e sign Design Model
  • 3.
    These courseware materialsare 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 Design and Quality  the design must implement all of the explicit requirements contained in the analysis model, … and it must accommodate all of the implicit requirements desired by the customer(?)  the design must be a readable, understandable guide for those who generate code and for those who test and subsequently support the software.  the design should provide a complete picture of the software, addressing the data, functional, and behavioral domains from an implementation perspective.
  • 4.
    These courseware materialsare 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 Quality Guidelines  A design should exhibit an architecture that  (1) has been created using recognizable architectural styles or patterns, (2) is composed of components that exhibit good design characteristics (3) can be implemented in an evolutionary fashion  A design should be modular; that is, the software should be logically partitioned into elements or subsystems  A design should contain distinct representations of data, architecture, interfaces, and components.  A design should lead to components that exhibit independent functional characteristics.  A design should be represented using a notation that effectively communicates its meaning.
  • 5.
    These courseware materialsare 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 Fundamental Concepts  abstraction—data, procedure, control  architecture—the overall structure of the software  modularity—compartmentalization of data and function  Functional independence—single-minded function and low coupling  hiding—controlled interfaces  refinement—elaboration of detail for all abstractions  Refactoring—a reorganization technique that simplifies the design
  • 6.
    These courseware materialsare 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 Data Abstraction door implemented as a data structure manufacturer model number type swing direction inserts lights type number weight opening mechanism abstraction architecture modularity functional independence hiding refinement refactoring
  • 7.
    These courseware materialsare 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 7 Procedural Abstraction open implemented with a "knowledge" of the object that is associated with enter details of enter algorithm
  • 8.
    These courseware materialsare 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 8 Architecture “The overall structure of the software and the ways in which that structure provides conceptual integrity for a system.” [SHA95a] Structural properties. This aspect of the architectural design representation defines the components of a system (e.g., modules, objects, filters) and the manner in which those components are packaged and interact with one another. For example, objects are packaged to encapsulate both data and the processing that manipulates the data and interact via the invocation of methods Extra-functional properties. achieves requirements for performance, capacity, reliability, security, adaptability, and other system characteristics. Families of related systems. The architectural design should draw upon repeatable patterns that are commonly encountered in the design of families of similar systems. In essence, the design should have the ability to reuse architectural building blocks. abstraction architecture modularity functional independence hiding refinement refactoring
  • 9.
    These courseware materialsare 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 Modular Design easier to build, easier to change, easier to fix ... abstraction architecture modularity functional independence hiding refinement refactoring
  • 10.
    These courseware materialsare 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 Modularity: Trade-offs What is the "right" number of modules for a specific software design? optimal number of modules cost of software number of modules module integration cost module development cost
  • 11.
    These courseware materialsare 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 Functional Independence COHESION - the degree to which a module performs one and only one function. COUPLING - the degree to which a module is "connected" to other modules in the system. abstraction architecture modularity functional independence hiding refinement refactoring
  • 12.
    These courseware materialsare 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 Information Hiding module controlled interface "secret" • algorithm • data structure • details of external interface • resource allocation policy clients a specific design decision abstraction architecture modularity functional independence hiding refinement refactoring
  • 13.
    These courseware materialsare 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 Why Information Hiding?  reduces the likelihood of “side effects”  limits the global impact of local design decisions  emphasizes communication through controlled interfaces  discourages the use of global data  leads to encapsulation—an attribute of high quality design  results in higher quality software
  • 14.
    These courseware materialsare 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 14 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; find correct key; insert in lock; endif pull/push door move out of way; end repeat abstraction architecture modularity functional independence hiding refinement refactoring
  • 15.
    These courseware materialsare 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 Refactoring  Fowler [FOW99] defines refactoring in the following manner:  "Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code [design] yet improves its internal structure.”  When software is refactored, the existing design is examined for  redundancy  unused design elements  inefficient or unnecessary algorithms  poorly constructed or inappropriate data structures  or any other design failure that can be corrected to yield a better design. abstraction architecture modularity functional independence hiding refinement refactoring
  • 16.
    These courseware materialsare 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 OO Design Concepts  Design classes  Entity classes  Boundary classes  Controller classes  Inheritance—all responsibilities of a superclass is immediately inherited by all subclasses  Messages—stimulate some behavior to occur in the receiving object  Polymorphism—a characteristic that greatly reduces the effort required to extend the design
  • 17.
    These courseware materialsare 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 Design Classes  Analysis classes are refined during design to become entity classes  Boundary classes are developed during design to create the interface (e.g., interactive screen or printed reports) that the user sees and interacts with as the software is used.  Boundary classes are designed with the responsibility of managing the way entity objects are represented to users.  Controller classes are designed to manage  the creation or update of entity objects;  the instantiation of boundary objects as they obtain information from entity objects;  complex communication between sets of objects;  validation of data communicated between objects or between the user and the application. Design classes Inheritance Messages Polymorphism
  • 18.
    These courseware materialsare 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 What can be in the top boxes? (http://www.agilemodeling.com/artifacts/sequenceDiagram.htm) Outputting transcripts Boundary/interface elements: software elements such as screens, reports, HTML pages, or system interfaces that actors interact with. Control/process elements (controllers): These serve as the glue between boundary elements and entity elements, implementing the logic required to manage the various elements and their interactions. Often implemented using objects, but simple ones using methods of an entity or boundary class. Entity elements
  • 19.
    These courseware materialsare 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 Inheritance  Design options:  The class can be designed and built from scratch. That is, if inheritance is not used.  The class hierarchy can be searched to determine if a class higher in the hierarchy (a superclass) contains most of the required attributes and operations. The new class inherits from the superclass and additions may then be added, as required.  The class hierarchy can be restructured so that the required attributes and operations can be inherited by the new class.  Characteristics of an existing class can be overridden and different versions of attributes or operations are implemented for the new class. Design classes Inheritance Messages Polymorphism
  • 20.
    These courseware materialsare 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 Messages :SenderObject :ReceiverObject message (<parameters>) Design classes Inheritance Messages Polymorphism
  • 21.
    These courseware materialsare 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 Polymorphism case of graphtype: if graphtype = linegraph then DrawLineGraph (data); if graphtype = piechart then DrawPieChart (data); if graphtype = histogram then DrawHisto (data); if graphtype = kiviat then DrawKiviat (data); end case; All of the graphs become subclasses of a general class called graph. Using a concept called overloading [TAY90], each subclass defines an operation called draw. An object can send a draw message to any one of the objects instantiated from any one of the subclasses. The object receiving the message will invoke its own draw operation to create the appropriate graph. graphtype draw Conventional approach … Design classes Inheritance Messages Polymorphism
  • 22.
    These courseware materialsare 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 Design Model Elements  Data elements  Data model --> data structures  Data model --> database architecture  Architectural elements  Application domain  Analysis classes, their relationships, collaborations and behaviors are transformed into design realizations  Patterns and “styles” (Chapter 10)  Interface elements  the user interface (UI)  external interfaces to other systems, devices, networks or other producers or consumers of information  internal interfaces between various design components.  Component elements  Deployment elements
  • 23.
    These courseware materialsare 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 Interface Elements Cont rolPanel LCDdisplay LEDindicat ors keyPadCharact eristics speaker wirelessInterf ace readKeySt roke() decodeKey () displaySt at us() lightLEDs() sendControlMsg() Figure 9 .6 UML int erface represent at ion for Cont rolPa ne l KeyPad readKeyst roke() decodeKey() < < int erface> > WirelessPDA KeyPad MobilePhone
  • 24.
    These courseware materialsare 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 Component Elements SensorManagement Sensor
  • 25.
    These courseware materialsare 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 25 Deployment Elements Figure 9 .8 UML deploym ent diagram for SafeHom e Personal computer Security homeManagement Surveillance communication Cont rol Panel CPI server Security homeownerAccess externalAccess
  • 26.
    These courseware materialsare 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 26 Omitted Slides
  • 27.
    These courseware materialsare 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 27 Patterns Design Pattern Template Pattern name—describes the essence of the pattern in a short but expressive name Intent—describes the pattern and what it does Also-known-as—lists any synonyms for the pattern Motivation—provides an example of the problem Applicability—notes specific design situations in which the pattern is applicable Structure—describes the classes that are required to implement the pattern Participants—describes the responsibilities of the classes that are required to implement the pattern Collaborations—describes how the participants collaborate to carry out their responsibilities Consequences—describes the “design forces” that affect the pattern and the potential trade-offs that must be considered when the pattern is implemented Related patterns—cross-references related design patterns
  • 28.
    These courseware materialsare 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 28 Design Patterns  The best designers in any field have an uncanny ability to see patterns that characterize a problem and corresponding patterns that can be combined to create a solution  A description of a design pattern may also consider a set of design forces.  Design forces describe non-functional requirements (e.g., ease of maintainability, portability) associated the software for which the pattern is to be applied.  The pattern characteristics (classes, responsibilities, and collaborations) indicate the attributes of the design that may be adjusted to enable the pattern to accommodate a variety of problems.
  • 29.
    These courseware materialsare 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 29 Frameworks  A framework is not an architectural pattern, but rather a skeleton with a collection of “plug points” (also called hooks and slots) that enable it to be adapted to a specific problem domain.  Gamma et al note that:  Design patterns are more abstract than frameworks.  Design patterns are smaller architectural elements than frameworks  Design patterns are less specialized than frameworks
  • 30.
    These courseware materialsare 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 30 The Design Model process dimension archit ect ure element s int erface element s component -level element s deployment -level element s low high class diagrams analysis packages CRCmodels collaboration diagrams use-cases - text use-case diagrams activit y diagrams swim lane diagrams collaborat ion diagrams data f low diagrams control-f low diagrams processing narratives dat a flow diagrams control-flow diagrams processing narrat ives state diagrams sequence diagrams state diagrams sequence diagrams design class realizations subsyst ems collaboration diagrams design class realizat ions subsystems collaboration diagrams ref inement s to: deployment diagrams class diagrams analysis packages CRC models collaborat ion diagrams component diagrams design classes act ivity diagrams sequence diagrams ref inement s to: component diagrams design classes act ivity diagrams sequence diagrams design class realizations subsyst ems collaborat ion diagrams component diagrams design classes act ivity diagrams sequence diagrams analysis model design model Requirement s: const raint s int eroperabilit y t arget s and conf igurat ion technical int erface design Navigat ion design GUIdesign