Software Engineering PPT 3.1
Software Engineering PPT 3.1
Co m p o n e n t -
sc e na r i o- ba se d f l ow- or i e nt e d L e v e l D e sig n
e l e me nt s e l e me nt s
use-cases - text data flow diagrams
use-case diagrams control-flow diagrams
activity diagrams processing narratives
swim lane diagrams
In t e rf a c e D e sig n
Analysis Model
A r c h it e c t u ra l D e sig n
c l a ss- ba se d be ha v i or a l
e l e me nt s e l e me nt s
class diagrams state diagrams
analysis packages sequence diagrams
CRC models D a t a / Cla ss D e sig n
collaboration diagrams
Design Model
4
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.
5
Quality Guidelines
• A design should be modular; that is, the software should be logically partitioned into
elements or subsystems
• A design should lead to interfaces that reduce the complexity of connections between
components and with the external environment.
• The design should “minimize the intellectual distance” between the software
and the problem as it exists in the real world.
• The design should be assessed for quality as it is being created, not after the
fact.
• Hiding—controlled interfaces
design
• OO design concepts
to be implemented
10
Data Abstraction
door
manufacturer
model number
type
swing direction
inserts
lights
type
number
weight
opening mechanism
details of enter
algorithm
15
Modularity
• "Modularity is the single attribute of software that allows a program to be intellectually
manageable" [mye78].
• Monolithic software (i.e., A large program composed of a single module) cannot be
easily grasped by a software engineer.
16
Modularity: Trade-offs
What is the "right" number of modules
for a specific software design?
module development cost
cost of
software
module
integration
cost
clients
"secret"
walk to door;
reach for knob;
MODULE
21
Functional Independence
• Functional independence is achieved by developing modules with "single-minded" function and an
"aversion" to excessive interaction with other modules.
• Cohesion is an indication of the relative functional strength of a module.
• A cohesive module performs a single task, requiring little interaction with other
components in other parts of a program. Stated simply, a cohesive module
should (ideally) do just one thing.
• Coupling is an indication of the relative interdependence among modules.
23
Refactoring
• Boundary classes
• Controller 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.
• the instantiation of boundary objects as they obtain information from entity objects;
• validation of data communicated between objects or between the user and the application. 26
high
The Design
a na ly sis m ode l
Model
class diagr ams
analysis packages
use- cases - t ext class diagr ams
Requirement s:
CRC models use- case diagr ams const raint s
analysis packages
collabor at ion diagr ams
act ivit y diagr ams CRC models int eroperabilit y
dat a f low diagr ams sw im lane diagr ams collabor at ion diagr ams t arget s and
cont r ol- f low diagr ams collabor at ion diagr ams dat a f low diagr ams
pr ocessing nar r at ives st at e diagr ams cont r ol- f low diagr ams
conf igurat ion
sequence diagr ams pr ocessing nar r at ives
st at e diagr ams
sequence diagr ams
29
Interface Design Elements
30
Interface Elements
31
Component-Level Design Elements
• The component-level design for software is the equivalent to a set of detailed
drawings (and specifications) for each room in a house.
• These drawings depict wiring and plumbing within each room, the location of
electrical receptacles and wall switches, faucets, sinks, showers, tubs, drains, cabinets,
and closets.
• The component-level design for software fully describes the internal detail of each
software component.
• To accomplish this, the component-level design defines data structures for all local
data objects and algorithmic detail for all processing.
32
Component Elements
SensorManagement
Sensor
33
Deployment Elements
Deployment-level design
elements indicate how software
functionality and subsystems will
be allocated within the physical
computing environment that will
support the software.
34
THANKS…
35