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
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
• Every refinement step implies some design
decisions.
• It is important that . . .
• the programmer be aware of the underlying
criteria (for design decisions) and of the
existence of alternative solutions . . .
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
Objective
• Software Architecture
• What Is Architecture?
• Why Is Architecture Important?
Prepared by Dr.T.Thendral 15.07.23
Software Architecture
• Software architecture the overall structure of
the software
• The ways in which that structure provides
conceptual integrity for a system
• First program was divided into modules,
software systems have had architectures,
and programmer
• Effective software architecture and its explicit
representation and design have become
dominant themes in software engineering
Prepared by Dr.T.Thendral 15.07.23
What Is Architecture?
• The architecture of a building, many different
attributes come to mind
• EXAMPLE:
• It is the manner in which the various
components of the building are integrated to
form a cohesive whole
• It is the beautiful feel of the structure—the
visual impact of the building—and the way
textures, colors, and materials are combined
to create the external facade and the internal
“living environment
Prepared by Dr.T.Thendral 15.07.23
• The architecture is not the operational
software.
• It is a representation that enables a software
engineer to
• (1) analyze the effectiveness of the design in
meeting its stated requirements
• (2) consider architectural alternatives at a
stage when making design changes is still
relatively easy,
• (3) reducing the risks associated with the
construction of the software
Prepared by Dr.T.Thendral 15.07.23
Why Is Architecture Important?
• Three key reasons that software architecture is
important:
• Representations of software architecture are an
enabler for communication between all parties
(stakeholders) interested in the development of a
computer-based system
• The architecture highlights early design decisions -
impact on all software engineering work that follows -
the ultimate success of the system as an operational
entity
• Architecture “constitutes a relatively small,
intellectually graspable model of how the system is
structured and how its components work together”
Prepared by Dr.T.Thendral 15.07.23
Summary of Unit II
• 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.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.
    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
  • 27.
    • Every refinementstep implies some design decisions. • It is important that . . . • the programmer be aware of the underlying criteria (for design decisions) and of the existence of alternative solutions . . . 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.
    Objective • Software Architecture •What Is Architecture? • Why Is Architecture Important? Prepared by Dr.T.Thendral 15.07.23
  • 32.
    Software Architecture • Softwarearchitecture the overall structure of the software • The ways in which that structure provides conceptual integrity for a system • First program was divided into modules, software systems have had architectures, and programmer • Effective software architecture and its explicit representation and design have become dominant themes in software engineering Prepared by Dr.T.Thendral 15.07.23
  • 33.
    What Is Architecture? •The architecture of a building, many different attributes come to mind • EXAMPLE: • It is the manner in which the various components of the building are integrated to form a cohesive whole • It is the beautiful feel of the structure—the visual impact of the building—and the way textures, colors, and materials are combined to create the external facade and the internal “living environment Prepared by Dr.T.Thendral 15.07.23
  • 34.
    • The architectureis not the operational software. • It is a representation that enables a software engineer to • (1) analyze the effectiveness of the design in meeting its stated requirements • (2) consider architectural alternatives at a stage when making design changes is still relatively easy, • (3) reducing the risks associated with the construction of the software Prepared by Dr.T.Thendral 15.07.23
  • 35.
    Why Is ArchitectureImportant? • Three key reasons that software architecture is important: • Representations of software architecture are an enabler for communication between all parties (stakeholders) interested in the development of a computer-based system • The architecture highlights early design decisions - impact on all software engineering work that follows - the ultimate success of the system as an operational entity • Architecture “constitutes a relatively small, intellectually graspable model of how the system is structured and how its components work together” Prepared by Dr.T.Thendral 15.07.23
  • 36.
    Summary of UnitII • 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