Professional Documents
Culture Documents
Syllabus
Unit I
Unit II
Software Cost Estimation: software cost factors – software cost estimation
techniques- estimating software maintenance costs
Unit III
Software Design: Fundamental design concepts – modules and modularization criteria
– design notations – design techniques – detailed design considerations – realtime and
distributed system design – test plan – milestones, walkthroughs and inspections –
design guidelines
Unit IV
Software Testing: A Strategic approach to software testing – strategic issues – unit
testing –integration testing – validation testing – system testing – the art of debugging
Unit V
Software Quality Assurance: Quality concepts – software quality assurance – software
reviews – formal technical reviews – statistical quality assurance – the SQA plan – the
ISO 9000 quality standards
Page 1 of 77
UNIT – I
SOME DEFINITIONS
Computer software includes the source code and all the associated documents
and documentation that constitute a software product. Requirements documents,
design specifications, source code, test plans, principles of operation, quality
assurance procedures, software problem reports, maintenance procedures, user’s
manuals, installation instructions, and training aids are all components of a software
product.
Fundamental quality attributes that every software product should possess. These
include usefulness, clarity, reliability, efficiency, and cost-effectiveness.
Project size is a major factor that determines the level of management control
and the types of tools and techniques required on a software project. The following
categories give some indication of software project size.
Trivial projects
Small projects
Medium-size projects
Page 3 of 77
A project of medium size requires two to five programmers working for 1to 2
years and results in 10,000 to 50,000 lines of source code packaged in 250 to 1000
routines.
Large projects
Examples of extremely large systems include air traffic control, ballistic missile
defense, and military command and control systems.
Page 4 of 77
Team communication Stability of requirements
Available time
Individual ability
Team communication
Product complexity
Appropriate notations
Page 5 of 77
Good notations can clarify the relationships and interactions of interest, while
poor notations complicate and interfere with good practice. Programming languages
provide concise notations for the implementation phase of software development, but
there are no widely accepted notations for stating functional requirements, design
specifications, test plans, or performance criterial.
Systematic approaches
At this point in the evolution of software engineering it is often not clear which of the
various approaches to software development should be used in which situations.
Change control
Level of Technology
Level of Reliability
Problem understanding
Page 6 of 77
Failure to understand the true nature of the problem to be solved is a common
and difficult issue. There are several factors that contribute to this lack of
understanding.
Most customers (most people in general) are not trained to think in logical,
algorithmic terms, and often do not understand and true nature of their needs.
Sometimes the customer is not the end user of the system, and the software
engineer has no opportunity to investigate the user’s problem.
Available time
Required skills
Adequacy of training
Page 7 of 77
7. Work in groups.
Management skills
Software projects are often supervised by managers who have little, if any,
knowledge of software engineering. Many of the problems in software project
management are unique; even managers experienced in management of computer
hardware projects find software project management to be difficult due to the
differences in design methods, notations, development tools, and issues of concern.
Appropriate goals
Rising expectations
Other factors
MANAGERIAL ISSUES
Some of the methods mentioned for solving these problems were (solutions are
not paired with problems):
Page 9 of 77
goals to be achieved. The problem statement should be phrased in the
customer’s terminology.
2. Justify a computerized solution strategy for the problem.
3. Identify the functions to be provided by, and the constraints on, the hardware
subsystem, the software subsystem, and the people subsystem.
4. Determine system-level goals and requirements for the development process
and the work products.
5. Establish high-level acceptance criteria for the system.
10. Define a life-cycle model and an organizational structure for the project.
11. Plan the configuration management, quality assurance, and validation
activities.
12. Determine phase-dependent tools, techniques, and notations to be used.
13. Establish preliminary cost estimates for system development.
14. Establish a preliminary development schedule.
15. Develop preliminary staffing estimates.
16. Develop preliminary estimates of the computing resources required to operate
and maintain the system.
17. Prepare a glossary of terms.
18. Identify sources of information, and refer to them throughout the project plan.
Goals are targets for achievement, and serve to establish the framework for a
software development project.
Page 10 of 77
Goals can be either qualitative or quantitative:
A qualitative product goal: the system should make users’ jobs more
interesting.
SDLC Overview
SDLC, Software Development Life Cycle is a process used by software industry
to design, develop and test high quality softwares. The SDLC aims to produce a high
quality software that meets or exceeds customer expectations, reaches completion
within times and cost estimates.
SDLC is the acronym of Software Development Life Cycle.
It is also called as Software development process.
The software development life cycle (SDLC) is a framework defining tasks
performed at each step in the software development process.
SDLC Models
Page 11 of 77
There are various software development life cycle models defined and
designed which are followed during software development process. These models are
also referred as "Software Development Process Models". Each process model
follows a Series of steps unique to its type, in order to ensure success in process of
software development.
Following are the most important and popular SDLC models followed in the industry:
Waterfall Model
Iterative Model
Spiral Model
V-Model
Big Bang Model
The other related methodologies are Agile Model, RAD Model, Rapid
Application Development and Prototyping Models.
Page 12 of 77
System Design: The requirement specifications from first phase are studied in
this phase and system design is prepared. System Design helps in specifying
hardware and system requirements and also helps in defining overall system
architecture.
Implementation: With inputs from system design, the system is first
developed in small programs called units, which are integrated in the next
phase. Each unit is developed and tested for its functionality which is referred
to as Unit Testing.
Integration and Testing: All the units developed in the implementation phase
are integrated into a system after testing of each unit. Post integration the
entire system is tested for any faults and failures.
Deployment of system: Once the functional and non functional testing is
done, the product is deployed in the customer environment or released into the
market.
Maintenance: There are some issues which come up in the client
environment. To fix those issues patches are released. Also to enhance the
product some better versions are released. Maintenance is done to deliver
these changes in the customer environment.
All these phases are cascaded to each other in which progress is seen as flowing
steadily downwards (like a waterfall) through the phases. The next phase is started
only after the defined set of goals are achieved for previous phase and it is signed off,
so the name "Waterfall Model". In this model phases do not overlap.
Design: Design phase starts with the conceptual design in the baseline spiral
and involves architectural design, logical design of modules, physical product
design and final design in the subsequent spirals.
Construct or Build: Construct phase refers to production of the actual
software product at every spiral. In the baseline spiral when the product is just
thought of and the design is being developed a POC (Proof of Concept) is
developed in this phase to get customer feedback.
Then in the subsequent spirals with higher clarity on requirements and design
details a working model of the software called build is produced with a
version number. These builds are sent to customer for feedback.
Evaluation and Risk Analysis: Risk Analysis includes identifying,
estimating, and monitoring technical feasibility and management risks, such as
schedule slippage and cost overrun. After testing the build, at the end of first
iteration, the customer evaluates the software and provides feedback.
Following is a diagrammatic representation of spiral model listing the activities in
each phase:
V Model
The V - model is SDLC model where execution of processes happens in a
sequential manner in V-shape. It is also known as Verification and Validation model.
Page 14 of 77
V - Model is an extension of the waterfall model and is based on association of a
testing phase for each corresponding development stage. This means that for every
single phase in the development cycle there is a directly associated testing phase. This
is a highly disciplined model and next phase starts only after completion of the
previous phase.
Usually this model is followed for small projects where the development
teams are very small.
Agile Model
Agile thought process had started early in the software development and
started becoming popular with time due to its flexibility and adaptability.
Page 15 of 77
The most popular agile methods include Rational Unified Process (1994),
Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software
Development, Feature Driven Development, and Dynamic Systems Development
Method (DSDM) (1995). These are now collectively referred to as agile
methodologies, after the Agile Manifesto was published in 2001.
RAD Model
Following are the typical scenarios where RAD can be used:
Page 16 of 77
RAD should be used only when a system can be modularized to be delivered
in incremental manner.
It should be used if there.s high availability of designers for modeling.
It should be used only if the budget permits use of automated code generating
tools.
RAD SDLC model should be chosen only if domain experts are available with
relevant business knowledge.
Should be used where the requirements change during the course of the project
and working prototypes are to be presented to customer in small iterations of
2-3 months.
Software Prototyping
The Software Prototyping refers to building software application prototypes
which display the functionality of the product under development but may not
actually hold the exact logic of the original software.
Another view of the software life cycle can be obtained by considering the
cost of performing the various activities in a software project. The cost of conducting
a software project is the sum of the costs incurred in conducting each phase of the
project.
The planning task identifies external customers and internal product needs,
conducts feasibility studies, and monitors progress from beginning to end of the
product life cycle.
Every programming team must have an internal structure. The best team
structure for any particular project depends on the nature of the project and the
product, and on the characteristics of the individual team members.
Page 18 of 77
Democratic team, in which all team members participate in all decisions;the chief
programmer team, in which a chief programmer is assisted and supported by other
team members.
Hierarchical team, which combines aspects of the democratic team and the chief
programmer team. Variations in these basic forms are also possible.
Democratic teams , or Egoless team , in this team , goals are set and decisions made
by group consensus.
Chief Programmer team: It is highly structured. The chief programmer takes all
major decisions.
Hierarchical team structure: The project leader assigns tasks, attendsreviews and
walkthroughs,detects problem areas,balances the workload., and participates in
technical activities.
Validation is concerned with assessing the quality of a software system in its actual
operating environment. Validation typically involves planning and execution of test
cases.
Automated tools, specialized notations, and modern techniques are often used
to develop software requirement specifications, architectural and detailed designs, and
the source code.
Page 20 of 77
UNIT – II
Estimating the cost of a software product is one of the most difficult and error-
prone tasks in software engineering. It is difficult to make an accurate cost estimate
during the planning phase of software development, because of the large number of
unknown factors at that time, yet contracting practices often require a firm cost
commitment as part of the feasibility study.
Programmer ability
Product complexity
Product size
Available time
Required reliability
Level of technology
There are many factors that influence the cost of a software product. The
effects of most of these factors, and hence the cost of a development or maintenance
effort, are difficult to estimate.
Programmer Ability
The goal was to determine the relative influence of batch and time-shared
access on programmer productivity. Twelve experienced programmers were each
given two programming problem to solve, some using batch facilities and some using
time-sharing. The resulting differences in individual performance among the
programmers were much greater than could be attributed to the relatively small effect
of batch or time-shared machine access.
Product Complexity
Page 21 of 77
Programmer cost for a software project can be obtained by multiplying the
effort in programmer months by the cost per programmer-month. The equations were
derived by examining historical data from a large number of actual projects.
Applications programs:TDEV=2.5*(PM)**0.38
Utility programs: TDEV=2.5*(PM)**0.35
Systems programs: TDEV=2.5*(PM)**0.32
Product Size
A large software product is obviously more expensive to develop than a small one.
Available Time
Total project effort is sensitive to the calendar time available for project
completion Several investigators have studied the question of optimal development
time, and most of them agree that software projects require more total effort if
development time is compressed or expanded from the optimal time.
Level of Technology
Page 22 of 77
that program statements written in high-level languages such as FORTRAN and
Pascal typically expand into several machine-level statements.
Software cost estimates are based on past performance. Historical data are
used to identify cost factors and determine the relative importance of various factors
within the environment of that organization.
Bottom-up cost estimation first estimates the cost to develop each module or
subsystem.
Expert Judgment
The most widely used cost estimation technique is expert judgment, which is
an inherently top-down estimation technique. Expert judgment relies on the
experience, background, and business sense of one or more key people in the
organization.
Page 23 of 77
effect of these considerations is a time and cost reduction of 20 percent, which results
in an estimate of $800,000 and 8 months development time. We know that the
customer has budgeted $1 million and 1 year delivery time for the system.
Therefore, we add a small margin of safety and bid the system at $850,000 and 9
months development time.
The following approach is a variation on the standard Delphi technique that increases
communication while preserving anonymity:
Page 24 of 77
4. The coordinator prepares a summary of the estimates, but does not record any
rationales.
5. The coordinator calls a group meeting to focus on issues where the estimates
vary widely.
6. Estimators complete another estimate, again anonymously. The process is
iterated for as many rounds as necessary.
It is possible that several rounds of estimates will not lead to a consensus estimate.
In this case, the coordinator must discuss the issues involved with each estimator to
determine the reasons for the differences. The coordinator may have to gather
additional information and present it to the estimators in order to resolve the
differences in viewpoint.
Product hierarchy identifies the product components and indicates the manner
in which the components are interconnected. A WBS chart of process hierarchy
identifies the work activities and the relationships among those activities. Typical
product and process WBS charts are illustrated in Figures 3.5a and b. Using the WBS
technique, costs are estimated by assigning costs to each individual component in the
chart and summing the costs.
Expert judgment, group consensus, and work breakdown structures are the
most widely used cost estimation techniques. Many organizations use all three
approaches and iterate on the estimates until differences have been resolved.
When using COCOMO, the equations are used to provide nominal estimates
of programmer-months and development schedule for a program unit, based on the
estimated number of Delivered Source Instructions (DSI) in the unit. Effort
Page 25 of 77
multipliers are then used to adjust the estimate for product attributes, computer
attributes, personnel attributes, and project attributes.
The effort estimators exclude planning and analysis costs, installation and
training costs, and the cost of secretaries, janitors, and computer operators. The DSI
estimate includes job control statements and source statements, but excludes
comments and unmodified utility routines. A DSI is considered to be one line or card
image, and a programmer-month consists of 152 programmer-hours.
Page 26 of 77
A widely used rule of thumb for the distribution of maintenance activities is
60 percent for enhancements, 20 percent for adaptation, and 20 percent for
error correction.
Data flow diagrams specify data sources and data sinks, data stores,
transformations to be performed on the data, and the flow of data between sources,
sinks, transformations, and stores.
Like flowcharts, data flow diagrams can be used at any level of detail. They
can be hierarchically decomposed by specifying the inner workings of the functional
nodes using additional data flow diagrams. Unlike flowcharts, data flow diagrams are
not concerned with decision structure or algorithmic details.
Page 27 of 77
Section 1: Product Overview and Summary
NAME: Create
Name
SUBITEMS:
Page 28 of 77
Uses
Procedures
References
Desirable properties
Page 29 of 77
Correct
Complete
Consistent
Unambiguous
Functional
Verifiable
Traceable
Easily changed
Both relational and state-oriented notations are used to specify the functional
characteristics of software. Relational notations are based on the concepts of entities
and attributes.
RELATIONAL NOTATIONS
Implicit equations
MxM’ = I ± E
In the above Equation, matrix inversion is specified such that the matrix
product of the original matrix M and the inverse of M, M’, yields the identity matrix I
plus or minus the error matrix E, where E specifies allowable computational errors.
Complete specification of matrix inversion must include items such as matrix size,
type of data elements, and degree of sparseness. Given a complete functional
specification for matrix inversion, design involves specifying a data structure, an
algorithm for computing the inverse, and a packaging technique for the inversion
module.
Page 30 of 77
Algebraic axioms
Regular expressions
State-Oriented Notations
Decision tables
Event tables
Event tables specify actions to be taken when events occur under different sets of
conditions. A two-dimensional event table relates actions to two variables; f(M,E)=A,
where M denotes the current set of operating conditions, E is the event of interest, and
A is the action to be taken.
Event
Steady X A6, A6 --
Shut-down … … …
Alarm … … …
Page 31 of 77
Transition Tables
Current
input
Current state a b
S0 S0 S1
S1 S1 S0
Next state
UNIT – III
SOFTWARE DESIGN
SOFTWARE DESIGN
Software design, there are three distinct types of activities: external design,
architectural design, and detailed design. Architectural and detailed design are
collectively referred to as internal design.
External design begins during the analysis phase and continues into the design
phase.
Internal design involves conceiving, planning out, and specifying the internal
structure and processing details of the software product.
Page 32 of 77
Fundamental concepts of software design include abstraction, structure, information
hiding, modularity, concurrency, verification, and design aesthetics.
Abstraction
Abstraction is the intellectual tool that allows us to deal with concepts apart
from particular instances of those concepts. During requirements definition and
design, abstraction permits separation of the conceptual aspects of a system from the
(yet to be specified) implementation details.
Data abstraction involves specifying a data type or a data object by specifying legal
operations on objects; representation and manipulation details are suppressed.
Control abstraction is used to state a desired effect without stating the exact
mechanism of control.
Information Hiding
1. A data structure, its internal linkage, and the implementation details of the
procedures that manipulate it (this is the principle of data abstraction)
2. The format of control blocks such as those for queues in an operating system
(a “control-block” module)
3. Character codes, ordering of character sets, and other implementation details
4. Shifting, masking, and other machine dependent details.
Page 33 of 77
Structure
Modularity
Modular systems consist of well-defined, manageable units with well-defined
interfaces among the units. Desirable properties of a modular system include:
Concurrency
Page 34 of 77
Verification
Aesthetics
1. Content coupling
2. Common coupling
3. Control coupling
4. Stamp coupling
5. Data coupling
Page 35 of 77
Content coupling
Content coupling occurs when one module modifies local data values or
instructions in another module. Content coupling can occur in assembly language
programs.
Common coupling
Control coupling
Stamp coupling
Stamp coupling is similar to common coupling, except that global data items
are shared selectively among routines that require the data.
Data coupling
Data coupling involves the use of parameter lists to pass data items between
routines. The most desirable form of coupling between modules is a
combination_____ and data coupling.
Cohesion
1. Coincidental cohesion
2. Logical cohesion
3. Temporal cohesion
4. Communication cohesion
5. Sequential cohesion
6. Functional cohesion
7. Informational cohesion
Coincidental cohesion
Page 36 of 77
Logical cohesion
Temporal cohesion
Communication cohesion
Communicational cohesion refer to the same set of input and/or output data.
Sequential cohesion
Sequential cohesion of elements occurs when the output of one element is the
input for the next element.
Functional cohesion
Informational cohesion
DESIGN NOTATIONS
Page 37 of 77
Data Flow Diagrams
Data flow diagrams (“bubble charts”) are directed graphs in which the nodes
specify processing activities and the arcs specify data items transmitted between
processing nodes.
Structure Charts
Page 38 of 77
HIPO Diagrams
Procedure Templates
PROCEDURE NAME:
PURPOSE:
DESIGNER/DATE(s):
SIDE EFFECTS:
TIMING CONSTRAINTS:
OTHER LIMITATIONS:
Pseudocode
Pseudocode notation can be used in both the architectural and detailed design
phases. Like flowcharts, pseudocode can be used at any desired level of abstraction.
Using pseudocode, the designer describes system characteristics using short, concise,
English language phrases that are structured by key words suchas If-Then-Else,
While-Do, and End.
Structured Flowcharts
Page 40 of 77
Flowchart
Structured flowcharts
STRUCTURED ENGLISH
Page 41 of 77
Decision Tables
They are also useful for specifying algorithmic logic during detailed design.
At this level of usage, decision tables can be specified and translated into source code
logic.
DESIGN TECHNIQUES
Stepwise Refinement
1. Top-down decomposition
2. Incremental addition of detail
3. Postponement of detail decisions
4. Continual verification of consistency (formally or informally)
Page 42 of 77
Levels of Abstraction
Each level of abstraction performs a set of services for the functions on the
next higher level of abstraction.
Each level of abstraction has exclusive use of certain resources (I/O devices,
data structures) that other levels are not permitted to access.
Structured Design
The first step in structured design is review and refinement of the data flow
diagram(s) developed during requirements definition and external design. The second
step is to determine whether the system is transform-centered or transaction-driven,
and to derive a high-level structure chart based on this determination. In a transform-
centered system, the data flow diagram contains Input, Processing, and Output
subsystems in the structure chart. Boundaries between the three major subsystems in a
transform-centered system are identified by determining the point of most abstract
input data and the point of most abstract output data on the data flow diagram.
Page 43 of 77
DETAILED DESIGN CONSIDERATIONS
Several notations have been developed to support analysis and design of real-
time and distributed systems. They include RSL, SDLP, NPN, communication ports.
TEST PLANS
The test plan specifies the objectives of testing (e.g., to achieve error-free
operation under stated conditions for a stated period of time), the test completion
criteria (to achieve a specified rate of error exposure, to achieve a specified percent of
logical path coverage), the system integration plan (strategy, schedule, responsible
individuals), methods to be used on particular modules (walkthroughs, inspections,
Page 44 of 77
static analysis, dynamic tests, formal verification), and the particular test cases to be
used.
There are four types of tests that a software product must satisfy: functional
tests, performance tests, stress tests, and structural tests. Functional tests and
performance tests are based on the requirements specifications; they are designed to
demonstrate that the system satisfies its requirements. Therefore, the test plan can be
only as good as the requirements, which in turn must be phrased in quantified, testable
terms.
Structural tests are concerned with examining the internal processing logic of
a software system.
The two major milestones during software design are the Preliminary Design
Review (PDR) and 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 design and prior to implementation.
The CDR is held at the end of detailed design and prior to implementation.
Among other things, CDR provides a final management decision point to build or
cancel the system.
Page 45 of 77
WALKTHROUGHS AND INSPECTIONS
A walkthrough team consists of four to six people. The person whose material
is being reviewed is responsible for providing copies of the review material to
members of the walkthrough team in advance of the walkthrough session, and team
members are responsible for reviewing the material prior to the session. During the
walkthrough the reviewee “walks through” the material while the reviewers look for
errors, request clarifications, and explore problem areas in the material under review.
The reviewee is responsible for follow-up and for informing the reviewers of
corrective actions taken. More detailed information concerning the format and
conduct of walkthrough session is provided in Chapter 8.
DESIGN GUIDELINES
Design is a creative process that can be guided and directed, but it can never be
reduced to an algorithmic procedure. The design of a real-time system is a much
different activity than the design of a data processing application. The following
guidelines do not constitute a “design methodology”, but rather provide some
guidance for organizing the activities of software design.
SOFTWARE IMPLEMENTATION
Weinberg gave five programmers five different implementation goals for the
same program: minimize the memory required, maximize output readability,
Page 47 of 77
maximize source test readability, minimize the number of source statements, and
minimize development time
Any single entry, single exit program segment that has all statements on some
path from the entry to the exit can be specified using only sequencing,
selection, and iteration.
A sufficient set of single entry, single exit constructs for specifying control flow in
algorithms is
Sequencing: S1;S2;S3;
Selection: if B then S1 else S2;
Iteration: while B do S;
Page 48 of 77
Efficiency Considerations
The following example illustrates the need for auxiliary variables in a search
loop on a linked list:
Data Encapsulation
The goto statement provides unconditional transfer of control and thus allows
violation of the single entry, single exit condition of structured coding. We have
presented several examples where goto statements were used to achieve a desired
Page 49 of 77
result in a manner that violates single entry, single exit and yet maintained locality
and linearity of control flow.
The goto statement also can be used to simulate single entry, single exit
constructs in primitive programming languages.
EX:
The goals of clarity and efficiency are thus served by appropriate use of
recursion.
CODING STYLE
DOCUMENTATION GUIDELINES
Computer software includes the source code for a system and all the
supporting documents generated during analysis, design, implementation, testing, and
maintenance of the system. Internal documentation includes standard prologues for
compilation units and subprograms, the self documenting aspects of the source code,
and the internal comments embedded in the source code.
Page 51 of 77
Supporting Documents
UNIT NAME:____________________________________PROGRAMMER:____________
ROUTINES INCLUDED: _____________________________________________________
SECTION CONTENTS DUE DATE COMPLETED DATE REVIEWER/DATE
1 RQMTS.
2 ARCH. DESIGN
3 DETAIL
DESIGN
4 TEST PLAN
5 SOURCE
CODE
6 TEST
RESULTS
7 CHANGE
Page 52 of 77
REQUESTS
8 NOTES
RELEASE APPROVAL:_____________________________________DATE:___________
Internal Documentation
Name of author:
Date of compilation:
Function(s) performed:
Algorithms used:
Author/date/purpose of modifications:
Parameters and modes:
Input assertion:
Output assertion:
Global variables:
Side effects:
Major data structures:
Calling routines:
Called routines:
Timing constraints:
Exception handling:
Assumptions:
Page 53 of 77
Unit IV
Software Testing
Definition - Software Testing :
This is China Airlines Airbus A300 crashing due to a software bug on April
26, 1994, killing 264 innocent lives
Software bugs can potentially cause monetary and human loss, history is full
of such examples
Many software errors are eliminated before testing begins by conducting effective
technical reviews
Testing begins at the component level and works outward toward the integration
of the entire computer-based system.
Different testing techniques are appropriate at different points in time.
The developer of the software conducts testing and may be assisted by
independent test groups for large projects.
Testing and debugging are different activities.
Debugging must be accommodated in any testing strategy.
Make a distinction between verification (are we building the product right?) and
validation (are we building the right product?)
Software testing is only one element of Software Quality Assurance (SQA)
Quality must be built in to the development process, you can’t use testing to add
quality after the fact
The role of the Independent Test Group (ITG) is to remove the conflict of interest
inherent when the builder is testing his or her own product.
Misconceptions regarding the use of independent testing teams
o The developer should do no testing at all
o Software is tossed “over the wall” to people to test it mercilessly
o Testers are not involved with the project until it is time for it to be tested
The developer and ITGC must work together throughout the software project to
ensure that thorough tests will be conducted
Types of Testing
Page 55 of 77
White Box Testing
The tester views the internal behavior and structure of the program. The
testing strategy permits one to examine the internal structure of the program.
Critical or Complex Modules can be tested using White box testing while the
rest of the application is tested using Black Box Testing.
Levels of Testing
• Unit Testing
• Integration Testing
• System Testing Or FURPS……Testing
• Acceptance Testing
• Regression Testing
Unit Testing
Integration Testing
Page 56 of 77
Big Bang Testing
Bottom-Up Testing
• Begins construction and testing with atomic modules (i.e.) modules at lowest
level in program structure
• The terminal module is tested in isolation first then the next set of higher level
modules are tested with the previously tested lower module.
Page 57 of 77
Top-Down Testing
System Testing
Functionality Testing.
Usability Testing.
Reliability Testing.
Performance Testing.
Scalability Testing.
Functionality Testing
This testing is done to ensure that all the functionalities defined in the
requirements are being implemented correctly.
Usability Testing
Page 58 of 77
• Ease Of Operability
• Communicativeness
• This test is done keeping the kind of end user's who are going to use the
product.
Reliability Testing
• These Tests are carried out to assess the system’s capability to handle various
scenarios like failure of a hard drive on the web, database server or
communication link failure.
• Software reliability is defined in statistical terms as “the probability of failure-
free operation of a computer program in a specified environment for a
specified time”.
Performance Testing
This test is done to ensure that the software / product works the way it is
supposed to at various load (load testing ), Stress (stress testing ) and Volume (
volume testing ).
Volume Testing
The purpose is to that the system has the capacity to handle large
numbers of processing transactions during peak periods.
Performance Testing
These tests ensure the degree to which the application/ system loads /
processes can be distributed across additional servers and clients.
Acceptance Testing
Validation testing
Activities:
Unit Testing
Integration Testing
System Testing
User Acceptance Testing
Page 60 of 77
Verification and Validation
• Alpha testing
– Conducted at the developer’s site by end users
– Software is used in a natural setting with developers watching intently
– Testing is conducted in a controlled environment
• Beta testing
– Conducted at end-user sites
– Developer is generally not present
– It serves as a live application of the software in an environment that
cannot be controlled by the developer
– The end-user records all problems that are encountered and reports
these to the developers at regular intervals
After beta testing is complete, software engineers make software modifications and
prepare for release of the software product to the entire customer base.
What is Debugging ?
or
Page 61 of 77
The symptom may disappear when another error is corrected.
The symptom may actually be the result of nonerrors (eg round off in
accuracies).
The symptom may be caused by a human error that is not easy to find.
The symptom may be intermittent.
The symptom might be due to the causes that are distributed across various
tasks on diverse processes.
Debugging Strategies
Brute Force
Backtracking
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
In a software lifetime, type of maintenance may vary based on its nature. It may
be just a routine maintenance tasks as some bug discovered by some user or it may be
a large event in itself based on maintenance size or nature. Following are some types
of maintenance based on their characteristics:
Page 63 of 77
Configuration management
Software configuration management (SCM) is a software engineering
discipline consisting of standard processes and techniques often used by organizations
to manage the changes introduced to its software products. SCM helps in identifying
individual elements and configurations, tracking changes, and version selection,
control,andbaselining.
SCM is also known as software control management. SCM aims to control changes
introduced to large complex software systems through reliable version selection and
version control.
Page 64 of 77
Unit – V
Software Quality
Software quality is called the conformance to explicitly stated functional and
performance requirements, documented development standards, and implicit
characteristics.
Quality Concepts
1. Quality
2. Quality Control
3. Quality assurance
4. Cost of quality
Page 65 of 77
Two kinds of quality may be encountered:
Quality of design
Quality of conformance
Quality of Design
Quality of design refers to the characteristics tht designers specify for an item.
The grade of materials, tolerance and performance specifications all contribute quality
of design.
Quality of Conformance
QC includes a feedback loop to the process that created the work product.
• Prevention costs
Quality planning, formal technical reviews, test equipment, training
• Appraisal costs
Inspections, equipment calibration and maintenance, testing
• Failure costs – subdivided into internal failure costs and external failure costs
Internal failure costs
(2) Specified standards define a set of development criteria that guide the
manner in which software is engineered; if the criteria are not
followed, lack of quality will almost surely result.
Page 67 of 77
(ii) Software Reviews
Software reviews are a “filter” for the software engineering process. That
is reviews are applied at various points during the software development
process an server to uncover errors that can then be removed.
• Catch large classes of errors that escape the originator more than other
practitioners
• Include the formal technical review (also called a walkthrough or inspection)
– Acts as the most effective SQA filter
– Conducted by software engineers for software engineers
– Effectively uncovers errors and improves software quality
– Has been shown to be up to 75% effective in uncovering design flaws
(which constitute 50-65% of all errors in software)
• Require the software engineers to expend time and effort, and the organization
to cover the costs.
In addition, the FTR serves as a training ground for junior software engineers to
observe different approaches to software analysis, design, and construction.
Project managers must quantify those work products that are the primary
targets for formal technical reviews.
The sample of products that are reviewed must be representative of the
products as a whole.
Page 68 of 77
(i) Review Meeting
Page 69 of 77
• This one to two-page report describes what was reviewed, who
reviewed it, and what were the findings and conclusions
– The review leader follows up on the findings to ensure that the
producer makes the requested corrections
1) Collect and categorize information (i.e., causes) about software defects that
occur.
2) Attempt to trace each defect to its underlying cause (e.g., nonconformance to
specifications, design error, violation of standards, poor communication with
the customer).
3) Using the Pareto principle (80% of defects can be traced to 20% of all causes),
isolate the 20%.
Although hundreds of errors are uncovered all can be tracked to one of the
following causes.
Page 70 of 77
Six Sigma
Popularized by Motorola in the 1980s
Is the most widely used strategy for statistical quality assurance
Uses data and statistical analysis to measure and improve a company's
operational performance
Identifies and eliminates defects in manufacturing and service-related
processes
The "Six Sigma" refers to six standard deviations (3.4 defects per a million
occurrences)
SQA Plan
The SQA Provides a road map for instituting software quality assurance in an
organization.
Developed by the SQA group to serve as a template for SQA activities that are
instituted for each software project in an organization.
• Structured as follows:
– The purpose and scope of the plan
– A description of all software engineering work products that fall within
the purview of SQA
– All applicable standards and practices that are applied during the
software process
– SQA actions and tasks (including reviews and audits) and their
placement throughout the software process
– The tools and methods that support SQA actions and tasks
– Methods for assembling, safeguarding, and maintaining all SQA-
related records
– Organizational roles and responsibilities relative to product quality
ISO 9000 can help a company satisfy its customers, meet regulatory
requirements, and achieve continual improvement.
The ISO 9000:2015 and ISO 9001:2015 standards are based on seven quality
management principles that senior management can apply for organizational
improvement:
1. Customer focus
o Understand the needs of existing and future customers
o Align organizational objectives with customer needs and expectations
o Meet customer requirements
o Measure customer satisfaction
o Manage customer relationships
o Aim to exceed customer expectations
2. Leadership
o Establish a vision and direction for the organization
o Set challenging goals
o Model organizational values
o Establish trust
o Equip and empower employees
o Recognize employee contributions
3. Engagement of people
o Ensure that people’s abilities are used and valued
o Make people accountable
o Enable participation in continual improvement
o Evaluate individual performance
o Enable learning and knowledge sharing
o Enable open discussion of problems and constraints
4. Process approach
o Manage activities as processes
o Measure the capability of activities
o Identify linkages between activities
Page 72 of 77
o Prioritize improvement opportunities
o Deploy resources effectively
Learn more about a process view of work and see process analysis
tools.
5. Improvement
o Improve organizational performance and capabilities
o Align improvement activities
o Empower people to make improvements
o Measure improvement consistently
o Celebrate improvements
7. Relationship management
o Identify and select suppliers to manage costs, optimize resources, and
create value
o Establish relationships considering both the short and long term
o Share expertise, resources, information, and plans with partners
o Collaborate on improvement and development activities
o Recognize supplier successes
Page 73 of 77
SOFTWARE ENGINEERING
University Questions
Sub.Code: 7BCA6C3
PART A
PART B
PART C
Page 77 of 77