SE-1
SE-1
Unit I
Introduction: Introduction to software engineering – some definitions –
some size factors –quality and productivity factors – managerial issuesPlanning
a software project: Defining the problem– developing a solution strategy –
planning the development process – planning an organizational structure – other
planning activities
Unit II
Software Cost Estimation: software cost factors – software cost
estimation techniques –estimating software maintenance costs
Software Requirements Definition: The software requirements
specification – formal specification techniques
Unit III
Software Design: Fundamental design concepts – modules and
modularization criteria – design notations – design techniques – Stepwise
refinement – Integrated top down development – Jackson Structured
Programming -detailed design considerations –test plan – milestones,
walkthroughs and inspections – design guidelines
Unit IV
Software Implementation: Structured coding techniques – coding style –
standards and guidelines - Verification and validation techniques – Quality
Assurance – Walkthrough and inspection -Unit Testing and Debugging –
System Testing
Unit V
Software Maintenance: Enhancing maintainability during development –
managerial aspects of software engineering – configuration management –
source code metrics – other maintenance tools and techniques
Text Book:
Page 1
SOFTWARE ENGINEERING
UNIT-I
INTRODUCTION
Definition
SIZE FACTORS
Page 2
SOFTWARE ENGINEERING
2. Distribution of Effort
1 to 3 years development and 15 years maintenance
The distribution effort 40/60, 30/70, 10/90
Page 3
SOFTWARE ENGINEERING
Determines the level of management control and the types of tools and
techniques required on a software project.
Trivial: One programmer working part time, develop the software for the
exclusive use of the programmer and one usually discarded after a few months.
Small projects: Scientific application written by engineers to solve numerical
problems.
Medium Size projects: Assemblers, Compliers, Small management Systems,
inventory, process control applications.
Large Projects : Large compilers, time-sharing systems, data base packages,
graphics programs for data acquisition and display.
Very large projects: air traffic control, missile, defence and military command
and control systems
Page 4
SOFTWARE ENGINEERING
Miscellaneous 15%
Training 6%
Mail 5%
1. Individual level:
Page 5
SOFTWARE ENGINEERING
Experiment by Sackman
12 programmers implemented 2 programs
2. Team Communication
Many programmers low social needs prefer to work alone
Increased product size results in decreasing programmer
Brooks- number of paths among the programmers is n(n-1)/2 n= number
of programmers If n=3 3(3-1)/2=6/2=3
3. Product Complexity:
Three level of product complexity.
HLL
(Pascal, Ada, Assembly language)
5 to 10 times(effort)
PL/1 or Ada
Page 6
SOFTWARE ENGINEERING
4. Appropriate Notations:
Good notations clarify the relationships
5. Systematic approaches
use accepted procedures and techniques
6. Change Control
Software adapts general purpose computing hardware to particular
applications
7. Level of Technology
Hardware and software facilities available for developing, using and
maintain a software product.
Modern programming practices include use of systematic analysis and
design techniques, appropriate notations, structured coding, systematic
techniques for examining design documents and source code.
8. Level of Reliability:
Basic level of reliability
Extreme Reliability – Great care in analysis, design, implementation,
system testing and maintenance of software product.
9. Problem Understanding:
Not understanding problem leads to limitations
Careful planning, customer interviews, task observation, user manual,
product specifications can increase both customers and developer
understands the problem.
10. Available time
Six programmer effort can be completed in 6 months or six programmers
in one month.
11. Required skills
Good communication skills, writing text book-no misspellings.
No errors in syntax or punctuation.
Absolute consistency in cross referencing.
15. Appropriate goals:
software product should provide, generality, efficiency, reliability.
Page 7
SOFTWARE ENGINEERING
MANAGERIAL ISSUES
Managerial activities:
Managers have responsibility for ensuring that software products are
delivered on time and within cost estimates.
Developing business plans, recruiting customers, developing marketing
strategies and recruiting and training employees.
Important management problems
Planning for software engineering projects is generally poor.
Procedures and techniques for the selection of project managers are poor.
Responsibilities for various project functions.
Ability to accurately estimate the resources.
Success criteria of projects are frequently inappropriate.
Page 8
SOFTWARE ENGINEERING
Goals
Qualitative Quantitative
System enhance the professional skill System should be delivered within 12
months
System should make users job The system should reduce the cost of a
interesting transaction by 25%
Page 9
SOFTWARE ENGINEERING
Requirements
Quantified requirements Qualitative requirement
Phase accuracy shall be within 0.5 degrees Accuracy shall be sufficient to support mission
Response to external interrupts shall be 0.25 second System shall provide real-time response
maximum
System shall reside in 50k bytes of memory System shall make efficient use of primary memory
Page 10
SOFTWARE ENGINEERING
Page 11
SOFTWARE ENGINEERING
The products cascade from one level to the next in smooth progression
planning
Requirement
System definition
Planning Project plan
Cost estimates and work schedules
Page 12
SOFTWARE ENGINEERING
Maintenance activities
a. enhancement of capabilities
b. adaptation of software to new processing environment
c. correction of software bugs
Page 13
SOFTWARE ENGINEERING
Page 14
SOFTWARE ENGINEERING
Page 15
SOFTWARE ENGINEERING
The system definition and project plan in the cost of performing the
planning and preparing the documents, cost of verifying the customer
needs.
Software requirement specification includes the cost complete with
respect to the system definition and the customer needs.
Cost of design activities and preparing the design specification and the
test plan, plus the cost of modifying the correcting the system definition,
project plan and software requirement specification.
The cost of product implementation is cost of user manual, system
definition, project plan, software requirement specification, design
specification, verification plan plus the cost of verifying that the
implementation is correct, complete and consistent.
Finally, the cost of software maintenance is the sum of the costs of
performing product enhancement, making adaptations to new processing
requirements and fixing bugs.
Page 16
SOFTWARE ENGINEERING
Page 17
SOFTWARE ENGINEERING
e. Successive Versions
Page 18
SOFTWARE ENGINEERING
Dashed line indicate the implementation of the 𝐼𝑡ℎversion may reveal the
need for further analysis and design before proceeding with
implementation of version 𝐼+1.
1. Planning structure
a. Project format
Involves a team of programmers who conduct a project from start to
finish.
Team members do project definition, design, implement, test, conduct
Maintenance team
c. Matrix Format
Each of the functions has its own management team and a group of
specialist personnel who are concerned only with that function.
Page 19
SOFTWARE ENGINEERING
Page 20
SOFTWARE ENGINEERING
Advantages
Opportunity to each team member to contribute to decisions
Learn from one another
Increased job satisfaction
Disadvantages
All team members must work well together
Weakening individual responsibility and authority
Page 21
SOFTWARE ENGINEERING
Highly structured
The work is allocated by the chief programmer
The programmers between two and five, write code, debug, document
and unit test
Librarian maintain program listings, design documents and test plans
Back-up programmer serves as a consultant to the chief programmer on
various technical problems
Liason with customer publications group quality assurance group
perform some analysis, design.
In a hierarchical team, the project leader assigns tasks, attends reviews and
walkthroughs, detects problem areas, balances the workload and participates in
technical activities.
Page 22
SOFTWARE ENGINEERING
d. Management by objectives(MBO)
Using MBO, employees set their own goals and objectives with the help
of their supervisor, participate in the setting of their supervisors goals.
Objectives are set for periods of 1 to 3 months
MBO is well suited to the milestones and intermediate work products of
software engineering.
Page 23
SOFTWARE ENGINEERING
UNIT II
SOFTWARE COST ESTIMATION
Experiment sackman and colleagues. The goal was to determine the relative
influence of batch and time-shared access on programmer’s productivity.
2. Product complexity
Application programs
Utility programs
System programs
PM=programmer months
KDSI= number of thousands of delivered instructions
Application
PM=2.4*(KDSI)**1.05
Utility
PM=3.0*(KDSI)**1.12
System
PM=3.6*(KDSI)**1.20
Page 24
SOFTWARE ENGINEERING
3. Product size:
A large software product is obviously more expensive to develop the
small one. Boehm’s equations indicate that the rate of increase in required effort
grows with the number of source instructions at an exponential rate slightly
greater than one.
4. Available time:
Total project effort is sensitive to the calendar time available for project
completion. Most of them agree that software projects require more total effort
if development time is compressed or expanded from the optimal time.
6. Level of technology
Software development project is reflected by the programming language,
the abstract machine, the programming practices and software tools used. The
number of source instructions written per day is largely dependent of the
language used, written in HLL, expand into several machine level statements.
1. Expert judgement
The most widely used cost estimation technique is expert judgement, which is
an inherently top-down estimation technique.
Expert judgement relies on the experience background and business sense of
one or more key people in the organization.
Advantages
Experience can also be a liability.
The expert may be confident that the project is similar to a previous one, but
may have overlooked some factors that make the new project significantly
different.
They complete their estimates. They may ask questions of the co-ordinator but
they do not discuss their estimates with one another.
The coordinator prepared distributes a summary of the estimators, responses
and includes any unusual rationales, noted by the estimators.
Page 26
SOFTWARE ENGINEERING
Estimators complete another estimate, using the results from the previous
estimate.
The process is iterated for as many rounds as required . No group discussion
is allowed during the entire process.
Product hierarchy
Page 27
SOFTWARE ENGINEERING
Bottom-up estimators
Constructive cost model(COCOMO) is an algorithmic cost model described
by bohem
COCOMO effort multipliers
a. Product attributes
b. computer attributes
c. personal attributes
d. project attributes
Ex: normal organic mode equations apply in the following types of situations.
Small to medium size projects (2k to 32k) familiar applications area.
Stable, well-understood virtual machine in house development effort.
Labor costs: This includes the cost of the personnel who perform the
maintenance, such as software developers, engineers, and technicians.
Hardware and software costs: This includes the cost of hardware and
software tools used for maintenance, such as servers, software licenses, and
development tools.
Training costs: This includes the cost of training personnel to perform
maintenance tasks, such as software developers, engineers, and technicians.
The effort of software maintenance can include:
Time and resources: This includes the time and resources required to
perform the maintenance, such as the time required to identify and fix the
problem, test the solution, and implement the solution.
Communication and coordination: This includes the effort required to
communicate and coordinate with stakeholders, such as customers and
other teams.
Testing and validation: This includes the effort required to test and
validate the solution to ensure that it is working correctly and that it does
not cause any new problems.
The cost and effort of software maintenance can be reduced by:
Page 28
SOFTWARE ENGINEERING
Corrective Maintenance
Adaptive Maintenance
Perfective Maintenance
Preventive Maintenance
SOFTWARE REQUIREMENTS
• The process of establishing the services that the customer requires from a
system and the constraints under which it operates and is developed
• Requirements may be functional or non-functional
• Functional requirements describe system services or functions
• Non-functional requirements is a constraint on the system or on the
development process
Page 29
SOFTWARE ENGINEERING
Types of requirements
• User requirements
• Statements in natural language (NL) plus diagrams of the services the
system Provides and its operational constraints. Written for customers
• System requirements
• A structured document setting out detailed descriptions
Written as a contract between client and contractor
• Software specification
• A detailed software description which can serve as a basis for a design
or implementation. Written for developers
AN INFORMAL DFD
Page 30
SOFTWARE ENGINEERING
Sec 3 includes user displays, report formats, user commands, DFD , data
dictionary.
A formal DFD
Page 31
SOFTWARE ENGINEERING
ORDER PROCESSING
The entries in a data dictionary include the name of the data item and
attributes such as the DFD, where it is used its purpose, where it is
derived from its sub items and any notes that may be appropriate.
Page 32
SOFTWARE ENGINEERING
Sec 9: software product acceptance criteria are specified i.e functional and
performance test that must be performed, and the standards to be applied to the
source code.
Sec 12: provides definition of terms that may be unfamiliar to the customer and
the product developers
1. Relational Notations:
a. Implicit equations: State the properties of a solution without stating a solution
method.
Inverse Matrix
Page 33
SOFTWARE ENGINEERING
(0<=X<=Y)[ABS(SQRT(X)**2-X)<E]
for all real values of X in the closed range 0 to Y, computing the square root of
X, squaring it, subtract X, result in error value.
Syntax:
OPERATION DOMAIN RANGE
NEW () STACK
PUSH (STACK, ITEM) STACK
POP (STACK) STACK
TOP (STACK) ITEM
EMPTY (STACK) BOOLEAN
AXIOMS
(1)EMPTY(NEW)= true
(2)EMPTY(PUSH(stack, item))=false
(3)POP(NEW)=error
(4)TOP(NEW)=error
(5)POP(PUSH(stack, item)=stack
(6)TOP(PUSH(stack, item))=item
Page 34
SOFTWARE ENGINEERING
Example
1. Given atoms a and b then a denotes the set {a} and b denotes the set {b}.
2. Given atoms a and b, then (a/b) denotes the set {a,b}
3. Given atoms a, b and c then ((a/b)/c) denotes the set {{a,b},c}
4. Given atoms a and b then (ab) denotes the set {ab} containing one element ab.
5. Given atoms a, b and c then ((ab)c) denotes the set {abc} containing one
element abc.
6. Given atom a, then (a)* denotes the set {e,a,aa,aaa….} e is the empty set.
Ex:
Page 35
SOFTWARE ENGINEERING
(a(b/c)) {ab,ac}
(a/b)* {e,a,b,aa,bb,ab,ba,aab…..}
((a(b/c)))* {e,ab,ac,abab,acac,abac,acab……}
* Kleene star
+ Kleene plus notations
2. State-oriented notations
Decision Rules
Rule1 Rule2 Rule3 Rule4
(Condition stub) (Condition entries)
(Action stub) (Action entries)
b. Transition tables
Transition tables are used to specify changes in the state of a system as a
function of driving forces.
Transition Diagram
Page 36
SOFTWARE ENGINEERING
Transition Table
Page 37
SOFTWARE ENGINEERING
𝐷𝑠 start marker
𝐷11 zero or more 𝐷11 messages
𝐷12 zero or more 𝐷12 messages
𝐷𝐸 end-of-data marker
The system for which the incoming data stream consists of a start marker
𝐷𝑠 , followed by zero or more 𝐷11 messages, followed by zero or more
𝐷12 messages followed by an end-of-data marker 𝐷𝐸 . The purpose is to
split 𝐷11 messages to file 𝐹6 and 𝐷12 messages to file 𝐹7 .
Page 38
SOFTWARE ENGINEERING
d. Petri Nets
Petri nets invented by carl petri at the university of Bonn, west germany.
Petri nets provide a graphical representation technique.
Petri nets overcome the limitations of finite state mechanisms.
Petri nets is represented as a bipartite directed graph. Two types of nodes
are called places(tokens) and transitions.
Petri nets are characterized by an initial marking of places and a firing
rule.
An enabled transition can fire , when a transition fires, each input place of
that transition loses one token and each output place of that transition
gains one token.
Petri net defined as a quadruple, consisting of
a set of places P
a set of Transitions T
a set of arcs A
a marking M
C=(P, T, A, M)
Page 39
SOFTWARE ENGINEERING
Page 40
SOFTWARE ENGINEERING
Both 𝑡1 and 𝑡2 are waiting for the other to fire and neither can proceed.
Page 41
SOFTWARE ENGINEERING
Page 42
SOFTWARE ENGINEERING
UNIT- III
SOFTWARE DESIGN
The External design and architectural design typically span the period from
software requirements review to preliminary design review. Detailed design
spans the period from preliminary design review to critical design review. The
situations are illustrated as below:
1. Abstraction
Page 43
SOFTWARE ENGINEERING
Abstract
Proceed
Concrete
2. Information Hiding
Information hiding is a fundamental design concept for software.
3. Structure
The use of structure permits decomposition of large system into smaller,
more manageable units with well-defined relationships to other units in
the system.
The most general form of system structure is a network. It is a directed
graph consisting of nodes and arcs.
Nodes data stores
Arcs information
Page 44
SOFTWARE ENGINEERING
Page 45
SOFTWARE ENGINEERING
Page 46
SOFTWARE ENGINEERING
4. Modularity
A module is a work assignment for an individual programmer.
Modular systems incorporate collections of abstractions in which each
functional abstraction, data abstraction and control abstraction handles a
local aspect of the problem being solved.
Page 47
SOFTWARE ENGINEERING
5. Concurrency
Software systems can be categorised as sequential or concurrent.
In sequential system one portion of the system is active at any given time.
Concurrency systems have independent processes that can be activated
simultaneously. If multiple processors are available.
Ex: mutual exclusion, deadlock, synchronization of processes.
6. Verification
Design is the bride between customer requirements and an
implementation that satisfies those requirements.
7. Aesthetics
When we speak mathematical elegance or structural beauty, we are
speaking of those properties that go beyond mere satisfaction of the
requirement.
ex: supreme court justice, I can’t define it
but I know it when I see it .
Modules and modularization Criteria:
Architectural design has the goal of producing well structured, modular
software system. The software module named entity has the following
characteristics:
Modules contain instructions, processing logic and data structures.
Modules can be separately compiled and stored in a library.
Modules can be included in a program.
Module segments can be used by invoking a name and some parameters.
Modules can use other modules.
Ex: procedures, subroutines, functions.
Page 48
SOFTWARE ENGINEERING
Page 49
SOFTWARE ENGINEERING
DESIGN NOTATIONS
Are directed graphs in which the nodes specify processing activities and
the arcs specify data items transmitted between processing nodes.
Like flow charts DFD can be used at any desired level of abstraction.
Page 50
SOFTWARE ENGINEERING
FORMAL DFD
Page 51
SOFTWARE ENGINEERING
2. Structure Charts
used during architectural design to document hierarchical structure,
Parameters and interconnections in a system.
Page 52
SOFTWARE ENGINEERING
3. HIPO Diagrams
HIPO diagrams (hierarchy-process-input-output) were developed at IBM,
as top down software development.
HIPO diagram contains
a. visual table of contents
b. set of overview diagrams
c. set of detail diagrams
HIPO consists of a
a. tree structured directory
b. summary of contents of overview diagram
c. Legend of symbol definition
Page 53
SOFTWARE ENGINEERING
Page 54
SOFTWARE ENGINEERING
4. PROCEDURE TEMPLATES
Formal of procedure template:
Procedure Name:
Part of: (subsystem name and number) LEVEL1
Called by:
Purpose:
Designer/date(S):
5. PSEUDOCODE
Used both in architectural and detailed design
Page 55
SOFTWARE ENGINEERING
6. STRUCTURED FLOWCHART
Flowcharts are the traditional means for specifying and documenting
algorithmic details in a software system.
Flowcharts incorporate boxes for actions, diamond shaped boxes for decisions,
directed arcs for specifying interconnections between boxes a variety of
Specifically shaped symbols to denote input, output and datastores.
Structured flowcharts are preferred where clarity of control flow is
emphasized.
Page 56
SOFTWARE ENGINEERING
Page 57
SOFTWARE ENGINEERING
Page 58
SOFTWARE ENGINEERING
7. Structured English
Used to provide a step-by-step specification for an algorithm.
Structured english is often used to specify cookbook recipes.
Preheat oven to 350 degree F.
Mix eggs, milk and vanilla
Add flour and baking soda
Pour into a greased baking dish
cook until done.
8. Decision Tables
Used to specify complex decisions logic in a high-level software
specification.
They are also useful for specifying algorithmic logic during detailed
design.
Design tables can be specified and translated into source code logic.
DESIGN TECHNIQUES
The design process involves developing a conceptual view of the system,
establishing system structure, identifying data streams and data stores,
decomposing high level functions into sub functions, establishing
relationships and interconnections among components developing
concrete data representations and specifying algorithmic details.
1. Stepwise Refinement
Page 59
SOFTWARE ENGINEERING
2. Levels of Abstraction
Describing by Dijkstra as a bottom up design technique, in which it is
designed hierarchically.
Each level of abstraction is composed of a group of related functions,
some of which are externally visible.
Each level of abstraction performs a set of services for the functions on
the next higher level of abstraction.
Page 60
SOFTWARE ENGINEERING
3. Structured Design
Developed by Constantine as a top down technique for architectural
design of software systems.
Design heuristics such as coupling and cohesion are used to guide the
design process
Page 61
SOFTWARE ENGINEERING
Page 62
SOFTWARE ENGINEERING
Page 63
SOFTWARE ENGINEERING
Mapping 3 steps:
1. The problem is modelled by specifying the input and output data structures
using tree structured diagrams.
2. The input and output model is converted into a structural model of the
program.
3. The structural model of the program is expanded into a detailed design model
that contains the operations needed to solve the problem.
Page 64
SOFTWARE ENGINEERING
Page 65
SOFTWARE ENGINEERING
Page 66
SOFTWARE ENGINEERING
Page 67
SOFTWARE ENGINEERING
WALKTHROUGH
Walkthrough is a method of conducting informal group/individual
review. In a walkthrough, author describes and explain work product in a
informal meeting to his peers or supervisor to get feedback. Here, validity
of the proposed solution for work product is checked.
It is cheaper to make changes when design is on the paper rather than at
time of conversion. Walkthrough is a static method of quality assurance.
Walkthrough are informal meetings but with purpose.
INSPECTION
An inspection is defined as formal, rigorous, in depth group review
designed to identify problems as close to their point of origin as possible.
Inspections improve reliability, availability, and maintainability of
software product.
Anything readable that is produced during the software development can
be inspected. Inspections can be combined with structured, systematic
testing to provide a powerful tool for creating defect-free programs.
Inspection activity follows a specified process and participants play well-
defined roles. An inspection team consists of three to eight members who
play roles of moderator, author, reader, recorder and inspector.
SOFTWARE DESIGN
Software design is an iterative process through which requirements are
translated into a “blueprint” for constructing the software. The design is
represented at a high level of abstraction. As design iterations occur,
subsequent refinement leads to design representation at much lower
levels of abstraction.
A set of principles for software design:
The design process should not suffer from “tunnel vision”.
The design should be traceable to the analysis model.
The design should not reinvent the wheel.
The design should “minimize the intellectual distance” between the
software and the problem in the real world.
The design should exhibit uniformity and integration.
The design should be structured to accommodate change.
The design should be structured to degrade gently.
Design is not coding.
The design should be assessed for quality.
Page 68
SOFTWARE ENGINEERING
UNIT-IV
A Psychological View
Page 69
SOFTWARE ENGINEERING
Page 70
SOFTWARE ENGINEERING
An Engineering View
Although fast advances in processor speed and memory density have begun to
satisfy the need for super efficient code may applications still require fast and
low memory requirement programs. Particularly in the area of microcomputers,
many compilers have been integrated in development systems. Here the
userfriendliness of such systems must also be considered.
Page 71
SOFTWARE ENGINEERING
• The source code remains unchanged even when its environment changes.
• The source code may be integrated into different software packages with
little or not modification required because of programming language
characteristics.
Page 72
SOFTWARE ENGINEERING
CODING STYLE
i. Structuredness
ii. Expressiveness
iii. Data declaration
iv. Statement construction
v. Input/Output
vi. Outward form
vii. Efficiency
This refers to both the design and the implementation.
Although efficiency is an important quality attribute, we do not deal with
questions of efficiency here. Only when we understood a problem and its
solution correctly does it make sense to examine efficiency.
Structuredness
_ Decomposing a software system with the goal of mastering its complexity
through abstraction and striving for comprehensibility (Structuring in the
large.)
Page 73
SOFTWARE ENGINEERING
Page 74
SOFTWARE ENGINEERING
Page 75
SOFTWARE ENGINEERING
describes its task (and possibly how it works). This applies particularly
for the interface specifications.
• Explain the meaning of variables with a comment.
• Program components that are responsible for distinct subtasks should be
labeled with comments.
• Statements that are difficult to understand (e.g. in tricky procedures or
program components that exploit features of a specific computer) should
be described in comments so that the reader can easily understand them.
• A software system should contain comments that are as few and as
concise as possible, but as many adequately detailed comments as
necessary.
• Ensure that program modifications not only affect declarations and
statements but also are reflected in updated comments. Incorrect
comments are worse than none at all.
Note: These rules have deliberately been kept general because there are no rules
that apply uniformly to all software systems and every application domain.
Commenting software systems is an art, just like the design and implementation
of software systems.
Data declaration
Statement Construction
Page 76
SOFTWARE ENGINEERING
Input / Output
Outward form
_ Beyond name selection and commenting, the readability of software systems
also depends on its outward form.
Recommended rules for the outward form of programs:
• For every program component, the declarations (of data types, constants,
variables, etc.) should be distinctly separated form the statement section.
• The declaration sections should have a uniform structure when possible,
e.g. using the following sequence: constant, data types, classes and
modules, methods and procedures.
• The interface description (parameter lists for method and procedures)
should separate input, output and input/output parameters.
• Keep comments and source code distinctly separate.
• The program structure should be emphasized with indentation.
Efficiency
Page 77
SOFTWARE ENGINEERING
Page 78
SOFTWARE ENGINEERING
Page 79
SOFTWARE ENGINEERING
• Multi testing Strategy: Do not depend on single testing approach. When you
have lot of testing approaches available use them.
• Measure Change Impact: The changes for making the correction of an error
sometimes re introduces more errors keep the measure of impact of change on
project. Reset the new change to change check the compatibility of this fix with
whole project.
Static Analysis
Static analysis involves a set of methods used to analyze software source
code or object code determine how the software functions and establish
criteria to check its correctness. Static analysis studies the source code
without executing it and reveals a wide variety of information such as the
structure of the model used, data and control flow, syntax accuracy, and
more.
There are several types of static analysis methods-
Control Analysis :-
This software focuses on examining the controls used in calling structure,
control flow analysis and state transition analysis. The calling structure is
related to the model by identifying the calling and call structure.
Page 80
SOFTWARE ENGINEERING
Data Analysis :-
Ensures proper operation is applied to data objects such as data structures
and linked lists. In addition, this method also ensures that the defined data
is used properly. Data analysis involves two methods, namely, data
dependency and data-flow analysis. Data dependency is necessary to
assess the accuracy of synchronization across multiple processors. Data
flow analysis checks the definition and context of variables.
Fault/Failure Analysis :-
It analyzes faults (incorrectly component) and failure (incorrect behavior
of model component) in the model. This method uses the input-output
transformation description to identify the conditions that are cause for the
failure. To determine the failures in certain conditions the model design
specification is checked.
Interface Analysis :-
This software verifies and verifies interactive and distribution simulations
to check the code. There are two basic techniques for interface analysis
and user interface analysis examines sub model interfaces and determines
the accuracy of interface structure. User interface analysis examines the
user interface model and for the precautionary steps taken to prevent
errors during the user’s interaction with the model. This method also
focuses on how accurately the interface is integrated into the overall
model and simulation.
Symbolic Execution
Symbolic execution is a software testing technique that is useful to aid the
generation of test data and in proving the program quality.
Page 81
SOFTWARE ENGINEERING
Page 82
SOFTWARE ENGINEERING
Page 83
SOFTWARE ENGINEERING
White Box Testing - used to test each one of those functions behaviour is
tested.
Gray Box Testing - Used to execute tests, risks and assessment methods.
Debugging
Debugging is the process of fixing a bug in the software. In other words,
it refers to identifying, analyzing and removing errors. This activity
begins after the software fails to execute properly and concludes by
solving the problem and successfully testing the software. It is considered
to be an extremely complex and tedious task because errors need to be
resolved at all stages of debugging.
Debugging Strategies:
Study the system for the larger duration in order to understand the
system. It helps debugger to construct different representations of systems
to be debugging depends on the need. Study of the system is also done
actively to find recent changes made to the software.
Backwards analysis of the problem which involves tracing the program
backward from the location of failure message in order to identify the
region of faulty code. A detailed study of the region is conducting to find
the cause of defects.
Forward analysis of the program involves tracing the program forwards
using breakpoints or print statements at different points in the program
and studying the results. The region where the wrong outputs are obtained
is the region that needs to be focused to find the defect.
Using the past experience of the software debug the software with similar
problems in nature. The success of this approach depends on the expertise
of the debugger.
Page 84
SOFTWARE ENGINEERING
SYSTEM TESTING
System Testing (ST) is a black box testing technique performed to
evaluate the complete system the system's compliance against specified
requirements. In System testing, the functionalities of the system are
tested from an end-to-end perspective. System Testing is usually carried
out by a team that is independent of the development team in order to
measure the quality of the system unbiased. It includes both functional
and Non-Functional testing.
FORMAL VERIFICATION
Page 85
SOFTWARE ENGINEERING
Page 86
SOFTWARE ENGINEERING
SOFTWARE MAINTENANCE
Software maintenance is widely accepted part of SDLC now a days. It
stands for all the modifications and updating done after the delivery of
software product. There are number of reasons, why modifications are
required, some of them are briefly mentioned below:
Market Conditions - Policies, which changes over the time, such as
taxation and newly introduced constraints like, how to maintain
bookkeeping, may trigger need for modification.
Client Requirements - Over the time, customer may ask for new features
or functions in the software.
Host Modifications - If any of the hardware and/or platform (such as
operating system) of the target host changes, software changes are needed
to keep adaptability.
Organization Changes - If there is any business level change at client
end, such as reduction of organization strength, acquiring another
company, organization venturing into new business, need to modify in the
original software may arise.
Types of maintenance
Following are some types of maintenance based on their characteristics:
Page 87
SOFTWARE ENGINEERING
Page 88
SOFTWARE ENGINEERING
Configuration Identification:
Configuration identification is a method of determining the scope of the
software system. With the help of this step, you can manage or control
something even if you don't know what it is. It is a description that
contains the CSCI type (Computer Software Configuration Item), a
project identifier and version information.
Baseline:
A baseline is a formally accepted version of a software configuration
item. It is designated and fixed at a specific time while conducting the
SCM process. It can only be changed through formal change control
procedures.
Change Control:
Change control is a procedural method which ensures quality and
consistency when changes are made in the configuration object. In this
step, the change request is submitted to software configuration manager.
Activities during this process:
Page 89
SOFTWARE ENGINEERING
Page 90
SOFTWARE ENGINEERING
Page 91