SlideShare a Scribd company logo
1 of 37
Unit 5
Design Engineering
Preeti Mishra
Course Instructor
Introduction
Analysis Model
use-cases - text
use-case diagrams
activity diagrams
swim lane diagrams
data flow diagrams
control-flow diagrams
processing narratives
f low- or ient ed
element s
behavior al
element s
class- based
element s
scenar io- based
element s
class diagrams
analysis packages
CRC models
collaboration diagrams
state diagrams
sequence diagrams
Da t a / Cla ss De sign
Arc hit e c t ura l De sign
Int e rfa c e De sign
Com pone nt -
Le v e l De sign
Design Model
Programmer’s Approach to Software Engineering
Skip requirements engineering and design phases;
start writing code
Why this programmer’s approach?
Design is a waste of time
We need to show something to the customer real quick
We are judged by the amount of LOC/month
However, ...
he longer you postpone coding, the sooner you’ll
be finished
Software design as a “wicked” problem
• There is no definite formulation
• There is no stopping rule
• Solutions are not simply true or false
• Every wicked problem is a symptom of another problem
Purpose of Design
• Design is where customer requirements, business needs, and technical considerations all come together in the
formulation of a product or system
• The design model provides detail about the software data structures, architecture, interfaces, and components
• The design model can be assessed for quality and be improved before code is generated and tests are conducted
– Does the design contain errors, inconsistencies, or omissions?
– Are there better design alternatives?
– Can the design be implemented within the constraints, schedule, and cost that have been established?
• A designer must practice diversification and convergence
– The designer selects from design components, component solutions, and knowledge available through catalogs, textbooks,
and experience
– The designer then chooses the elements from this collection that meet the requirements defined by requirements engineering
and analysis modeling
– Convergence occurs as alternatives are considered and rejected until one particular configuration of components is chosen
• Software design is an iterative process through which requirements are translated into a blueprint for constructing
the software
– Design begins at a high level of abstraction that can be directly traced back to the data, functional, and behavioral
requirements
– As design iteration occurs, subsequent refinement leads to design representations at much lower levels of abstraction
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.
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 and
– (3) can be implemented in an evolutionary fashion
For smaller systems, design can sometimes be developed linearly.
• 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 data structures that are appropriate for the classes to be implemented and
are drawn from recognizable data patterns.
• A design should lead to components that exhibit independent functional characteristics.
• A design should lead to interfaces that reduce the complexity of connections between components
and with the external environment.
• A design should be derived using a repeatable method that is driven by information obtained during
software requirements analysis.
• A design should be represented using a notation that effectively communicates its meaning.
Design Principles
Design Principles
• The design process should not suffer from ‘tunnel vision.’
• The design should be traceable to the analysis model.
• The design should not reinvent the wheel.
• The design should “minimize the intellectual distance” between the software and the problem as it
exists in the real world.
• The design should exhibit uniformity and integration.
• The design should be structured to accommodate change.
• The design should be structured to degrade gently, even when aberrant data, events, or operating
conditions are encountered.
• Design is not coding, coding is not design.
• The design should be assessed for quality as it is being created, not after the fact.
• The design should be reviewed to minimize conceptual (semantic) errors.
Fundamental Concepts
• Abstraction—data, procedure, control
• Architecture—the overall structure of the software
• Patterns—”conveys the essence” of a proven design solution
• Separation of concerns—any complex problem can be more easily handled if it is subdivided into
pieces
• Modularity—compartmentalization of data and function
• Hiding—controlled interfaces
• Functional independence—single-minded function and low coupling
• Refinement—elaboration of detail for all abstractions
• Aspects—a mechanism for understanding how global requirements affect design
• Refactoring—a reorganization technique that simplifies the design
• OO design concepts—(Already done see slide Object Oriented Concepts)
• Design Classes—provide design detail that will enable analysis classes to be implemented( already
Done)
Design Concepts
• Abstraction
– Procedural abstraction – a sequence of instructions that have a specific and limited function
– Data abstraction – a named collection of data that describes a data object
• Architecture
– The overall structure of the software and the ways in which the structure provides conceptual integrity for a system
– Consists of components, connectors, and the relationship between them
• Patterns
– A design structure that solves a particular design problem within a specific context
– It provides a description that enables a designer to determine whether the pattern is applicable, whether the pattern can be
reused, and whether the pattern can serve as a guide for developing similar patterns
• Modularity
– Separately named and addressable components (i.e., modules) that are integrated to satisfy requirements (divide and
conquer principle)
– Makes software intellectually manageable so as to grasp the control paths, span of reference, number of variables, and
overall complexity
• Information hiding
– The designing of modules so that the algorithms and local data contained within them are inaccessible to other modules
– This enforces access constraints to both procedural (i.e., implementation) detail and local data structures
Design Concepts
• Functional independence
– Modules that have a "single-minded" function and an aversion to excessive interaction with other modules
– High cohesion – a module performs only a single task
– Low coupling – a module has the lowest amount of connection needed with other modules
• Stepwise refinement
– Development of a program by successively refining levels of procedure detail
– Complements abstraction, which enables a designer to specify procedure and data and yet suppress low-level
details
• Refactoring
– A reorganization technique that simplifies the design (or internal code structure) of a component without
changing its function or external behavior
– Removes redundancy, unused design elements, inefficient or unnecessary algorithms, poorly constructed or
inappropriate data structures, or any other design failures
• Design classes
– Refines the analysis classes by providing design detail that will enable the classes to be implemented
– Creates a new set of design classes that implement a software infrastructure to support the business solution
Data Abstraction
door
implemented as a data structure
manufacturer
model number
type
swing direction
inserts
lights
type
number
weight
opening mechanism
Procedural Abstraction
open
implemented with a "knowledge" of the
object that is associated with enter
details of enter
algorithm
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.
Extra-functional properties. The architectural design description should address how the design
architecture 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.
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
Separation of Concerns
• Any complex problem can be more easily handled if it is subdivided into
pieces that can each be solved and/or optimized independently
• A concern is a feature or behavior that is specified as part of the
requirements model for the software
• By separating concerns into smaller, and therefore more manageable
pieces, a problem takes less effort and time to solve.
Modularity
• Already Done see Object Oriented Concepts Slides
Information Hiding
module
controlled
interface
"secret"
• algorithm
• data structure
• details of external interface
• resource allocation policy
clients
a specific design decision
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
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
Sizing Modules: Two Views
MODULE
What's
inside??
How big
is it??
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.
– Coupling depends on the interface complexity between modules, the point at which entry or
reference is made to a module, and what data pass across the interface.
– See more in the slides : Cohesion and Coupling
Aspects
• Consider two requirements, A and B. Requirement A
crosscuts requirement B “if a software decomposition
[refinement] has been chosen in which B cannot be satisfied
without taking A into account. [Ros04]
• An aspect is a representation of a cross-cutting concern.
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.
OO Design Concepts
• Already Done see Object Oriented Concepts Slides
Design Model
29
The Design Model
archit ect ure
element s
int erface
element s
component -level
element s
deployment -level
element s
low
high
class diagrams
analysis packages
CRCmodels
collaborat ion diagrams
use-cases - t ext
use-case diagrams
act ivit y diagrams
swim lane diagrams
collaborat ion diagrams dat a f low diagrams
cont rol-f low diagrams
processing narrat ives
dat a f low diagrams
cont rol-f low diagrams
processing narrat ives
st at e diagrams
sequence diagrams
st at e diagrams
sequence diagrams
design class realizat ions
subsyst ems
collaborat ion diagrams
design class realizat ions
subsyst ems
collaborat ion diagrams
ref inement s t o:
deployment diagrams
class diagrams
analysis packages
CRC models
collaborat ion diagrams
component diagrams
design classes
act ivit y diagrams
sequence diagrams
ref inement s t o:
component diagrams
design classes
act ivit y diagrams
sequence diagrams
design class realizat ions
subsyst ems
collaborat ion diagrams
component diagrams
design classes
act ivit y diagrams
sequence diagrams
a na ly sis mode l
de sign mode l
Requirement s:
const raint s
int eroperabilit y
t arget s and
conf igurat ion
t echnical int erf ace
design
Navigat ion design
GUI design
Process Dimension (Progression)
AbstractionDimension
Data/Class
Elements
Interface
Elements
Architectural
Elements
Component-level
Elements
Deployment-level
Elements
Dimensions of the
Design Model
Analysis model
Design model
Low
High
Types of Design Classes
• User interface classes – define all abstractions necessary for human-computer interaction
(usually via metaphors of real-world objects)
• Business domain classes – refined from analysis classes; identify attributes and services
(methods) that are required to implement some element of the business domain
• Process classes – implement business abstractions required to fully manage the business domain
classes
• Persistent classes – represent data stores (e.g., a database) that will persist beyond the execution
of the software
• System classes – implement software management and control functions that enable the system
to operate and communicate within its computing environment and the outside world
Characteristics of a Well-Formed Design Class
• Complete and sufficient
– Contains the complete encapsulation of all attributes and methods that exist for the class
– Contains only those methods that are sufficient to achieve the intent of the class
• Primitiveness
– Each method of a class focuses on accomplishing one service for the class
• High cohesion
– The class has a small, focused set of responsibilities and single-mindedly applies attributes and methods to
implement those responsibilities
• Low coupling
– Collaboration of the class with other classes is kept to an acceptable minimum
– Each class should have limited knowledge of other classes in other subsystems
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” (Chapters 9 and 12)
• Interface elements( Interface Diagram/ Class diagram)
– 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( Component diagram See slide on BBLMS Discussions)
• Deployment elements( Deployment diagram See slide on BBLMS Discussions)
Architectural Elements
• The architectural model [Sha96] is derived from three sources:
– information about the application domain for the software to be built;
– specific requirements model elements such as data flow diagrams or analysis
classes, their relationships and collaborations for the problem at hand, and
– the availability of architectural patterns
Pattern-based Software Design
• Mature engineering disciplines make use of thousands of design patterns for such things as buildings, highways,
electrical circuits, factories, weapon systems, vehicles, and computers
• Design patterns also serve a purpose in software engineering
• Architectural patterns
– Define the overall structure of software
– Indicate the relationships among subsystems and software components
– Define the rules for specifying relationships among software elements
• Design patterns
– Address a specific element of the design such as an aggregation of components or solve some design problem,
relationships among components, or the mechanisms for effecting inter-component communication
– Consist of creational, structural, and behavioral patterns
• Coding patterns
– Describe language-specific patterns that implement an algorithmic or data structure element of a component, a specific
interface protocol, or a mechanism for communication among components
36
From Analysis Model to
Design Model
Data/Class Design
(Class-based model, Behavioral model)
Architectural Design
(Class-based model, Flow-oriented model)
Interface Design
(Scenario-based model, Flow-oriented model
Behavioral model)
Component-level Design
(Class-based model, Flow-oriented model
Behavioral model)
FAQ on Design Engineering
• What : Design, design engineering, steps for design engineering,
design and quality, quality principle, design principle, pattern,
framework, architecture, component, deployment
• Differentiate: refactoring-refinement, architecture-pattern,
analysis-design class,
• Describe: analysis model elements, steps for design
engineering, design model elements, various design classes

More Related Content

What's hot

Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
Oliver Cheng
 
Design process and concepts
Design process and conceptsDesign process and concepts
Design process and concepts
Slideshare
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
Oliver Cheng
 
Object oriented analysis
Object oriented analysisObject oriented analysis
Object oriented analysis
Mahesh Bhalerao
 
Function oriented design
Function oriented designFunction oriented design
Function oriented design
Vidhun T
 

What's hot (20)

Use case Diagram
Use case DiagramUse case Diagram
Use case Diagram
 
Component level design
Component   level designComponent   level design
Component level design
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case Diagram
 
Analysis modeling & scenario based modeling
Analysis modeling &  scenario based modeling Analysis modeling &  scenario based modeling
Analysis modeling & scenario based modeling
 
Design final
Design finalDesign final
Design final
 
Structural modeling and analysis
Structural modeling and analysisStructural modeling and analysis
Structural modeling and analysis
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
 
Seii unit7 component-level-design
Seii unit7 component-level-designSeii unit7 component-level-design
Seii unit7 component-level-design
 
Design process and concepts
Design process and conceptsDesign process and concepts
Design process and concepts
 
Ooad overview
Ooad overviewOoad overview
Ooad overview
 
Software analysis and it's principles
Software analysis and it's principlesSoftware analysis and it's principles
Software analysis and it's principles
 
Modeling and analysis
Modeling and analysisModeling and analysis
Modeling and analysis
 
Pressman ch-11-component-level-design
Pressman ch-11-component-level-designPressman ch-11-component-level-design
Pressman ch-11-component-level-design
 
Object oriented analysis
Object oriented analysisObject oriented analysis
Object oriented analysis
 
Use case diagram
Use case diagramUse case diagram
Use case diagram
 
Function oriented design
Function oriented designFunction oriented design
Function oriented design
 
Design and Implementation in Software Engineering
Design and Implementation in Software EngineeringDesign and Implementation in Software Engineering
Design and Implementation in Software Engineering
 
Use case diagrams
Use case diagramsUse case diagrams
Use case diagrams
 
4 sdlc
4 sdlc4 sdlc
4 sdlc
 
Software Design Concepts
Software Design ConceptsSoftware Design Concepts
Software Design Concepts
 

Viewers also liked (6)

Object modeling
Object modelingObject modeling
Object modeling
 
Unit 8 software quality and matrices
Unit 8 software quality and matricesUnit 8 software quality and matrices
Unit 8 software quality and matrices
 
architectural design
 architectural design architectural design
architectural design
 
Unit 7 performing user interface design
Unit 7 performing user interface designUnit 7 performing user interface design
Unit 7 performing user interface design
 
software development, process model, requirement engineering, srs, structured...
software development, process model, requirement engineering, srs, structured...software development, process model, requirement engineering, srs, structured...
software development, process model, requirement engineering, srs, structured...
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 

Similar to Unit 5 design engineering ssad

Pressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptPressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.ppt
MotherTheresa2
 

Similar to Unit 5 design engineering ssad (20)

Design engineering
Design engineeringDesign engineering
Design engineering
 
Chapter 6 design
Chapter 6 designChapter 6 design
Chapter 6 design
 
Pressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptPressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.ppt
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineering
 
Design engineering
Design engineeringDesign engineering
Design engineering
 
Design engineering
Design engineeringDesign engineering
Design engineering
 
UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPT
 
Slides chapter 9
Slides chapter 9Slides chapter 9
Slides chapter 9
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
rEFUP.pdf
rEFUP.pdfrEFUP.pdf
rEFUP.pdf
 
Software design
Software designSoftware design
Software design
 
Oose unit 4 ppt
Oose unit 4 pptOose unit 4 ppt
Oose unit 4 ppt
 
Software design
Software designSoftware design
Software design
 
OOSE Unit 4 PPT.ppt
OOSE Unit 4 PPT.pptOOSE Unit 4 PPT.ppt
OOSE Unit 4 PPT.ppt
 
Unit iii(part a- design process model)
Unit   iii(part a- design process model)Unit   iii(part a- design process model)
Unit iii(part a- design process model)
 
Chapter 3_Software Design sunorganisedASE_BW_finalised.ppt
Chapter 3_Software Design sunorganisedASE_BW_finalised.pptChapter 3_Software Design sunorganisedASE_BW_finalised.ppt
Chapter 3_Software Design sunorganisedASE_BW_finalised.ppt
 
unit 3 Design 1
unit 3 Design 1unit 3 Design 1
unit 3 Design 1
 
Ch 9-design-engineering
Ch 9-design-engineeringCh 9-design-engineering
Ch 9-design-engineering
 
DESIGN CONCEPTS
DESIGN CONCEPTSDESIGN CONCEPTS
DESIGN CONCEPTS
 

More from Preeti Mishra

More from Preeti Mishra (19)

Effective Ways to Conduct Programming labs
Effective Ways to Conduct Programming labsEffective Ways to Conduct Programming labs
Effective Ways to Conduct Programming labs
 
Object diagram
Object diagramObject diagram
Object diagram
 
Sequence diagrams
Sequence diagramsSequence diagrams
Sequence diagrams
 
State chart diagram
State chart diagramState chart diagram
State chart diagram
 
testing strategies and tactics
 testing strategies and tactics testing strategies and tactics
testing strategies and tactics
 
requirements analysis and design
requirements analysis and designrequirements analysis and design
requirements analysis and design
 
Design process interaction design basics
Design process interaction design basicsDesign process interaction design basics
Design process interaction design basics
 
Design process design rules
Design process  design rulesDesign process  design rules
Design process design rules
 
Design process evaluating interactive_designs
Design process  evaluating interactive_designsDesign process  evaluating interactive_designs
Design process evaluating interactive_designs
 
Foundations understanding users and interactions
Foundations  understanding users and interactionsFoundations  understanding users and interactions
Foundations understanding users and interactions
 
IntrIntroduction
IntrIntroductionIntrIntroduction
IntrIntroduction
 
Analysis
AnalysisAnalysis
Analysis
 
Dynamic modeling
Dynamic modelingDynamic modeling
Dynamic modeling
 
Introduction
IntroductionIntroduction
Introduction
 
Functional modeling
Functional modelingFunctional modeling
Functional modeling
 
eUnit 2 software process model
eUnit 2  software process modeleUnit 2  software process model
eUnit 2 software process model
 
Unit 1 importance ofsoftengg_b.tech iii year
Unit 1  importance ofsoftengg_b.tech iii yearUnit 1  importance ofsoftengg_b.tech iii year
Unit 1 importance ofsoftengg_b.tech iii year
 
Unit 1 introduction tosoftengg_mba tech ii year
Unit 1  introduction tosoftengg_mba tech ii yearUnit 1  introduction tosoftengg_mba tech ii year
Unit 1 introduction tosoftengg_mba tech ii year
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 

Recently uploaded

Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
Tonystark477637
 

Recently uploaded (20)

Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...
 
Vivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design SpainVivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design Spain
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Glass Ceramics: Processing and Properties
Glass Ceramics: Processing and PropertiesGlass Ceramics: Processing and Properties
Glass Ceramics: Processing and Properties
 
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICSUNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
UNIT-IFLUID PROPERTIES & FLOW CHARACTERISTICS
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduits
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
result management system report for college project
result management system report for college projectresult management system report for college project
result management system report for college project
 

Unit 5 design engineering ssad

  • 1. Unit 5 Design Engineering Preeti Mishra Course Instructor
  • 2. Introduction Analysis Model use-cases - text use-case diagrams activity diagrams swim lane diagrams data flow diagrams control-flow diagrams processing narratives f low- or ient ed element s behavior al element s class- based element s scenar io- based element s class diagrams analysis packages CRC models collaboration diagrams state diagrams sequence diagrams Da t a / Cla ss De sign Arc hit e c t ura l De sign Int e rfa c e De sign Com pone nt - Le v e l De sign Design Model
  • 3. Programmer’s Approach to Software Engineering Skip requirements engineering and design phases; start writing code Why this programmer’s approach? Design is a waste of time We need to show something to the customer real quick We are judged by the amount of LOC/month
  • 4. However, ... he longer you postpone coding, the sooner you’ll be finished
  • 5. Software design as a “wicked” problem • There is no definite formulation • There is no stopping rule • Solutions are not simply true or false • Every wicked problem is a symptom of another problem
  • 6. Purpose of Design • Design is where customer requirements, business needs, and technical considerations all come together in the formulation of a product or system • The design model provides detail about the software data structures, architecture, interfaces, and components • The design model can be assessed for quality and be improved before code is generated and tests are conducted – Does the design contain errors, inconsistencies, or omissions? – Are there better design alternatives? – Can the design be implemented within the constraints, schedule, and cost that have been established? • A designer must practice diversification and convergence – The designer selects from design components, component solutions, and knowledge available through catalogs, textbooks, and experience – The designer then chooses the elements from this collection that meet the requirements defined by requirements engineering and analysis modeling – Convergence occurs as alternatives are considered and rejected until one particular configuration of components is chosen • Software design is an iterative process through which requirements are translated into a blueprint for constructing the software – Design begins at a high level of abstraction that can be directly traced back to the data, functional, and behavioral requirements – As design iteration occurs, subsequent refinement leads to design representations at much lower levels of abstraction
  • 7. 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.
  • 8. 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 and – (3) can be implemented in an evolutionary fashion For smaller systems, design can sometimes be developed linearly. • 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 data structures that are appropriate for the classes to be implemented and are drawn from recognizable data patterns. • A design should lead to components that exhibit independent functional characteristics. • A design should lead to interfaces that reduce the complexity of connections between components and with the external environment. • A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis. • A design should be represented using a notation that effectively communicates its meaning.
  • 10. Design Principles • The design process should not suffer from ‘tunnel vision.’ • The design should be traceable to the analysis model. • The design should not reinvent the wheel. • The design should “minimize the intellectual distance” between the software and the problem as it exists in the real world. • The design should exhibit uniformity and integration. • The design should be structured to accommodate change. • The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered. • Design is not coding, coding is not design. • The design should be assessed for quality as it is being created, not after the fact. • The design should be reviewed to minimize conceptual (semantic) errors.
  • 11. Fundamental Concepts • Abstraction—data, procedure, control • Architecture—the overall structure of the software • Patterns—”conveys the essence” of a proven design solution • Separation of concerns—any complex problem can be more easily handled if it is subdivided into pieces • Modularity—compartmentalization of data and function • Hiding—controlled interfaces • Functional independence—single-minded function and low coupling • Refinement—elaboration of detail for all abstractions • Aspects—a mechanism for understanding how global requirements affect design • Refactoring—a reorganization technique that simplifies the design • OO design concepts—(Already done see slide Object Oriented Concepts) • Design Classes—provide design detail that will enable analysis classes to be implemented( already Done)
  • 12. Design Concepts • Abstraction – Procedural abstraction – a sequence of instructions that have a specific and limited function – Data abstraction – a named collection of data that describes a data object • Architecture – The overall structure of the software and the ways in which the structure provides conceptual integrity for a system – Consists of components, connectors, and the relationship between them • Patterns – A design structure that solves a particular design problem within a specific context – It provides a description that enables a designer to determine whether the pattern is applicable, whether the pattern can be reused, and whether the pattern can serve as a guide for developing similar patterns • Modularity – Separately named and addressable components (i.e., modules) that are integrated to satisfy requirements (divide and conquer principle) – Makes software intellectually manageable so as to grasp the control paths, span of reference, number of variables, and overall complexity • Information hiding – The designing of modules so that the algorithms and local data contained within them are inaccessible to other modules – This enforces access constraints to both procedural (i.e., implementation) detail and local data structures
  • 13. Design Concepts • Functional independence – Modules that have a "single-minded" function and an aversion to excessive interaction with other modules – High cohesion – a module performs only a single task – Low coupling – a module has the lowest amount of connection needed with other modules • Stepwise refinement – Development of a program by successively refining levels of procedure detail – Complements abstraction, which enables a designer to specify procedure and data and yet suppress low-level details • Refactoring – A reorganization technique that simplifies the design (or internal code structure) of a component without changing its function or external behavior – Removes redundancy, unused design elements, inefficient or unnecessary algorithms, poorly constructed or inappropriate data structures, or any other design failures • Design classes – Refines the analysis classes by providing design detail that will enable the classes to be implemented – Creates a new set of design classes that implement a software infrastructure to support the business solution
  • 14. Data Abstraction door implemented as a data structure manufacturer model number type swing direction inserts lights type number weight opening mechanism
  • 15. Procedural Abstraction open implemented with a "knowledge" of the object that is associated with enter details of enter algorithm
  • 16. 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. Extra-functional properties. The architectural design description should address how the design architecture 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.
  • 17. 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
  • 18. Separation of Concerns • Any complex problem can be more easily handled if it is subdivided into pieces that can each be solved and/or optimized independently • A concern is a feature or behavior that is specified as part of the requirements model for the software • By separating concerns into smaller, and therefore more manageable pieces, a problem takes less effort and time to solve.
  • 19. Modularity • Already Done see Object Oriented Concepts Slides
  • 20. Information Hiding module controlled interface "secret" • algorithm • data structure • details of external interface • resource allocation policy clients a specific design decision
  • 21. 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
  • 22. 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
  • 23. Sizing Modules: Two Views MODULE What's inside?? How big is it??
  • 24. 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. – Coupling depends on the interface complexity between modules, the point at which entry or reference is made to a module, and what data pass across the interface. – See more in the slides : Cohesion and Coupling
  • 25. Aspects • Consider two requirements, A and B. Requirement A crosscuts requirement B “if a software decomposition [refinement] has been chosen in which B cannot be satisfied without taking A into account. [Ros04] • An aspect is a representation of a cross-cutting concern.
  • 26. 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.
  • 27. OO Design Concepts • Already Done see Object Oriented Concepts Slides
  • 29. 29 The Design Model archit ect ure element s int erface element s component -level element s deployment -level element s low high class diagrams analysis packages CRCmodels collaborat ion diagrams use-cases - t ext use-case diagrams act ivit y diagrams swim lane diagrams collaborat ion diagrams dat a f low diagrams cont rol-f low diagrams processing narrat ives dat a f low diagrams cont rol-f low diagrams processing narrat ives st at e diagrams sequence diagrams st at e diagrams sequence diagrams design class realizat ions subsyst ems collaborat ion diagrams design class realizat ions subsyst ems collaborat ion diagrams ref inement s t o: deployment diagrams class diagrams analysis packages CRC models collaborat ion diagrams component diagrams design classes act ivit y diagrams sequence diagrams ref inement s t o: component diagrams design classes act ivit y diagrams sequence diagrams design class realizat ions subsyst ems collaborat ion diagrams component diagrams design classes act ivit y diagrams sequence diagrams a na ly sis mode l de sign mode l Requirement s: const raint s int eroperabilit y t arget s and conf igurat ion t echnical int erf ace design Navigat ion design GUI design
  • 31. Types of Design Classes • User interface classes – define all abstractions necessary for human-computer interaction (usually via metaphors of real-world objects) • Business domain classes – refined from analysis classes; identify attributes and services (methods) that are required to implement some element of the business domain • Process classes – implement business abstractions required to fully manage the business domain classes • Persistent classes – represent data stores (e.g., a database) that will persist beyond the execution of the software • System classes – implement software management and control functions that enable the system to operate and communicate within its computing environment and the outside world
  • 32. Characteristics of a Well-Formed Design Class • Complete and sufficient – Contains the complete encapsulation of all attributes and methods that exist for the class – Contains only those methods that are sufficient to achieve the intent of the class • Primitiveness – Each method of a class focuses on accomplishing one service for the class • High cohesion – The class has a small, focused set of responsibilities and single-mindedly applies attributes and methods to implement those responsibilities • Low coupling – Collaboration of the class with other classes is kept to an acceptable minimum – Each class should have limited knowledge of other classes in other subsystems
  • 33. 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” (Chapters 9 and 12) • Interface elements( Interface Diagram/ Class diagram) – 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( Component diagram See slide on BBLMS Discussions) • Deployment elements( Deployment diagram See slide on BBLMS Discussions)
  • 34. Architectural Elements • The architectural model [Sha96] is derived from three sources: – information about the application domain for the software to be built; – specific requirements model elements such as data flow diagrams or analysis classes, their relationships and collaborations for the problem at hand, and – the availability of architectural patterns
  • 35. Pattern-based Software Design • Mature engineering disciplines make use of thousands of design patterns for such things as buildings, highways, electrical circuits, factories, weapon systems, vehicles, and computers • Design patterns also serve a purpose in software engineering • Architectural patterns – Define the overall structure of software – Indicate the relationships among subsystems and software components – Define the rules for specifying relationships among software elements • Design patterns – Address a specific element of the design such as an aggregation of components or solve some design problem, relationships among components, or the mechanisms for effecting inter-component communication – Consist of creational, structural, and behavioral patterns • Coding patterns – Describe language-specific patterns that implement an algorithmic or data structure element of a component, a specific interface protocol, or a mechanism for communication among components
  • 36. 36 From Analysis Model to Design Model Data/Class Design (Class-based model, Behavioral model) Architectural Design (Class-based model, Flow-oriented model) Interface Design (Scenario-based model, Flow-oriented model Behavioral model) Component-level Design (Class-based model, Flow-oriented model Behavioral model)
  • 37. FAQ on Design Engineering • What : Design, design engineering, steps for design engineering, design and quality, quality principle, design principle, pattern, framework, architecture, component, deployment • Differentiate: refactoring-refinement, architecture-pattern, analysis-design class, • Describe: analysis model elements, steps for design engineering, design model elements, various design classes