SlideShare a Scribd company logo
SOFTWARE ENGINEERING
UNIT-3
Topics to be
covered...
Concept of Software Design
Architectural and Procedural Design
Modularization
Design Structure Charts
Pseudo Codes
Coupling and Cohesion Measures
Function Oriented Design
Object Oriented Design
Top-Down and Bottom-Up Design
Measurement and Metrics
Halestead’s Software Science
Function Point (FP) Based Measures
Cyclomatic Complexity Measures
Happy Ending!
Concept of
Software Design
Concept of Software Design
Software design is a mechanism to transform user requirements into some suitable form,
which helps the programmer in software coding and implementation.
It allows the software engineer to create the model of the software that is to be developed.
The software design phase is the first step in SDLC (Software Design Life Cycle), which
moves the concentration from the problem domain to the solution domain.
General task involved in design process:
1.Design the overall the system processes.
2.Segmenting the system into smaller
modules. 3. Designing the database structure.
4. Documenting the system design.
Concept of Software Design
Objectives:
1.Correctness: Software design should be correct as per requirement. It should
correctly implement all the functionalities of the system.
2.Completeness: The design should have all components like data structures, modules,
and external interfaces, etc.
3.Efficiency: Resources should be used efficiently by the
program. 4. Flexibility: Able to modify on changing needs.
5.Consistency: There should not be any inconsistency in the design.
6.Maintainability: The design should be so simple so that it can be easily maintainable
by other designers.
Concepts of Software Design:
The software design concept simply means the idea or principle behind the design. It
describes how you plan to solve the problem of designing software, the logic, or thinking
behind how you will design software. It allows the software engineer to create the model of
the system or software or product that is to be developed or built.
Architectural and
Procedural Design
Architectural Design
The process of defining a collection of hardware and software components and
their interfaces to establish the framework for the development of a computer
system.
The output of this design process is a description of the software
architecture. Architectural design is an early stage of the system design
process.
It represents the link between specification and design processes and is often carried out
in parallel with some specification activities.
A set of components(eg: a database, computational
modules) that will perform a function required by
the system.
The set of connectors will help in
coordination, communication, and
cooperation between the components.
Conditions that how components can be integrated
to form the system.
Architectural
Design
Data Centered Architecture:
Data Centered Architecture is a layered process which provides architectural guidelines
in data center development.
Data Centered Architecture is also known as Database Centric Architecture.
This architecture is the physical and logical layout of the resources and equipment
within a data center facility.
Architectural Design
Data flow architectures:
This kind of architecture is used when input data to be transformed into output
data through a series of computational manipulative components.
The figure represents pipe-and-filter architecture since it uses both pipe and filter and it
has a set of components called filters connected by pipes.
Pipes are used to transmit data from one component to the next.
Unit 3 Software engineering deataled notes .docx
Procedural Design
Procedural design used to model programs that have an obvious flow of data from input
to output.
It represents the architecture of a program as a set of interacting processes that pass
data from one to another.
Procedural design is also called components design. It is completely based on process
and control specification.
The "state transition diagram" of the requirement analysis model is also used
in components design.
Components design is usually done after user interface design.
Modularization
Modularization
Modularity in design refers to the splitting of a large software system into
smaller connected modules.
Modules are interconnected through their interfaces.
The interconnection should be simple to avoid costly maintenance.
Two modules are directly connected if one module can call the other module.
Modularity has several key benefits:
Testing & Debugging Since each component is self-contained, you mitigate dependency
issues. It becomes easy to test each component in isolation by using a mocking or
isolation framework.
Reusability If you discover you need the same functionality in a new project, you
can package the existing functionality into something reusable by multiple projects
without copying and pasting the code.
Extensibility Your software now runs as a set of independent components connected by
an abstraction layer.
Advantage of
modularization
Smaller components are easier to maintain
Program can be divided based on functional aspects
Easier because programmer only focus on one small simple problem rather than a
large complex problem.
Testing and Debugging easier.
Easy to isolate bugs and easy to fix bugs.
Design Structure
Charts
Design Structure
Charts
A Structure Chart (SC) in software engineering and organizational theory is a chart
which shows the breakdown of a system to its lowest manageable levels.
They are used in structured programming to arrange program modules into a tree.
Each module is represented by a box, which contains the module's name.
The tree shows the relationship between modules, showing data transfer between
the models. Data being passed from module to module that needs to be processed.
Structure chart is a chart derived from a Data Flow Diagram. It represents the system in
more detail than DFD. It breaks down the entire system into lowest functional modules,
describes functions and sub-functions of each module of the system to a greater detail
than DFD.
Design Structure
Charts
Unit 3 Software engineering deataled notes .docx
Pseudo Codes
Pseudo Codes
Pseudo code uses the vocabulary of one language i.e, English and syntax of another i.e,
any structured programming language.
Pseudo code is a combination of algorithm written in a simple language and
programming language statements.
Using Pseudo code, the designer design describes system characteristics structured
by keywords such as IF-THEN-ELSE, while-do and end.
Advantages of Pseudo Codes
Converting a Pseudo code to a programming language is much easier as compared to
converting to flowchart or decision table.
It is easier to modify whenever programmer modification are
necessary. Take less time to writing as compared to drawing flow
chart.
Done easily on Word Processor
Coupling and
Cohesion
Measures
Coupling
The coupling is the degree of interdependence between software modules. Two modules that
are tightly coupled are strongly dependent on each other. However, two modules that are
loosely coupled are not dependent on each other. Uncoupled modules have no
interdependence at all within them.
A good design is the one that has low coupling. Coupling is measured by the number of
relations between the modules. That is, the coupling increases as the number of calls
between modules increase. Thus, it can be said that a design with high coupling will have
more errors.
Coupling
Types of Module Coupling:
Coupling
Data Coupling:
When data of one module is passed to another module, this is called data coupling.
Stamp Coupling:
Two modules are stamp coupled if they communicate using composite data items such as
structure, objects, etc.
When the module passes entire structure to another module, they are said to be stamp
coupled. For example, passing structure variable in C or object in C++ language to a module.
Coupling
Control Coupling:
Control Coupling exists among two modules if data from one module is used to direct the
structure of instruction execution in another.
External Coupling:
External Coupling arises when two modules share an externally imposed data format,
communication protocols, or device interface. This is related to communication to external
tools and devices.
Common Coupling:
Two modules are common coupled if they share information through some global data items.
Cohesion
Cohesion shows the relationship within the
module.
Cohesion is an ordinal type of measurement and is generally described as "high cohesion" or
"low cohesion."
Types of Cohesion
Cohesion
1.Functional Cohesion: Functional Cohesion is said to exist if the different elements
of a module, cooperate to achieve a single function.
2.Sequential Cohesion: If the element of a module form the components of the
sequence, where the output from one component of the sequence is input to the
next.
3.Communicational Cohesion: If all tasks of the module refer to or update the same
data structure, e.g., the set of functions defined on an array or a stack.
4.Procedural Cohesion: If the set of purpose of the module are all parts of a procedure
in which particular sequence of steps has to be carried out for achieving a goal, e.g.,
the algorithm for decoding a message.
5.Temporal Cohesion: When a module includes functions that are associated by the fact
that all the methods must be executed in the same time.
6.Logical Cohesion: If all the elements of the module perform a similar operation. For
example Error handling, data input and data output, etc.
7.Coincidental Cohesion: If it performs a set of tasks that are associated with each other
very loosely, if at all.
Coupling Cohesion
Coupling is also called Inter-Module
Binding.
Coupling shows the relationships between
modules.
In coupling, modules are linked to the
other modules.
Cohesion is also called Intra-Module
Binding.
Cohesion shows the relationship within the
module.
In cohesion, the module focuses on a single
thing.
Function Oriented
Design
Function Oriented Design
Function Oriented Design is an approach to software design where the design is
decomposed into a set of interacting units where each unit has a clearly defined
function.
Function Oriented Design
Techniques used by Function Oriented Design
are:
Data Flow Diagram(A data flow diagram (DFD) maps out the flow of information for
any process or system. )
Data Dictionaries(Data dictionaries are simply repositories to store information about all
data items defined in DFDs. At the requirement stage, data dictionaries contain data
items.)
Structure Charts(Components are read from top to bottom and left to right. When a
module calls another, it views the called module as black box, passing required
parameters and receiving results)
Pseudo Codes(It uses keywords and indentation. Pseudo codes are used as
replacement for flow charts. It decreases the amount of documentation required.)
Unit 3 Software engineering deataled notes .docx
Object
Oriented
Design
Object Oriented Design
Object-oriented design is the process of planning a system of interacting objects for
the purpose of solving a software problem. It is one approach to software design.
In the object-oriented design method, the system is viewed as a collection of objects
(i.e., entities).
Top-Down and
Bottom-Up Design
Top-Down and Bottom-Up Design
Measurement
and Metrics
Measurement
A software metric is a measure of software characteristics which are measurable or
countable. Software metrics are valuable for many reasons, including measuring
software performance, planning work items, measuring productivity, and many other
uses.
Within the software development process, many metrics are that are all connected.
Software metrics are similar to the four functions of management: Planning, Organization,
Control, or Improvement.
Need of Software Measurement:
Software is measured to:
Create the quality of the current product or
process. Anticipate future qualities of the product
or process. Enhance the quality of a product or
process.
Regulate the state of the project in relation to budget and schedule.
Metrics
A metric is a measurement of the level that any impute belongs to a system product or
process.
There are 4 functions related to software
metrics: 1. Planning
2.
Organizing
3.
Controlling
4. Improving
Unit 3 Software engineering deataled notes .docx
Metrics
Classification of Software
Metrics: There are 3 types of
software metrics: Product Metrics:
Product metrics are used to evaluate the state of the product, tracing risks and
undercovering prospective problem areas. The ability of team to control quality is
evaluated.
Process Metrics:
Process metrics pay particular attention on enhancing the long term process of the team
or organization.
Project Metrics:
The project matrix describes the project characteristic and execution
process. Number of software developer
Staffing pattern over the life cycle of
software Cost and schedule
Productivity
Halestead’s
Software
Science
Halestead’s Software
Science
Measurement
Advantages:
Predicts error rate.
Predicts maintenance
effort Simple to calculate
Measure overall
quality Used for any
language
Disadvantages:
Depends on complete code
Complexity increases as program level
decreases Difficult to compute
Function Point (FP)
Based Measures
Function Point (FP) Based Measures
Function point is used in the estimation of software development cost which is the most
important potential use of function point data.
Function point may be used to compute the following importance metrics:
Productivity = FP/persons-months
Quality = Defects/FP
Cost = Rupees/FP
Organizations that use function point method develop criteria for determining whether a
particular entry is low, average or high.
Function Point (FP) Based Measures
There are three types of transaction functions.
External Inputs
External Outputs
External
Inquiries
Advantages:
Size oriented
metrics Language
dependent
Understood by the non technical user
To estimate cost and resources required for software development
Disadvantages:
Manually Counting Process
Difficult to Understand
Requires Experience
Function Point (FP) Based Measures
Cyclomatic
Complexity Measures
Cyclomatic Complexity Measures
Cyclomatic complexity is a software metric used to measure the complexity of a program. It
gives the quantitative measure of logical complexity of the program.
How to Calculate Cyclomatic Complexity?
McCabe proposed the cyclomatic number, V (G) of graph theory as an indicator of software
complexity. The cyclomatic number is equal to the number of linearly independent paths
through a program in its graphs representation. For a program control graph G, cyclomatic
number, V (G), is given as:
V (G) = E - N + 2 * P
E = The number of edges in graphs G
N = The number of nodes in graphs G
P = The number of connected components in graph G.
Cyclomatic Complexity Measures
Cyclomatic Complexity Measures
Advantages:
Gives complexity of various designs
Computed early in life cycle
Easy to apply
Measures minimum effort
Disadvantages:
Measures program’s control complexity and not the data
complexity Nested conditional structures are harder to
understand
Ignore the size of the program
Unit 3 Software engineering deataled notes .docx

More Related Content

ODP
Software design
PPTX
Software Eng S3 ( Software Design ).pptx
PPT
Software design, software engineering
PPTX
System software design1
PPTX
effective modular design.pptx
PPTX
unit3_.pptx ghhu hhiiiiiiiihggguuugggggij
PPTX
unit3_.pptx abchjgghikojhrdsiiiooojrrddy
Software design
Software Eng S3 ( Software Design ).pptx
Software design, software engineering
System software design1
effective modular design.pptx
unit3_.pptx ghhu hhiiiiiiiihggguuugggggij
unit3_.pptx abchjgghikojhrdsiiiooojrrddy

Similar to Unit 3 Software engineering deataled notes .docx (20)

PPT
SE-4 software engineering nekdnhjnrindnj
PPT
Function oriented design
PPTX
Principles and Practices of Effective Software Design and Architecture.pptx
PPTX
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
PPTX
Software Design
PPTX
11.3.14&22.1.16
PPTX
Designing PrinciplesOf Software
PDF
18BIT41C-SE Metrics Will Need to Learn U4.pdf
PPT
Software design i (2) (1)
PPTX
Unit3 Software engineering UPTU
PPTX
Software Engineering Unit 3 PPT Software Design
PPTX
software design: design fundamentals.pptx
PDF
SE UNIT-3.pdf
PDF
SWE-401 - 5. Software Design Basics
PPTX
Sharbani Bhattacharya SE design & Implementation
PDF
Design1
PDF
UNIT 3 Software Engineering (BCS601) EIOV.pdf
PDF
UNIT 3 Software Engineering (BCS601) EIOV.pdf
PDF
software _Desing_Methodology-partI.pptx.pdf
PPTX
SOFTWARE DESIGN ENGINEERING UNIT-3 PPT.pptx
SE-4 software engineering nekdnhjnrindnj
Function oriented design
Principles and Practices of Effective Software Design and Architecture.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
Software Design
11.3.14&22.1.16
Designing PrinciplesOf Software
18BIT41C-SE Metrics Will Need to Learn U4.pdf
Software design i (2) (1)
Unit3 Software engineering UPTU
Software Engineering Unit 3 PPT Software Design
software design: design fundamentals.pptx
SE UNIT-3.pdf
SWE-401 - 5. Software Design Basics
Sharbani Bhattacharya SE design & Implementation
Design1
UNIT 3 Software Engineering (BCS601) EIOV.pdf
UNIT 3 Software Engineering (BCS601) EIOV.pdf
software _Desing_Methodology-partI.pptx.pdf
SOFTWARE DESIGN ENGINEERING UNIT-3 PPT.pptx
Ad

Recently uploaded (20)

PPTX
famous lake in india and its disturibution and importance
PPTX
ognitive-behavioral therapy, mindfulness-based approaches, coping skills trai...
PPTX
Introduction to Fisheries Biotechnology_Lesson 1.pptx
PPTX
Application of enzymes in medicine (2).pptx
PPTX
EPIDURAL ANESTHESIA ANATOMY AND PHYSIOLOGY.pptx
PDF
Cosmic Outliers: Low-spin Halos Explain the Abundance, Compactness, and Redsh...
PPTX
ECG_Course_Presentation د.محمد صقران ppt
PDF
CAPERS-LRD-z9:AGas-enshroudedLittleRedDotHostingaBroad-lineActive GalacticNuc...
PPT
POSITIONING IN OPERATION THEATRE ROOM.ppt
PPTX
Science Quipper for lesson in grade 8 Matatag Curriculum
PPTX
neck nodes and dissection types and lymph nodes levels
PPTX
Protein & Amino Acid Structures Levels of protein structure (primary, seconda...
PDF
Lymphatic System MCQs & Practice Quiz – Functions, Organs, Nodes, Ducts
PPTX
Pharmacology of Autonomic nervous system
PDF
Assessment of environmental effects of quarrying in Kitengela subcountyof Kaj...
PDF
. Radiology Case Scenariosssssssssssssss
PDF
CHAPTER 3 Cell Structures and Their Functions Lecture Outline.pdf
PDF
ELS_Q1_Module-11_Formation-of-Rock-Layers_v2.pdf
PDF
SEHH2274 Organic Chemistry Notes 1 Structure and Bonding.pdf
PPTX
7. General Toxicologyfor clinical phrmacy.pptx
famous lake in india and its disturibution and importance
ognitive-behavioral therapy, mindfulness-based approaches, coping skills trai...
Introduction to Fisheries Biotechnology_Lesson 1.pptx
Application of enzymes in medicine (2).pptx
EPIDURAL ANESTHESIA ANATOMY AND PHYSIOLOGY.pptx
Cosmic Outliers: Low-spin Halos Explain the Abundance, Compactness, and Redsh...
ECG_Course_Presentation د.محمد صقران ppt
CAPERS-LRD-z9:AGas-enshroudedLittleRedDotHostingaBroad-lineActive GalacticNuc...
POSITIONING IN OPERATION THEATRE ROOM.ppt
Science Quipper for lesson in grade 8 Matatag Curriculum
neck nodes and dissection types and lymph nodes levels
Protein & Amino Acid Structures Levels of protein structure (primary, seconda...
Lymphatic System MCQs & Practice Quiz – Functions, Organs, Nodes, Ducts
Pharmacology of Autonomic nervous system
Assessment of environmental effects of quarrying in Kitengela subcountyof Kaj...
. Radiology Case Scenariosssssssssssssss
CHAPTER 3 Cell Structures and Their Functions Lecture Outline.pdf
ELS_Q1_Module-11_Formation-of-Rock-Layers_v2.pdf
SEHH2274 Organic Chemistry Notes 1 Structure and Bonding.pdf
7. General Toxicologyfor clinical phrmacy.pptx
Ad

Unit 3 Software engineering deataled notes .docx

  • 2. Topics to be covered... Concept of Software Design Architectural and Procedural Design Modularization Design Structure Charts Pseudo Codes Coupling and Cohesion Measures Function Oriented Design Object Oriented Design Top-Down and Bottom-Up Design Measurement and Metrics Halestead’s Software Science Function Point (FP) Based Measures Cyclomatic Complexity Measures Happy Ending!
  • 4. Concept of Software Design Software design is a mechanism to transform user requirements into some suitable form, which helps the programmer in software coding and implementation. It allows the software engineer to create the model of the software that is to be developed. The software design phase is the first step in SDLC (Software Design Life Cycle), which moves the concentration from the problem domain to the solution domain. General task involved in design process: 1.Design the overall the system processes. 2.Segmenting the system into smaller modules. 3. Designing the database structure. 4. Documenting the system design.
  • 5. Concept of Software Design Objectives: 1.Correctness: Software design should be correct as per requirement. It should correctly implement all the functionalities of the system. 2.Completeness: The design should have all components like data structures, modules, and external interfaces, etc. 3.Efficiency: Resources should be used efficiently by the program. 4. Flexibility: Able to modify on changing needs. 5.Consistency: There should not be any inconsistency in the design. 6.Maintainability: The design should be so simple so that it can be easily maintainable by other designers. Concepts of Software Design: The software design concept simply means the idea or principle behind the design. It describes how you plan to solve the problem of designing software, the logic, or thinking behind how you will design software. It allows the software engineer to create the model of the system or software or product that is to be developed or built.
  • 7. Architectural Design The process of defining a collection of hardware and software components and their interfaces to establish the framework for the development of a computer system. The output of this design process is a description of the software architecture. Architectural design is an early stage of the system design process. It represents the link between specification and design processes and is often carried out in parallel with some specification activities. A set of components(eg: a database, computational modules) that will perform a function required by the system. The set of connectors will help in coordination, communication, and cooperation between the components.
  • 8. Conditions that how components can be integrated to form the system.
  • 9. Architectural Design Data Centered Architecture: Data Centered Architecture is a layered process which provides architectural guidelines in data center development. Data Centered Architecture is also known as Database Centric Architecture. This architecture is the physical and logical layout of the resources and equipment within a data center facility.
  • 10. Architectural Design Data flow architectures: This kind of architecture is used when input data to be transformed into output data through a series of computational manipulative components. The figure represents pipe-and-filter architecture since it uses both pipe and filter and it has a set of components called filters connected by pipes. Pipes are used to transmit data from one component to the next.
  • 12. Procedural Design Procedural design used to model programs that have an obvious flow of data from input to output. It represents the architecture of a program as a set of interacting processes that pass data from one to another. Procedural design is also called components design. It is completely based on process and control specification. The "state transition diagram" of the requirement analysis model is also used in components design. Components design is usually done after user interface design.
  • 14. Modularization Modularity in design refers to the splitting of a large software system into smaller connected modules. Modules are interconnected through their interfaces. The interconnection should be simple to avoid costly maintenance. Two modules are directly connected if one module can call the other module. Modularity has several key benefits: Testing & Debugging Since each component is self-contained, you mitigate dependency issues. It becomes easy to test each component in isolation by using a mocking or isolation framework. Reusability If you discover you need the same functionality in a new project, you can package the existing functionality into something reusable by multiple projects without copying and pasting the code. Extensibility Your software now runs as a set of independent components connected by an abstraction layer.
  • 15. Advantage of modularization Smaller components are easier to maintain Program can be divided based on functional aspects Easier because programmer only focus on one small simple problem rather than a large complex problem. Testing and Debugging easier. Easy to isolate bugs and easy to fix bugs.
  • 17. Design Structure Charts A Structure Chart (SC) in software engineering and organizational theory is a chart which shows the breakdown of a system to its lowest manageable levels. They are used in structured programming to arrange program modules into a tree. Each module is represented by a box, which contains the module's name. The tree shows the relationship between modules, showing data transfer between the models. Data being passed from module to module that needs to be processed. Structure chart is a chart derived from a Data Flow Diagram. It represents the system in more detail than DFD. It breaks down the entire system into lowest functional modules, describes functions and sub-functions of each module of the system to a greater detail than DFD.
  • 21. Pseudo Codes Pseudo code uses the vocabulary of one language i.e, English and syntax of another i.e, any structured programming language. Pseudo code is a combination of algorithm written in a simple language and programming language statements. Using Pseudo code, the designer design describes system characteristics structured by keywords such as IF-THEN-ELSE, while-do and end.
  • 22. Advantages of Pseudo Codes Converting a Pseudo code to a programming language is much easier as compared to converting to flowchart or decision table. It is easier to modify whenever programmer modification are necessary. Take less time to writing as compared to drawing flow chart. Done easily on Word Processor
  • 24. Coupling The coupling is the degree of interdependence between software modules. Two modules that are tightly coupled are strongly dependent on each other. However, two modules that are loosely coupled are not dependent on each other. Uncoupled modules have no interdependence at all within them. A good design is the one that has low coupling. Coupling is measured by the number of relations between the modules. That is, the coupling increases as the number of calls between modules increase. Thus, it can be said that a design with high coupling will have more errors.
  • 26. Coupling Data Coupling: When data of one module is passed to another module, this is called data coupling. Stamp Coupling: Two modules are stamp coupled if they communicate using composite data items such as structure, objects, etc. When the module passes entire structure to another module, they are said to be stamp coupled. For example, passing structure variable in C or object in C++ language to a module.
  • 27. Coupling Control Coupling: Control Coupling exists among two modules if data from one module is used to direct the structure of instruction execution in another. External Coupling: External Coupling arises when two modules share an externally imposed data format, communication protocols, or device interface. This is related to communication to external tools and devices. Common Coupling: Two modules are common coupled if they share information through some global data items.
  • 28. Cohesion Cohesion shows the relationship within the module. Cohesion is an ordinal type of measurement and is generally described as "high cohesion" or "low cohesion."
  • 30. Cohesion 1.Functional Cohesion: Functional Cohesion is said to exist if the different elements of a module, cooperate to achieve a single function. 2.Sequential Cohesion: If the element of a module form the components of the sequence, where the output from one component of the sequence is input to the next. 3.Communicational Cohesion: If all tasks of the module refer to or update the same data structure, e.g., the set of functions defined on an array or a stack. 4.Procedural Cohesion: If the set of purpose of the module are all parts of a procedure in which particular sequence of steps has to be carried out for achieving a goal, e.g., the algorithm for decoding a message. 5.Temporal Cohesion: When a module includes functions that are associated by the fact that all the methods must be executed in the same time. 6.Logical Cohesion: If all the elements of the module perform a similar operation. For example Error handling, data input and data output, etc. 7.Coincidental Cohesion: If it performs a set of tasks that are associated with each other very loosely, if at all.
  • 31. Coupling Cohesion Coupling is also called Inter-Module Binding. Coupling shows the relationships between modules. In coupling, modules are linked to the other modules. Cohesion is also called Intra-Module Binding. Cohesion shows the relationship within the module. In cohesion, the module focuses on a single thing.
  • 33. Function Oriented Design Function Oriented Design is an approach to software design where the design is decomposed into a set of interacting units where each unit has a clearly defined function.
  • 34. Function Oriented Design Techniques used by Function Oriented Design are: Data Flow Diagram(A data flow diagram (DFD) maps out the flow of information for any process or system. ) Data Dictionaries(Data dictionaries are simply repositories to store information about all data items defined in DFDs. At the requirement stage, data dictionaries contain data items.) Structure Charts(Components are read from top to bottom and left to right. When a module calls another, it views the called module as black box, passing required parameters and receiving results) Pseudo Codes(It uses keywords and indentation. Pseudo codes are used as replacement for flow charts. It decreases the amount of documentation required.)
  • 37. Object Oriented Design Object-oriented design is the process of planning a system of interacting objects for the purpose of solving a software problem. It is one approach to software design. In the object-oriented design method, the system is viewed as a collection of objects (i.e., entities).
  • 41. Measurement A software metric is a measure of software characteristics which are measurable or countable. Software metrics are valuable for many reasons, including measuring software performance, planning work items, measuring productivity, and many other uses. Within the software development process, many metrics are that are all connected. Software metrics are similar to the four functions of management: Planning, Organization, Control, or Improvement. Need of Software Measurement: Software is measured to: Create the quality of the current product or process. Anticipate future qualities of the product or process. Enhance the quality of a product or process. Regulate the state of the project in relation to budget and schedule.
  • 42. Metrics A metric is a measurement of the level that any impute belongs to a system product or process. There are 4 functions related to software metrics: 1. Planning 2. Organizing 3. Controlling 4. Improving
  • 44. Metrics Classification of Software Metrics: There are 3 types of software metrics: Product Metrics: Product metrics are used to evaluate the state of the product, tracing risks and undercovering prospective problem areas. The ability of team to control quality is evaluated. Process Metrics: Process metrics pay particular attention on enhancing the long term process of the team or organization. Project Metrics: The project matrix describes the project characteristic and execution process. Number of software developer Staffing pattern over the life cycle of software Cost and schedule
  • 48. Measurement Advantages: Predicts error rate. Predicts maintenance effort Simple to calculate Measure overall quality Used for any language Disadvantages: Depends on complete code Complexity increases as program level decreases Difficult to compute
  • 50. Function Point (FP) Based Measures Function point is used in the estimation of software development cost which is the most important potential use of function point data. Function point may be used to compute the following importance metrics: Productivity = FP/persons-months Quality = Defects/FP Cost = Rupees/FP Organizations that use function point method develop criteria for determining whether a particular entry is low, average or high.
  • 51. Function Point (FP) Based Measures There are three types of transaction functions. External Inputs External Outputs External Inquiries Advantages: Size oriented metrics Language dependent Understood by the non technical user To estimate cost and resources required for software development Disadvantages: Manually Counting Process Difficult to Understand Requires Experience
  • 52. Function Point (FP) Based Measures
  • 54. Cyclomatic Complexity Measures Cyclomatic complexity is a software metric used to measure the complexity of a program. It gives the quantitative measure of logical complexity of the program. How to Calculate Cyclomatic Complexity? McCabe proposed the cyclomatic number, V (G) of graph theory as an indicator of software complexity. The cyclomatic number is equal to the number of linearly independent paths through a program in its graphs representation. For a program control graph G, cyclomatic number, V (G), is given as: V (G) = E - N + 2 * P E = The number of edges in graphs G N = The number of nodes in graphs G P = The number of connected components in graph G.
  • 56. Cyclomatic Complexity Measures Advantages: Gives complexity of various designs Computed early in life cycle Easy to apply Measures minimum effort Disadvantages: Measures program’s control complexity and not the data complexity Nested conditional structures are harder to understand Ignore the size of the program