SOFTWARE DESIGN
Prepared by Dr.T.Thendral 15.07.23
Prepared by
Dr.T.Thendral
Assistant Professor
Department of Computer Science
Sri Ramaskrishna College of Arts & Science for Women
Coimbatore
• Software design and Software engineering
• The Design process
• Design principles
• Design concepts
• Effective modular design
• Software Architecture
Prepared by Dr.T.Thendral 15.07.23
SOFTWARE DESIGN AND SOFTWARE
ENGINEERING
• Software design is the first of
three technical activities—
design, code generation, and
test—that are required to
build and verify the software
• The design task produces a
data design, an architectural
design, an interface design,
and a component design
• The data design transforms
the information domain model
created during analysis into
the data structures that will be
required to implement the
software
Prepared by Dr.T.Thendral 15.07.23
• The architectural design defines the relationship
between major structural elements of the software,
the “design patterns”
• The interface design describes how the software
communicates within itself, with systems that
interoperate with it and with humans who use it
• An interface implies a flow of information (e.g., data
and/or control) and a specific type of behavior
• The component-level design transforms structural
elements of the software architecture into a
procedural description of software components
Prepared by Dr.T.Thendral 15.07.23
• The importance of software design can be
stated with a single word—quality
• Design is the place where quality is fostered in
software engineering
Prepared by Dr.T.Thendral 15.07.23
Translating the analysis model into
a software design
Prepared by Dr.T.Thendral 15.07.23
THE DESIGN PROCESS
• Software design is an iterative process
through which requirements are translated
into a “blueprint” for constructing the
software
Prepared by Dr.T.Thendral 15.07.23
Design and Software Quality
• Throughout the design process, the quality of
the evolving design is assessed with a series of
formal technical reviews or design
walkthroughs
Prepared by Dr.T.Thendral 15.07.23
Three characteristics of a good design:
Prepared by Dr.T.Thendral 15.07.23
• A design should exhibit an architectural
structure that
• (1) has been created using recognizable design
patterns
• (2) is composed of components that exhibit
good design characteristics, and
• (3) can be implemented in an evolutionary
fashion, thereby facilitating implementation
and testing
Prepared by Dr.T.Thendral 15.07.23
• 2. A design should be modular
• 3. A design should contain distinct representations of data,
architecture, interfaces, and components (modules).
• 4. A design should lead to data structures that are
appropriate for the objects
• 5. A design should lead to components that exhibit
independent functional characteristics
• 6. A design should lead to interfaces that reduce the
complexity of connections between modules and with the
external environment
• 7. A design should be derived using a repeatable method
that is driven by information obtained during software
requirements analysis
Prepared by Dr.T.Thendral 15.07.23
The Evolution of Software Design
• Early design work concentrated on criteria for the
development of modular programs and methods
for refining software structures in a top-down
manner
• Procedural aspects of design definition evolved
into a philosophy called structured programming
• Later work proposed methods for the translation
of data flow or data structure into a design
definition
Prepared by Dr.T.Thendral 15.07.23
• Methods have a number of common
characteristics:
• (1) a mechanism for the translation of analysis
model into a design representation
• (2) a notation for representing functional
components and their interfaces
• (3) heuristics for refinement and partitioning, and
• (4) guidelines for quality assessment
Prepared by Dr.T.Thendral 15.07.23
Example
Prepared by Dr.T.Thendral 15.07.23
DESIGN PRINCIPLES
DESIGN PRINCIPLES
• Software design is both a process and a model
• Design should be Creative skill, past
experience, a sense of what makes “good”
software, and an overall commitment to
quality are critical success factors for a
competent design
• The design model is the equivalent of an
architect’s plans for a house
Prepared by Dr.T.Thendral 15.07.23
• e.g., a three-dimensional rendering of the
house
• slowly refines the thing to provide guidance
for constructing each detail (e.g., the
plumbing layout)
Prepared by Dr.T.Thendral 15.07.23
• The design process should not suffer from
“tunnel vision.”- onsider alternative
approaches
• The design should be traceable to the
analysis model- Because a single element of
the design model often traces to multiple
requirements
• Requirements have been satisfied by the
design model!
Prepared by Dr.T.Thendral 15.07.23
• The design should not reinvent the wheel-
Systems are constructed using a set of design
patterns
• These patterns should always be chosen as an
alternative to reinvention
• Time is short and resources are limited
• The design should “minimize the intellectual
distance” between the software and the
problem as it exists in the real world.
• structure of the software design should mimic
the structure of the problem domain
Prepared by Dr.T.Thendral 15.07.23
• The design should exhibit uniformity and
integration-
• A design is uniform if it appears that one
person developed the entire thing.
• Rules of style and format should be defined
for a design team before design work begins
• design is integrated if care is taken in defining
interfaces between design components
Prepared by Dr.T.Thendral 15.07.23
• The design should be structured to accommodate
change
• The design should be structured to degrade
gently, even when a’berrant 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
Prepared by Dr.T.Thendral 15.07.23
Prepared by Dr.T.Thendral 15.07.23
DESIGN CONCEPTS
• Each helps the software engineer to answer
the following questions:
• What criteria can be used to partition
software into individual components?
• How is function or data structure detail
separated from a conceptual representation of
the software?
• What uniform criteria define the technical
quality of a software design?
Prepared by Dr.T.Thendral 15.07.23
• The beginning of wisdom for a [software
engineer] is to recognize the difference
between getting a program to work, and
getting it right“
• Fundamental software design concepts
provide the necessary framework for "getting
it right"
Prepared by Dr.T.Thendral 15.07.23
Abstraction
• Abstraction:
• When we consider a modular solution to any problem,
many levels of abstraction can be posed
• Procedural Abstraction
• An example of a procedural abstraction would be the word
open for a door
• Data abstraction
• A data abstraction is a named collection of data that
describes a data object
• In the context of the procedural abstraction open, we can
define a data abstraction called door
• data object, the data abstraction for door (e.g., door type,
swing direction, opening mechanism, weight, dimensions)
Prepared by Dr.T.Thendral 15.07.23
• Control abstraction is the third form of
abstraction used in software design
• control abstraction implies a program control
mechanism without specifying internal details
Prepared by Dr.T.Thendral 15.07.23
EFFECTIVE MODULAR DESIGN
• The concept of functional independence is a
direct outgrowth of modularity and the concepts
of abstraction and information hiding
• Independence is measured using two qualitative
criteria: cohesion and coupling.
• Cohesion is a measure of the relative functional
strength of a module.
• Coupling is a measure of the relative
interdependence among modules
Prepared by Dr.T.Thendral 15.07.23
Refinement
• Stepwise refinement is a top-down design
strategy originally proposed by Niklaus Wirth
• In each step (of the refinement), one or several
instructions of the given program are
decomposed into more detailed instructions
• Refinement is actually a process of elaboration
• Abstraction enables a designer to specify
procedure and data and yet suppress low-level
details
• Refinement helps the designer to reveal low-level
details as design progresses
Prepared by Dr.T.Thendral 15.07.23
Modularity
• software is divided into separately named and
addressable components, often called
modules, that are integrated to satisfy
problem requirements
Prepared by Dr.T.Thendral 15.07.23
Prepared by Dr.T.Thendral 15.07.23
• Modular decomposability - reduce the complexity of the
overall problem, thereby achieving an effective modular
solution
• Modular composability-If a design method enables existing
(reusable) design components to be assembled into a new
system
• Modular understandability-If a module can be understood
it will be easier to build and easier to change
• Modular continuity-If small changes to the system
requirements result in changes to individual modules
• Modular protection-If an aberrant condition occurs within
a module and its effects are constrained within that module
side effects will be minimized.
Prepared by Dr.T.Thendral 15.07.23
Software Architecture
• Software architecture the overall structure of
the software and the ways in which that
structure provides conceptual integrity for a
system
• One goal of software design is to derive an
architectural rendering of a system
• A set of architectural patterns enable a
software engineer to reuse designlevel
concepts
Prepared by Dr.T.Thendral 15.07.23

Software design and Software engineering.pptx

  • 1.
    SOFTWARE DESIGN Prepared byDr.T.Thendral 15.07.23 Prepared by Dr.T.Thendral Assistant Professor Department of Computer Science Sri Ramaskrishna College of Arts & Science for Women Coimbatore
  • 2.
    • Software designand Software engineering • The Design process • Design principles • Design concepts • Effective modular design • Software Architecture Prepared by Dr.T.Thendral 15.07.23
  • 3.
    SOFTWARE DESIGN ANDSOFTWARE ENGINEERING • Software design is the first of three technical activities— design, code generation, and test—that are required to build and verify the software • The design task produces a data design, an architectural design, an interface design, and a component design • The data design transforms the information domain model created during analysis into the data structures that will be required to implement the software Prepared by Dr.T.Thendral 15.07.23
  • 4.
    • The architecturaldesign defines the relationship between major structural elements of the software, the “design patterns” • The interface design describes how the software communicates within itself, with systems that interoperate with it and with humans who use it • An interface implies a flow of information (e.g., data and/or control) and a specific type of behavior • The component-level design transforms structural elements of the software architecture into a procedural description of software components Prepared by Dr.T.Thendral 15.07.23
  • 5.
    • The importanceof software design can be stated with a single word—quality • Design is the place where quality is fostered in software engineering Prepared by Dr.T.Thendral 15.07.23
  • 6.
    Translating the analysismodel into a software design Prepared by Dr.T.Thendral 15.07.23
  • 7.
    THE DESIGN PROCESS •Software design is an iterative process through which requirements are translated into a “blueprint” for constructing the software Prepared by Dr.T.Thendral 15.07.23
  • 8.
    Design and SoftwareQuality • Throughout the design process, the quality of the evolving design is assessed with a series of formal technical reviews or design walkthroughs Prepared by Dr.T.Thendral 15.07.23
  • 9.
    Three characteristics ofa good design: Prepared by Dr.T.Thendral 15.07.23
  • 10.
    • A designshould exhibit an architectural structure that • (1) has been created using recognizable design patterns • (2) is composed of components that exhibit good design characteristics, and • (3) can be implemented in an evolutionary fashion, thereby facilitating implementation and testing Prepared by Dr.T.Thendral 15.07.23
  • 11.
    • 2. Adesign should be modular • 3. A design should contain distinct representations of data, architecture, interfaces, and components (modules). • 4. A design should lead to data structures that are appropriate for the objects • 5. A design should lead to components that exhibit independent functional characteristics • 6. A design should lead to interfaces that reduce the complexity of connections between modules and with the external environment • 7. A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis Prepared by Dr.T.Thendral 15.07.23
  • 12.
    The Evolution ofSoftware Design • Early design work concentrated on criteria for the development of modular programs and methods for refining software structures in a top-down manner • Procedural aspects of design definition evolved into a philosophy called structured programming • Later work proposed methods for the translation of data flow or data structure into a design definition Prepared by Dr.T.Thendral 15.07.23
  • 13.
    • Methods havea number of common characteristics: • (1) a mechanism for the translation of analysis model into a design representation • (2) a notation for representing functional components and their interfaces • (3) heuristics for refinement and partitioning, and • (4) guidelines for quality assessment Prepared by Dr.T.Thendral 15.07.23
  • 14.
    Example Prepared by Dr.T.Thendral15.07.23 DESIGN PRINCIPLES
  • 15.
    DESIGN PRINCIPLES • Softwaredesign is both a process and a model • Design should be Creative skill, past experience, a sense of what makes “good” software, and an overall commitment to quality are critical success factors for a competent design • The design model is the equivalent of an architect’s plans for a house Prepared by Dr.T.Thendral 15.07.23
  • 16.
    • e.g., athree-dimensional rendering of the house • slowly refines the thing to provide guidance for constructing each detail (e.g., the plumbing layout) Prepared by Dr.T.Thendral 15.07.23
  • 17.
    • The designprocess should not suffer from “tunnel vision.”- onsider alternative approaches • The design should be traceable to the analysis model- Because a single element of the design model often traces to multiple requirements • Requirements have been satisfied by the design model! Prepared by Dr.T.Thendral 15.07.23
  • 18.
    • The designshould not reinvent the wheel- Systems are constructed using a set of design patterns • These patterns should always be chosen as an alternative to reinvention • Time is short and resources are limited • The design should “minimize the intellectual distance” between the software and the problem as it exists in the real world. • structure of the software design should mimic the structure of the problem domain Prepared by Dr.T.Thendral 15.07.23
  • 19.
    • The designshould exhibit uniformity and integration- • A design is uniform if it appears that one person developed the entire thing. • Rules of style and format should be defined for a design team before design work begins • design is integrated if care is taken in defining interfaces between design components Prepared by Dr.T.Thendral 15.07.23
  • 20.
    • The designshould be structured to accommodate change • The design should be structured to degrade gently, even when a’berrant 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 Prepared by Dr.T.Thendral 15.07.23
  • 21.
  • 22.
    DESIGN CONCEPTS • Eachhelps the software engineer to answer the following questions: • What criteria can be used to partition software into individual components? • How is function or data structure detail separated from a conceptual representation of the software? • What uniform criteria define the technical quality of a software design? Prepared by Dr.T.Thendral 15.07.23
  • 23.
    • The beginningof wisdom for a [software engineer] is to recognize the difference between getting a program to work, and getting it right“ • Fundamental software design concepts provide the necessary framework for "getting it right" Prepared by Dr.T.Thendral 15.07.23
  • 24.
    Abstraction • Abstraction: • Whenwe consider a modular solution to any problem, many levels of abstraction can be posed • Procedural Abstraction • An example of a procedural abstraction would be the word open for a door • Data abstraction • A data abstraction is a named collection of data that describes a data object • In the context of the procedural abstraction open, we can define a data abstraction called door • data object, the data abstraction for door (e.g., door type, swing direction, opening mechanism, weight, dimensions) Prepared by Dr.T.Thendral 15.07.23
  • 25.
    • Control abstractionis the third form of abstraction used in software design • control abstraction implies a program control mechanism without specifying internal details Prepared by Dr.T.Thendral 15.07.23
  • 26.
    EFFECTIVE MODULAR DESIGN •The concept of functional independence is a direct outgrowth of modularity and the concepts of abstraction and information hiding • Independence is measured using two qualitative criteria: cohesion and coupling. • Cohesion is a measure of the relative functional strength of a module. • Coupling is a measure of the relative interdependence among modules Prepared by Dr.T.Thendral 15.07.23
  • 27.
    Refinement • Stepwise refinementis a top-down design strategy originally proposed by Niklaus Wirth • In each step (of the refinement), one or several instructions of the given program are decomposed into more detailed instructions • Refinement is actually a process of elaboration • Abstraction enables a designer to specify procedure and data and yet suppress low-level details • Refinement helps the designer to reveal low-level details as design progresses Prepared by Dr.T.Thendral 15.07.23
  • 28.
    Modularity • software isdivided into separately named and addressable components, often called modules, that are integrated to satisfy problem requirements Prepared by Dr.T.Thendral 15.07.23
  • 29.
  • 30.
    • Modular decomposability- reduce the complexity of the overall problem, thereby achieving an effective modular solution • Modular composability-If a design method enables existing (reusable) design components to be assembled into a new system • Modular understandability-If a module can be understood it will be easier to build and easier to change • Modular continuity-If small changes to the system requirements result in changes to individual modules • Modular protection-If an aberrant condition occurs within a module and its effects are constrained within that module side effects will be minimized. Prepared by Dr.T.Thendral 15.07.23
  • 31.
    Software Architecture • Softwarearchitecture the overall structure of the software and the ways in which that structure provides conceptual integrity for a system • One goal of software design is to derive an architectural rendering of a system • A set of architectural patterns enable a software engineer to reuse designlevel concepts Prepared by Dr.T.Thendral 15.07.23