Se Ppt Final
Se Ppt Final
❖ Software Requirements
❖ Software Design
SYLLABUS
❖ Software Quality
➢ Definition
➢ Size factors
➢ Managerial issue
UNIT - I Planning a Software Project
★ Program is a set of instruction which is written in any language which computer can understand.
❖ PROJECT
➢ A software project is one instance of this problem, and the development process is
what is used to achieve this purpose.
SOFTWARE
❖ Software is a set of items or objects that form a configuration that includes
1. Programs
2. Documents
3. Data
❖ Software consists of
(1) Instructions (computer programs) that when executed provided desired function and
performance
(2) Data structures that enable the programs to adequately manipulate information
(3) Documents that describe the operation and use of the programs.
SOFTWARE DEFINITIONS
★ Software is the dynamic behavior of programs on real computers and auxiliary equipment.
★ A software product is a model of the real world, and the real world is constantly changing.
★ Computer programs and associated documentation such as requirements, design models and
user manuals.
★ Software products may be developed for a particular customer or may be developed for a
general market.
SOFTWARE PRODUCTS
-IEEE
SOFTWARE SIZE FACTORS
It helps the project manager to further predict the effort and time which will be needed to
build the project. Various measures are used in project size estimation
SOFTWARE QUALITY AND PRODUCTIVITY FACTORS
Software quality and programmer productivity can be improved by improving the processes used to
develop and maintain software products.
MANAGERIAL ISSUES
❖ Managerial activities are as important as the technical activities for the success of a software
product.
❖ Managers control the resources and the environment in which technical activities occur.
❖ Managers also have the responsibility for ensuring that software products are delivered on time and
within cost estimates and that products exhibit the functional and quality attributes desired by the
customer.
❖ Other management responsibilities include developing business plans, recruiting the customers,
developing marketing strategies and recruiting and training employees
MANAGERIAL ISSUES(Cont.) – Management Problems
❖ Procedures and techniques for the selection of project managers are poor.
❖ The accountability of many software engineering projects is poor leaving some question as to who is
responsible for various project functions.
❖ The ability to accurately estimate the resources required to accomplish a software development project is poor.
❖ Success criterion for software development projects are frequently inappropriate. This results in software
products that are unreliable difficult to use and difficult to maintain.
❖ Decision rules to aid in selecting the proper organizational structure are not available.
❖ Decision rules to aid in selecting the correct management techniques for . software engineering projects are not
available.
❖ Procedures methods and techniques for designing a project control system that will enable project managers to
successful control their project are not readily available.
❖ Procedures, techniques, strategies and aids that will provide visibility of progress to the project manager are not
available.
❖ Standards and techniques for measuring the quality of performance and the quality of production expected from
programmers and data processing analysts are not available.
MANAGERIAL ISSUES(Cont.)_ Solving the Problems
❖ Educate and train top management project managers and software developers.
❖ Develop truthful, accurate cost and schedule estimates that are accepted by management and
customer and manage to them.
❖ Select project managers based on ability to manage software projects rather than on technical
ability or availability.
❖ Make specific work assignments to software developers and apply job performance standards
PROJECT PLANNING PROCESS
2. Functional format.
❖ The event workers are divided supported the useful cluster to that they belong
❖ Totally different groups of programmers perform different phases of a project.
❑ Software Cost Estimation:
❖ Software
❖ Cost factors
❖ specification techniques
UNIT - II ❖ level estimation
specification
Software Project
A Software Project is the complete procedure of software development from requirement gathering to
testing and maintenance, carried out according to the execution methodologies, in a specified period
project, deciding scope of software product, estimation of cost in various terms, scheduling of
1. Project Planning
2. Scope Management
3. Project Estimation
PROJECT ESTIMATION
❖ Effort Estimation
❖ Time Estimation
❖ Cost Estimation
SOFTWARE SIZE ESTIMATION
★ Software size may be estimated either in terms of KLOC (Kilo Line of Code) or by
calculating number of function points in the software.
★ Lines of code(LOC) depend upon coding practices and Function points vary according to the
user or software requirement
TIME ESTIMATION
➢ Once size and efforts are estimated, the time required to produce the software can be estimated.
➢ Efforts required is segregated into sub categories as per the requirement specifications and
interdependency of various components of software.
➢ Software tasks are divided divided into smaller tasks, activities or events by Work Breakthrough
Structure (WBS).
➢ The tasks tasks are scheduled on day-to-day basis or in calendar months.
➢ The sum of time required to complete all tasks in hours or days is the total time invested to
complete complete the project.
COST ESTIMATION
1. Size of software
2. Software quality
3. Hardware
6. Travel involved
7. Communication
PUTNAM MODEL
✓ This model is made by Lawrence H. Putnam, which is based on Norden’s frequency distribution
distribution (Rayleigh curve).
✓ Putnam model maps time and efforts required with software size.
MANAGING SOFTWARE PROJECT
MANAGING SOFTWARE PROJECT
MANAGING SOFTWARE PROJECT
MANAGING SOFTWARE PROJECT
SOFTWARE MEASUREMENT
SOFTWARE MEASUREMENT
FUNCTION POINT METRICS
FUNCTION POINT METRICS
FUNCTION POINT METRICS
Estimating Software Maintenance Cost
❖ The major concerns about maintenance during the planning phase of a software projects are
estimating the number of maintenance programmers that will be needed and specifying the
60% -Enhancement
20% -Adaptation
20% -Corrections
Estimating Software Maintenance Cost
In survey 487 business data processing installations, Lientz and Swanson determined that typical level
FOR EXAMPLE:
If a maintenance programmer can maintain 32KDSI, then two a maintenance programmers are
❑ Boehm suggests that maintenance effort can be activity ratio , which is the number of source
instruction to be added and modified in any given time period divided by the total number of
instructions:
❑ Number of programmer –months required for maintenance in the corresponding time peri
❑ In enhancement is provided by an effort adjustment factor EAF, which recognizes that the effort
multipliers for maintenance may be different from the effort multipliers used for development:
Maintenance Effort Distribution
Maintenance Effort Distribution
Heavy emphasis on reliability and the use of modern programming practices during development may
reduce the amount of effort required for maintenance, while low emphasis on reliability and modern
➔ Purpose of SRS
➔ Requirement analysis
➔ SRD Characteristics
requirements
3
Software
Requirement ➔ Complete description of behaviour of system
➔ SRD Characteristics
requirements
4
Software
Requirement ➔ Basis of agreement between customer and software
Specification team
➔ Basis for software design
➔ SRS ➔ Reduce development effort
➔ Purpose of SRS ➔ Basis for estimating costs and schedules
➔ Requirement analysis ➔ Baseline for verification and validation
➔ SRD Characteristics
requirements
5
Software
Requirement ➔ After successful negotiation with customer, the SRS
➔ SRS
➔ Purpose of SRS
➔ Requirement analysis
➔ SRD Characteristics
requirements
6
Software
Requirement ➔ Agreement between customer and software team
➔ Requirement analysis
➔ SRD Characteristics
requirements
7
Software
Requirement ➔ U
Specification ➔ C
➔ SRS ➔ C
➔ Purpose of SRS ➔ C
➔ Requirement analysis
➔ M
◆ SRS -> SRD
➔ V
➔ What SRD Provides?
➔ T
➔ SRD Characteristics
requirements
8
Software
Requirement ➔ One to one interview
➔ SRS ➔ Prototyping
requirements
9
Software
Requirement
Engineering Tasks
➔ Inception
➔ Elicitation
➔ Elaboration
➔ Negotiation
➔ Specification
➔ Validation
➔ Requirement Management
16
SOFTWARE ENGINEERING PROCESS
Software Engineering Tasks
Software Engineering Tasks
System Requirement Specification
System Requirement Specification
System Requirement Specification
System Requirement Specification
LANGUAGES AND PROCESSORS FOR REQUIREMENTS SPECIFICATION
❑ A number of special purpose languages and processors have been developed to permit concise
processors.
PSL/PSA
❑ The Problem statement language(PSL) was developed by professor Daniel teich row at the
university on Michigan
❑ The problem statement analyzer is the PSL processor
❑ PSL and PSA system is sometimes referred to as components of the ISDOS project
❑ PSL/PSA system is sometimes referred to as the ISDOS system
➢ System input/output flow
➢ System structure
➢ Data structure
➢ Data derivation
➢ System size and volume
➢ System dynamics
➢ System properties
➢ Project management
PSL System input/output flow
❖ The system I/o flow aspect deals with the interaction between a system and its environment.
System Structure
❖ System structure is concerned with the hierarchies among objects in a system.
Data Structure
❖ Data structure aspect includes all the relationships that exist among data used and/or manipulated
by a system as seen by the users of the system.
Data derivation
❖ The data derivation aspect of the system description specifies which data object are involved in
particular processes in the system.
System size and volume
❖ The system size and volume aspect is concerned with the size of the system and those factors the
volume of processing required.
System dynamic
❖ Aspect of a system description presents the manner in which the system” behaves” over time.
❖ Project management requires that project related information.
PSA (PROBLEM STATEMENT ANALYZER)
Reference reports
Summary reports
Analysis reports
RSL / REVS
❖ The requirements statement language(RSL) was developed by the TRW defense and space Systems
❖ The fundamental characteristic of RSL is the flow oriented approach used to describe real-time
systems.
❖ The requirements engineering and validation system (REVS) operates on RSL statements.
❑ DATA DIAGRAM specify data object in the nodes and activities on the arcs.
❑ ACTIVITY DIAGRAM the inputs and output are data flows and the mechanisms are processors
❖ Design Notations
UNIT - III
❖ Design Techniques
❖ Test plan
4
➔ More Details:
Software Design ◆ Items defined during design phase
● Module structure
➔ Meaning
➔ Types of Design ● Control relationship among modules
➔ Design Principles ● Interface among modules
➔ Coupling and Cohesion ● Data structures involved in modules
◆ Meaning
● Algorithm for individual modules
◆ Types of Coupling
◆ Types of Cohesion
5
➔ What a Module consists of?
Software Design ◆ Several functions
◆ Associated data structures
➔ Meaning
➔ Types of Design
➔ Design Principles
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
6
➔ Types of Design:
Software Design ◆ Conceptual -
➔ Meaning ◆ Technical -
➔ Types of Design
➔ Design Principles
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
7
1. Design Principles:
Software Design a. 3 Principles:
i. Abstraction
➔ Meaning
➔ Types of Design ii. Encapsulation
➔ Design Principles iii. Information Hiding
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
8
➔ Coupling and Cohesion:
Software Design ◆ Module Coupling:
● Coupling is the measure of degree of
➔ Meaning
➔ Types of Design interdependence between modules.
➔ Design Principles
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
9
➔ Coupling and Cohesion:
Software Design ◆ Module Cohesion:
● Coupling is the measure of degree of
➔ Meaning
➔ Types of Design interdependence within a module.
➔ Design Principles
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
10
➔ Coupling and Cohesion:
Software Design ◆ Characteristics of GOOD design:
11
➔ Coupling and Cohesion:
Software Design ◆ Important Note:
● Abstraction Concept
➔ Meaning
➔ Types of Design ● High coupling and low cohesion -
➔ Design Principles Encapsulation
➔ Coupling and Cohesion ● Cohesion - Information Hiding
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
12
➔ Types of Coupling:
Software Design
➔ Meaning
➔ Types of Design LOW
➔ Design Principles
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
HIGH
14
➔ Types of Coupling:
Software Design ➔ 1. Content Coupling:
◆ One component references the other
➔ Meaning
➔ Types of Design ◆ Very High level of coupling
➔ Design Principles ◆ Ex: Component directly modifies the another
➔ Coupling and Cohesion component’s data
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
15
➔ Types of Coupling:
Software Design ➔ 2. Common Coupling:
◆ Two components share the common data
➔ Meaning
➔ Types of Design ● Global data structures
➔ Design Principles ● Common block
➔ Coupling and Cohesion ◆ Ex: one component gets data from multiple
◆ Meaning
sources
◆ Types of Coupling
◆ Types of Cohesion
16
➔ Types of Coupling:
Software Design ➔ 3.Control Coupling:
◆ Components passes control parameters to
➔ Meaning
➔ Types of Design coupled components.
➔ Design Principles ◆ Ex: A flag set in one module is checked in
➔ Coupling and Cohesion another module.
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
17
➔ Types of Coupling:
Software Design ➔ 4. Stamp Coupling:
◆ Components passes data structures to another
➔ Meaning
➔ Types of Design component, that does not have access to the
➔ Design Principles entire data structure
➔ Coupling and Cohesion ◆ It always require second component
◆ Meaning
◆ Operation performed by first component and
◆ Types of Coupling
second component may be different.
◆ Types of Cohesion
◆ Ex: Composite data item like array or structures
18
➔ Types of Coupling:
Software Design ➔ 5.Data Coupling:
◆ If there are homogeneous data item passed
➔ Meaning
➔ Types of Design through parameters.
➔ Design Principles ◆ Ex: a integer, a float or a character
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
19
➔ Types of Cohesion:
Software Design
➔ Meaning
➔ Types of Design
➔ Design Principles
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
21
➔ Types of Cohesion:
Software Design ➔ 1. Coincidental Cohesion:
◆ Parts of the component are only related by their
➔ Meaning
➔ Types of Design location in source code.
➔ Design Principles ◆ Elements are scattered.
➔ Coupling and Cohesion ◆ Ex: Module contains random collection of
◆ Meaning
functions.
◆ Types of Coupling
◆ Types of Cohesion
22
➔ Types of Cohesion:
Software Design ➔ 2. Logical Cohesion:
◆ Elements of the components are related logically
➔ Meaning
➔ Types of Design but not functionally.
➔ Design Principles ◆ Operations related, Function different
➔ Coupling and Cohesion ◆ Ex: Set of print functions for different purpose
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
23
➔ Types of Cohesion:
Software Design ➔ 3. Temporal Cohesion:
◆ Elements of the components are related by time.
➔ Meaning
➔ Types of Design ◆ All functions are executed in same time span.
➔ Design Principles ◆ Ex: Initialization of variable
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
24
➔ Types of Cohesion:
Software Design ➔ 4. Procedural Cohesion:
◆ Elements of the components ensures particular
➔ Meaning
➔ Types of Design order of execution.
➔ Design Principles ◆ Ex: Kruskal’s Algorithm
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
25
➔ Types of Cohesion:
Software Design ➔ 5.Communicational Cohesion:
◆ Elements of the components performs series of
➔ Meaning
➔ Types of Design actions by a sequence of steps to be followed by
➔ Design Principles the product and all actions are performed in a
➔ Coupling and Cohesion common data structure.
◆ Meaning
◆ Ex: The set of functions defined on an array or
◆ Types of Coupling
stack.
◆ Types of Cohesion
26
➔ Types of Cohesion:
Software Design ➔ 6. Sequential Cohesion:
◆ Output of one component is the input to the
➔ Meaning
➔ Types of Design another.
➔ Design Principles ◆ Occur naturally in function programming
➔ Coupling and Cohesion ◆ Ex:
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
27
➔ Types of Cohesion:
Software Design ➔ 7.Functional Cohesion:
◆ Every essential element to a single computation
➔ Meaning
➔ Types of Design is contained in the component.
➔ Design Principles ◆ Ex:
➔ Coupling and Cohesion
◆ Meaning
◆ Types of Coupling
◆ Types of Cohesion
28
DESIGN NOTATIONS
Notation used to specify the external characteristic , architectural structure and processing details of a
@ Dataflow diagram
@ Structure charts
@ HIPO diagrams
@ Procedure specification
@ Pseudo code
➢ Dataflow diagrams are directed graphs in which the nodes specify processing activities and the arcs
specify the data items transmitted between processing nodes.
➢ Dataflow diagram can be expressed using informal notation can be used to processing nodes , data
sources , data sinks and data stores.
➢ Dataflow diagrams are excellent communicating with customer during requirements and analysis.
➢ There are also used for representation of external and top level internal design specifications
STRUCTURED CHARTS
➢ Structure chats are used to architectural design to document hierarchical structure , parameters and
interconnection in a system .
➢ It differs from a flowchart in two ways:
## Structured chart has know decisions boxes.
## Sequential ordering of tasks
HIPO DIAGRAMS
➢ The format of a procedure interface specification of architectural design , only information in level
1 need to supplied . The information on levels 2,3, and 4 can be included in successive steps.
➢ It provides initial architectural design , specification of side effects , exception handling ,
processing algorithms and data representation.
PSEUDO CODE NOTATION
➢ Pseudo code notation can be used in both the architectural and detailed design phases .
➢ The designer describes system characteristics using short , concise , that are structured by
keywords such as If-Then- Else , While-Do and End.
➢ Pseudo code can replace flowcharts and reduce the amount of external documentations required to
describe system
STRUCTURED FLOWCHARTS
➢ Flowcharts means are specifying and documenting algorithmic detailed in a software system.
➢ Flowchart interoperate rectangular boxes for actions , diamond shaped boxes for decisions ,
directed arcs for interconnections for boxes.
➢ Single entry , single exit allows hierarchical nesting of structured flowchart to design in top-down
fashion.
DECISION TABLES
➢ Decision tables can be used to specify complex decision logic in a high level software
specification.
➢ There are useful for specifying algorithmic logic during detailed design.
➢ Several preprocessor packages are available to translate decision tables into COBOL.
DESIGNING TECHNIQUES
➢ The designing process involves in developing the conceptual view of the system.
➢ The Software Design Techniques that takes place are:
Stepwise Refinement
Levels Of Abstraction
Structured Design
Integrated Top-Down Development
Jackson Structured Programming
STEPWISE REFINEMENT
➢ Stepwise refinement is a top–down technique for decomposing a system from high level
specification into more elementary levels.
➢ It is also known as “ Stepwise program Development” and “Successive Refinement”.
➢ The activities that takes place are:
1. Decomposing design decisions to elementary levels
2. Isolating design aspects that are not truly interdependent.
❖ Postponing decisions concerning representation details as long as possible.
❖ Carefully demonstrating that each successive step in the refinement process is a faithful expansion
of previous steps.
❖ The procedure for computing the first N prime numbers and writing them in file F is complete.
❖ It is complete because each pseudocode statement has been refined into executable source code.
❖ The efficiency of the program can be vastly improved in several ways.
❖ For example,
it is not necessary to check X for divisibility by every number K between S and X-l.
STEPWISE REFINEMENT
LEVELS OF ABSTRACTION
➢ Structured design was developed by Constantine as a top-down technique for architectural design
of software systems.
➢ The basic approach is structured design is systematic conversion of data-flow diagrams into
structure charts.
➢ Design heuristics such as coupling and cohesion are used to guide the design process.
➢ The first step in structured design is review and refinement of the data flow diagram(s) developed
during requirements definition and external design.
STRUCTURED DESIGN
INTEGRATED TOP – DOWN DEVELOPMENT
JACKSON STRUCTURED PROGRAMMING
JACKSON STRUCTURED PROGRAMMING
CMM (Capability ➔ Meaning:
Maturity Model) ◆ CMM is developed by Software Engineering
Institute(SEI)
➔ Meaning
◆ Well known benchmark for determining the
➔ Levels
◆ Level 1 quality of the process in the organisation
◆ Level 2
◆ Level 3 ◆ Provides guidelines for maturity of those software
◆ Level 4 products
◆ Level 5
◆ It has 5 levels
◆ Except level-1, all other level activities are
explained by KPA[Key Process Areas]
31
CMM (Capability ➔ Level 1: Initial:
Maturity Model)
◆ Undefined
➔ Meaning ◆ Chaotic
➔ Levels ◆ No process at place
◆ Level 1
◆ Level 2
➔ NO KPAs
◆ Level 3
◆ Level 4
◆ Level 5
32
CMM (Capability ➔ Level 2: Repeatable:
Maturity Model)
◆ Basic process management in place
➔ Meaning ◆ Prior experience in same kind of project is used
➔ Levels
◆ Level 1 ➔ KPAs:
◆ Level 2
◆ Project planning
◆ Level 3
◆ Requirement management
◆ Level 4
◆ Level 5 ◆ Configuration management
◆ Sub contract management
◆ SQA
33
CMM (Capability ➔ Level 3: Defined:
Maturity Model)
◆ Additional process management activities are
➔ Meaning documented
➔ Levels ◆ Specifies set of integrated project specific
◆ Level 1 software engineering and management processes
◆ Level 2
◆ Level 3
➔ KPAs:
◆ Level 4
◆ Level 5 ◆ Organisation process definition
◆ Organisation process focus
◆ Peer reviews
◆ Intergroup coordination
◆ Training programs
34
CMM (Capability ➔ Level 4: Managed:
Maturity Model)
◆ Standards are built for organisation.
➔ Meaning ◆ Specifies set quantitative goals for specific
➔ Levels software engineering and management processes
◆ Level 1
◆ Level 2
➔ KPAs:
◆ Level 3
◆ Software Qulaity Management
◆ Level 4
◆ Level 5 ◆ Quantitative Management
35
CMM (Capability ➔ Level 5: Optimized:
Maturity Model)
◆ Leveraging on knowledge and innovative ideas
➔ Meaning ◆ Continuous process improvement Using feedback
➔ Levels ◆ Prevention of occurrence of defect
◆ Level 1
◆ Level 2
◆ Level 3
➔ KPAs:
◆ Level 4
◆ Level 5 ◆ Process Change Management
◆ Technology Change Management
◆ Defect prevention
36
❑ Implementation issues
❖ Coding style
UNIT - IV ❖ Standards and guidelines
❖ Documentation guidelines
❖ Type checking
❖ Scooping rules
❖ Concurrency mechanisms.
REAL TIME AND DISTRIBUTED SYSTEM DESIGN
Sensors:
Actuators:
• A real-time system is a software system where the correct functioning of the system depends on
the results produced by the system and the time at which these results are produced.
• A soft real-time system is a system whose operation is degraded if results are not produced
• A hard real-time system is a system whose operation is incorrect if results are not produced
• Given a stimulus, the system must produce a response within a specified time.
• Periodic stimuli.
• Aperiodic stimuli.
• For example, a system power failure may trigger an interrupt which must be processed by the
system.
A REAL-TIME SYSTEM MODEL
SENSOR/ACTUATOR PROCESSES
• Hard-real time systems may have to programmed in assembly language to ensure that deadlines
are met.
• Languages such as C allow efficient programs to be written but do not have constructs to
➢ Development of project intermediate work products the opportunity to establish milestones and to
conduct inspections and reviews.
➢ These activities in turn expose errors, provide increased project communication, keep the project
on schedule and permit verification that the design satisfies the requirements.
➢ The two major milestones during design are
1. The Preliminary Design Review (PDR)
2. The Critical Design Review (CDR)
➢ The PDR is typically held near the end of architectural design and prior to detailed design CDR
occurs at the end of detailed and prior to implementation.
TYPES OF REVIEW
1. WALKTHROUGH
➢ It is not a formal process/review
➢ It is led by the authors
➢ Author guide the participants through the document according to his or her thought process to
achieve a common understanding and to gather feedback.
➢ Useful for the people if they are not from the software discipline, who are not used to or cannot
easily understand software development process.
➢ Is especially useful for higher level documents like requirement specification, etc.
GOAL OF WALKTHROUGH
❑ To present the documents both within and outside the software discipline in order to gather the
information regarding the topic under documentation.
❑ To explain or do the knowledge transfer and evaluate the contents of the document
❑ To achieve a common understanding and to gather feedback.
❑ To examine and discuss the validity of the proposed solutions.
TYPES OF REVIEW
2. Technical Review:
❖ It is less formal review
❖ It is led by the trained moderator but can also be led by a technical expert
❖ It is often performed as a peer review without management participation
❖ Defects are found by the experts (such as architects, designers, key users) who focus on the content
of the document.
❖ In practice, technical reviews vary from quite informal to very formal
The goals of the technical review are:
❖ To ensure that an early stage the technical concepts are used correctly
❖ To access the value of technical concepts and alternatives in the product
❖ To have consistency in the use and representation of technical concepts
❖ To inform participants about the technical content of the document
TYPES OF REVIEW
3. INSPECTION
❑ It is the most formal review type
❑ It is led by the trained moderators
❑ During inspection the documents are prepared and checked thoroughly by the reviewers before the
meeting
❑ It involves peers to examine the product
❑ A separate preparation is carried out during which the product is examined and the defects are found
❑ The defects found are documented in a logging list or issue log
❑ A formal follow-up is carried out by the moderator applying exit criteria
The goals of inspection are:
❑ It helps the author to improve the quality of the document under inspection
❑ It removes defects efficiently and as early as possible
❑ It improve product quality
❑ It create common understanding by exchanging information
❑ It learn from defects found and prevent the occurrence of similar defects
SOFTWARE TESTING
VERIFICATION AND VALIDATION
• Verification and Validation is the process of investigating that a software system satisfies
specifications and standards and it fulfills the required purpose.
Verification: "Are we building the product right?"
Validation: "Are we building the right product?"
- Barry Boehm
Verification:
❑ Verification is the process of checking that a software achieves its goal without any bugs. It is the
process to ensure whether the product that is developed is right or not.
❑ It verifies whether the developed product fulfills the requirements that we have.
❑ Verification is Static Testing.
Activities involved in verification:
1. Inspections
2. Reviews
3. Walkthroughs
4. Desk-checking
SOFTWARE TESTING
Validation:
❑ Validation is the process of checking whether the software product is up to the mark or in other
words product has high level requirements.
❑ It is the process of checking the validation of product i.e. it checks what we are developing is the
right product.
❑ it is validation of actual and expected product.
❑ Validation is the Dynamic Testing.
❑ Activities involved in validation:
1. Black box testing
2. White box testing
3. Unit testing
4. Integration testing
VERIFICATION VS VALIDATION
BLACK BOX TESTING VS WHITE BOX TESTING
SOFTWARE IMPLEMENTATION
STRUCTURED PROGRAMMING
❖ It encourages encourages the developer to use subroutines and loops instead of using simple jumps
in the code, thereby thereby bringing clarity in the code and improving its efficiency Structured
programming also helps programmer to reduce coding time and organize code properly.
1. Top-down analysis
2. Modular Programming
3. Structured Coding
STRUCTURED PROGRAMMING MAIN CONCEPTS
1. Top-down analysis
❖ A software is always made to perform some rational work. This rational work is known as problem in
the software parlance. Thus it is very important that we understand how to solve the problem.
❖ Under top-down analysis, the problem is broken down into small pieces where each one has some
significance. Each problem is individually solved and steps are clearly stated about how to solve the
problem.
2. Modular Programming
❖ While programming, the code is broken down into smaller group of instructions. These groups are
known as modules, subprograms or subroutines.
❖ Modular programming based on the understanding of top-down analysis.
❖ It discourages jumps using ‘goto’ statements in the program, which often makes the program flow
non-traceable. Jumps are prohibited and modular format is encouraged in structured programming.
3. Structured Coding
❖ In reference with top-down analysis, structured coding sub-divides the modules into further smaller units
of code in the order of their execution.
❖ Structured programming uses control structure, which controls the flow of the program, whereas
structured coding uses control structure to organize its instructions in definable patterns.
FUNCTONAL PROGRAMMING
Functional programming provides means of computation as mathematical functions, which produces results
irrespective of program state. This makes it possible to predict the behavior of the program.
Functional programming uses the following concepts:
First class and High-order functions:
These functions have capability to accept another function as argument or they return other
functions as results.
CODING
❑ Good software development organizations normally require their programmers to adhere to some
well-defined and standard style of coding called coding standards.
❑ Most software development organizations formulate their own coding standards that suit them
most, and require their engineers to follow these standards rigorously.
❑ The purpose of requiring all engineers of an organization to adhere to a standard style of coding is
the following:
• A coding standard gives a uniform appearance to the codes written by different engineers.
• It enhances code understanding.
• It encourages good programming practices.
CODING STANDARDS AND GUIDELINES
❖ A coding standard lists several rules to be followed during coding, such as the way variables are to
be named, the way the code is to be laid out, error return conventions, etc.
❖ Good software development organizations usually develop their own coding standards and
guidelines depending on what best suits their organization and the type of products they develop.
THE FOLLOWING ARE SOME REPRESENTATIVE CODING STANDARDS.
Rules for limiting the use of global:
These rules list what types of data can be declared global and what cannot.
Contents of the headers preceding codes for different modules:
❑ The information contained in the headers of different modules should be standard for an
organization.
❑ The exact format in which the header information is organized in the header can also be specified.
❑ The following are some standard header data:
• Name of the module. • Date on which the module was created.
• Author’s name. • Modification history.
• Synopsis of the module. • Global variables accessed/modified by the module.
•Different functions supported, along with their input/output parameters.
CODING STANDARDS
Naming conventions for global variables, local variables, and constant identifiers:
❑ A possible naming convention can be that global variable names always start with a capital letter,
local variable names are made of small letters, and constant names are always capital letters.
❑ The way error conditions are reported by different functions in a program are handled should be
❑ For example, different functions while encountering an error condition should either return a 0 or 1
consistently.
CODING GUIDELINES
Do not use a coding style that is too clever or too difficult to understand:
❖ Code should be easy to understand. Many inexperienced engineers actually take pride in writing
cryptic and incomprehensible code.
❖ Clever coding can obscure meaning of the code and hamper understanding. It also makes
maintenance difficult.
Avoid obscure side effects:
❖ The side effects of a function call include modification of parameters passed by reference,
modification of global variables, and I/O operations.
❖ An obscure side effect is one that is not obvious from a casual examination of the code. Obscure
side effects make it difficult to understand a piece of code.
❖ For example, if a global variable is changed obscurely in a called module or some file I/O is
performed which is difficult to infer from the function’s name and header information, it
becomes difficult for anybody trying to understand the code.
CODING GUIDELINES
➢ As a rule of thumb, there must be at least one comment line on the average for every three-source
line.
➢ A function that is very lengthy is usually very difficult to understand as it probably carries out
many different functions. For the same reason, lengthy functions are likely to have
➢ Use of goto statements makes a program unstructured and makes it very difficult to understand.
CODING REVIEW
➢ Code review for a model is carried out after the module is successfully compiled and the all the
➢ Code reviews are extremely cost-effective strategies for reduction in coding errors and to produce
➢ Normally, two types of reviews are carried out on the code of a module.
Inspection
❑ In this technique, after a module has been coded, successfully compiled and all syntax errors
eliminated.
❑ The team performing code walk through should not be either too big or too small. Ideally, it should
❑ Discussion should focus on discovery of errors and not on how to fix the discovered errors.
❑ In order to foster cooperation and to avoid the feeling among engineers that they are being
evaluated in the code walk through meeting, managers should not attend the walk through
meetings.
CODE INSPECTION
❑ In contrast to code walk through, the aim of code inspection is to discover some common types of
❑ Following is a list of some classical programming errors which can be checkedduring code
inspection:
•Use of uninitialized variables.
• Jumps into loops.
• Nonterminating loops.
• Incompatible assignments.
• Array indices out of bounds.
• Mismatches between actual and formal parameter in procedure calls.
• Use of incorrect logical operators or incorrect precedence among operators.
• Improper modification of loop variables.
• Comparison of equally of floating point variables, etc.
SOFTWARE DOCUMENTATION
❑ When various kinds of software products are developed then not only the executable files and the
source code are developed but also various kinds of documents such as users’ manual, software
requirements specification (SRS) documents, design documents, test documents, installation
manual, etc are also developed as part of any software engineering process. All these documents
are a vital part of good software development practice.
❑ Good documents are very useful and server the following purposes:
• Good documents enhance understandability and maintainability of a software product. They
reduce the effort and time required for maintenance.
• Use documents help the users in effectively using the system.
• Good documents help in effectively handling the manpower turnover problem. Even when
an engineer leaves the organization, and a new engineer comes in, he can build up the required
knowledge easily.
• Production of good documents helps the manager in effectively tracking the progress of the
project. The project manager knows that measurable progress is achieved if a piece of work is done
and the required documents have been produced and reviewed.
SOFTWARE DOCUMENTATION
❑ Different types of software documents can broadly be classified into the following:
1. Internal documentation
2. External documentation
SOFTWARE DOCUMENTATION
1. Internal documentation
❑ Internal documentation is the code comprehension features provided as part of the source code
itself. Internal documentation is provided through appropriate module headers and comments
embedded in the source code. Internal documentation is also provided through the useful variable
names, module and function headers, code indentation, code structuring, use of enumerated types
and constant identifiers, use of user-defined data types, etc. Careful experiments suggest that out of
all types of internal documentation meaningful variable names is most useful in understanding the
code. This is of course in contrast to the common expectation that code commenting would be the
most useful. The research finding is obviously true when comments are written without thought.
For example, the following style of code commenting does not in any way help in understanding
the code.
a = 10; /* a made 10 */
❑ But even when code is carefully commented, meaningful variable names still are more helpful in
understanding a piece of code. Good software development organizations usually ensure good
internal documentation by appropriately formulating their coding standards and coding guidelines.
SOFTWARE DOCUMENTATION
2. External documentation
External documentation is provided through various types of supporting documents such as users’
manual, software requirements specification document, design document, test documents, etc. A
systematic software development style ensures that all these documents are produced in an orderly
fashion.
IMPLEMENTATION ISSUES
Focus here is not on programming, although this is obviously important, but on other implementation
Reuse
Most modern software is constructed by reusing existing components or systems. When you
are developing software, you should make as much use as possible of existing code.
Configuration management
During the development process, you have to keep track of the many different versions of
Host-target development
Production software does not usually execute on the same computer as the software
development environment. Rather, you develop it on one computer (the host system) and execute it on
Focus here is not on programming, although this is obviously important, but on other implementation
Reuse
Most modern software is constructed by reusing existing components or systems. When you
are developing software, you should make as much use as possible of existing code.
Configuration management
During the development process, you have to keep track of the many different versions of
Host-target development
Production software does not usually execute on the same computer as the software
development environment. Rather, you develop it on one computer (the host system) and execute it on
❖ From the 1960s to the 1990s, most new software was developed from scratch, by writing all
❖ The only significant reuse or software was the reuse of functions and objects in programming
language libraries.
❖ Costs and schedule pressure mean that this approach became increasingly unviable, especially
❖ An approach to development based around the reuse of existing software emerged and is now
❖ The costs of the time spent in looking for software to reuse and assessing whether or not it
❖ Where applicable, the costs of buying the reusable software. For large off-the-shelf systems,
❖ The costs of adapting and configuring the reusable software components or systems to reflect
❖ The costs of integrating reusable software elements with each other (if you are using software
from different sources) and with the new code that you have developed.
REUSE COSTS
❖ The costs of the time spent in looking for software to reuse and assessing whether or not it
❖ Where applicable, the costs of buying the reusable software. For large off-the-shelf systems,
❖ The costs of adapting and configuring the reusable software components or systems to reflect
❖ The costs of integrating reusable software elements with each other (if you are using software
from different sources) and with the new code that you have developed.
CONFIGURATION MANAGEMENT
❖ Configuration management is the name given to the general process of managing a changing
software system.
❖ The aim of configuration management is to support the system integration process so that all
developers can access the project code and documents in a controlled way, find out what changes
have been made, and compile and link components to create a system.
Most software is developed on one computer (the host), but runs on a separate machine (the target).
More generally, we can talk about a development platform and an execution platform.
i) A platform is more than just hardware.
ii) It includes the installed operating system plus other supporting software such as a
database management system or, for development platforms, an interactive development
environment.
Development platform usually has different installed software than execution platform; these
platforms may have different architectures.
❑ QUALITY ASSURANCE
❑ walk through and inspection
❑ Static analysis
❑ symbolic exception
❑ TESTING
5
➔ Difference between testing and debugging:
Software Testing ➔ Testing and debugging are different processes which occurs
at same time,
➔ Meaning ◆ Where testing -
➔ Difference between testing and ◆ Where debugging -
debugging
➔ Verification and Validation
➔ Types of testing
◆ Unit testing
◆ Integration testing
◆ System testing/Verification
● Alpha test
● Beta test
◆ Acceptance test/Validation
◆ Regression test
◆ Performance test
● Load test
● Stress test
6
➔ Verification and Validation:
Software Testing ➔ Revision:
➔ Meaning
➔ Difference between testing and
debugging
➔ Verification and Validation
➔ Types of testing
◆ Unit testing
◆ Integration testing
◆ System testing/Verification
● Alpha test
● Beta test
◆ Acceptance test/Validation
◆ Regression test
◆ Performance test
● Load test
● Stress test
7
➔ Types of testing
Software Testing ◆ Unit testing:
● Tests the functionality within the module.
➔ Meaning
➔ Difference between testing and
debugging
➔ Verification and Validation
➔ Types of testing
◆ Unit testing
◆ Integration testing
◆ System testing/Verification
● Alpha test
● Beta test
◆ Acceptance test/Validation
◆ Regression test
◆ Performance test
● Load test
● Stress test
8
➔ Types of testing
Software Testing ◆ Integration testing:
● Tests are focussing more on interaction
➔ Meaning
between the modules
➔ Difference between testing and
debugging
➔ Verification and Validation
➔ Types of testing
◆ Unit testing
◆ Integration testing
◆ System testing/Verification
● Alpha test
● Beta test
◆ Acceptance test/Validation
◆ Regression test
◆ Performance test
● Load test
● Stress test
9
➔ Types of testing:
Software Testing ◆ System testing/ Verification testing:
● Tests the software as a part of the bigger
➔ Meaning
system for which it is created.
➔ Difference between testing and
debugging
○ Alpha test
➔ Verification and Validation ○ Beta test
➔ Types of testing ◆ Alpha test:
◆ Unit testing ● Conducted by customer @ Developer’s
◆ Integration testing site.
◆ System testing/Verification
◆ Beta test:
● Alpha test
● Beta test ● Conducted by customer @ Customer’s
◆ Acceptance test/Validation site.
◆ Regression test
◆ Performance test
● Load test
● Stress test
10
➔ Types of testing:
Software Testing ◆ Acceptance test/Validation test:
● Testing is conducted by customer to
➔ Meaning
validate all requirements.
➔ Difference between testing and
debugging
➔ Verification and Validation
➔ Types of testing
◆ Unit testing
◆ Integration testing
◆ System testing/Verification
● Alpha test
● Beta test
◆ Acceptance test/Validation
◆ Regression test
◆ Performance test
● Load test
● Stress test
11
➔ Types of testing:
Software Testing ◆ Regression test:
● Ensuring that in the process of modifying
➔ Meaning
the existing system, the original
➔ Difference between testing and
debugging
functionality of the system was not
➔ Verification and Validation disturbed.
➔ Types of testing
◆ Unit testing
◆ Integration testing
◆ System testing/Verification
● Alpha test
● Beta test
◆ Acceptance test/Validation
◆ Regression test
◆ Performance test
● Load test
● Stress test
12
➔ Types of testing:
Software Testing ◆ Performance test:
● It encompasses a series of tests that are
➔ Meaning
designed to assess system response time
➔ Difference between testing and
debugging
and reliability.
➔ Verification and Validation ○ Load testing
➔ Types of testing ○ Stress testing
◆ Unit testing
◆ Integration testing
◆ System testing/Verification
● Alpha test
● Beta test
◆ Acceptance test/Validation
◆ Regression test
◆ Performance test
● Load test
● Stress test
13
➔ Types of testing:
Software Testing
◆ Performance test:
➔ Meaning ○ Load testing
➔ Difference between testing and
○ Stress testing
debugging
➔ Verification and Validation ◆ Load testing:
➔ Types of testing
◆ Unit testing
● Testing takes place at variety of load
◆ Integration testing levels in various combinations
◆ System testing/Verification
● Alpha test ◆ Stress testing:
● Beta test ● Loading is increased to the breaking point
◆ Acceptance test/Validation
◆ Regression test to determine how much capacity the
◆ Performance test software can handle.
● Load test
● Stress test
14
➔ Types of testing:
Software Testing
◆ Performance test:
➔ Meaning ○ Load testing
➔ Difference between testing and
○ Stress testing
debugging
➔ Verification and Validation ◆ Load testing:
➔ Types of testing
◆ Unit testing
● Testing takes place at variety of load
◆ Integration testing levels in various combinations
◆ System testing/Verification
● Alpha test ◆ Stress testing:
● Beta test ● Loading is increased to the breaking point
◆ Acceptance test/Validation
◆ Regression test to determine how much capacity the
◆ Performance test software can handle.
● Load test
● Stress test
15
➔ Types of testing:
Software Testing
◆ Functional testing or BB testing:
16
Software Testing ➔ Functional testing or BB testing:
● Boundary value analysis
17
Software Testing ➔ Functional testing or BB testing:
● Equivalence class partitioning
● Input domain if a program is partitioned into a
➔ Part -2
➔ Functional testing or BB testing finite number of equivalence classes.
◆ Boundary value analysis ● Test the representative value of each class
◆ Equivalence class
partitioning
◆ Decision table based testing
➔ Structural testing or WB or GB
◆ Flow graph approach
◆ Graph matrix
◆ Loop testing
18
Software Testing ➔ Functional testing or BB testing:
● Decision table based testing
● Widely accepted graphical tool for
➔ Part -2
➔ Functional testing or BB testing representing process specifications
◆ Boundary value analysis ● It is useful for describing situations in
◆ Equivalence class which number of combination of actions
partitioning taken under varying set of conditions
◆ Decision table based testing
● Used to analyse complex logical
➔ Structural testing or WB or GB
◆ Flow graph approach relationship
◆ Graph matrix
◆ Loop testing
19
Software Testing ➔ Structural testing or WB or GB:
◆ A complementary approach to functional
➔ Part -2 testing.
➔ Functional testing or BB testing
◆ Examine the internal structure of the program.
◆ Boundary value analysis
◆ Equivalence class ◆ Basic types:
partitioning
◆ Decision table based testing
● Static white box testing:
➔ Structural testing or WB or GB ○ Test the program without run it
◆ Flow graph approach
◆ Graph matrix ● Dynamic White box testing:
◆ Loop testing ○ Test the program by run it
20
Software Testing ➔ Structural testing or WB or GB:
◆ Flow graph approach
◆ The simple notation used for representing the
➔ Part -2
➔ Functional testing or BB testing control flow of the program
◆ Boundary value analysis
◆ Equivalence class
partitioning
◆ Decision table based testing
➔ Structural testing or WB or GB
◆ Flow graph approach
◆ Graph matrix
◆ Loop testing
21
Software Testing ➔ Structural testing or WB or GB:
◆ Graph matrix
● It is a two dimensional matrix that helps in
➔ Part -2
➔ Functional testing or BB testing determining the basic set
◆ Boundary value analysis
◆ Equivalence class
partitioning
◆ Decision table based testing
➔ Structural testing or WB or GB
◆ Flow graph approach
◆ Graph matrix
◆ Loop testing
22
Software Testing ➔ Structural testing or WB or GB:
◆ Loop testing
● Simple loops, Nested loops, concatenated
➔ Part -2
➔ Functional testing or BB testing
loops and unstructured loops
◆ Boundary value analysis
◆ Equivalence class
partitioning
◆ Decision table based testing
➔ Structural testing or WB or GB
◆ Flow graph approach
◆ Graph matrix
◆ Loop testing
23
Software Testing ➔ Integration Testing:
● Tests are focussing more on interaction
➔ Part -3
between the modules
➔ Integration testing ➔ Types:
◆ Top Down ◆ Top Down
◆ Bottom Up ◆ Bottom Up
◆ Sandwich ◆ Sandwich
◆ Bigbang ◆ Bigbang
24
Software Testing ➔ Integration Testing:
➔ TOP Down:
◆ Top level modules are developed and tested
➔ Part -3
➔ Integration testing first
◆ Top Down ◆ Dummy bottom level modules are required
◆ Bottom Up called “STUB”.
◆ Sandwich
◆ Bigbang
25
Software Testing ➔ Integration Testing:
➔ Bottom Up:
◆ Bottom level modules are developed and tested
➔ Part -3
➔ Integration testing first
◆ Top Down ◆ Dummy top level modules are required called
◆ Bottom Up “DRIVERS”.
◆ Sandwich
◆ Bigbang
26
Software Testing ➔ Integration Testing:
➔ Sandwich:
◆ Combines both top down and bottom up, such
➔ Part -3
➔ Integration testing that a layer is identified in between.
◆ Top Down
◆ Bottom Up
◆ Sandwich
◆ Bigbang
27
Software Testing ➔ Integration Testing:
➔ Big Bang:
◆ Test all modules independently
➔ Part -3
➔ Integration testing ◆ Then, integrate the module and perform test
◆ Top Down ◆ Finally, the integrated software is tested as a
◆ Bottom Up whole.
◆ Sandwich
◆ Bigbang
28
➔ Terminologies:
Terminologies ◆ Error/Mistake:
➔ Error/Mistake ● An incorrect human action produces incorrect
➔ Bug/Defect/Fault
➔ Failure result
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
12
➔ Terminologies:
Terminologies ◆ Bug/Defect/Fault:
➔ Error/Mistake ● Deviation between the expected behaviour and
➔ Bug/Defect/Fault
➔ Failure actual behaviour identified while testing.
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
13
➔ Terminologies:
Terminologies ◆ Failure:
➔ Error/Mistake ● Deviation between the expected behaviour and
➔ Bug/Defect/Fault
➔ Failure actual behaviour identified by customer.
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
14
➔ Terminologies:
Terminologies ◆ Robustness:
➔ Error/Mistake ● The extent to which software tolerates
➔ Bug/Defect/Fault
➔ Failure unexpected problems.
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
15
➔ Terminologies:
Terminologies ◆ Reliability:
➔ Error/Mistake ● The extent to which software program intended
➔ Bug/Defect/Fault
➔ Failure to function without failures.
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
16
➔ Terminologies:
Terminologies ◆ Reengineering:
➔ Error/Mistake ● It is restructuring or rewriting part or all of the
➔ Bug/Defect/Fault
➔ Failure system, NOT single functionality.
➔ Robustness ●
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
17
➔ Terminologies:
Terminologies ◆ CleanRoom Software Engineering:
➔ Error/Mistake ● Do it right at first time
➔ Bug/Defect/Fault
➔ Failure ● This process emphasises mathematical
➔ Robustness verification of correctness before program
➔ Reliability
➔ Re-engineering construction commences.
➔ Cleanroom software engineering
➔ Refactoring ➔ Advantages:
➔ Software Architecture ◆ Extremely low failure rates
➔ Correctness
➔ Accuracy ➔ Why important:
➔ Completeness ◆ Mistakes creates rework
➔ Release ◆ Rework takes time and increases cost
➔ Version
➔ Variant
➔ Software Reuse
18
➔ Terminologies:
Terminologies ◆ CleanRoom Software Engineering: 2
➔ Error/Mistake
➔ Bug/Defect/Fault Steps in CRSE:
➔ Failure 1. Analysis and design are created using box
➔ Robustness representation
➔ Reliability 2. Box - Specific level of abstraction
➔ Re-engineering 3. Correctness verification is applied once box is
➔ Cleanroom software engineering created
➔ Refactoring 4. Statistical usage testing done
➔ Software Architecture 5. Error records are verified
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
19
➔ Terminologies:
Terminologies ◆ Refactoring:
➔ Error/Mistake ● It is the process of changing the software system
➔ Bug/Defect/Fault
➔ Failure in such a way that, it doesn’t alter the external
➔ Robustness behaviour of code but improves the internal
➔ Reliability
➔ Re-engineering structure.
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
20
➔ Terminologies:
Terminologies ◆ Software Architecture:
➔ Error/Mistake ● It is the structure or structures of system which
➔ Bug/Defect/Fault
➔ Failure comprises of software elements, the extremely
➔ Robustness visible properties of the elements and
➔ Reliability
➔ Re-engineering relationship among them.
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
21
➔ Terminologies:
Terminologies ◆ Correctness:
➔ Error/Mistake ● The extent to which software meets expectations
➔ Bug/Defect/Fault
➔ Failure
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
22
➔ Terminologies:
Terminologies ◆ Accuracy:
➔ Error/Mistake ● Meeting specification with precision.
➔ Bug/Defect/Fault
➔ Failure
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
23
➔ Terminologies:
Terminologies ◆ Completeness:
➔ Error/Mistake ● The extent to which software have specified
➔ Bug/Defect/Fault
➔ Failure functions
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
24
➔ Terminologies:
Terminologies ◆ Release:
➔ Error/Mistake ● An instant of the system delivered to the
➔ Bug/Defect/Fault
➔ Failure customer.
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
25
➔ Terminologies:
Terminologies ◆ Version:
➔ Error/Mistake ● An instant of the system that differs in someway
➔ Bug/Defect/Fault
➔ Failure from other instances.
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
26
➔ Terminologies:
Terminologies ◆ Variant:
➔ Error/Mistake ● An instant of the system which is functionally
➔ Bug/Defect/Fault
➔ Failure identical with other instances but designed for
➔ Robustness different hardware and software.
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
27
➔ Terminologies:
Terminologies ◆ Software Reuse:
➔ Error/Mistake ● The process of using existing software artifacts
➔ Bug/Defect/Fault
➔ Failure and knowledge to build new software.
➔ Robustness
➔ Reliability
➔ Re-engineering
➔ Cleanroom software engineering
➔ Refactoring
➔ Software Architecture
➔ Correctness
➔ Accuracy
➔ Completeness
➔ Release
➔ Version
➔ Variant
➔ Software Reuse
28
➔ Maintenance:
Maintenance ◆ Definition:
➔ Definition ● Any work done to change the software after it is
➔ Types
in operation is called maintenance.
◆ ADAPTIVE
◆ PERFECTIVE
◆ CORRECTIVE
◆ PREVENTIVE
29
➔ Maintenance:
Maintenance ◆ Adaptive Maintenance:
➔ Definition ● Environment change for ever changing
➔ Types
environment.
◆ ADAPTIVE
◆ PERFECTIVE
◆ CORRECTIVE
◆ PREVENTIVE
30
➔ Maintenance:
Maintenance ◆ Perfective Maintenance:
➔ Definition ● Feature request
➔ Types
● Improving processing efficiency or performance
◆ ADAPTIVE
◆ PERFECTIVE improving.
◆ CORRECTIVE
◆ PREVENTIVE
31
➔ Maintenance:
Maintenance ◆ Corrective Maintenance:
➔ Definition ● Bug report
➔ Types
● Modifications due to defect.
◆ ADAPTIVE
◆ PERFECTIVE
◆ CORRECTIVE
◆ PREVENTIVE
32
➔ Maintenance:
Maintenance ◆ Preventive Maintenance:
➔ Definition ● Take measure to prevent the above said
➔ Types
maintenance activities.
◆ ADAPTIVE
◆ PERFECTIVE
◆ CORRECTIVE
◆ PREVENTIVE
33