0% found this document useful (0 votes)
29 views23 pages

Oop in Java

The document discusses software design and its importance. It covers topics such as what software design is, abstraction, modeling, and different types of software design. It also places software design in the software development life cycle and surveys common software engineering design methods.

Uploaded by

fk447481
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views23 pages

Oop in Java

The document discusses software design and its importance. It covers topics such as what software design is, abstraction, modeling, and different types of software design. It also places software design in the software development life cycle and surveys common software engineering design methods.

Uploaded by

fk447481
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 23

A Discipline of Software

Design

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


1
Objectives

 To explain what design is and how various


types of design deal with different aspects of a
product
 To present design as problem solving and
outline the roles of abstraction and modeling
in design
 To place design in the software life cycle
 To survey software engineering design
methods

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


2
Topics

 Software products and software design


 Abstraction and modeling
 Varieties of design
 Software design in the life cycle
 Software engineering design methods

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


3
Importance of Software Design

 We live in a designed world.


 Design is economically important and effects
our quality of life.
 Software is becoming ubiquitous.
 The quality of software design has important
consequences that software designers
should be aware of and take seriously.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


4
Software Products

AA software
software product
product isis an
an entity
entity
comprised
comprised of of one
one or or more
more programs,
programs, data,
data,
and
and supporting
supporting materials
materials andand services
services that
that
satisfies
satisfies client
client needs
needs andand desires
desires either
either as
as
an
an independent
independent artifact
artifact or
or as
as essential
essential
ingredient
ingredient in in some
some other
other artifact.
artifact.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


5
Software Design Defined

Software designers do what designers in


other disciplines do, except they do it for
software products.

Software
Software design
design isis the
the activity
activity of
of
specifying
specifying the
the mature
mature and
and composition
composition ofof
software
software products
products that
that satisfy
satisfy client
client needs
needs
and
and desire,
desire, subject
subject to
to constraints.
constraints.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


6
Design as Problem Solving

 An especially fruitful way to think about


design is as problem solving.
 Advantages
• Suggests partitioning information between
problem and solution
• Emphasizes that there may be more than one
good solution (design)
• Suggests techniques such as changing the
problem, trial and error, brainstorming, etc.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


7
Abstraction

Abstraction is an important problem-solving


technique, especially in software design.

Abstraction
Abstraction isis suppressing
suppressing or or ignoring
ignoring
some
some properties
properties ofof objects,
objects, events,
events, or
or
situations
situations in
in favor
favor of
of others.
others.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


8
Importance of Abstraction

 Problem simplification
• Abstracting allows us to focus on the most
important aspects of a problem in (partially)
solving it.
 Structuring problem solving
• Top-down strategy: Solve an abstract version of
the problem, then add details (refinement)
• Bottom-up strategy: Solve parts of a problem and
connect them for a complete solution

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


9
Modeling

A model represents a target by having model parts


corresponding to target parts, with relationships
between model parts corresponding to relationships
between target parts.

Target Model

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


10
Modeling in Design

 Modeling is used for the following purposes:


• Problem understanding
• Design creation
• Design investigation
• Documentation
 Modeling work because models abstract
details of the target.
 Models can fail if important and relevant
details are left out.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


11
Static and Dynamic Models

AA static
static model
model represents
represents aspects
aspects of
of
programs
programs that
that do
do not
not change
change during
during program
program
execution.
execution.

AA dynamic
dynamic model
model represents
represents what
what happens
happens
during
during program
program execution.
execution.

 Static model examples include class and


object models.
 Dynamic model examples include state
diagrams and sequence diagrams.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
12
Product vs. Engineering Design
 Product designers are concerned with styling
and aesthetics, function and usability,
manufacturability and manageability.
• Industrial designers, (building) architects, interior
designers, graphic designers, etc.
 Engineering designers are concerned with
technical mechanisms and workings.
• Structural, mechanical, chemical, and electrical
engineers
 Design teams often include both product and
engineering designers.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


13
Software Product Design

Software
Software product
product design
design isis the
the
activity
activity of
of specifying
specifying software
software product
product
features,
features, capabilities,
capabilities, and
and interfaces
interfaces toto
satisfy
satisfy client
client needs
needs and
and desires.
desires.

Requires skills in user interface and interaction


design, communications, industrial design, and
marketing

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


14
Software Engineering Design

Software
Software engineering
engineering design
design isis the
the activity
activity of
of
specifying
specifying programs
programs and
and sub-systems,
sub-systems, and and their
their
constituent
constituent parts
parts and
and workings,
workings, toto meet
meet software
software
product
product specifications.
specifications.

Requires skills in programming, algorithms,


data structures, software design principles,
practices, processes, techniques, architectures,
and patterns

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


15
Waterfall Life Cycle Model

Software Product Life Cycle

The waterfall model


Requirements
Specification
captures the logical,
but not the temporal,
Design
relationships
Implementation
between software
development
Testing
activities.
Maintenance

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


16
Design Across the Life Cycle
Software Product Life Cycle

Requirements
Product Design
Specification

Design
Engineering Design

Implementation

Testing

Product Redesign and


Maintenance
Engineering Redesign

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


17
“What” Versus “How”

 Traditional way to make the distinction


between requirements and design activities
 Not adequate because
• Many “what” specifications turn out to be design
decisions
• Many “how” specifications turn out to be client or
customer needs or desires
 Distinguish requirements from design based
on problem solving: requirements activity
formulates a problem solved in design

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


18
Design Problems and Solutions
Software Design
Problem: Needs,
Desires, Constraints

Design Features
and Capabilities
Solution: Features
Product and Capabilities
Design
Solution:
Design Interactions
Interactions

Solution: SRS

Create High-Level
Design Solution: High-
Level Design
Engineering
Design Create Low-Level Solution: Low-
Design Level Design

Solution: Design
Document
Write Code

Solution: Code

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


19
Software Design Method

AA software
software design
design method
method isis an
an orderly
orderly
procedure
procedure for
for generating
generating aa precise
precise and
and
complete
complete software
software design
design solution
solution that
that
meets
meets clients
clients needs
needs and
and constraints.
constraints.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


20
Design Method Components

 Design Process—A collection of related tasks


that transforms a set of inputs into a set of
outputs
 Design Notations—A symbolic representational
system
 Design Heuristics—Rules providing guidance,
but no guarantee, for achieving some end
 Design methods also use design principles
stating characteristics of design that make
them better or worse.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
21
Design Method Timeline

1971 Niklaus Wirth introduces stepwise


refinement.
1974 Stevens, Myers, Constantine introduce
structured design.
Late 1970s to early 1980s Structured analysis
and design methods are dominant.
Late 1980s Object-oriented analysis and design
methods rise to prominence.
1995 UML 0.8 is released.
2004 UML 2.0 is released.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


22
Summary
 Software design is important.
 Software design is best thought of as problem solving.
 Abstraction is a fundamental design technique.
 Modeling (which relies on abstraction) is a basic
design tool.
 Software design comprises both product and
engineering design.
 Product design occurs mainly in the requirements
specification phase; engineering design mainly in the
design and implementation phases.
 OO analysis and design methods are now dominant.

© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


23

You might also like