SlideShare a Scribd company logo
1 of 31
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

More Related Content

What's hot

Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
Er. Nancy
 

What's hot (20)

SOFTWARE QUALITY ASSURANCE.ppt
SOFTWARE QUALITY ASSURANCE.pptSOFTWARE QUALITY ASSURANCE.ppt
SOFTWARE QUALITY ASSURANCE.ppt
 
Unit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptUnit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.ppt
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Software design
Software designSoftware design
Software design
 
Software System Engineering - Chapter 1
Software System Engineering - Chapter 1Software System Engineering - Chapter 1
Software System Engineering - Chapter 1
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
 
Software project management 3
Software project management 3Software project management 3
Software project management 3
 
Design and Implementation in Software Engineering
Design and Implementation in Software EngineeringDesign and Implementation in Software Engineering
Design and Implementation in Software Engineering
 
Functional and non functional
Functional and non functionalFunctional and non functional
Functional and non functional
 
Lecture 1 introduction to software engineering 1
Lecture 1   introduction to software engineering 1Lecture 1   introduction to software engineering 1
Lecture 1 introduction to software engineering 1
 
Software requirement and specification
Software requirement and specificationSoftware requirement and specification
Software requirement and specification
 
Software project planning
Software project planningSoftware project planning
Software project planning
 
Planning the development process
Planning the development processPlanning the development process
Planning the development process
 
Lect2 conventional software management
Lect2 conventional software managementLect2 conventional software management
Lect2 conventional software management
 
Chapter 1 2 - some size factors
Chapter 1   2 - some size factorsChapter 1   2 - some size factors
Chapter 1 2 - some size factors
 
software project management Artifact set(spm)
software project management Artifact set(spm)software project management Artifact set(spm)
software project management Artifact set(spm)
 
Software process Models
Software process ModelsSoftware process Models
Software process Models
 
waterfall model
waterfall modelwaterfall model
waterfall model
 
Agile Development | Agile Process Models
Agile Development | Agile Process ModelsAgile Development | Agile Process Models
Agile Development | Agile Process Models
 

Similar to Software design and Software engineering.pptx

Similar to Software design and Software engineering.pptx (20)

Chapter 6 design
Chapter 6 designChapter 6 design
Chapter 6 design
 
Ch 9-design-engineering
Ch 9-design-engineeringCh 9-design-engineering
Ch 9-design-engineering
 
chapter 1.pdf
chapter 1.pdfchapter 1.pdf
chapter 1.pdf
 
Architecture Design
Architecture DesignArchitecture Design
Architecture Design
 
Design Engineering and Design concepts
Design Engineering and Design conceptsDesign Engineering and Design concepts
Design Engineering and Design concepts
 
B19CA4020_SE_Unit3.pptx
B19CA4020_SE_Unit3.pptxB19CA4020_SE_Unit3.pptx
B19CA4020_SE_Unit3.pptx
 
unit 3 Design 1
unit 3 Design 1unit 3 Design 1
unit 3 Design 1
 
Chapter 1 - Software Design - Introduction.pptx
Chapter 1 - Software Design - Introduction.pptxChapter 1 - Software Design - Introduction.pptx
Chapter 1 - Software Design - Introduction.pptx
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Design concepts
Design conceptsDesign concepts
Design concepts
 
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
 
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
 
Unit 5 design engineering ssad
Unit 5 design engineering ssadUnit 5 design engineering ssad
Unit 5 design engineering ssad
 
Software Design Concepts
Software Design ConceptsSoftware Design Concepts
Software Design Concepts
 
Design engineering
Design engineeringDesign engineering
Design engineering
 
Bai giang-se-24feb14
Bai giang-se-24feb14Bai giang-se-24feb14
Bai giang-se-24feb14
 
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
 
Oose unit 4 ppt
Oose unit 4 pptOose unit 4 ppt
Oose unit 4 ppt
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 

More from DrTThendralCompSci (13)

Loader and linker.pptx
Loader and linker.pptxLoader and linker.pptx
Loader and linker.pptx
 
The Application Layer.ppt
The Application Layer.pptThe Application Layer.ppt
The Application Layer.ppt
 
Transport Layer.pptx
Transport Layer.pptxTransport Layer.pptx
Transport Layer.pptx
 
Software Configuration Management.ppt
Software Configuration Management.pptSoftware Configuration Management.ppt
Software Configuration Management.ppt
 
Wireless LANs PPT.ppt
Wireless LANs PPT.pptWireless LANs PPT.ppt
Wireless LANs PPT.ppt
 
NETWORK LAYER.ppt
NETWORK LAYER.pptNETWORK LAYER.ppt
NETWORK LAYER.ppt
 
Bluetooth.ppt
Bluetooth.pptBluetooth.ppt
Bluetooth.ppt
 
MEDIUM-ACCESS CONTROL SUB LAYER.ppt
MEDIUM-ACCESS CONTROL SUB LAYER.pptMEDIUM-ACCESS CONTROL SUB LAYER.ppt
MEDIUM-ACCESS CONTROL SUB LAYER.ppt
 
Ethernet.ppt
Ethernet.pptEthernet.ppt
Ethernet.ppt
 
DATA-LINK LAYER.ppt
DATA-LINK LAYER.pptDATA-LINK LAYER.ppt
DATA-LINK LAYER.ppt
 
UNIT I.ppt
UNIT I.pptUNIT I.ppt
UNIT I.ppt
 
PHYSICAL LAYER.ppt
PHYSICAL LAYER.pptPHYSICAL LAYER.ppt
PHYSICAL LAYER.ppt
 
COMPUTER NETWORK
COMPUTER NETWORKCOMPUTER NETWORK
COMPUTER NETWORK
 

Recently uploaded

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdf
Chris Hunter
 

Recently uploaded (20)

Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdf
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 

Software design and Software engineering.pptx

  • 1. 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
  • 2. • 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
  • 3. 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
  • 4. • 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
  • 5. • 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
  • 6. Translating the analysis model 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 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
  • 9. Three characteristics of a good design: Prepared by Dr.T.Thendral 15.07.23
  • 10. • 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
  • 11. • 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
  • 12. 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
  • 13. • 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
  • 14. Example Prepared by Dr.T.Thendral 15.07.23 DESIGN PRINCIPLES
  • 15. 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
  • 16. • 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
  • 17. • 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
  • 18. • 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
  • 19. • 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
  • 20. • 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
  • 22. 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
  • 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
  • 24. 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
  • 25. • 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
  • 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 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
  • 28. 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
  • 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 • 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