SlideShare a Scribd company logo
Components of a design model :

   Data Design
    ◦ Transforms information domain model into data structures
      required to implement software
   Architectural Design
    ◦ Defines relationship among the major structural elements of a
      software
   Interface Design
    ◦ Describes how the software communicates with systems that
      interact with it and with humans.
   Procedural Design
    ◦ Transforms structural elements of the architecture into a
      procedural description of software components
    Software Design -- An iterative process transforming
     requirements into a “blueprint” for constructing the software.
Goals of the design process:
3.   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.
4.   The design must be a readable, understandable guide for
     those who generate code and for those who test and
     subsequently support the software.
5.   The design should address the data, functional and
     behavioral domains from an implementation perspective
   Wasserman: “Abstraction permits one to
    concentrate on a problem at some level of
    abstraction without regard to low level detail.
   At the highest level of abstraction a solution
    is stated in broad terms using the language
    of the problem environment.
   At lower level, a procedural orientation is
    taken.
   At the lowest level of abstraction the solution
    is stated in a manner that can be directly
    implemented.
Types of abstraction :
1. Procedural Abstraction :
A named sequence of instructions that has a specific &
limited function
Eg: Word OPEN for a door

2. Data Abstraction :
A named collection of data that describes a data object.
Data abstraction for door would be a set of attributes
that describes the door
(e.g. door type, swing direction, weight, dimension)
2. Refinement

 Process of elaboration.
 Start with the statement of function defined at the

  abstract level, decompose the statement of
  function in a stepwise fashion until programming
  language statements are reached.
 In this concept, software is divided into
  separately named and addressable
  components called modules
 Follows “divide and conquer” concept, a
  complex problem is broken down into several
  manageable pieces
 Let p1 and p2 be two problems.
 Let E1 and E2 be the effort required to solve
  them --
If C(p1)>C(p2)
Hence E(p1)>E(p2)
Now--
Complexity of a problem that combines p1 and
 p2 is greater than complexity when each
 problem is consider
C(p1+p2) > C(p1)+C(p2),
Hence
E(p1+p2) > E(p1)+E(p2)
It is easier to solve a complex problem when
you break it into manageable pieces
5 criteria to evaluate a design method with respect to
   its modularity-----
Modular understandability
module should be understandable as a standalone unit
   (no need to refer to other modules)
Modular continuity
If small changes to the system requirements result in
changes to individual modules, rather than system
   wide
changes, the impact of side effects will be minimized
Modular protection
 If an error occurs within a module then those errors
   are localized and not spread to other modules.
Modular Composability
Design method should enable reuse of existing
components.
Modular Decomposability
Complexity of the overall problem can be
reduced if the design method provides a
systematic mechanism to decompose a
problem into sub problems
   Also called program structure
   Represent the organization of program components.
   Does not represent procedural aspects of software such as
    decisions, repetitions etc.
   Depth –No. of levels of control (distance between the top
    and bottom modules in program control structure)
   Width- Span of control.
    Fan-out -no. of modules that are directly controlled by
    another module
   Fan-in - how many modules directly control a given
    module
   Super ordinate -module that control another module
   Subordinate - module controlled by another
   Visibility -set of program components that may be
    called or used as data by a given component
   Connectivity – A module that directly causes another
    module to begin execution is connected to it.
   Software architecture is the hierarchical structure of program
    components (modules), the manner in which these
    components interact and the structure of data that are used
    by the components.
   A set of properties should be specified as part of an
    architectural design:
   Structural properties. This aspect of the architectural
    design representation defines the components of a system
    (e.g., modules, objects) 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, reliability, security,
    adaptability, and other system characteristics.
   Families of related systems. the design should have the
    ability to reuse architectural building blocks.
Data structure is a representation of the
  logical relationship among individual
  elements of data.
• Scalar item –

  A single element of information that may be
  addressed by an identifier .
• Scalar item organized as a list- array
• Data structure that organizes non-contiguous

  scalar items-linked list
Software procedure focuses on the processing
details of each module individually.
   Information (data and procedure) contained
    within a module should be inaccessible to
    other modules that have no need for such
    information.
   Hiding defines and enforces access
    constraints to both procedural detail within a
    module and any local data structure used by
    the module.
If the architectural style of a system is
hierarchical program structure can be
    partitioned -----
3. Horizontal partitioning
4. Vertical partitioning
Horizontal partitioning




Separate branches can be defined for each major function
Eg : 3 partitions
1. Input
2. Data Transformation
3. Output
Advantages
   ◦ Easier to test
   ◦ Easier to maintain
   ◦ Propagation of fewer side effects
   ◦ Easier to add new features
Vertical Partitioning
 ◦ Control and work modules are distributed top down
 ◦ Top level modules perform control functions
 ◦ Lower modules perform computations (input
   processing and output
Eg of Horizontal Partitioning
Eg of Vertical Partitioning
    Functional independence is achieved by
     developing modules with “single minded”
     function and an aversion to excessive interaction
     with other modules.

    Measured using 2 qualitative criteria:

5.   Cohesion : Measure of the relative strength of a
     module.
6.   Coupling : Measure of the relative
     interdependence among modules.
•   Strength of relation of elements within a module
•   Element- Group of instructions or a data definition.
•   Strive for high cohesion

Different types of cohesion :

o   Functional Cohesion (Highest):

A functionally cohesive module contains elements that
all contribute to the execution of one and only one
problem-related task.
Examples of functionally cohesive modules are
Compute cosine of an angle
Calculate net employee salary
2. Sequential Cohesion :
A sequentially cohesive module is one whose
elements are involved in activities such that
output data from one activity serves as input
data to the next.
Eg: Module read and validate customer record
  Read record
  Validate customer record
Here output of one activity is input to the
second
3. Communicational cohesion
A communicationally cohesive module is one whose elements
contribute to activities that use the same input or output data.
Suppose we wish to find out some facts about a book
For instance, we may wish to
   FIND TITLE OF BOOK
   FIND PRICE OF BOOK
   FIND PUBLISHER OF BOOK
   FIND AUTHOR OF BOOK
These four activities are related because they all work
on the same input data, the book, which makes the
“module” communicationally cohesive.
Eg: module which produces employee salary
 report and calculates average salary

                   Produce
                   employee
                   salary
                   report
                                 Employee salary
                                 report details



 Employee salary   Calculate
                   average
 table             salary      Average salary
4. Procedural Cohesion
A procedurally cohesive module is one whose elements are
involved in different and possibly unrelated activities in which
control flows from each activity to the next.
A piece of coding ties the activities together
Eg:
Module that averages two completely unrelated tables, TABLE-
  A
and TABLE-B, which both just happen to have 100 elements
each.
module compute table-A-avg and table-B-avg
       uses table-A, table-B
       returns table-A-avg, table-B-avg
          table-A-total : = 0
          table-B-total : = 0
          for i = i to 100
             add table-A (i) to table-A-total
             add table-B (i) to table-B-total
          endfor
          table-A-avg : = table-A-total/100
          table-B-avg : = table-B-total/100
    endmodule
5. Temporal Cohesion
A temporally cohesive module is one whose elements are
involved in activities that are related in time.
A module INITIALIZE initializes many different functions in a
mighty sweep, causing it to be broadly related to several other
modules in the system.
 module initialize
         updates a-counter, b-counter, items table,
            totals table, switch-a, switch-b
         rewind tape-a
         set a-counter to 0
         rewind tape-b
         set b-counter to 0
         clear items table
         clear totals table
         set switch-a to off
         set switch-b to on
      endmodule
6. Logical Cohesion
A logically cohesive module is one whose elements contribute
to activities of the same general category in which the activity
or activities to be executed are selected from outside the
module.
A logically cohesive module contains a number of activities of
  the same general kind.
To use the module, we pick out just the piece(s) we need.
Eg. A module maintain employee master file
Uses input flag/* to choose which function*/
If input flag =1
{Add a new record to master file}
If input flag =2
{delete an employee record }
If input flag=3
{edit employee record }
-
-
Endmodule
7. Coincidental Cohesion (Lowest)
A coincidentally cohesive module is one whose elements
contribute to activities with no meaningful relationship to one
another.
Eg. When a large program id modularized by arbitrarily
  segmenting the program into several small modules.
A decision tree to show module cohesion
   Measure of interconnection among modules
    in a software structure
   Strive for lowest coupling possible.
Types of coupling
1. Data coupling (Most desirable)
Two modules are data coupled, if they communicate through
parameters where each parameter is an elementary piece of
data.
e.g. an integer, a float, a character, etc. This data item should
be problem related and not be used for control purpose.
2. Stamp Coupling
Two modules are said to be stamp coupled if a data structure is
  passed as parameter but the called module operates on some
  but not all of the individual components of the data structure.
3. Control Coupling
Two modules are said to be control coupled if one module
passes a control element to the other module.
This control element affects /controls the internal logic of the
called module
Eg: flags
               Module 1
                    flag
                                     flag
                Module 2
                               A             B


                                        C
4. Common Coupling
Takes place when a number of modules access
a data item in a global data area.




                        Modules c, g and k exhibit common coupling
5. Content coupling (Least desirable)
Two modules are said to be content coupled if one module
branches into another module or modifies data within another.
Eg:
int func1(int a)
{ printf(“func1”);
  a+=2;
  goto F2A;
return a;
}

void func2(void)
{ printf(“func2”);
F2A : printf(“At F2A”)
}
   Evaluate 1st iteration to reduce coupling & improve cohesion
   Minimize structures with high fan-out
   Keep scope of effect of a module within scope of control of
    that module
   Evaluate interfaces to reduce complexity
   Define modules with predictable function
    A module is predictable when it can be
    treated as a black box.
   Strive for controlled entry -- no jumps into
    the middle of things
   The design process should not suffer from ‘tunnel vision’
    A good designer should consider alternative approaches.

   The design should be traceable to the analysis model

   The design should not reinvent the wheel
    Time is short and resources are limited! Hence use well tested and
    reusable s/w components

   The design should ‘minimize the intellectual distance” between the
    S/W and the problem as it exists in the real world
    That is, the structure of the software design should (whenever
    possible) mimic the structure of the problem domain.

   The design should exhibit uniformity & integration
    A design is uniform if it appears that one person developed the
    whole thing.
 The design should be structured to accommodate
  change
  Upcoming modifications and improvements should not
  lead to drastic changes or redesign of software
 The design should be structured to degrade

  gently, even when aberrant data, events, or operating
  conditions are encountered
  Use message/progress bars whenever possible
 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

More Related Content

What's hot

Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering
arvind pandey
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
Preeti Mishra
 
Context model
Context modelContext model
Context model
Ubaid423
 
Designing Techniques in Software Engineering
Designing Techniques in Software EngineeringDesigning Techniques in Software Engineering
Designing Techniques in Software Engineering
kirupasuchi1996
 
Software design
Software designSoftware design
Software design
Benazir Fathima
 
Design process and concepts
Design process and conceptsDesign process and concepts
Design process and conceptsSlideshare
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
Henry Muccini
 
unit 5 Architectural design
 unit 5 Architectural design unit 5 Architectural design
unit 5 Architectural design
devika g
 
Software Engineering unit 3
Software Engineering unit 3Software Engineering unit 3
Software Engineering unit 3
Abhimanyu Mishra
 
Design Pattern in Software Engineering
Design Pattern in Software EngineeringDesign Pattern in Software Engineering
Design Pattern in Software Engineering
Manish Kumar
 
SE_Lec 05_System Modelling and Context Model
SE_Lec 05_System Modelling and Context ModelSE_Lec 05_System Modelling and Context Model
SE_Lec 05_System Modelling and Context Model
Amr E. Mohamed
 
Fundamental design concepts
Fundamental design conceptsFundamental design concepts
Fundamental design concepts
srijavel
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
Dharmalingam Ganesan
 
Language and Processors for Requirements Specification
Language and Processors for Requirements SpecificationLanguage and Processors for Requirements Specification
Language and Processors for Requirements Specification
kirupasuchi1996
 
Quality and productivity factors
Quality and productivity factorsQuality and productivity factors
Quality and productivity factors
NancyBeaulah_R
 
Object oriented modeling and design
Object oriented modeling and designObject oriented modeling and design
Object oriented modeling and design
jayashri kolekar
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notesSudarshan Dhondaley
 
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
malathijanapati1
 
Analysis modeling
Analysis modelingAnalysis modeling
Analysis modeling
Preeti Mishra
 
Software design principles
Software design principlesSoftware design principles
Software design principlesRitesh Singh
 

What's hot (20)

Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering Unit 5- Architectural Design in software engineering
Unit 5- Architectural Design in software engineering
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 
Context model
Context modelContext model
Context model
 
Designing Techniques in Software Engineering
Designing Techniques in Software EngineeringDesigning Techniques in Software Engineering
Designing Techniques in Software Engineering
 
Software design
Software designSoftware design
Software design
 
Design process and concepts
Design process and conceptsDesign process and concepts
Design process and concepts
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
 
unit 5 Architectural design
 unit 5 Architectural design unit 5 Architectural design
unit 5 Architectural design
 
Software Engineering unit 3
Software Engineering unit 3Software Engineering unit 3
Software Engineering unit 3
 
Design Pattern in Software Engineering
Design Pattern in Software EngineeringDesign Pattern in Software Engineering
Design Pattern in Software Engineering
 
SE_Lec 05_System Modelling and Context Model
SE_Lec 05_System Modelling and Context ModelSE_Lec 05_System Modelling and Context Model
SE_Lec 05_System Modelling and Context Model
 
Fundamental design concepts
Fundamental design conceptsFundamental design concepts
Fundamental design concepts
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Language and Processors for Requirements Specification
Language and Processors for Requirements SpecificationLanguage and Processors for Requirements Specification
Language and Processors for Requirements Specification
 
Quality and productivity factors
Quality and productivity factorsQuality and productivity factors
Quality and productivity factors
 
Object oriented modeling and design
Object oriented modeling and designObject oriented modeling and design
Object oriented modeling and design
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notes
 
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
 
Analysis modeling
Analysis modelingAnalysis modeling
Analysis modeling
 
Software design principles
Software design principlesSoftware design principles
Software design principles
 

Viewers also liked

In-Memory Apps for Precision Medicine
In-Memory Apps for Precision MedicineIn-Memory Apps for Precision Medicine
In-Memory Apps for Precision Medicine
Matthieu Schapranow
 
Analyze Genomes Services for Precision Medicine
Analyze Genomes Services for Precision MedicineAnalyze Genomes Services for Precision Medicine
Analyze Genomes Services for Precision Medicine
Matthieu Schapranow
 
Analyze Genomes: Drug Response Analysis
Analyze Genomes: Drug Response AnalysisAnalyze Genomes: Drug Response Analysis
Analyze Genomes: Drug Response Analysis
Matthieu Schapranow
 
Analyze Genomes: In-memory Apps supporting Precision Medicine
Analyze Genomes: In-memory Apps supporting Precision MedicineAnalyze Genomes: In-memory Apps supporting Precision Medicine
Analyze Genomes: In-memory Apps supporting Precision Medicine
Matthieu Schapranow
 
05 architectural design
05 architectural design05 architectural design
Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10koolkampus
 
Function Oriented Design
Function Oriented DesignFunction Oriented Design
Function Oriented Design
Sharath g
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software designPiyush Gogia
 
5 Type Of Architecture Design Process
5 Type Of Architecture Design Process 5 Type Of Architecture Design Process
5 Type Of Architecture Design Process
Wan Muhammad / Asas-Khu™
 
Unit 3 3 architectural design
Unit 3 3 architectural designUnit 3 3 architectural design
Unit 3 3 architectural designHiren Selani
 

Viewers also liked (11)

In-Memory Apps for Precision Medicine
In-Memory Apps for Precision MedicineIn-Memory Apps for Precision Medicine
In-Memory Apps for Precision Medicine
 
Analyze Genomes Services for Precision Medicine
Analyze Genomes Services for Precision MedicineAnalyze Genomes Services for Precision Medicine
Analyze Genomes Services for Precision Medicine
 
Analyze Genomes: Drug Response Analysis
Analyze Genomes: Drug Response AnalysisAnalyze Genomes: Drug Response Analysis
Analyze Genomes: Drug Response Analysis
 
Analyze Genomes: In-memory Apps supporting Precision Medicine
Analyze Genomes: In-memory Apps supporting Precision MedicineAnalyze Genomes: In-memory Apps supporting Precision Medicine
Analyze Genomes: In-memory Apps supporting Precision Medicine
 
05 architectural design
05 architectural design05 architectural design
05 architectural design
 
Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10
 
Function Oriented Design
Function Oriented DesignFunction Oriented Design
Function Oriented Design
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software design
 
Architectural Design
Architectural DesignArchitectural Design
Architectural Design
 
5 Type Of Architecture Design Process
5 Type Of Architecture Design Process 5 Type Of Architecture Design Process
5 Type Of Architecture Design Process
 
Unit 3 3 architectural design
Unit 3 3 architectural designUnit 3 3 architectural design
Unit 3 3 architectural design
 

Similar to Design concepts and principles

UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptxUNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
LeahRachael
 
Function oriented design
Function oriented designFunction oriented design
Function oriented design
Vidhun T
 
Software Designing - Software Engineering
Software Designing - Software EngineeringSoftware Designing - Software Engineering
Software Designing - Software Engineering
Purvik Rana
 
Unit-III(Design).pptx
Unit-III(Design).pptxUnit-III(Design).pptx
Unit-III(Design).pptx
Fajar Baskoro
 
11.3.14&22.1.16
11.3.14&22.1.1611.3.14&22.1.16
11.3.14&22.1.16
Rajes Wari
 
Software Design
Software Design Software Design
Software Design
Anas Bilal
 
Software design i (2) (1)
Software design   i (2) (1)Software design   i (2) (1)
Software design i (2) (1)
Shagufta shaheen
 
SE2018_Lec 15_ Software Design
SE2018_Lec 15_ Software DesignSE2018_Lec 15_ Software Design
SE2018_Lec 15_ Software Design
Amr E. Mohamed
 
System software design1
System software design1System software design1
System software design1
PrityRawat2
 
software Design.ppt
software Design.pptsoftware Design.ppt
software Design.ppt
Satyanandaram Nandigam
 
Unit 2
Unit 2Unit 2
5.Software Design.ppt
5.Software Design.ppt5.Software Design.ppt
5.Software Design.ppt
ssuser1288e7
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and AnswersBala Ganesh
 
CS8494 SOFTWARE ENGINEERING Unit-3
CS8494 SOFTWARE ENGINEERING Unit-3CS8494 SOFTWARE ENGINEERING Unit-3
CS8494 SOFTWARE ENGINEERING Unit-3
SIMONTHOMAS S
 
Software Design and Modularity
Software Design and ModularitySoftware Design and Modularity
Software Design and Modularity
Danyal Ahmad
 
Software Engineering - SOFTWARE DESIGN Process
Software Engineering - SOFTWARE DESIGN ProcessSoftware Engineering - SOFTWARE DESIGN Process
Software Engineering - SOFTWARE DESIGN Process
Dr Anuranjan Misra
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
puttipavan23022023
 
SE UNIT-3.pdf
SE UNIT-3.pdfSE UNIT-3.pdf
SE UNIT-3.pdf
Dr. Radhey Shyam
 
Coupling and cohesion
Coupling and cohesionCoupling and cohesion
Coupling and cohesion
Sutha31
 

Similar to Design concepts and principles (20)

UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptxUNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
 
Function oriented design
Function oriented designFunction oriented design
Function oriented design
 
Software Designing - Software Engineering
Software Designing - Software EngineeringSoftware Designing - Software Engineering
Software Designing - Software Engineering
 
Unit-III(Design).pptx
Unit-III(Design).pptxUnit-III(Design).pptx
Unit-III(Design).pptx
 
11.3.14&22.1.16
11.3.14&22.1.1611.3.14&22.1.16
11.3.14&22.1.16
 
Software Design
Software Design Software Design
Software Design
 
Software design i (2) (1)
Software design   i (2) (1)Software design   i (2) (1)
Software design i (2) (1)
 
SE2018_Lec 15_ Software Design
SE2018_Lec 15_ Software DesignSE2018_Lec 15_ Software Design
SE2018_Lec 15_ Software Design
 
06 fse design
06 fse design06 fse design
06 fse design
 
System software design1
System software design1System software design1
System software design1
 
software Design.ppt
software Design.pptsoftware Design.ppt
software Design.ppt
 
Unit 2
Unit 2Unit 2
Unit 2
 
5.Software Design.ppt
5.Software Design.ppt5.Software Design.ppt
5.Software Design.ppt
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
 
CS8494 SOFTWARE ENGINEERING Unit-3
CS8494 SOFTWARE ENGINEERING Unit-3CS8494 SOFTWARE ENGINEERING Unit-3
CS8494 SOFTWARE ENGINEERING Unit-3
 
Software Design and Modularity
Software Design and ModularitySoftware Design and Modularity
Software Design and Modularity
 
Software Engineering - SOFTWARE DESIGN Process
Software Engineering - SOFTWARE DESIGN ProcessSoftware Engineering - SOFTWARE DESIGN Process
Software Engineering - SOFTWARE DESIGN Process
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
 
SE UNIT-3.pdf
SE UNIT-3.pdfSE UNIT-3.pdf
SE UNIT-3.pdf
 
Coupling and cohesion
Coupling and cohesionCoupling and cohesion
Coupling and cohesion
 

More from saurabhshertukde (19)

Revision sql te it new syllabus
Revision sql te it new syllabusRevision sql te it new syllabus
Revision sql te it new syllabus
 
Oodbms ch 20
Oodbms ch 20Oodbms ch 20
Oodbms ch 20
 
Introduction er & eer
Introduction er & eerIntroduction er & eer
Introduction er & eer
 
Introduction er & eer
Introduction er &  eerIntroduction er &  eer
Introduction er & eer
 
Integrity & security
Integrity & securityIntegrity & security
Integrity & security
 
Er model
Er modelEr model
Er model
 
Er & eer to relational mapping
Er & eer to relational mappingEr & eer to relational mapping
Er & eer to relational mapping
 
Eer case study
Eer case studyEer case study
Eer case study
 
Chapter 2
Chapter 2Chapter 2
Chapter 2
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
 
Chapter 9
Chapter 9Chapter 9
Chapter 9
 
J2 ee archi
J2 ee archiJ2 ee archi
J2 ee archi
 
J2 ee architecture
J2 ee architectureJ2 ee architecture
J2 ee architecture
 
Software project-scheduling
Software project-schedulingSoftware project-scheduling
Software project-scheduling
 
Softwareproject planning
Softwareproject planningSoftwareproject planning
Softwareproject planning
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-models
 
Analysis modelling
Analysis modellingAnalysis modelling
Analysis modelling
 
Analysis concepts and principles
Analysis concepts and principlesAnalysis concepts and principles
Analysis concepts and principles
 
Risk analysis
Risk analysisRisk analysis
Risk analysis
 

Recently uploaded

Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 

Recently uploaded (20)

Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 

Design concepts and principles

  • 1.
  • 2. Components of a design model :  Data Design ◦ Transforms information domain model into data structures required to implement software  Architectural Design ◦ Defines relationship among the major structural elements of a software  Interface Design ◦ Describes how the software communicates with systems that interact with it and with humans.  Procedural Design ◦ Transforms structural elements of the architecture into a procedural description of software components
  • 3. Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software. Goals of the design process: 3. 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. 4. The design must be a readable, understandable guide for those who generate code and for those who test and subsequently support the software. 5. The design should address the data, functional and behavioral domains from an implementation perspective
  • 4.
  • 5. Wasserman: “Abstraction permits one to concentrate on a problem at some level of abstraction without regard to low level detail.  At the highest level of abstraction a solution is stated in broad terms using the language of the problem environment.  At lower level, a procedural orientation is taken.  At the lowest level of abstraction the solution is stated in a manner that can be directly implemented.
  • 6. Types of abstraction : 1. Procedural Abstraction : A named sequence of instructions that has a specific & limited function Eg: Word OPEN for a door 2. Data Abstraction : A named collection of data that describes a data object. Data abstraction for door would be a set of attributes that describes the door (e.g. door type, swing direction, weight, dimension)
  • 7. 2. Refinement  Process of elaboration.  Start with the statement of function defined at the abstract level, decompose the statement of function in a stepwise fashion until programming language statements are reached.
  • 8.
  • 9.  In this concept, software is divided into separately named and addressable components called modules  Follows “divide and conquer” concept, a complex problem is broken down into several manageable pieces  Let p1 and p2 be two problems.  Let E1 and E2 be the effort required to solve them -- If C(p1)>C(p2) Hence E(p1)>E(p2)
  • 10. Now-- Complexity of a problem that combines p1 and p2 is greater than complexity when each problem is consider C(p1+p2) > C(p1)+C(p2), Hence E(p1+p2) > E(p1)+E(p2) It is easier to solve a complex problem when you break it into manageable pieces
  • 11.
  • 12. 5 criteria to evaluate a design method with respect to its modularity----- Modular understandability module should be understandable as a standalone unit (no need to refer to other modules) Modular continuity If small changes to the system requirements result in changes to individual modules, rather than system wide changes, the impact of side effects will be minimized Modular protection  If an error occurs within a module then those errors are localized and not spread to other modules.
  • 13. Modular Composability Design method should enable reuse of existing components. Modular Decomposability Complexity of the overall problem can be reduced if the design method provides a systematic mechanism to decompose a problem into sub problems
  • 14.
  • 15. Also called program structure  Represent the organization of program components.  Does not represent procedural aspects of software such as decisions, repetitions etc.  Depth –No. of levels of control (distance between the top and bottom modules in program control structure)  Width- Span of control.  Fan-out -no. of modules that are directly controlled by another module  Fan-in - how many modules directly control a given module  Super ordinate -module that control another module  Subordinate - module controlled by another
  • 16. Visibility -set of program components that may be called or used as data by a given component  Connectivity – A module that directly causes another module to begin execution is connected to it.
  • 17. Software architecture is the hierarchical structure of program components (modules), the manner in which these components interact and the structure of data that are used by the components.  A set of properties should be specified as part of an architectural design:  Structural properties. This aspect of the architectural design representation defines the components of a system (e.g., modules, objects) 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, reliability, security, adaptability, and other system characteristics.  Families of related systems. the design should have the ability to reuse architectural building blocks.
  • 18. Data structure is a representation of the logical relationship among individual elements of data. • Scalar item – A single element of information that may be addressed by an identifier . • Scalar item organized as a list- array • Data structure that organizes non-contiguous scalar items-linked list
  • 19. Software procedure focuses on the processing details of each module individually.
  • 20. Information (data and procedure) contained within a module should be inaccessible to other modules that have no need for such information.  Hiding defines and enforces access constraints to both procedural detail within a module and any local data structure used by the module.
  • 21. If the architectural style of a system is hierarchical program structure can be partitioned ----- 3. Horizontal partitioning 4. Vertical partitioning
  • 22. Horizontal partitioning Separate branches can be defined for each major function Eg : 3 partitions 1. Input 2. Data Transformation 3. Output Advantages ◦ Easier to test ◦ Easier to maintain ◦ Propagation of fewer side effects ◦ Easier to add new features
  • 23. Vertical Partitioning ◦ Control and work modules are distributed top down ◦ Top level modules perform control functions ◦ Lower modules perform computations (input processing and output
  • 24. Eg of Horizontal Partitioning
  • 25. Eg of Vertical Partitioning
  • 26. Functional independence is achieved by developing modules with “single minded” function and an aversion to excessive interaction with other modules.  Measured using 2 qualitative criteria: 5. Cohesion : Measure of the relative strength of a module. 6. Coupling : Measure of the relative interdependence among modules.
  • 27. Strength of relation of elements within a module • Element- Group of instructions or a data definition. • Strive for high cohesion Different types of cohesion : o Functional Cohesion (Highest): A functionally cohesive module contains elements that all contribute to the execution of one and only one problem-related task. Examples of functionally cohesive modules are Compute cosine of an angle Calculate net employee salary
  • 28. 2. Sequential Cohesion : A sequentially cohesive module is one whose elements are involved in activities such that output data from one activity serves as input data to the next. Eg: Module read and validate customer record  Read record  Validate customer record Here output of one activity is input to the second
  • 29. 3. Communicational cohesion A communicationally cohesive module is one whose elements contribute to activities that use the same input or output data. Suppose we wish to find out some facts about a book For instance, we may wish to  FIND TITLE OF BOOK  FIND PRICE OF BOOK  FIND PUBLISHER OF BOOK  FIND AUTHOR OF BOOK These four activities are related because they all work on the same input data, the book, which makes the “module” communicationally cohesive.
  • 30. Eg: module which produces employee salary report and calculates average salary Produce employee salary report Employee salary report details Employee salary Calculate average table salary Average salary
  • 31. 4. Procedural Cohesion A procedurally cohesive module is one whose elements are involved in different and possibly unrelated activities in which control flows from each activity to the next. A piece of coding ties the activities together Eg: Module that averages two completely unrelated tables, TABLE- A and TABLE-B, which both just happen to have 100 elements each.
  • 32. module compute table-A-avg and table-B-avg       uses table-A, table-B       returns table-A-avg, table-B-avg          table-A-total : = 0          table-B-total : = 0          for i = i to 100             add table-A (i) to table-A-total             add table-B (i) to table-B-total          endfor          table-A-avg : = table-A-total/100          table-B-avg : = table-B-total/100    endmodule
  • 33. 5. Temporal Cohesion A temporally cohesive module is one whose elements are involved in activities that are related in time. A module INITIALIZE initializes many different functions in a mighty sweep, causing it to be broadly related to several other modules in the system.  module initialize       updates a-counter, b-counter, items table,          totals table, switch-a, switch-b       rewind tape-a       set a-counter to 0       rewind tape-b       set b-counter to 0       clear items table       clear totals table       set switch-a to off       set switch-b to on    endmodule
  • 34. 6. Logical Cohesion A logically cohesive module is one whose elements contribute to activities of the same general category in which the activity or activities to be executed are selected from outside the module. A logically cohesive module contains a number of activities of the same general kind. To use the module, we pick out just the piece(s) we need.
  • 35. Eg. A module maintain employee master file Uses input flag/* to choose which function*/ If input flag =1 {Add a new record to master file} If input flag =2 {delete an employee record } If input flag=3 {edit employee record } - - Endmodule
  • 36. 7. Coincidental Cohesion (Lowest) A coincidentally cohesive module is one whose elements contribute to activities with no meaningful relationship to one another. Eg. When a large program id modularized by arbitrarily segmenting the program into several small modules.
  • 37. A decision tree to show module cohesion
  • 38. Measure of interconnection among modules in a software structure  Strive for lowest coupling possible.
  • 39. Types of coupling 1. Data coupling (Most desirable) Two modules are data coupled, if they communicate through parameters where each parameter is an elementary piece of data. e.g. an integer, a float, a character, etc. This data item should be problem related and not be used for control purpose. 2. Stamp Coupling Two modules are said to be stamp coupled if a data structure is passed as parameter but the called module operates on some but not all of the individual components of the data structure.
  • 40. 3. Control Coupling Two modules are said to be control coupled if one module passes a control element to the other module. This control element affects /controls the internal logic of the called module Eg: flags Module 1 flag flag Module 2 A B C
  • 41. 4. Common Coupling Takes place when a number of modules access a data item in a global data area. Modules c, g and k exhibit common coupling
  • 42. 5. Content coupling (Least desirable) Two modules are said to be content coupled if one module branches into another module or modifies data within another. Eg: int func1(int a) { printf(“func1”); a+=2; goto F2A; return a; } void func2(void) { printf(“func2”); F2A : printf(“At F2A”) }
  • 43. Evaluate 1st iteration to reduce coupling & improve cohesion  Minimize structures with high fan-out  Keep scope of effect of a module within scope of control of that module
  • 44. Evaluate interfaces to reduce complexity  Define modules with predictable function A module is predictable when it can be treated as a black box.  Strive for controlled entry -- no jumps into the middle of things
  • 45. The design process should not suffer from ‘tunnel vision’ A good designer should consider alternative approaches.  The design should be traceable to the analysis model  The design should not reinvent the wheel Time is short and resources are limited! Hence use well tested and reusable s/w components  The design should ‘minimize the intellectual distance” between the S/W and the problem as it exists in the real world That is, the structure of the software design should (whenever possible) mimic the structure of the problem domain.  The design should exhibit uniformity & integration A design is uniform if it appears that one person developed the whole thing.
  • 46.  The design should be structured to accommodate change Upcoming modifications and improvements should not lead to drastic changes or redesign of software  The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered Use message/progress bars whenever possible  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