0% found this document useful (0 votes)
2 views101 pages

Software Engineering

The document discusses the Software Development Life Cycle (SDLC) and its importance, particularly for large software projects, emphasizing better planning, quality, documentation, risk management, and cost efficiency. It outlines the phases of the waterfall model, the significance of proper documentation, and the iterative waterfall model's effort distribution. Additionally, it covers different life cycle models suitable for various applications, levels of Data Flow Diagrams (DFD), and the differences between logical and physical DFDs, concluding with an overview of white box testing.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views101 pages

Software Engineering

The document discusses the Software Development Life Cycle (SDLC) and its importance, particularly for large software projects, emphasizing better planning, quality, documentation, risk management, and cost efficiency. It outlines the phases of the waterfall model, the significance of proper documentation, and the iterative waterfall model's effort distribution. Additionally, it covers different life cycle models suitable for various applications, levels of Data Flow Diagrams (DFD), and the differences between logical and physical DFDs, concluding with an overview of white box testing.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

1. what do you understand by the expression "life cycle model of software development"?

why is it important to adhere to a life cycle model during the development of a large
software product?
The Software Development Life Cycle (SDLC) is a structured framework that defines the stages
involved in the development of software, from requirement analysis to maintenance, ensuring
systematic and efficient software production.
⭐ Why is it Important for Large Software Projects?
For large software systems, following a life cycle model is very important due to the following
reasons:

1. Better Planning and Control


 Helps divide the project into manageable phases
 Ensures proper scheduling and resource allocation

2. Improved Quality of Software


 Testing is done at different stages
 Reduces errors and improves reliability

3. Clear Documentation
 Each phase produces documents
 Helps future developers understand the system easily

4. Risk Management
 Identifies risks early in development
 Reduces chances of project failure

5. Efficient Team Coordination


 Different teams (developers, testers, designers) work in a structured way
 Avoids confusion and miscommunication

6. Cost and Time Efficiency


 Early detection of errors reduces rework
 Saves time and development cost

7. Scalability and Maintenance


 Large software needs regular updates
 Life cycle model ensures easy modification and maintenance

2. what problem will a software development organization face if it does not adequately
documents its software process?

If a software development organization does not properly document its software process, it
can face several serious problems—especially in large or long-term projects.

❗ Major Problems Due to Lack of Documentation


1. Poor Understanding of the System
 Developers may not fully understand how the system works
 New team members struggle to learn the project
👉 Leads to confusion and mistakes

2. Difficulty in Maintenance
 Without documentation, fixing bugs or updating features becomes very hard
 Developers may waste time figuring out old code
👉 Increases maintenance cost and time

3. Knowledge Loss
 If experienced developers leave the organization, their knowledge is lost
 No written reference to continue the work
👉 Project continuity is affected

4. Poor Communication
 Teams (developers, testers, managers) may misunderstand requirements
 No clear record of decisions or changes
👉 Results in errors and conflicts

5. Increased Errors and Bugs


 Lack of proper specifications and design documents
 Developers may implement wrong functionality
👉 Reduces software quality

6. Difficulty in Testing
 Testers do not know expected outputs or system behavior
 Hard to design proper test cases
👉 Incomplete or ineffective testing

7. Project Delays and Cost Overruns


 Time wasted in re-understanding and reworking
 Repeated mistakes due to lack of clarity
👉 Project may exceed deadlines and budget

8. No Standardization
 Each developer may follow different approaches
 No uniform process across the organization
👉 Leads to inconsistency

3. what are the major phases in the waterfall model of software development? Which phase
consumes the maximum effort for developing a typical software product?
🔽 Phases of the Waterfall Model
1. Requirement Analysis
o Collect and analyze user requirements
o Prepare Software Requirement Specification (SRS)
2. System Design
o Convert requirements into system architecture
o Includes high-level and detailed design
3. Implementation (Coding)
o Developers write the actual program code
o Each module is developed
4. Integration and Testing
o Combine modules and test the complete system
o Detect and fix errors
5. Deployment
o Deliver the software to the customer
o Install and make it operational
6. Maintenance
o Fix bugs, update features, and improve performance after delivery
Which Phase Consumes Maximum Effort?
👉 Answer: The Testing and Maintenance phases consume the maximum effort.
✔️Explanation:
 Testing Phase
o Involves unit testing, integration testing, and system testing
o Detecting and fixing bugs is time-consuming
o Ensures software quality and reliability
 Maintenance Phase (Highest Overall Effort)
o Continues throughout the software’s life
o Includes:
 Bug fixing
 Performance improvement
 Adding new features
o Often consumes more than 50–60% of total effort
4. what are the important activities that are carried out during the feasibility study phase?
The feasibility study phase is the first step in software development where we decide whether the
project should be undertaken or not.
👉 In simple words:
It checks “Is this project possible and worth doing?”

🔍 Major Activities in Feasibility Study


1. Problem Definition and Understanding
 Clearly identify the problem to be solved
 Understand user needs and objectives
👉 Forms the base of the entire project

2. Study of Current System


 Analyze the existing system (if any)
 Identify its limitations and drawbacks
👉 Helps in proposing better solutions

3. Feasibility Analysis (TELOS)


✔️Technical Feasibility
 Check if required technology, tools, and skills are available
 Can the system be developed with existing resources?
✔️Economic Feasibility
 Perform cost-benefit analysis
 Compare development cost vs expected benefits
👉 Determines if the project is financially viable

✔️Operational Feasibility
 Check if the system will be accepted and used by users
 Analyze user-friendliness and organizational support

✔️Legal Feasibility
 Ensure compliance with laws, regulations, licenses
 Check for copyright, data protection issues

✔️Schedule Feasibility
 Determine whether the project can be completed on time
 Evaluate deadlines and resource availability

4. Identification of Alternative Solutions


 Propose multiple possible solutions
 Compare them based on feasibility
👉 Choose the best approach

5. Risk Analysis
 Identify possible risks (technical, financial, operational)
 Suggest mitigation strategies

6. Preparation of Feasibility Report


 Document all findings and recommendations
 Final decision: Go / No-Go for the project

5. discuss how the effort spent in the different phases of the iterative waterfall model is
spread over time.
✅ Effort Distribution in Iterative Waterfall Model
In the iterative waterfall model, development proceeds through phases like a waterfall, but with
feedback loops, allowing movement back to earlier phases when needed.
👉 So, unlike the classical waterfall model, effort is not strictly one-time per phase—it is spread
and revisited over time.

📊 How Effort is Spread Across Phases


1. Requirement Analysis Phase
 Initial Stage: High effort to gather and define requirements
 Later Stages: Additional effort due to feedback from design/testing
👉 Effort is high initially but continues in smaller amounts later

2. System Design Phase


 Starts after initial requirements
 Effort is moderate initially
 May increase again if requirements change
👉 Iterative refinement increases total effort

3. Implementation (Coding) Phase


 Effort gradually increases after design
 Rework may be required due to design or requirement changes
👉 Effort is spread with peaks during development cycles

4. Testing Phase
 Begins after some coding is done
 Effort increases significantly over time
 Bugs found may send work back to coding/design
👉 Testing effort is high and iterative

5. Maintenance Phase
 Starts after deployment
 Effort continues throughout the software life
👉 Often consumes maximum overall effort

🔄 Key Idea of Effort Distribution


 Effort is overlapping and iterative, not strictly sequential
 Each phase may be revisited multiple times
 Feedback loops cause rework effort in earlier phases

📈 Overall Trend Over Time


 Early phases (requirements, design): High initial effort + later revisions
 Middle phases (coding, testing): Increasing effort with iterations
 Final phase (maintenance): Longest and highest cumulative effort

📘 Exam-Oriented Answer (Conclusion)


In the iterative waterfall model, effort is not confined to a single pass of each phase but is
distributed over time due to feedback and iteration. Initial phases like requirement analysis and
design require high effort early but continue to receive effort later. Coding and testing efforts
increase as development progresses, while maintenance consumes the largest effort over the
software’s lifetime. Thus, effort is overlapping, iterative, and spread across multiple phases.

6. Which life cycle model would you follow for developing software for each of the following
applications? Mention the reasons justifying your choice.
Applications listed:
(a) Well-understood data processing application
(b) New satellite communication software (no prior experience)
(c) Telephone switching system controller
(d) Library automation system
(e) Extremely large cellular communication control system
(f) New text editor
(g) Compiler for a new language
(h) Object-oriented software development effort
(i) GUI part of a large software product
✅ Answer (Model + Justification)
(a) Well-understood data processing application
👉 Model: Waterfall Model
👉 Reason: Requirements are clear and stable; sequential development works best.

(b) New satellite communication software


👉 Model: Spiral Model
👉 Reason: High risk + no prior experience → needs risk analysis and iterative refinement.

(c) Telephone switching system controller


👉 Model: Real-time / Iterative Waterfall (or Spiral)
👉 Reason: Complex, real-time system → requires careful validation and iterative testing.

(d) Library automation system


👉 Model: Waterfall or Incremental Model
👉 Reason: Requirements mostly known; can be developed module-wise (issue, return, catalog).

(e) Extremely large cellular communication system


👉 Model: Spiral Model
👉 Reason: Very large, complex, high-risk system → needs continuous risk analysis and iteration.

(f) New text editor


👉 Model: Prototyping Model
👉 Reason: User interface and features may evolve → prototype helps refine requirements.

(g) Compiler for a new language


👉 Model: Iterative Waterfall Model
👉 Reason: Complex but well-structured phases (lexical, syntax, semantic analysis) → iterative
refinement needed.

(h) Object-oriented software development effort


👉 Model: Iterative / Incremental Model
👉 Reason: OOP supports modular and incremental development (classes, objects evolve over
time).

(i) GUI part of a large software product


👉 Model: Prototyping Model
👉 Reason: GUI requires frequent user feedback → prototype helps improve usability.

Different Levels of DFD (Data Flow Diagram)


A Data Flow Diagram (DFD) is a graphical representation of how data moves through a system.
It shows:
 Input of data
 Processing of data
 Storage of data
 Output of data
DFD is mainly used in System Analysis and Design and Software Engineering.

Main Components of DFD


Before understanding levels, know the symbols:
Symbol Meaning
Circle/Oval Process
Arrow Data Flow
Rectangle External Entity
Open Rectangle / Parallel lines Data Store

Different Levels of DFD


DFD is divided into different levels to represent the system in increasing detail.
There are mainly:
1. Level 0 DFD (Context Diagram)
2. Level 1 DFD
3. Level 2 DFD
4. Lower Level DFDs (Level 3, 4, etc.)

1. Level 0 DFD (Context Diagram)


Explanation
 It is the highest level of DFD.
 Shows the entire system as a single process.
 Displays interaction between the system and external entities only.
 Internal details are not shown.
Features
 Only one process
 Simple overview
 Easy to understand
 Shows input and output flow

Example: Library Management System


External Entities
 Student
 Librarian
Process
 Library System
Data Flow
 Book request
 Book issue details

Simple Diagram Representation


Student ----> Library System ----> Book Details
Librarian --> Library System --> Reports

2. Level 1 DFD
Explanation
 Level 0 process is divided into multiple sub-processes.
 Shows the major functions of the system.
 Gives more detailed view.
Features
 Multiple processes
 Data stores appear
 More detailed than Level 0

Example: Library Management System


Main process divided into:
1. Book Search
2. Book Issue
3. Book Return
4. Fine Calculation
Data stores:
 Book Database
 Student Record

Diagram Representation
Student --> Book Search --> Book Database
Student --> Book Issue --> Student Record
Student --> Book Return --> Fine Calculation

3. Level 2 DFD
Explanation
 Further decomposition of Level 1 processes.
 Each process is broken into smaller sub-processes.
 Provides detailed system logic.

Example
Process “Book Issue” can be divided into:
1. Check Membership
2. Check Book Availability
3. Update Record
4. Issue Book

Diagram Representation
Book Issue
|
|-- Check Membership
|-- Check Availability
|-- Update Database
|-- Generate Issue Slip

4. Lower Level DFDs (Level 3, Level 4…)


Explanation
 Used when more detailed explanation is required.
 Breaks processes into very small operations.
 Usually used for complex systems.
Hierarchy of DFD Levels
Level 0 → Overall System
Level 1 → Major Processes
Level 2 → Sub Processes
Level 3+ → Detailed Operations

Advantages of Using Different DFD Levels


1. Easy understanding of system
2. Better communication
3. Helps in system analysis
4. Detects errors easily
5. Improves documentation
Physical DFD and Logical DFD
Data Flow Diagrams (DFDs) are of two types:
1. Logical DFD
2. Physical DFD
Both are used in System Analysis and Design, but they focus on different aspects of a system.

1. Logical DFD
Definition
A Logical DFD shows what the system does.
It focuses on the flow of data and business activities without showing technical or physical details.
It explains:
 What processes are performed
 What data is needed
 How data moves in the system

Characteristics of Logical DFD


 Describes the business process
 Independent of hardware/software
 Does not show implementation details
 Easy to understand
 Focuses on “WHAT” the system performs

Example
Online Shopping System
Processes:
 Place Order
 Make Payment
 Update Inventory
Data Flow:
 Customer details
 Payment information
 Order details
It does not mention:
 Which software is used
 Which computer performs the task
 Database technology

Simple Diagram
Customer --> Place Order --> Order Details
Customer --> Payment Process --> Payment Info

2. Physical DFD
Definition
A Physical DFD shows how the system is implemented.
It describes actual physical components such as hardware, software, people, files, and devices
involved in the system.
It explains:
 How processing is done
 Who performs the task
 Which devices/software are used

Characteristics of Physical DFD


 Shows implementation details
 Includes hardware and software
 Shows manual and automated processes
 Focuses on “HOW” the system works

Example
Online Shopping System
Processes:
 Data entered through website
 Payment processed by payment gateway
 Data stored in MySQL database
 Invoice printed by printer

Simple Diagram
Customer --> Web Server --> MySQL Database
Payment Gateway --> Billing System --> Printer

Difference Between Logical and Physical DFD


Basis Logical DFD Physical DFD
Focus What system does How system works
Details Functional details Implementation details
Hardware/Software Not shown Shown
Flexibility More flexible Less flexible
Complexity Simple More detailed
User Understanding Easy Comparatively difficult
Main Concern Business activities Physical implementation

Advantages of Logical DFD


1. Easy to understand
2. Focuses on business requirements
3. Helps in system analysis
4. Independent of technology

Advantages of Physical DFD


1. Shows practical implementation
2. Helps programmers and developers
3. Describes actual system operation
4. Useful for system design

Relationship Between Logical and Physical DFD


 Logical DFD is prepared first.
 Physical DFD is developed from the logical DFD.
 Logical DFD explains the business process.
 Physical DFD explains the implementation process.

White Box Testing with Techniques


Definition
White box testing is a software testing technique in which the internal structure, logic, and source
code of a program are tested.
In this method, the tester has complete knowledge of:
 Program code
 Internal logic
 Control structure
 Execution paths
It is also called:
 Structural testing
 Glass box testing
 Clear box testing

Objectives of White Box Testing


1. To verify internal logic of the program
2. To detect logical and coding errors
3. To test loops, conditions, and branches
4. To ensure all statements execute correctly

Features of White Box Testing


 Requires programming knowledge
 Performed mainly by developers
 Tests internal working of software
 Focuses on code coverage

Techniques of White Box Testing


1. Statement Coverage
In statement coverage, every executable statement in the program must execute at least once.
Example
if(a>b)
max=a;
else
max=b;
Test Cases
 a=5, b=2
 a=2, b=5
Both assignment statements execute.
Advantage
Detects unused statements.

2. Branch Coverage
In branch coverage, every decision branch (True/False) must execute at least once.
Example
if(x>0)
printf("Positive");
else
printf("Negative");
Test Cases
 x=5 → True branch
 x=-2 → False branch
Advantage
Tests all decision outcomes.

3. Path Coverage
Path coverage tests all possible execution paths of a program.
Example
if(a>b)
{
if(a>c)
largest=a;
}
else
largest=b;
Possible paths:
1. a>b and a>c
2. a>b and a≤c
3. a≤b
Advantage
Provides thorough testing.

4. Loop Testing
Loop testing checks the correctness of loops.
It tests:
 Zero iteration
 One iteration
 Multiple iterations
 Maximum iterations
Example
for(i=0;i<n;i++)
Advantage
Detects loop-related errors.

Advantages of White Box Testing


1. Detects logical errors
2. Improves code quality
3. Finds hidden bugs
4. Optimizes code execution
5. Helps in security testing

Disadvantages of White Box Testing


1. Time consuming
2. Requires programming knowledge
3. Difficult for large software systems

Conclusion
White box testing is an important software testing method used to examine the internal structure
and logic of programs. Techniques like statement coverage, branch coverage, path coverage, and
loop testing help in detecting coding and logical errors effectively.

Black Box Testing with Techniques


Definition
Black box testing is a software testing technique in which the functionality of a program is tested
without knowing its internal code, structure, or logic.
The tester checks:
 Inputs
 Outputs
 Functional requirements
The internal implementation remains hidden like a “black box.”

Objectives of Black Box Testing


1. To verify software functionality
2. To check whether output is correct
3. To validate user requirements
4. To detect functional errors

Features of Black Box Testing


 No programming knowledge required
 Focuses on external behavior
 Tests software from user’s perspective
 Performed by testers or users

Techniques of Black Box Testing


1. Equivalence Class Partitioning
In this technique, input data is divided into valid and invalid groups called equivalence classes. One
representative value from each class is selected for testing.
Example
Suppose valid age range is 1–100.
Equivalence Classes
 Valid class: 1–100
 Invalid class: less than 1
 Invalid class: greater than 100
Test Cases
 25 → Valid
 -5 → Invalid
 120 → Invalid
Advantage
Reduces number of test cases.

2. Boundary Value Analysis


Boundary value analysis tests values near the boundaries because errors often occur at boundary
points.
Example
Range: 1–100
Test Cases
 0
 1
 2
 99
 100
 101
Advantage
Detects boundary-related errors effectively.

3. Decision Table Testing


Decision table testing is used when output depends on multiple conditions.
Conditions and corresponding actions are represented in tabular form.
Example
Condition Action
Correct ID & Password Login successful
Incorrect Password Access denied
Advantage
Useful for complex business rules.

4. State Transition Testing


This technique tests different states and transitions of software.
Example
ATM Machine:
1. Card inserted
2. PIN entered
3. Transaction processed
4. Cash withdrawn
Advantage
Useful for systems with multiple states.
Advantages of Black Box Testing
1. No coding knowledge required
2. User-oriented testing
3. Effective for functional errors
4. Suitable for large systems

Disadvantages of Black Box Testing


1. Internal code not tested
2. Some paths may remain untested
3. Difficult to identify hidden errors

Difference Between White Box and Black Box Testing


White Box Testing Black Box Testing
Tests internal logic Tests external functionality
Requires coding knowledge No coding knowledge needed
Performed by developers Performed by testers
Structural testing Functional testing

Explain Role of Stub in Top-Down Integration Testing.


Answer
In top-down integration testing:
 Higher modules tested first
 Lower modules may not exist
So stubs simulate lower modules temporarily.
Advantages
 Early testing possible
 Parallel development supported

Explain Test Stub with Example.


Answer
Definition
A test stub is a temporary dummy module replacing an unavailable lower-level module during
testing.
Used in:
 Top-down integration testing

Example
Suppose:
 Module A calls Module B
 Module B not developed
Then create stub:
int moduleB()
{
return 100;
}
This stub temporarily replaces Module B.

4. Explain Test Case Design with Example.


Answer
Definition
Test case design is the process of preparing test cases to verify software correctness.

Components of Test Case


Component Description
Test ID Unique identifier
Input Input values
Expected Output Desired result
Actual Output Obtained result
Status Pass/Fail

Example
Program:
int add(int a,int b)
{
return a+b;
}
Test Cases
Test ID Input Expected Output
TC01 2,3 5
TC02 -1,1 0
TC03 0,0 0

Explain Test Stub and Driver


Test Stub
Definition
A test stub is a dummy module used during testing to simulate the behavior of a called module that
is not yet developed or unavailable.
It is mainly used in:
 Top-down integration testing
The stub temporarily replaces lower-level modules.

Purpose of Stub
1. Allows testing before all modules are developed
2. Simulates lower-level modules
3. Supports top-down integration testing

Example of Stub
Suppose:
 Module A calls Module B
 Module B is not developed
Then a stub is created for Module B.
Example Program
int moduleB()
{
return 100;
}
This temporary module acts as a replacement for the actual Module B.

Test Driver
Definition
A test driver is a dummy module that calls another module for testing.
It is mainly used in:
 Bottom-up integration testing
The driver simulates higher-level modules.

Purpose of Driver
1. Calls lower-level modules for testing
2. Helps test modules independently
3. Supports bottom-up integration testing

Example of Driver
Suppose Module A is developed but the main program is unavailable.
A driver is written to test Module A.
Example Program
void main()
{
int result;
result = moduleA();
printf("%d", result);
}
The driver calls Module A and displays the result.

Difference Between Stub and Driver


Stub Driver
Simulates lower-level module Simulates higher-level module
Used in top-down testing Used in bottom-up testing
Called by main module Calls lower module
Replaces called module Replaces calling module

Advantages of Stub and Driver


1. Enables early testing
2. Helps test incomplete systems
3. Supports integration testing
4. Simplifies debugging
Conclusion
Stubs and drivers are temporary modules used during integration testing. A stub replaces missing
lower-level modules in top-down testing, while a driver replaces missing higher-level modules in
bottom-up testing.

#include<stdio.h>

int moduleB();

void main()
{
int result;
result = moduleB();
printf("%d", result);
}

Stub for Module B


int moduleB()
{
return 100;
}
Here, the stub simulates the behavior of the actual Module B.

Advantages of Using Stubs


1. Allows early testing of higher modules
2. Supports parallel development
3. Helps detect interface errors early
4. Simplifies debugging

Disadvantages of Using Stubs


1. Additional coding effort required
2. Stub may not behave exactly like actual module
3. Complex for large systems

Difference Between Stub and Driver


Stub Driver
Simulates lower-level module Simulates higher-level module
Used in top-down testing Used in bottom-up testing
Called by main module Calls lower module

Conclusion
Integration testing verifies communication between software modules. In top-down integration
testing, stubs are used as temporary replacements for unavailable lower-level modules, allowing
testing to continue before complete system development.
1. Software Verification
Definition
Verification is the process of checking whether the software is being developed correctly according
to specifications and design documents.
It answers the question:
“Are we building the product right?”
Verification checks:
 Design
 Algorithms
 Documents
 Source code
without executing the program.

Objectives of Verification
1. Ensure software follows specifications
2. Detect errors early
3. Improve software quality
4. Reduce development cost

Methods of Verification
(a) Reviews
Systematic examination of software documents and code.
(b) Inspections
Formal checking of design and code by experts.
(c) Walkthroughs
Developers explain code or design step by step.
(d) Static Analysis
Analysis of code without executing the program.

Advantages of Verification
1. Detects defects early
2. Saves testing cost
3. Improves reliability
4. Prevents major failures

Disadvantages
1. Time consuming
2. Requires skilled reviewers

2. Software Validation
Definition
Validation is the process of checking whether the developed software satisfies user needs and
requirements.
It answers the question:
“Are we building the right product?”
Validation is performed by executing the software.

Objectives of Validation
1. Ensure software satisfies user requirements
2. Verify correct functionality
3. Detect functional defects

Methods of Validation
(a) Unit Testing
Testing individual modules.
(b) Integration Testing
Testing interaction between modules.
(c) System Testing
Testing complete software system.
(d) Acceptance Testing
Testing by customer or user.

Advantages of Validation
1. Ensures customer satisfaction
2. Detects functional errors
3. Improves software quality

Difference Between Verification and Validation


Verification Validation
Checks whether product is built correctly Checks whether correct product is built
Process-oriented Product-oriented
No program execution required Requires program execution
Done during development Done after development
Uses reviews and inspections Uses testing

3. Testing Objectives
Definition
Testing objectives are the goals achieved through software testing.

Main Objectives of Testing


1. Detect Errors and Defects
Testing identifies faults in software.

2. Verify Correct Functionality


Checks whether software works according to requirements.

3. Improve Software Quality


Testing increases reliability and performance.

4. Ensure Customer Satisfaction


Software should meet user expectations.

5. Prevent Software Failure


Testing reduces chances of system crashes and failures.
6. Increase Confidence
Testing increases confidence in software correctness.

4. Testing Principles
Software testing follows important principles for effective testing.

Principle 1: Testing Shows Presence of Defects


Testing can show defects exist but cannot prove software is completely error-free.

Principle 2: Exhaustive Testing is Impossible


Testing all possible inputs and paths is impossible for large systems.
Therefore selective testing is done.

Principle 3: Early Testing


Testing should start early in development to reduce cost and effort.

Principle 4: Defect Clustering


Most defects are usually concentrated in a small number of modules.

Principle 5: Pesticide Paradox


Repeating same test cases repeatedly becomes ineffective.
New test cases should be added regularly.

Principle 6: Testing Depends on Context


Testing methods differ depending on software type.
Example:
 Banking software
 Gaming software
require different testing approaches.

Principle 7: Absence of Errors Fallacy


Software without errors is useless if it does not satisfy user requirements.

Explain Testability and Its Characteristics


Definition
Testability is the degree to which a software system can be easily tested to determine whether it
works correctly according to requirements.
A software with high testability:
 Detects defects easily
 Produces observable outputs
 Allows easy control of inputs

Objectives of Testability
1. Simplify software testing
2. Detect errors quickly
3. Reduce testing time and cost
4. Improve software quality
Characteristics of Testability
1. Simplicity
Simple software design and code are easier to test.
Example
A small function is easier to test than a large complex program.

2. Observability
Outputs and internal states should be easily observable.
Example
Error messages and logs help testers identify defects.

3. Controllability
Inputs and program states should be easily controlled during testing.
Example
Testers should be able to provide different input values easily.

4. Stability
Software should behave consistently during repeated testing.
Example
The same input should produce the same output every time.

5. Understandability
The code and design should be easy to understand.
Example
Well-documented programs are easier to test.

Advantages of Good Testability


1. Reduces testing effort
2. Detects defects quickly
3. Improves software reliability
4. Reduces maintenance cost
5. Increases testing efficiency

Disadvantages of Poor Testability


1. Difficult to detect errors
2. Increases testing time
3. Makes debugging difficult

Conclusion
Testability is an important property of software that determines how easily software can be tested.
Characteristics such as simplicity, observability, controllability, stability, and understandability
improve testing efficiency and software quality.

How is Testing Related to Software Quality?


Answer
Software testing and software quality are closely related because testing helps in improving and
ensuring the quality of software.
Software quality means:
 Correctness
 Reliability
 Efficiency
 Security
 User satisfaction
Testing checks whether the software satisfies these quality requirements.

Relationship Between Testing and Software Quality


1. Detects Errors and Defects
Testing identifies:
 Errors
 Faults
 Bugs
before the software is delivered to users.
This improves software reliability and correctness.

2. Ensures Correct Functionality


Testing verifies that the software performs according to specified requirements.
Example:
 Correct calculations
 Proper login validation
 Accurate outputs

3. Improves Reliability
Repeated testing ensures software works consistently without failure.
Reliable software increases user confidence.

4. Enhances Performance
Performance testing checks:
 Speed
 Response time
 Efficiency
This improves overall software quality.

5. Ensures Security
Testing helps identify security vulnerabilities and weaknesses in software.
Example:
 Unauthorized access
 Data leakage

6. Increases Customer Satisfaction


Good quality software:
 Works correctly
 Is easy to use
 Produces accurate results
Testing helps achieve customer satisfaction.
7. Reduces Maintenance Cost
Early detection of defects through testing reduces future maintenance and repair costs.

Conclusion
Software testing is an important quality assurance activity that helps detect defects, verify
functionality, improve reliability, enhance security, and ensure customer satisfaction. Therefore,
effective testing directly improves software quality.

Functionality of Stub
Definition
A stub is a temporary dummy module used during integration testing to simulate the behavior of a
lower-level module that is not yet developed.
It is mainly used in:
 Top-down integration testing

Functionalities of a Stub
1. Simulates Missing Modules
A stub acts as a replacement for unavailable lower-level modules during testing.
Example
If Module A calls Module B and Module B is incomplete, a stub temporarily replaces Module B.

2. Returns Dummy Data


The stub provides predefined or dummy outputs to the calling module.
Example
int moduleB()
{
return 100;
}
Here, the stub always returns 100.

3. Supports Top-Down Integration Testing


Stubs help test higher-level modules before lower-level modules are fully developed.

4. Helps Detect Interface Errors


Stubs help verify whether modules communicate correctly with each other.

5. Enables Early Testing


Testing can begin early even if some modules are incomplete.

6. Simplifies Debugging
By replacing incomplete modules, stubs help isolate and identify errors easily.

Conclusion
A stub functions as a temporary substitute for a lower-level module during integration testing. It
simulates module behavior, returns dummy results, supports top-down testing, and helps detect
interface errors and simplify debugging.
Why is Unit Testing Performed on Software?
Answer
Unit testing is performed to test individual modules or units of a software program separately to
ensure that each unit works correctly.
A unit may be:
 Function
 Method
 Procedure
 Class
 Module
Unit testing is usually performed by developers after coding.

Reasons for Performing Unit Testing


1. Detect Errors Early
Unit testing helps identify coding and logical errors at an early stage of development.
Early detection reduces correction cost.

2. Verify Correctness of Individual Modules


Each module is tested independently to ensure it performs according to specifications.

3. Simplifies Debugging
Since modules are tested separately, locating and fixing defects becomes easier.

4. Improves Software Quality


Testing individual units increases reliability and correctness of software.

5. Facilitates Integration
Correctly tested modules integrate more easily with other modules.

6. Reduces Maintenance Cost


Finding defects early prevents costly repairs after deployment.

7. Increases Developer Confidence


Developers gain confidence that individual components work properly before system integration.

Example
Consider an addition function:
int add(int a,int b)
{
return a+b;
}
Unit testing checks whether:
 add(2,3) = 5
 add(-1,1) = 0
If outputs are correct, the unit passes testing.

Conclusion
Unit testing is performed to verify the correctness of individual software units, detect errors early,
simplify debugging, improve software quality, and reduce development and maintenance costs.

How are the Terms “Reliability” and “Maintainability” Related to Software Quality?
Answer
Reliability and maintainability are important characteristics of software quality. High-quality
software should be both reliable and maintainable.

1. Reliability
Definition
Reliability is the ability of software to perform its required functions correctly without failure for a
specified period of time.
Reliable software:
 Produces correct output
 Works consistently
 Does not crash frequently

Importance in Software Quality


Reliability improves software quality because users expect software to work accurately and
continuously without errors.
Example
Banking software should perform transactions correctly every time without failure.

2. Maintainability
Definition
Maintainability is the ability of software to be easily modified, corrected, improved, or updated after
development.
Maintainable software:
 Is easy to debug
 Is easy to update
 Requires less effort for modifications

Importance in Software Quality


Maintainability improves software quality because software often requires:
 Bug fixing
 Performance improvement
 Feature enhancement
Easy maintenance reduces cost and effort.
Example
An e-commerce application may need regular updates for payment systems and security
improvements.

Relationship with Software Quality


Reliability and maintainability directly affect software quality because:
1. Reliable software increases user satisfaction
Users trust software that works correctly without failures.
2. Maintainable software reduces maintenance cost
Easy modification and debugging improve long-term software quality.
3. Both improve software efficiency and usability
Reliable and maintainable software performs better over time.

Conclusion
Reliability and maintainability are essential attributes of software quality. Reliability ensures correct
and failure-free operation, while maintainability ensures easy correction and modification of
software. Together, they improve software performance, usability, and customer satisfaction.

Program Testing
Definition
Program testing is the process of executing a program with the objective of finding errors and
verifying whether the software works according to specified requirements.
Testing helps to:
 Detect defects
 Improve software quality
 Ensure correct output
 Increase reliability

Alpha Testing and Beta Testing


Alpha testing and beta testing are important types of acceptance testing performed before software
release.

1. Alpha Testing
Definition
Alpha testing is a type of testing performed by the developers or testers at the developer’s site
before releasing the software to external users.
It is conducted in a controlled environment.

Objectives of Alpha Testing


1. Detect defects before product release
2. Verify software functionality
3. Improve software quality
4. Ensure software stability

Features of Alpha Testing


 Performed at developer’s location
 Conducted by developers or internal testers
 Done before beta testing
 Both white box and black box techniques may be used

Advantages of Alpha Testing


1. Detects major defects early
2. Improves product quality
3. Reduces maintenance cost
4. Increases reliability

Disadvantages of Alpha Testing


1. Conducted in artificial environment
2. Real user behavior may not be fully tested

Example
A company develops a banking application. Before releasing it to customers, the internal testing
team tests all functions such as:
 Login
 Money transfer
 Balance checking
This is alpha testing.

2. Beta Testing
Definition
Beta testing is a type of testing performed by actual users or customers at their own environment
before final software release.

Objectives of Beta Testing


1. Obtain user feedback
2. Detect remaining defects
3. Verify software in real environment
4. Improve customer satisfaction

Features of Beta Testing


 Performed by real users
 Conducted at user environment
 Done after alpha testing
 Final testing phase before release

Advantages of Beta Testing


1. Identifies real-world issues
2. Provides customer feedback
3. Improves user satisfaction
4. Increases software reliability

Disadvantages of Beta Testing


1. Difficult to control testing process
2. Feedback collection may take time

Example
A mobile application is released to limited users through a beta version for testing and feedback
before official launch.

Difference Between Alpha Testing and Beta Testing


Alpha Testing Beta Testing
Performed by developers/testers Performed by real users
Conducted at developer’s site Conducted at user environment
Done before beta testing Done after alpha testing
Alpha Testing Beta Testing
Controlled environment Real environment
Detects internal defects Detects usability and real-world issues

Conclusion
Alpha testing and beta testing are important acceptance testing techniques. Alpha testing is
performed internally to detect defects before release, while beta testing is performed by real users
to evaluate software in real-world conditions and gather feedback.

Performance Requirements of Software Testing


Definition
Performance requirements specify how efficiently a software system should perform under different
conditions such as workload, speed, and resource usage.
Performance testing checks whether the software satisfies these requirements.

Different Performance Requirements


1. Response Time
Response time is the time taken by the system to respond to a user request.
Example
A webpage should open within 2 seconds.

2. Throughput
Throughput is the number of transactions or requests processed by the system in a given time.
Example
A banking server processing 1000 transactions per minute.

3. Scalability
Scalability is the ability of software to handle increasing workload without performance degradation.
Example
An e-commerce website handling more users during a sale.

4. Reliability
Reliability means the software performs continuously without failure for a specified time.
Example
ATM software operating continuously without crashing.

5. Resource Utilization
The software should efficiently use:
 CPU
 Memory
 Disk space
 Network bandwidth

6. Stability
The system should remain stable under heavy workload for a long period.

Types of Performance Testing


1. Load Testing
Checks software behavior under expected user load.

2. Stress Testing
Tests software under extreme workload conditions.

3. Volume Testing
Tests performance with large amounts of data.

4. Endurance Testing
Checks system performance for long-duration execution.

5. Scalability Testing
Determines the system’s ability to scale with increasing users or data.

6. Spike Testing
Tests software behavior when workload suddenly increases or decreases.

Conclusion
Performance requirements ensure software operates efficiently, reliably, and stably under different
workloads. Performance testing helps evaluate response time, throughput, scalability, and resource
utilization to improve overall software quality.

(a) Limitations of Testing and Why Complete Testing is Impossible


Limitations of Software Testing
Software testing is important for detecting defects and improving software quality, but it has certain
limitations.

1. Testing Cannot Prove Absence of Errors


Testing can show the presence of defects, but it cannot guarantee that the software is completely
error-free.

2. Exhaustive Testing is Impossible


It is impossible to test all possible:
 Inputs
 Outputs
 Conditions
 Paths
 Combinations
especially in large software systems.

3. Time Consuming
Testing requires significant time and effort, particularly for complex software.

4. Costly Process
Testing requires:
 Skilled testers
 Testing tools
 Infrastructure
which increases development cost.

5. Limited Resources
Testing is restricted by:
 Budget
 Time
 Human resources
Therefore only selected test cases are executed.

6. Human Errors in Testing


Testers may make mistakes while designing or executing test cases.

Why is Complete Testing Impossible?


Complete testing means testing every possible input, condition, and execution path.
This is impossible because:
1. Huge Number of Inputs
A program may accept millions of input combinations.
Example
A login system with multiple fields can produce enormous combinations.

2. Large Number of Execution Paths


Programs containing loops and conditions create many execution paths.
Testing every path would require excessive time.

3. Time Constraints
Software must be delivered within deadlines, so exhaustive testing cannot be performed.

4. Cost Constraints
Testing all possibilities would require huge financial resources.

5. Dynamic Software Behavior


Modern software systems are highly complex and continuously changing.

Conclusion
Software testing improves software quality but has limitations such as time, cost, and resource
constraints. Complete testing is impossible because software may contain enormous combinations
of inputs and execution paths.

(b) Difference Between Code Review and Code Walkthrough


Code Review Code Walkthrough
Formal examination of source code Informal presentation of code
Conducted by reviewers or experts Conducted by the developer
Objective is defect detection Objective is understanding and feedback
Follows defined process Less formal process
Reviewers inspect code independently Developer explains code step by step
Emphasizes correctness and standards Emphasizes logic explanation
Code Review Code Walkthrough
More structured More interactive

Code Review
Definition
Code review is a formal process in which software code is examined by experts to identify defects,
coding standard violations, and quality issues.
Advantages
1. Detects defects early
2. Improves code quality
3. Ensures coding standards

Code Walkthrough
Definition
Code walkthrough is an informal review technique where the developer explains the code step by
step to team members for feedback and understanding.
Advantages
1. Improves understanding
2. Encourages discussion
3. Helps identify logical errors

Conclusion
Code reviews and code walkthroughs are important software verification techniques. Code reviews
are formal and defect-oriented, while walkthroughs are informal and mainly intended for
understanding and discussion.

Which is Conceptually Stronger: Branch Coverage or Condition Coverage?


Answer
Branch Coverage is conceptually stronger than Condition Coverage because branch coverage
ensures that every decision branch (True and False) is executed, whereas condition coverage only
checks whether each individual condition becomes True and False at least once.
Condition coverage may not test all decision outcomes completely.

1. Branch Coverage
Definition
Branch coverage is a white box testing technique in which every branch of a decision statement is
executed at least once.
It checks:
 True branch
 False branch
of each decision.

2. Condition Coverage
Definition
Condition coverage ensures that every individual condition in a compound decision takes both True
and False values at least once.

Example
Consider the following statement:
if(A || B)
printf("Valid");
else
printf("Invalid");

Test Cases for Condition Coverage


Test Case A B Result
TC1 True False True branch
TC2 False True True branch
Here:
 A becomes True and False
 B becomes True and False
So condition coverage is achieved.
But:
 False branch never executes.
Thus branch coverage is NOT achieved.

Test Cases for Branch Coverage


Test Case A B Result
TC1 True False True branch
TC2 False False False branch
Here both:
 True branch
 False branch
execute.
Therefore branch coverage is achieved.

Why Branch Coverage is Stronger


Branch coverage is stronger because:
1. It ensures all decision outcomes execute.
2. It tests actual control flow of the program.
3. It detects more logical defects than condition coverage.
Condition coverage may miss some branches even though all conditions individually become True
and False.

Conclusion
Branch coverage is conceptually stronger than condition coverage because it guarantees execution
of all decision branches, while condition coverage only checks individual conditions without ensuring
all branches are tested.

Briefly Discuss and Compare Software Validation and Verification


Software Verification
Definition
Verification is the process of checking whether the software is being developed correctly according
to specifications and design documents.
It answers the question:
“Are we building the product right?”
Verification is performed without executing the program.
Methods
 Reviews
 Inspections
 Walkthroughs
 Static analysis

Software Validation
Definition
Validation is the process of checking whether the developed software satisfies user requirements.
It answers the question:
“Are we building the right product?”
Validation requires execution of the software.
Methods
 Unit testing
 Integration testing
 System testing
 Acceptance testing

Difference Between Verification and Validation


Verification Validation
Checks correctness of development process Checks correctness of final product
No program execution required Requires execution of program
Process-oriented Product-oriented
Done during development Done after development
Uses reviews and inspections Uses testing

Conclusion
Verification ensures software is developed correctly according to specifications, while validation
ensures the final software satisfies customer requirements.

(b) Boundary Value Analysis for Age Input (Valid Range: 21 to 65)
Boundary Value Analysis
Boundary Value Analysis is a black box testing technique in which testing is performed using values
near the boundaries because errors usually occur at boundary points.

Given Range
Valid age range:
21 to 65
Minimum boundary = 21
Maximum boundary = 65

Boundary Test Cases


Test Case Input Age Expected Result Reason
TC1 20 Invalid Just below minimum boundary
TC2 21 Valid Minimum boundary value
Test Case Input Age Expected Result Reason
TC3 22 Valid Just above minimum boundary
TC4 64 Valid Just below maximum boundary
TC5 65 Valid Maximum boundary value
TC6 66 Invalid Just above maximum boundary

Conclusion
Boundary value analysis helps detect errors near input limits efficiently using fewer test cases.

(c) Alpha Testing vs Beta Testing — Which is More Impactful and Why?
Answer
Beta testing is generally considered more impactful than alpha testing because it is performed by
real users in real environments.

Reason
Alpha Testing
 Performed by developers/testers
 Conducted in controlled environment
 Detects internal defects

Beta Testing
 Performed by actual users
 Conducted in real-world environment
 Provides practical user feedback
 Detects usability and environment-related issues

Why Beta Testing is More Impactful


1. Real users test the software
2. Software is tested under actual usage conditions
3. Provides customer feedback and satisfaction information
4. Helps identify issues not found during alpha testing

Conclusion
Although both alpha and beta testing are important, beta testing is more impactful because it
evaluates software in real-world conditions and provides valuable feedback from actual users.

Would you consider an approach in which the tester tests a program using a large number of
random values satisfactory? Explain your answer.
Answer
No, testing a program using only a large number of random values is not considered a satisfactory
testing approach.
Although random testing may help detect some defects, it has several limitations and cannot
guarantee proper software quality.

Reasons
1. Important Cases May Be Missed
Random testing does not ensure that:
 Boundary values
 Critical conditions
 Important execution paths
are tested properly.
Example
If valid input range is 1–100, random testing may never test:
 0
 1
 100
 101
where errors commonly occur.

2. No Systematic Coverage
Random testing lacks:
 Planned test cases
 Structured approach
 Coverage analysis
Therefore many parts of the program may remain untested.

3. Boundary Errors May Remain Undetected


Most software defects occur near boundary values. Random inputs may fail to check these
boundaries effectively.

4. Cannot Guarantee Reliability


Even after many random tests, there is no guarantee that the software is error-free.

5. Difficult to Reproduce Errors


Random inputs may make debugging difficult because the exact test conditions may not be
recorded.

Better Approach
A satisfactory testing approach should combine:
 Equivalence partitioning
 Boundary value analysis
 White box testing
 Black box testing
 Planned test cases
This ensures systematic and effective testing.

Conclusion
Testing software using only random values is not satisfactory because it does not ensure complete or
systematic coverage of important test cases. Proper testing techniques such as boundary value
analysis and equivalence partitioning provide more reliable and effective software testing.

Give an example of a bug that is detected by the black-box test suite, but is not detected by the
white-box test suite, and vice versa.
Answer
A bug may sometimes be detected by black-box testing but not by white-box testing, and vice versa,
because both testing techniques focus on different aspects of software.
 Black-box testing checks functionality and output without examining internal code.
 White-box testing checks internal logic, paths, and code structure.

1. Bug Detected by Black-Box Testing but Not by White-Box Testing


Example
Suppose a program accepts marks only between:
0 to 100
But the program incorrectly accepts:
150
as valid input.

Why Black-Box Testing Detects It


Using boundary value analysis or equivalence partitioning, the tester checks:
 -1
 0
 100
 101
 150
Thus the invalid input is detected.

Why White-Box Testing May Miss It


The white-box tester may execute all program statements and branches without testing invalid input
values like 150.
So code coverage is achieved, but the functional defect remains undetected.

2. Bug Detected by White-Box Testing but Not by Black-Box Testing


Example
Consider the code:
for(i=0;i<=n;i++)
instead of:
for(i=0;i<n;i++)
This creates an off-by-one loop error.

Why White-Box Testing Detects It


White-box testing examines:
 Loop conditions
 Internal logic
 Execution paths
So the incorrect loop condition is identified.

Why Black-Box Testing May Miss It


If normal outputs still appear correct for tested inputs, the tester may not notice the internal loop
error.
Thus the defect may remain hidden.

Conclusion
Black-box testing is effective for detecting functional and input-related defects, while white-box
testing is effective for detecting logical and structural defects. Therefore both testing methods are
necessary for effective software testing.

41. Design the Black-Box Test Suite for a Palindrome Function


Problem
Design black-box test cases for a function that checks whether a character string (maximum length
25 characters) is a palindrome.
A palindrome reads the same forward and backward.
Example
MADAM

Black-Box Testing Techniques Used


1. Equivalence Class Partitioning
2. Boundary Value Analysis

Equivalence Classes
Valid Equivalence Classes
Class Description Example
V1 Valid palindrome string MADAM
V2 Valid non-palindrome string HELLO
V3 Single character string A
V4 Empty string ""
V5 Maximum length palindrome (25 chars) ABCDEFGFEDCBAABCDEFGFEDC

Invalid Equivalence Classes


Class Description Example
I1 String length greater than 25 26-character string
I2 Special/invalid input if restricted @#$%

Test Cases
Test Case ID Input Expected Output
TC1 MADAM Palindrome
TC2 HELLO Not Palindrome
TC3 A Palindrome
TC4 "" Palindrome/Valid
TC5 ABCDEFGFEDCBAABCDEFGFEDC Palindrome
TC6 26-character string Invalid Input
TC7 LEVEL Palindrome
TC8 COMPUTER Not Palindrome

Boundary Value Analysis


Maximum length allowed:
25 characters
Boundary Test Cases
Test Case String Length Expected Result
TC9 24 Valid
TC10 25 Valid
TC11 26 Invalid

Conclusion
The black-box test suite checks:
 Valid palindromes
 Non-palindromes
 Boundary lengths
 Invalid inputs
without examining internal code.

42. Design the Black-Box Test Suite for Library Book Search Function
Problem
A function takes the name of a book as input and searches a library file.
 If the book exists → display book details
 Otherwise → display:
"Book Not Available"

Black-Box Testing Techniques Used


1. Equivalence Class Partitioning
2. Boundary Value Analysis

Equivalence Classes
Valid Equivalence Classes
Class Description Example
V1 Book available in library "C Programming"
V2 Book not available "Unknown Book"
V3 Book name with lowercase/uppercase variation "c programming"

Invalid Equivalence Classes


Class Description Example
I1 Empty input ""
I2 Numeric input 12345
I3 Special characters only @#$%

Test Cases
Test Case ID Input Expected Output
TC1 C Programming Display Book Details
TC2 Data Structures Display Book Details
TC3 Unknown Book Book Not Available
TC4 "" Invalid Input
TC5 12345 Invalid Input
TC6 @#$% Invalid Input
TC7 c programming Display Book Details (if case-insensitive)
Boundary Value Analysis
Suppose maximum allowed book name length is:
50 characters
Boundary Test Cases
Test Case Length Expected Result
TC8 49 characters Valid
TC9 50 characters Valid
TC10 51 characters Invalid

Conclusion
The black-box test suite verifies:
 Available and unavailable books
 Invalid inputs
 Boundary conditions
 Case variations
without considering internal program logic.

(a) Briefly Discuss Different Software Quality Assurance (SQA) Activities


Definition
Software Quality Assurance (SQA) consists of planned and systematic activities performed to ensure
that software processes and products conform to specified requirements and quality standards.

Major SQA Activities


1. Software Reviews
Reviews are conducted to examine software requirements, design documents, and source code to
identify defects early.
Types
 Management Review
 Technical Review
 Peer Review

2. Software Inspections
A formal evaluation of software documents and code to detect defects before testing.
Benefits
 Early defect detection
 Improved software quality

3. Software Testing
Testing is performed to verify that the software works according to specifications and requirements.
Types
 Unit Testing
 Integration Testing
 System Testing
 Acceptance Testing

4. Configuration Management
Controls changes made to software, documents, and related components.
Objectives
 Maintain version control
 Prevent unauthorized changes

5. Quality Audits
Audits ensure that development activities follow established standards, procedures, and policies.

6. Defect Collection and Analysis


Defects are collected, classified, and analyzed to identify common sources of errors and improve
processes.

7. Training and Process Improvement


Developers and testers are trained in quality standards and best practices to continuously improve
software processes.

Conclusion
Important SQA activities include:
1. Reviews
2. Inspections
3. Testing
4. Configuration Management
5. Quality Audits
6. Defect Analysis
7. Process Improvement
These activities help prevent defects and improve software quality.

(b) How are the Terms Reliability and Maintainability Related to Software Quality?
Reliability
Reliability is the ability of software to perform its required functions correctly without failure for a
specified period of time.
Example
An ATM system operating continuously without crashing.
Relation to Software Quality
Higher reliability means higher software quality because users expect accurate and failure-free
operation.

Maintainability
Maintainability is the ability of software to be easily modified, corrected, tested, and updated.
Example
Adding new features or fixing bugs with minimal effort.
Relation to Software Quality
Higher maintainability improves software quality because changes and corrections can be made
quickly and efficiently.

Conclusion
Reliability and maintainability are important quality factors.
 Reliability ensures failure-free and correct operation.
 Maintainability ensures easy modification and correction.
Therefore, software with high reliability and maintainability is considered to be of high quality.

Software Quality Assurance (SQA)


Software Quality Assurance (SQA) is a set of activities that ensures the software development
process and the final software product meet specified quality standards and user requirements.
SQA focuses on:
 Preventing defects
 Improving software quality
 Ensuring compliance with standards
 Increasing customer satisfaction

1. Concept of Quality
Definition
Quality is the degree to which a software product satisfies specified requirements and meets user
expectations.
According to ISO:
"Quality is the totality of features and characteristics of a product that bear on its ability to satisfy
stated or implied needs."

Characteristics of Software Quality


1. Correctness
Software performs the required functions correctly.
2. Reliability
Software operates without failure for a specified period.
3. Efficiency
Software uses resources effectively.
4. Usability
Software is easy to learn and use.
5. Maintainability
Software can be modified and corrected easily.
6. Portability
Software can run on different platforms.

Importance of Quality
1. Increases customer satisfaction
2. Reduces maintenance cost
3. Improves reliability
4. Enhances software performance
5. Increases market reputation

2. Quality Control (QC)


Definition
Quality Control is a product-oriented activity that focuses on identifying defects in the finished
software product.
It involves:
 Testing
 Inspection
 Reviews
to detect and correct defects.

Objectives of Quality Control


1. Detect defects in software
2. Verify software functionality
3. Ensure conformance to requirements
4. Improve product quality

Activities of Quality Control


Testing
Checking software execution for defects.
Inspection
Formal examination of software documents and code.
Review
Systematic analysis of software artifacts.

Example
Testing a banking application to verify:
 Correct account balance
 Correct transaction processing
is Quality Control.

Advantages
1. Finds defects before release
2. Improves product quality
3. Increases customer confidence

3. Quality Assurance (QA)


Definition
Quality Assurance is a process-oriented activity that focuses on preventing defects during software
development.
It ensures that proper processes, standards, and methodologies are followed.

Objectives of Quality Assurance


1. Prevent defects
2. Improve development process
3. Ensure compliance with standards
4. Enhance software quality

Activities of Quality Assurance


Process Definition
Establish development standards.
Audits
Verify compliance with procedures.
Training
Educate developers and testers.
Process Improvement
Continuously improve software processes.

Example
Following coding standards and conducting regular process audits are QA activities.

Advantages
1. Prevents defects
2. Reduces development cost
3. Improves process efficiency
4. Produces high-quality software

Difference Between Quality Assurance and Quality Control


Quality Assurance (QA) Quality Control (QC)
Process-oriented Product-oriented
Prevents defects Detects defects
Focuses on process Focuses on product
Proactive approach Reactive approach
Conducted during development Conducted after development

4. IEEE Standard for Statistical Software Quality Assurance (SSQA)


Definition
Statistical Software Quality Assurance (SSQA) is a technique that uses statistical methods to
measure, analyze, and improve software quality.
IEEE recommends collecting and analyzing defect data throughout software development.

Objectives of SSQA
1. Measure software quality quantitatively
2. Identify defect-prone areas
3. Improve development process
4. Predict future software quality

SSQA Process
Step 1: Collect Defect Data
Gather information about errors and defects.
Step 2: Categorize Defects
Classify defects into different categories.
Step 3: Analyze Defect Frequency
Determine how often defects occur.
Step 4: Identify Major Sources of Defects
Locate modules producing maximum defects.
Step 5: Take Corrective Actions
Improve processes to reduce defects.

IEEE SSQA Criteria


IEEE Statistical Software Quality Assurance evaluates software quality using various criteria.

1. Correctness
Measures the degree to which software performs required functions accurately.
Example
Banking software calculates interest correctly.

2. Reliability
Measures the probability of failure-free operation.
Example
ATM software operating continuously without crashes.

3. Efficiency
Measures resource utilization such as:
 CPU
 Memory
 Time

4. Integrity (Security)
Measures protection against unauthorized access.
Example
Password authentication system.

5. Usability
Measures ease of learning and using software.
Example
User-friendly mobile application.

6. Maintainability
Measures ease of modification and debugging.
Example
Updating software features easily.

7. Flexibility
Measures ease of adapting software to new requirements.

8. Testability
Measures ease of testing software.
Example
Well-structured modular programs.

9. Portability
Measures ease of transferring software to another platform.
Example
Software running on both Windows and Linux.

10. Reusability
Measures ability to reuse software components.
Example
Reusable library functions.
11. Interoperability
Measures ability to interact with other systems.
Example
Payment gateway integration.

1. What is Reliability?
Reliability is the ability of software to perform its required functions correctly and without failure for
a specified period of time under specified conditions.
Example:
An ATM system that operates continuously without crashing is considered reliable.

2. Define Maintainability.
Maintainability is the ease with which a software system can be modified, corrected, updated, or
enhanced after its development.
Example:
A program whose bugs can be fixed easily and new features can be added with minimal effort has
high maintainability.

3. What is Portability?
Portability is the ability of software to be transferred and executed on different hardware platforms
or operating systems with little or no modification.
Example:
Software that runs on both Windows and Linux is portable.

4. Define Testability.
Testability is the degree to which a software system can be easily tested to determine whether it
satisfies its specified requirements.
Example:
A modular and well-structured program is easier to test and therefore has high testability.
5. Explain IEEE Statistical Software Quality Assurance (SSQA)
Definition
IEEE Statistical Software Quality Assurance (SSQA) is a quality assurance technique that uses
statistical methods to measure, analyze, monitor, and improve software quality throughout the
software development life cycle.
SSQA collects defect data, analyzes the causes of defects, and uses the results to improve the
software process and product quality.

Objectives of SSQA
1. Measure software quality quantitatively.
2. Identify defect-prone modules.
3. Improve software development processes.
4. Reduce software defects.
5. Increase software reliability and maintainability.

SSQA Process
1. Defect Data Collection
Information regarding software defects is collected during development and testing.
2. Defect Classification
Defects are categorized according to their type, severity, and source.
3. Statistical Analysis
Statistical techniques are used to analyze defect patterns and frequencies.
4. Identification of Problem Areas
Modules producing maximum defects are identified.
5. Corrective Actions
Necessary process improvements are implemented to reduce future defects.
6. Continuous Monitoring
Software quality is continuously monitored and improved.

Advantages of SSQA
1. Provides quantitative measurement of quality.
2. Helps identify defect-prone areas.
3. Improves software reliability.
4. Reduces maintenance cost.
5. Supports continuous process improvement.

Conclusion
IEEE SSQA is a systematic approach that uses statistical techniques to evaluate and improve software
quality by collecting, analyzing, and controlling defect data throughout the software development
process.

6. Discuss Various SSQA Quality Criteria


According to IEEE Software Quality Assurance standards, software quality is evaluated using several
quality criteria (quality factors).

1. Correctness
Correctness is the degree to which software satisfies its specified requirements and produces
accurate results.
Example
A payroll system correctly calculates employee salaries.

2. Reliability
Reliability is the ability of software to perform required functions without failure for a specified
period of time.
Example
An ATM system working continuously without crashing.

3. Efficiency
Efficiency measures how effectively software utilizes resources such as CPU time, memory, and
storage.
Example
A program using minimum memory while providing fast results.

4. Integrity (Security)
Integrity measures the ability of software to protect data and programs from unauthorized access.
Example
Password-protected banking software.
5. Usability
Usability refers to the ease with which users can learn and operate the software.
Example
A user-friendly mobile application.

6. Maintainability
Maintainability is the ease with which software can be modified, corrected, or enhanced.
Example
Updating software with new features.

7. Flexibility
Flexibility is the ease with which software can adapt to changing requirements.
Example
Adding new modules without major redesign.

8. Testability
Testability is the ease with which software can be tested to verify its correctness.
Example
A modular program with independent functions.

9. Portability
Portability is the ability of software to operate on different hardware or operating systems.
Example
Software running on both Windows and Linux.

10. Reusability
Reusability is the ability to use software components in other applications.
Example
Reusable library functions.

11. Interoperability
Interoperability is the ability of software to communicate and work with other systems.
Example
An online payment gateway interacting with banking systems.

7. Explain the Importance of Software Quality Assurance (SQA)


Definition
Software Quality Assurance (SQA) is a set of planned and systematic activities carried out to ensure
that software processes and products conform to specified requirements and standards.

Importance of Software Quality Assurance


1. Improves Software Quality
SQA ensures that software is developed according to established standards and procedures,
resulting in a high-quality product.

2. Prevents Defects
SQA focuses on defect prevention rather than defect detection, reducing the occurrence of errors
during development.

3. Increases Reliability
By following proper development and testing processes, software becomes more reliable and
performs consistently.

4. Reduces Development and Maintenance Cost


Early detection and prevention of defects reduce the cost of fixing errors later in the software life
cycle.

5. Enhances Customer Satisfaction


Quality software meets user requirements and expectations, leading to greater customer
satisfaction.

6. Ensures Compliance with Standards


SQA ensures that software development follows industry standards, guidelines, and best practices.

7. Improves Productivity
Well-defined processes help developers work more efficiently and reduce rework.

8. Facilitates Continuous Improvement


SQA activities help identify weaknesses in the development process and encourage continuous
improvement.

Conclusion
Software Quality Assurance is essential for developing reliable, efficient, maintainable, and high-
quality software. It helps prevent defects, reduce costs, improve customer satisfaction, and ensure
compliance with standards.

8. Describe Quality Factors Used in Software Quality Measurement


Definition
Quality factors are characteristics used to evaluate and measure the quality of software products.
They indicate how well software satisfies user requirements and quality standards.

Important Quality Factors


1. Correctness
Correctness is the degree to which software satisfies its specified requirements and produces
accurate results.
Example
A payroll system correctly calculates salaries.

2. Reliability
Reliability is the ability of software to perform required functions without failure for a specified
period.
Example
An ATM system operating continuously without crashes.
3. Efficiency
Efficiency measures how effectively software utilizes resources such as CPU time, memory, and
storage.
Example
A program producing fast results with minimum memory usage.

4. Integrity (Security)
Integrity refers to the ability of software to protect data and programs from unauthorized access.
Example
Password-protected banking software.

5. Usability
Usability is the ease with which users can learn, operate, and understand the software.
Example
A user-friendly mobile application.

6. Maintainability
Maintainability is the ease with which software can be modified, corrected, and updated.
Example
Fixing bugs or adding new features easily.

7. Flexibility
Flexibility is the ability of software to adapt to changing requirements.
Example
Adding a new module without redesigning the entire system.

8. Testability
Testability is the ease with which software can be tested to verify its correctness.
Example
A modular program with independent functions.

9. Portability
Portability is the ability of software to run on different hardware or operating systems.
Example
Software that works on both Windows and Linux.

10. Reusability
Reusability is the ability to use software components in other applications.
Example
Reusable class libraries.

11. Interoperability
Interoperability is the ability of software to communicate and work with other software systems.
Example
A payment gateway interacting with banking software.

Software Requirement and Specification Analysis


Requirement Analysis is one of the most important phases of Software Engineering. It helps
understand what the customer needs and documents those needs clearly before software
development begins.

1. Requirement Analysis
Definition
Requirement Analysis is the process of identifying, gathering, analyzing, documenting, and validating
the requirements of a software system.
It answers:
"What should the software do?"

Objectives of Requirement Analysis


1. Understand customer needs.
2. Define system functionality.
3. Identify constraints.
4. Reduce misunderstandings.
5. Provide a basis for software design.

Activities in Requirement Analysis


1. Requirement Gathering
Collect requirements from customers and stakeholders.
2. Requirement Analysis
Analyze and classify requirements.
3. Requirement Specification
Document requirements in a formal way.
4. Requirement Validation
Verify correctness and completeness.

2. Software Requirement Specification (SRS)


Definition
A Software Requirement Specification (SRS) is a formal document that describes all functional and
non-functional requirements of the software system.
It acts as an agreement between:
 Customer
 Developer

Characteristics of a Good SRS


1. Correct
Contains accurate requirements.
2. Complete
Includes all required functionalities.
3. Consistent
No conflicting requirements.
4. Unambiguous
Clear and understandable.
5. Verifiable
Requirements can be tested.
6. Modifiable
Easy to update.
7. Traceable
Requirements can be tracked.

Importance of SRS
1. Serves as a contract between customer and developer.
2. Helps in software design.
3. Helps in testing.
4. Reduces development cost.
5. Improves communication.

Requirement Principles
Requirement principles are guidelines that help in identifying and documenting good requirements.

1. Understand the Problem


The analyst must thoroughly understand the customer's problem before proposing solutions.
Example
Understanding banking operations before developing banking software.

2. Focus on User Needs


Requirements should reflect actual user requirements rather than developer assumptions.

3. Define Scope Clearly


The boundaries and objectives of the software should be clearly specified.

4. Prioritize Requirements
Requirements should be classified as:
 Essential
 Desirable
 Optional

5. Eliminate Ambiguity
Requirements must be clear and precise.
Bad Requirement
"The system should be fast."
Good Requirement
"The system should respond within 2 seconds."

6. Ensure Consistency
Requirements should not contradict each other.

7. Validate Requirements
Requirements must be reviewed and approved by stakeholders.

Requirement Analysis Principles


Requirement Analysis Principles provide guidelines for analyzing gathered requirements effectively.

1. Represent Information Domain


The analyst must understand:
 Data
 Inputs
 Outputs
 Processing requirements
Example
In a library system:
 Book records
 Student records
 Issue and return transactions

2. Define Software Functions


Clearly identify what functions the software should perform.
Example
Library Management System:
 Add books
 Search books
 Issue books
 Return books

3. Represent Software Behavior


Describe how the software behaves in response to events.
Example
When a user enters an incorrect password, access is denied.

4. Partition the Problem


Break a large problem into smaller manageable modules.
Example
Banking System:
 Account Module
 Transaction Module
 Loan Module

5. Move from Information to Detail


Analysis should begin with high-level requirements and gradually move to detailed requirements.

6. Focus on What, Not How


Requirement analysis should specify:
✔ What the software should do
❌ How it will be implemented
Example
Requirement:
"The system shall generate monthly reports."
Implementation details are not discussed during analysis.

Difference Between Requirement Principles and Analysis Principles


Requirement Principles Requirement Analysis Principles
Concerned with defining good requirements Concerned with analyzing requirements
Requirement Principles Requirement Analysis Principles

Focus on user needs Focus on understanding system behavior


Ensures requirement quality Ensures proper analysis
Helps prepare SRS Helps create system model

1. Specification Principles
Definition
Specification Principles are guidelines followed while preparing the Software Requirement
Specification (SRS) document so that requirements are clear, complete, and understandable.
The specification should describe:
 What the software must do
 What constraints exist
 What outputs are expected
without describing implementation details.

Specification Principles
1. Separate Functionality from Implementation
The specification should describe what the system does, not how it will be implemented.
Example
Correct:
The system shall generate salary reports.
Incorrect:
The system shall generate reports using Java and MySQL.

2. Be Complete
All requirements should be included.

3. Be Consistent
Requirements should not contradict each other.

4. Be Unambiguous
Every requirement should have only one interpretation.

5. Be Verifiable
Requirements should be testable.
Example
Good:
System response time shall be less than 2 seconds.

6. Be Modifiable
Changes should be easy to incorporate.

7. Be Traceable
Every requirement should be traceable to its source.
Representation of Software Requirements
Requirements are represented using:
1. Data Flow Diagrams (DFD)
Shows flow of information.
2. Decision Tables
Represents complex decisions.
3. Decision Trees
Graphical representation of decisions.
4. Structured English
Simple English statements.
5. ER Diagrams
Represents data relationships.

2. Software Design Analysis


Software Design Analysis converts requirements into a software design model.
It describes:
 Data structure
 Modules
 Interfaces
 Processing logic

Data Flow Diagram (DFD)


Definition
DFD is a graphical representation of the flow of data through a system.

DFD Symbols
Symbol Meaning
Circle Process
Rectangle External Entity
Arrow Data Flow
Open Rectangle Data Store

Different Levels of DFD

Level 0 DFD (Context Diagram)


Entire system represented as one process.
Example
Student ----> Library System ----> Librarian
Only major inputs and outputs shown.

Level 1 DFD
Main process divided into sub-processes.
Example
Library System
 Search Book
 Issue Book
 Return Book
Level 2 DFD
Each Level 1 process further decomposed.
Example
Issue Book
 Verify Student
 Verify Book
 Update Record

Long Question
Explain Different Levels of DFD
Answer
1. Level 0 DFD shows entire system as a single process.
2. Level 1 DFD decomposes the system into major processes.
3. Level 2 DFD further decomposes Level 1 processes into detailed processes.
DFD levels provide progressive refinement of system functionality.

Physical DFD and Logical DFD

Logical DFD
Shows:
 What system does
 Data movement
 Business functions
without implementation details.
Example
Process Salary
Generate Payslip

Physical DFD
Shows:
 How system is implemented
 Hardware
 Software
 Files
 People
Example
Payroll Software
Printer
Database Server

Difference
Logical DFD Physical DFD
What system does How system works
Business view Implementation view
Technology independent Technology dependent
Conversion of Logical DFD to Physical DFD
Steps:
1. Identify processes.
2. Identify hardware/software.
3. Identify databases.
4. Assign responsibilities.
5. Add implementation details.

3. Decision Tables
Definition
Decision table is a tabular representation of conditions and actions.
Useful when many conditions affect outcomes.

Example
Loan Approval System
Conditions Rule1 Rule2
Income > 50000 Y N
Credit Score Good Y Y
Approve Loan Y N

Advantages
1. Easy to understand.
2. Handles complex decisions.
3. Reduces ambiguity.

4. Decision Trees
Definition
A graphical representation of decision logic.

Example
Income > 50000?
/ \
Yes No
/ \
Credit Good? Reject
/ \
Yes No
| |
Approve Reject

Difference Between Decision Table and Decision Tree


Decision Table Decision Tree
Tabular form Graphical form
Easy for many conditions Easy for visualization
Compact Intuitive

5. Structured Analysis
Definition
Structured Analysis is a technique used to analyze system requirements using graphical models.
Tools used:
1. DFD
2. Data Dictionary
3. Decision Tables
4. Decision Trees

Objectives
1. Understand system requirements.
2. Improve communication.
3. Simplify complex systems.

6. Coupling and Cohesion


Very important CU Exam Topic.

Cohesion
Definition
Cohesion measures how closely related the functions within a module are.
High Cohesion = Good Design

Types of Cohesion
1. Coincidental Cohesion (Worst)
Unrelated functions grouped together.

2. Logical Cohesion
Functions logically related.

3. Temporal Cohesion
Functions executed at same time.

4. Procedural Cohesion
Functions executed in sequence.

5. Communicational Cohesion
Functions use same data.

6. Sequential Cohesion
Output of one function becomes input of another.

7. Functional Cohesion (Best)


All functions contribute to one task.

Coupling
Definition
Coupling measures dependency between modules.
Low Coupling = Good Design
Types of Coupling
1. Content Coupling (Worst)
One module directly accesses another module.

2. Common Coupling
Modules share global data.

3. Control Coupling
One module controls another.

4. Stamp Coupling
Entire data structure passed.

5. Data Coupling (Best)


Only required data passed.

Long Question
Explain Coupling and Cohesion
Answer
Cohesion measures strength within a module whereas coupling measures dependency between
modules.
Good software design requires:
 High Cohesion
 Low Coupling
because it improves maintainability, readability, and reusability.
Software Cost Estimation Model – COCOMO
Introduction
Software Cost Estimation is the process of predicting:
 Development effort
 Development cost
 Development time
 Number of developers required
before software development begins.
One of the most popular software cost estimation models is COCOMO.

What is COCOMO?
COCOMO stands for:
COnstructive COst MOdel
It was developed by Barry Boehm in 1981.
COCOMO estimates the effort, development time, and cost required for software projects based on
the size of the software.
The size is measured in:
KLOC = Kilo Lines of Code
1 KLOC=1000lines of code

Objectives of COCOMO
1. Estimate software development effort.
2. Estimate project completion time.
3. Estimate project cost.
4. Help in project planning and management.

Types of COCOMO Models


COCOMO consists of three models:
1. Basic COCOMO
Uses only software size (KLOC).
Suitable for:
 Small projects
 Early estimation

2. Intermediate COCOMO
Uses:
 KLOC
 Cost Drivers
Examples of cost drivers:
 Product complexity
 Developer experience
 Required reliability
Provides more accurate estimates.

3. Detailed COCOMO
Most advanced model.
Uses:
 KLOC
 Cost drivers
 Phase-wise effort estimation
Effort is estimated separately for:
 Analysis
 Design
 Coding
 Testing

Project Categories in COCOMO


COCOMO classifies projects into three categories.

1. Organic Projects
Characteristics
 Small size
 Simple applications
 Experienced team
 Flexible requirements
Examples
 Library Management System
 Student Information System
 Payroll System
Formula
E=2.4 ¿
2. Semi-Detached Projects
Characteristics
 Medium size
 Moderate complexity
 Mixed experience team
Examples
 Database Management Systems
 Compiler Projects
Formula
E=3.0 ¿

3. Embedded Projects
Characteristics
 Large size
 High complexity
 Strict hardware/software constraints
Examples
 Air Traffic Control Systems
 Missile Control Systems
 Real-Time Operating Systems
Formula
E=3.6 ¿

Effort Estimation Formula


The general effort formula is:
E=a ¿
Where:
 E = Effort (Person-Months)
 KLOC = Thousands of Lines of Code
 a, b = Constants

Development Time Formula


The development time is estimated as:
T =2.5 ¿
Where:
 T = Development Time (Months)
 E = Effort
 d = Constant

Constants Used in Basic COCOMO


Project Type a b d
Organic 2.4 1.05 0.38
Semi-Detached 3.0 1.12 0.35
Embedded 3.6 1.20 0.32
Project Type a b d

Advantages of COCOMO
1. Simple and easy to use.
2. Provides quick estimation.
3. Helps project planning.
4. Widely accepted in software engineering.
5. Useful for budgeting and scheduling.

Disadvantages of COCOMO
1. Depends heavily on KLOC estimation.
2. Less accurate for modern software projects.
3. Difficult to estimate lines of code in early stages.
4. Does not fully consider changing requirements.

Difference Between Basic, Intermediate and Detailed COCOMO


Basic Intermediate Detailed
Uses only KLOC Uses KLOC + Cost Drivers Uses KLOC + Cost Drivers + Phase-wise estimation
Simple More accurate Most accurate
Early estimation Medium projects Large projects

5-Mark Exam Answer


Define COCOMO.
COCOMO (Constructive Cost Model) is a software cost estimation model developed by Barry Boehm.
It estimates the effort, development time, and cost of software projects based on the size of the
software measured in KLOC (Kilo Lines of Code). COCOMO classifies projects into Organic, Semi-
Detached, and Embedded categories and provides mathematical formulas for estimating
development effort.

4(b) Describe the Features of Organic Type of Software as Specified in COCOMO.


Organic Project
Organic projects are relatively small and simple software projects developed by experienced teams
in a familiar environment.
Features of Organic Software
1. Small project size
o Usually less complex.
2. Experienced development team
o Team members are familiar with the application area.
3. Stable requirements
o Requirements are well understood and rarely change.
4. Less stringent constraints
o Fewer hardware and software restrictions.
5. Flexible environment
o Development process is comparatively simple.
6. Low complexity
o Algorithms and interfaces are not highly complex.
Examples
 Library Management System
 Payroll System
 Student Information System

4(c) Write the Advantages of Decision Tree in Problem Design.


Advantages of Decision Tree
1. Easy to understand
o Decision logic is represented graphically and is easy to interpret.
2. Represents complex decisions clearly
o Multiple conditions and actions can be shown systematically.
3. Helps in analysis and design
o Simplifies problem solving and system design.
4. Reduces ambiguity
o Clearly specifies all possible decision paths.
5. Useful in testing
o Helps generate test cases for software testing.
6. Facilitates communication
o Easy for developers and users to understand.
6(b) Explain the Functionality of Physical DFD
Definition
A Physical Data Flow Diagram (Physical DFD) describes how a system is implemented. It shows:
 Hardware
 Software
 Files
 Databases
 People involved in processing data
Unlike Logical DFD, it focuses on implementation details.

Functionality of Physical DFD


1. Shows Implementation Details
It specifies how processes are carried out using hardware and software.
2. Identifies Data Storage
Shows physical files, databases, and storage devices used.
3. Specifies People and Devices
Identifies users, operators, printers, and computer systems involved.
4. Describes Data Movement
Shows how data moves through physical components.
5. Helps System Design
Assists developers in implementing the actual system.
6. Supports Resource Allocation
Helps determine hardware and software requirements.

Example
In a Library Management System:
 Database Server stores book records.
 Barcode Scanner reads book IDs.
 Printer generates issue slips.
 Librarian operates the software.
These implementation details are represented in a Physical DFD.

Conclusion
A Physical DFD shows how a system operates in practice by representing physical resources, files,
devices, and implementation details. It is useful during system design and implementation.

1. Define a System.
Answer
A system is a collection of interrelated components that work together to achieve a common
objective by accepting inputs, processing them, and producing outputs.
A system generally consists of:
 Input
 Processing
 Output
 Feedback
 Control
Example
A Library Management System takes book requests as input, processes them, and provides
issue/return information as output.

2. Explain the Components of a System.


Answer
The major components of a system are:
(a) Input
Data entered into the system.
(b) Processing
Transformation of input into output.
(c) Output
Final result produced by the system.
(d) Feedback
Information used for improvement.
(e) Control
Mechanism that regulates system operation.

3. Differentiate Between Open and Closed Systems.


Answer
Open System Closed System
Interacts with environment Does not interact with environment
Receives input and gives output Self-contained
Dynamic in nature Relatively static
Can adapt to changes Cannot adapt easily
Example: Banking System Example: Mechanical Clock
4. What is an Open System?
Answer
An open system interacts continuously with its external environment by receiving inputs and
producing outputs.
Characteristics
1. Receives inputs from environment.
2. Produces outputs to environment.
3. Adapts to environmental changes.
Example
 Banking System
 Railway Reservation System
 Library Management System

5. What is a Closed System?


Answer
A closed system operates independently without significant interaction with its environment.
Characteristics
1. Self-contained.
2. Minimal external interaction.
3. Fixed operation.
Example
A mechanical watch.

6. Explain System Modelling Through Computer Hardware.


Answer
Computer hardware forms the physical components of a computerized system.
Hardware Components
1. Input Devices
o Keyboard
o Mouse
o Scanner
2. Processing Unit
o CPU
o Memory
3. Storage Devices
o Hard Disk
o SSD
4. Output Devices
o Monitor
o Printer
Importance
 Performs data processing
 Stores information
 Produces output efficiently

7. Explain Communication Systems in System Modelling.


Answer
A communication system enables data exchange between different components of a system.
Components
1. Sender
2. Receiver
3. Communication Channel
4. Protocol
Examples
 Internet
 LAN
 Wi-Fi networks
Importance
 Enables resource sharing
 Facilitates communication
 Supports distributed systems

8. What are External Agents?


Answer
External agents are entities outside the system that interact with it by providing input or receiving
output.
Examples
 Customer
 Student
 Supplier
 Bank
Example in Library System
 Student requests books.
 Librarian issues books.

9. Explain Software Systems.


Answer
A software system is a collection of programs, procedures, and documentation that perform specific
tasks.
Types
(a) System Software
Controls hardware.
Examples:
 Operating System
 Compiler
(b) Application Software
Performs user tasks.
Examples:
 Payroll System
 Banking Software

10. Importance of Engineering Methodology Towards Computerization of a System


Answer
Engineering methodology refers to systematic techniques used for developing computerized
systems.
Importance
1. Systematic Development
Provides a structured approach.
2. Improves Quality
Reduces errors and defects.
3. Better Documentation
Facilitates maintenance.
4. Cost Reduction
Reduces development cost.
5. Efficient Resource Utilization
Uses hardware and software effectively.
6. Easy Maintenance
Simplifies modifications and updates.
7. Reliability
Produces dependable systems.
Conclusion
Engineering methodology ensures successful computerization of systems through proper planning,
analysis, design, implementation, and maintenance.

b) What do you understand by software fault?


Answer
A software fault is a defect or bug in the software code, design, or documentation that may cause
the software to produce incorrect results or fail during execution.
A fault is usually introduced due to human error during software development.
Example
Writing:
if(a=b)
instead of
if(a==b)
creates a software fault.

(c) What do you mean by the term 'V and V activities', and what is its role in the lifecycle of a
software?
Answer
V & V stands for Verification and Validation.
 Verification checks whether the software is being developed according to specifications.
"Are we building the product right?"
 Validation checks whether the developed software satisfies user requirements.
"Are we building the right product?"
Role in Software Life Cycle
1. Detects defects early.
2. Improves software quality.
3. Ensures customer satisfaction.
4. Reduces maintenance cost.
Thus, V & V activities ensure the development of reliable and high-quality software.

(d) Why is unit testing performed on software?


Answer
Unit testing is performed to test individual modules or units of software independently.
Objectives
1. Detect coding errors early.
2. Verify correctness of modules.
3. Simplify debugging.
4. Improve software quality.
5. Reduce maintenance cost.
Therefore, unit testing ensures that each software component functions correctly before integration.

(e) What is a context diagram?


Answer
A Context Diagram is the Level-0 DFD that represents the entire system as a single process and
shows its interaction with external entities.
It displays:
 Inputs to the system
 Outputs from the system
 External entities
Example
In a Library Management System:
 Student sends book request.
 System issues books.
 Librarian manages records.

(f) Why is low coupling desirable?


Answer
Low coupling means there is less dependency among software modules.
Low coupling is desirable because it:
1. Improves maintainability.
2. Simplifies testing.
3. Reduces the effect of changes.
4. Increases module reusability.
5. Makes debugging easier.
Therefore, good software design aims for low coupling and high cohesion.

(g) What is Logical DFD?


Answer
A Logical Data Flow Diagram (Logical DFD) describes what the system does without showing
implementation details.
It focuses on:
 Business processes
 Data flow
 Functional requirements
It does not specify:
 Hardware
 Software
 Files
Example
In a Library System:
 Search Book
 Issue Book
 Return Book
are shown without specifying databases or hardware.

(h) Write the functionality of a stub.


Answer
A stub is a dummy module used during testing to simulate the behavior of a lower-level module that
is not yet developed.
Functions of a Stub
1. Simulates missing modules.
2. Returns predefined outputs.
3. Supports top-down integration testing.
4. Enables early testing.
5. Helps detect interface errors.
Thus, a stub acts as a temporary replacement for unavailable modules during testing.

2(a) What are the advantages of the Prototype Model? Regardless of its merits, why is it a costly
model to emulate?
Prototype Model
The Prototype Model is a software development model in which a preliminary version (prototype) of
the software is developed to understand user requirements. The prototype is refined repeatedly
based on user feedback until the final system is developed.

Advantages of Prototype Model


1. Better Understanding of Requirements
Users can visualize the system and clarify their requirements more accurately.

2. Increased User Involvement


Continuous interaction between developers and users improves communication and satisfaction.

3. Early Detection of Errors


Errors and missing requirements are identified at an early stage.

4. Improves Software Quality


Frequent feedback helps produce software that better satisfies user needs.

5. Reduces Requirement Ambiguity


The prototype provides a working model, reducing misunderstandings.

6. Facilitates Easy Modification


Changes can be incorporated during development with less difficulty.

Why is Prototype Model Costly?


Despite its advantages, the Prototype Model can be costly due to the following reasons:
1. Repeated Development
Several prototypes may need to be developed before obtaining the final product.
2. Increased Time and Effort
Continuous user feedback and modifications consume extra time and resources.

3. Higher Development Cost


Frequent redesigning and recoding increase development expenses.

4. Resource Intensive
Additional manpower and computing resources are required.

5. Poor Documentation
Developers often focus more on prototype development than documentation, increasing
maintenance cost.

Conclusion
The Prototype Model improves requirement analysis and customer satisfaction but becomes costly
because of repeated modifications, additional effort, and increased resource consumption.

2(b) Discuss the Evolutionary Model in Brief, Along with its Suitable Domain of Application.
Evolutionary Model
The Evolutionary Model is a software development model in which software is developed
incrementally through multiple versions. Each version adds new features and improves the previous
version until the final system is completed.
The software evolves continuously according to user requirements.

Steps of Evolutionary Model


1. Requirement Collection
2. Initial Development
3. User Evaluation
4. Modification and Enhancement
5. Release of Improved Version
6. Final Product Development

Features of Evolutionary Model


1. Incremental development
2. Continuous customer feedback
3. Flexible to changing requirements
4. Early delivery of working software

Advantages
1. Handles changing requirements effectively.
2. Provides early working versions.
3. Reduces project risk.
4. Improves customer satisfaction.

Disadvantages
1. Requires continuous user involvement.
2. Difficult to manage large projects.
3. Documentation may be inadequate.
Suitable Domains of Application
The Evolutionary Model is suitable for projects where requirements are not completely known
initially or are expected to change frequently.
Applications
1. Web Applications
2. E-commerce Systems
3. Banking Software
4. Online Reservation Systems
5. Management Information Systems
6. Large Interactive Systems
Example
An online shopping website may first provide:
 User registration
Later versions may add:
 Payment gateway
 Product recommendation
 Order tracking
Thus, the system evolves over time.
3(a) What is the Role of an SRS? What are the Components of a Good SRS?
What is SRS?
SRS (Software Requirement Specification) is a formal document that describes the functional and
non-functional requirements of a software system.
It acts as an agreement between the customer and the developer.

Role of an SRS (2 Marks)


1. Basis for Software Development
SRS provides a clear understanding of system requirements to developers.
2. Agreement Between Customer and Developer
It serves as a contract specifying what the software should do.
3. Basis for Design and Testing
Software design and test cases are prepared based on SRS.
4. Reduces Ambiguity
Clear requirements reduce misunderstandings.
5. Facilitates Maintenance
Well-documented requirements help future modifications.

Components/Characteristics of a Good SRS (3 Marks)


A good SRS should possess the following characteristics:
1. Correct
Requirements should accurately reflect user needs.
2. Complete
All requirements must be included.
3. Consistent
Requirements should not contradict each other.
4. Unambiguous
Each requirement should have only one interpretation.
5. Verifiable
Requirements should be testable.
6. Modifiable
Changes should be easy to make.
7. Traceable
Each requirement should be traceable to its source.
8. Ranked for Importance
Requirements should be prioritized.

Conclusion
SRS is the foundation of software development. A good SRS should be correct, complete, consistent,
unambiguous, verifiable, modifiable, and traceable.

3(b) Discuss the Different Types of Coupling in Detail.


Definition
Coupling is the degree of interdependence between software modules.
 Low Coupling = Good Design
 High Coupling = Poor Design
The lower the coupling, the easier it is to maintain and modify the software.

Types of Coupling
Coupling is generally arranged from worst to best.

1. Content Coupling (Worst)


Definition
One module directly accesses or modifies the internal data or code of another module.
Example
Module A directly changes variables of Module B.
Disadvantages
 Very high dependency
 Difficult maintenance

2. Common Coupling
Definition
Two or more modules share common global data.
Common coupling involves modules sharing global data structures. Changes in global data require
tracing back to all modules that access that data, making it difficult to reuse modules and maintain
the system.
Example
int total; // global variable
Multiple modules use total.
Disadvantages
 Changes in global data affect many modules.

3. External Coupling
Definition
Modules depend on externally imposed interfaces, protocols, or file formats.
External coupling occurs when modules depend on external factors such as protocols, external files,
or device formats. This type of coupling is related to communication with external tools and devices.
Example
Two modules accessing the same file format.

4. Control Coupling
Definition
One module passes control information that determines the behavior of another module.
Example
process(flag);
The value of flag determines which operation is performed.
Disadvantages
 Modules become dependent on control logic.

5. Stamp Coupling (Data-Structured Coupling)


Definition
Entire data structures are passed between modules, though only part of the data is used.
Example
Passing an entire student record when only roll number is needed.
Disadvantages
 Unnecessary data transfer.

6. Data Coupling (Best)


Definition
Modules communicate by passing only necessary data items.
Data coupling occurs when modules communicate by passing only data. The components are
independent of each other and communicate through data without containing tramp data. An
example is a customer billing system.
Example
sum(a, b);
Only required parameters are passed.
Advantages
 Easy maintenance
 High reusability
 Low dependency

Diagram of Coupling
Worst
Content Coupling

Common Coupling

External Coupling

Control Coupling

Stamp Coupling

Data Coupling
Best
Advantages of Low Coupling
1. Easy maintenance
2. Easier debugging
3. Better reusability
4. Independent module development
5. Easy testing

Why is Black Box Testing also known as Functional Testing? How is it different from traditional
White Box Testing?
Why is Black Box Testing called Functional Testing?
Black Box Testing is also known as Functional Testing because it tests the functions and behavior of
the software according to its specifications and requirements, without considering the internal code
structure.
In black box testing, the tester checks:
 Input provided to the system
 Output produced by the system
 Whether the software performs the required functions correctly
The internal implementation of the program is not visible to the tester; hence it is called a black box.
Example
Consider a login system:
 Input: Username and Password
 Expected Output: Successful login or error message
The tester verifies the functionality without examining the source code.
Thus, black box testing is called functional testing because it focuses on what the software does,
not how it does it.

Difference Between Black Box Testing and White Box Testing


Black Box Testing White Box Testing
Tests software functionality Tests internal code structure
No knowledge of source code required Knowledge of source code required
Focuses on inputs and outputs Focuses on logic and execution paths
Performed from user's perspective Performed from developer's perspective
Detects missing functions and interface errors Detects logical and coding errors
Also called Functional Testing Also called Structural/Glass Box Testing
Uses techniques like Equivalence Partitioning and Uses techniques like Statement Coverage and
Boundary Value Analysis Branch Coverage

Black Box Testing Techniques


1. Equivalence Class Partitioning
2. Boundary Value Analysis
3. Decision Table Testing
4. State Transition Testing

White Box Testing Techniques


1. Statement Coverage
2. Branch Coverage
3. Path Coverage
4. Condition Coverage

Conclusion
Black Box Testing is called Functional Testing because it verifies whether software functions
according to requirements without examining its internal code. In contrast, White Box Testing
examines the internal structure and logic of the program. Both techniques complement each other
and are necessary for effective software testing.

8(a) Briefly Discuss Different Stages of SDLC


Definition of SDLC
SDLC (Software Development Life Cycle) is a systematic process used for developing high-quality
software in a planned and organized manner.
It consists of several phases starting from requirement analysis to maintenance.

Stages of SDLC
1. Requirement Analysis and Feasibility Study
Description
In this phase, the requirements of the customer are collected, analyzed, and documented.
Feasibility study is performed to determine whether the project is:
 Technically feasible
 Economically feasible
 Operationally feasible
Output
Software Requirement Specification (SRS)

2. System Design
Description
The requirements specified in the SRS are converted into software design.
The design includes:
 Database design
 Module design
 Interface design
 Architectural design
Output
Design Document

3. Coding (Implementation)
Description
Programmers translate the design into source code using programming languages such as C, Java, or
Python.
Output
Executable software modules

4. Testing
Description
Testing is performed to identify and remove defects from the software.
Types of Testing
 Unit Testing
 Integration Testing
 System Testing
 Acceptance Testing
Objective
Ensure that the software satisfies the specified requirements.

5. Deployment (Installation)
Description
After successful testing, the software is installed and delivered to the users.
Users begin using the software in the real environment.

6. Maintenance
Description
After deployment, software requires modifications and updates.
Maintenance activities include:
 Corrective Maintenance (bug fixing)
 Adaptive Maintenance (environment changes)
 Perfective Maintenance (enhancements)
 Preventive Maintenance (future improvements)

SDLC Diagram
Requirement Analysis

System Design

Implementation

Testing

Deployment

Maintenance

Advantages of SDLC
1. Provides a systematic development process.
2. Improves software quality.
3. Reduces development cost.
4. Facilitates project management.
5. Ensures proper documentation.

Conclusion
SDLC provides a structured approach for software development. Each phase contributes to
producing reliable, maintainable, and high-quality software.

8(b) Define: Computer-Based Systems Engineering


Answer
Computer-Based Systems Engineering (CBSE) is the process of analyzing, designing, developing,
integrating, and maintaining computer-based systems consisting of hardware, software, databases,
communication networks, and users to achieve specific objectives.
It involves the coordinated development of:
 Hardware systems
 Software systems
 Communication systems
 Human interfaces
Example
Examples of computer-based systems are:
 Banking Systems
 Railway Reservation Systems
 Library Management Systems
 Air Traffic Control Systems
Thus, Computer-Based Systems Engineering ensures that all components of a computer system work
together efficiently to meet user requirements.

Why is Modular Designing Preferred in Software Design?


Answer
Modular designing is a software design technique in which a large software system is divided into
smaller, independent modules, each performing a specific function.
Modular design is preferred because it improves the quality, maintainability, and reliability of
software.

Advantages of Modular Designing


1. Reduces Complexity
Breaking a large system into smaller modules makes the system easier to understand and manage.
Example
A Library Management System can be divided into:
 Login Module
 Book Issue Module
 Book Return Module
 Fine Calculation Module

2. Easy Maintenance
Changes in one module usually do not affect other modules.
Thus, bug fixing and updates become easier.

3. Facilitates Testing
Each module can be tested independently using unit testing, making error detection easier.

4. Improves Reusability
Modules developed for one system can often be reused in other systems.
Example
A login module can be reused in different applications.
5. Supports Parallel Development
Different programmers can work on different modules simultaneously, reducing development time.
6. Enhances Reliability
Errors in one module are less likely to affect the entire system.
Hence, software becomes more reliable.

7. Simplifies Debugging
Since modules are independent, locating and correcting defects becomes easier.

8. Improves Flexibility and Scalability


New features can be added by modifying or adding modules without redesigning the whole system.

5-Mark Exam Answer


Modular designing divides a software system into smaller independent modules, each performing a
specific task. It is preferred because it reduces complexity, simplifies testing and debugging,
improves maintainability and reusability, supports parallel development, and enhances reliability.
Good modular design aims for high cohesion and low coupling, resulting in efficient and
maintainable software.

\
(b) Why is risk analysis important?
Answer
Risk analysis is the process of identifying, assessing, and managing potential risks that may affect a
software project.
Importance of Risk Analysis
1. Identifies potential problems early.
2. Reduces project failure risk.
3. Helps in better planning and resource allocation.
4. Minimizes cost and schedule overruns.
5. Improves the probability of project success.
Thus, risk analysis helps in developing reliable software within time and budget.

(c) Differentiate between the 'completeness' and 'correctness' property of an SRS.


Answer
Completeness Correctness
All required functionalities are included in the SRS. Requirements accurately reflect user needs.
Ensures no requirement is missing. Ensures requirements are error-free.
Focuses on coverage of requirements. Focuses on accuracy of requirements.
Example
 Completeness: SRS includes login, search, and payment modules.
 Correctness: The login module requirements are specified accurately.

(e) Why do we need a stub module?


Answer
A stub is a dummy module used to simulate the behavior of a lower-level module that is not yet
developed.
Need for Stub Module
1. Supports top-down integration testing.
2. Simulates unavailable modules.
3. Enables early testing.
4. Helps detect interface errors.
5. Simplifies debugging.

(f) What is done during the 'feasibility study' of a software?


Answer
A feasibility study determines whether a software project is practical and worth developing.
The following feasibilities are analyzed:
1. Technical Feasibility – Availability of technology and resources.
2. Economic Feasibility – Cost-benefit analysis.
3. Operational Feasibility – Whether the system will work effectively in the organization.
4. Schedule Feasibility – Whether the project can be completed on time.
Thus, feasibility study helps decide whether the project should proceed.

(g) What makes a 'portable' software good?


Answer
A software is considered portable if it can run on different hardware platforms or operating systems
with little or no modification.
Portable software is good because it:
1. Can be used on multiple platforms.
2. Reduces redevelopment cost.
3. Increases usability and flexibility.
4. Improves software adaptability.
Example
Software that runs on both Windows and Linux is portable.

(h) Why is the Spiral Model known as the Meta Model?


Answer
The Spiral Model is known as the Meta Model because it combines features of other software
development models such as:
 Waterfall Model
 Prototyping Model
 Evolutionary Model
It integrates iterative development with risk analysis and can incorporate characteristics of various
models.
Therefore, the Spiral Model is called a Meta Model as it acts as a combination of multiple software
process models.

2(a) What are the Advantages of the Prototype Model over Waterfall Model?
The Prototype Model is often preferred over the Waterfall Model because it allows user interaction
and accommodates changing requirements.
Advantages
1. Better Requirement Understanding
In the Prototype Model, users can see and interact with the prototype, helping them clarify
requirements.
In the Waterfall Model, requirements are fixed at the beginning.

2. Greater User Involvement


Users provide continuous feedback during development.
This improves customer satisfaction.

3. Early Error Detection


Errors and missing requirements are detected early through prototype evaluation.

4. Flexible to Changes
Changes can be incorporated easily in the Prototype Model, whereas changes are difficult in the
Waterfall Model.

5. Improved Software Quality


Continuous feedback results in software that better meets user needs.

Conclusion
The Prototype Model is superior to the Waterfall Model when requirements are unclear or changing
because it provides flexibility, early feedback, and better user involvement.

2(b) Differentiate between Throwaway Prototype and Evolutionary Prototype.


Throwaway Prototype Evolutionary Prototype
Developed only to understand requirements Continuously refined into the final product
Discarded after requirement analysis Becomes part of the final system
Used for requirement gathering Used for incremental development
Temporary in nature Permanent in nature
Faster but not reusable Requires more effort but reusable
Example
 Throwaway Prototype: Creating a sample UI and discarding it later.
 Evolutionary Prototype: Gradually developing an online banking system version by version.

2(c) Why is the Spiral Model difficult to use in real-life projects?


Answer
The Spiral Model is difficult to use in real-life projects because:
1. Complex to manage due to multiple iterations.
2. Requires expertise in risk analysis.
3. Costly and time-consuming.
4. Not suitable for small projects.
5. Difficult to determine the end of the project.
Therefore, the Spiral Model is mainly used for large and high-risk projects.

2(d) Why is Iterative Waterfall Model better than Classical Waterfall Model?
Answer
The Iterative Waterfall Model is better because it allows feedback and movement to previous phases
when errors are found.
Advantages over Classical Waterfall
1. Supports feedback between phases.
2. Errors can be corrected early.
3. Accommodates requirement changes.
4. Reduces development risk.
5. Produces better quality software.
In contrast, the Classical Waterfall Model follows a strict sequential approach with little or no
feedback.
Thus, the Iterative Waterfall Model is more flexible and practical for software development.

3(b) Describe any two types of maintenance needed in software with suitable example.
Software maintenance is the process of modifying and updating software after its deployment to
correct faults, improve performance, or adapt to changes.
There are four types of maintenance:
1. Corrective Maintenance
2. Adaptive Maintenance
3. Perfective Maintenance
4. Preventive Maintenance
Any two can be explained as follows:

1. Corrective Maintenance
Definition
Corrective maintenance is performed to correct errors or bugs discovered after the software has
been deployed.
Example
If a banking software calculates interest incorrectly, the bug is fixed through corrective maintenance.
Purpose
 Remove defects
 Improve reliability

2. Adaptive Maintenance
Definition
Adaptive maintenance is performed to modify software so that it can work in a changed
environment.
Example
Updating software to run on a new version of Windows or Linux.
Purpose
 Adapt to new hardware or operating systems
 Meet changing business requirements

Conclusion
Software maintenance ensures that software remains useful, reliable, and efficient throughout its
life cycle.

4(a) What is the importance of regression testing?


Definition
Regression testing is the process of re-testing software after modifications to ensure that existing
functionalities continue to work correctly.

Importance of Regression Testing


1. Ensures that new changes do not introduce new defects.
2. Verifies that existing functions still work properly.
3. Improves software reliability and quality.
4. Reduces maintenance risk.
5. Helps maintain system stability.
Example
After adding a payment feature to an e-commerce website, regression testing ensures that login and
order functions still work correctly.

4(b) Why is low coupling and high cohesion desirable?


Low Coupling
Low coupling means there is less dependency among modules.
Advantages
 Easy maintenance
 Easy testing
 Better reusability
 Independent module development

High Cohesion
High cohesion means all functions within a module are closely related and perform a single task.
Advantages
 Better readability
 Easier debugging
 Increased reliability
 Easy maintenance

Conclusion
Good software design aims for low coupling and high cohesion because they improve
maintainability, flexibility, reliability, and reusability of software.

4(c) What steps are performed in Alpha-testing? Why is Beta-testing needed after performing
Alpha-testing?
Steps Performed in Alpha Testing
Alpha testing is conducted by developers or internal testers at the developer's site.
Steps
1. Prepare test environment.
2. Execute test cases.
3. Identify defects and bugs.
4. Correct the defects.
5. Retest the software.
6. Verify system stability.

Why is Beta Testing Needed After Alpha Testing?


Although alpha testing removes most defects, software must still be tested by actual users in real
environments.
Reasons for Beta Testing
1. Detect real-world issues.
2. Obtain user feedback.
3. Test usability and performance.
4. Improve customer satisfaction.
5. Identify defects missed during alpha testing.
Conclusion
Alpha testing ensures internal quality, while beta testing validates software under real-world
conditions before final release.

5(c) What are the Different Types of Unit Testing?


Answer
Unit testing tests individual modules of software independently.
The two main types of unit testing are:
1. White Box Unit Testing
 Tests internal logic and code structure.
 Performed by developers.
 Uses statement and branch coverage.
2. Black Box Unit Testing
 Tests module functionality without examining code.
 Focuses on inputs and outputs.

Based on Testing Approach


Unit testing may also be performed using:
(a) Driver Modules
Used in bottom-up integration testing to call lower-level modules.
(b) Stub Modules
Used in top-down integration testing to simulate lower-level modules.

8(a) Explain the Characteristics of a Good SRS. (5 Marks)


Definition of SRS
SRS (Software Requirement Specification) is a formal document that describes all functional and
non-functional requirements of a software system.
A good SRS should possess certain characteristics to ensure quality software development.

Characteristics of a Good SRS


1. Correct
The requirements specified in the SRS should accurately reflect the user's needs.
Example: If users require online payment, the SRS must include payment functionality.

2. Complete
All functional and non-functional requirements should be included.
No important information should be missing.

3. Consistent
Requirements should not contradict each other.
Example:
Incorrect:
 One requirement says password length is 8 characters.
 Another says minimum length is 6 characters.

4. Unambiguous
Each requirement should have only one interpretation.
Bad Requirement:
"The system should be fast."
Good Requirement:
"The system should respond within 2 seconds."

5. Verifiable (Testable)
Requirements should be measurable and testable.
Example:
System availability should be 99%.

6. Modifiable
The SRS should be easy to update when requirements change.

7. Traceable
Each requirement should be traceable to its source and implementation.

8. Ranked for Importance and Stability


Requirements should be prioritized as:
 Essential
 Desirable
 Optional

Conclusion
A good SRS should be correct, complete, consistent, unambiguous, verifiable, modifiable,
traceable, and prioritized. These characteristics help in developing high-quality software.

8(b) Why is Decision Table Used? (3 Marks)


Answer
A Decision Table is a tabular representation of conditions and corresponding actions.
It is used when a system involves multiple conditions and complex decision-making.
Uses/Advantages of Decision Table
1. Represents complex decision logic clearly.
2. Reduces ambiguity in requirements.
3. Ensures all possible conditions are considered.
4. Helps in system analysis and design.
5. Useful in generating test cases.
Example
Conditions Rule 1 Rule 2
Income > 50000 Yes No
Credit Score Good Yes Yes
Approve Loan Yes No
Thus, decision tables simplify complex decisions and improve system design.

8(c) What are the Different Types of System Testing? (2 Marks)


Answer
System testing verifies the complete integrated software system against specified requirements.
The major types of system testing are:
1. Functional Testing
Checks whether the software functions according to requirements.
2. Performance Testing
Measures speed, response time, and scalability.
3. Security Testing
Checks protection against unauthorized access.
4. Stress Testing
Tests software under extreme load conditions.
5. Load Testing
Checks system behavior under expected workload.
6. Recovery Testing
Verifies the system's ability to recover from failures.
7. Usability Testing
Evaluates ease of use and user friendliness.
8. Compatibility Testing
Checks whether software works on different hardware and operating systems.

a) What is an open system? Give an example.


Answer:
An open system is a system that interacts with its external environment by receiving inputs and
producing outputs.
It can adapt to changes in the environment.
Example:
 Banking System
 Library Management System
 Railway Reservation System

(b) Explain the use of decision tree in software engineering.


Answer:
A decision tree is a graphical representation of conditions and actions used in decision making.
Uses:
1. Represents complex logic clearly.
2. Helps in system analysis and design.
3. Assists in generating test cases.
4. Reduces ambiguity in requirements.

(c) What is the use of data store in DFD?


Answer:
A data store in a DFD represents a repository where data is permanently stored for later use.
Uses:
1. Stores system data.
2. Provides data to processes.
3. Maintains records for future retrieval.
Example:
 Student Database
 Book Database

(d) Why is high cohesion desirable?


Answer:
High cohesion means that all functions within a module are closely related and perform a single task.
It is desirable because it:
1. Improves maintainability.
2. Simplifies testing and debugging.
3. Increases reliability.
4. Enhances reusability.
Therefore, good software design aims for high cohesion and low coupling.

(e) What do you understand by the term 'interoperability' of software?


Answer:
Interoperability is the ability of software systems to communicate, exchange data, and work
together effectively.
Example:
An online payment gateway interacting with banking software.

(f) Suppose a level-1 DFD has 5 processes. Mention the maximum and minimum number of level-2
DFD that may be constructed from this level-1 DFD.
Answer:
A Level-2 DFD is created by decomposing a process of a Level-1 DFD.
If a Level-1 DFD has 5 processes:
 Maximum number of Level-2 DFDs = 5
(if all 5 processes are decomposed)
 Minimum number of Level-2 DFDs = 0
(if none of the processes require further decomposition)

(g) What is the functionality of a stub?


Answer:
A stub is a dummy module used during testing to simulate the behavior of lower-level modules that
are not yet developed.
Functions:
1. Simulates missing modules.
2. Supports top-down integration testing.
3. Returns predefined outputs for testing.

(h) What do you understand by program testing?


Answer:
Program testing is the process of executing a program to identify errors or defects and verify that it
meets specified requirements.
Objectives:
1. Detect bugs.
2. Ensure correctness.
3. Improve software quality.

3(b) What are the Characteristics of a Good DFD?


A good Data Flow Diagram (DFD) should possess the following characteristics:
1. Clarity – The DFD should be easy to understand.
2. Completeness – All processes, data flows, and data stores should be included.
3. Consistency – Different levels of DFD should be balanced and consistent.
4. Accuracy – It should correctly represent the system.
5. No Ambiguity – Data flows and processes should be clearly labeled.
6. Modularity – Large systems should be decomposed into smaller levels.
7. Proper Naming – Meaningful names should be used for processes and data stores.
4(a) Briefly Discuss about Iterative Waterfall Model. (6 Marks)
Introduction
The Iterative Waterfall Model is an improved version of the Classical Waterfall Model. In this model,
development proceeds phase by phase, but feedback is allowed from one phase to the previous
phase whenever errors are detected.
Thus, unlike the Classical Waterfall Model, it supports iteration and correction.

Phases of Iterative Waterfall Model


Requirement Analysis
↓↑
System Design
↓↑
Implementation (Coding)
↓↑
Testing
↓↑
Deployment
↓↑
Maintenance
The upward arrows indicate feedback to previous phases.

Working of the Model


1. Requirements are gathered and analyzed.
2. System design is prepared.
3. Coding is performed.
4. Testing is carried out.
5. If an error is found, the process returns to the previous phase for correction.
6. The corrected software is then deployed and maintained.

Advantages of Iterative Waterfall Model


1. Allows feedback between phases.
2. Errors are detected and corrected early.
3. Better quality software is produced.
4. Easier maintenance.
5. More flexible than Classical Waterfall Model.

Disadvantages
1. Still not suitable for frequently changing requirements.
2. Rework may increase development cost.
3. Customer involvement is limited.

Conclusion
The Iterative Waterfall Model overcomes the rigid nature of the Classical Waterfall Model by
introducing feedback mechanisms, thereby improving software quality and reducing development
risk.

4(b) What are the Advantages and Disadvantages of Prototype Model? (2+2 Marks)
Advantages of Prototype Model
1. Helps in understanding user requirements clearly.
2. Increases customer involvement.
3. Detects errors early.
4. Accommodates requirement changes easily.

Disadvantages of Prototype Model


1. Development cost may increase due to repeated modifications.
2. Excessive customer involvement may delay the project.
3. Documentation is often inadequate.
4. Frequent changes may increase complexity.

5(a) Why is maintenance important for software? Discuss different types of problems that may
occur if software is not maintained properly. (2+4 Marks)
Importance of Software Maintenance (2 Marks)
Software maintenance is the process of modifying and updating software after its deployment to
ensure that it continues to function correctly and efficiently.
Maintenance is important because:
1. It removes errors and bugs.
2. It adapts software to changing environments.
3. It improves performance and efficiency.
4. It enhances security and reliability.
5. It adds new features according to user requirements.
Thus, software maintenance increases the life and usefulness of software.

Problems if Software is Not Maintained Properly (4 Marks)


If software is not maintained properly, the following problems may occur:
1. Increase in Software Errors
Bugs and defects remain unresolved, causing incorrect results and system failures.
2. Security Vulnerabilities
Unpatched software becomes vulnerable to viruses, malware, and cyber attacks.
3. Compatibility Issues
Software may fail to work with new hardware, operating systems, or technologies.
4. Poor Performance
The software may become slow and inefficient over time.
5. Reduced Reliability
Frequent crashes and failures reduce user trust in the system.
6. Increased Maintenance Cost
Delayed maintenance often results in more expensive repairs later.
7. Customer Dissatisfaction
Users may stop using the software if it does not meet their needs.

Conclusion
Proper maintenance ensures that software remains secure, reliable, efficient, and useful
throughout its life cycle.

5(b) Discuss about the different information that are described in SRS. (4 Marks)
Definition of SRS
Software Requirement Specification (SRS) is a document that describes the complete requirements
of a software system.
An SRS generally contains the following information:

1. Functional Requirements
These specify what functions the software must perform.
Examples:
 User login
 Search facility
 Report generation

2. Non-Functional Requirements
These specify quality attributes of the software.
Examples:
 Performance
 Reliability
 Security
 Portability

3. Interface Requirements
These describe interactions between the system and external entities.
Types:
 User Interface
 Hardware Interface
 Software Interface
 Communication Interface

4. Data Requirements
Describe input data, output data, and database structures.

5. System Constraints
Specify restrictions imposed on the system.
Examples:
 Hardware limitations
 Programming language constraints
 Legal regulations

6. Assumptions and Dependencies


State assumptions made during development and external dependencies.

6(a) Briefly explain the features of three types of projects that are classified in COCOMO. (3+3+3 =
9 Marks)
In the COCOMO (Constructive Cost Model), software projects are classified into three categories
based on their size, complexity, and development environment:
1. Organic Projects
2. Semi-Detached Projects
3. Embedded Projects

1. Organic Projects
Definition
Organic projects are small and relatively simple software projects developed by experienced teams
in a familiar environment.
Features
1. Small project size.
2. Requirements are well understood and stable.
3. Development team is experienced.
4. Less stringent hardware and software constraints.
5. Low complexity.
Examples
 Library Management System
 Payroll System
 Student Information System

2. Semi-Detached Projects
Definition
Semi-detached projects are medium-sized projects having moderate complexity and mixed
experience among developers.
Features
1. Medium project size.
2. Moderate complexity.
3. Team consists of both experienced and inexperienced developers.
4. Requirements may change occasionally.
5. Moderate hardware and software constraints.
Examples
 Compiler Design
 Database Management System
 Operating System Utilities

3. Embedded Projects
Definition
Embedded projects are large and highly complex projects operating under strict hardware and
software constraints.
Features
1. Large project size.
2. High complexity.
3. Strict real-time and performance requirements.
4. Strong hardware and software constraints.
5. Requires highly skilled developers.
Examples
 Air Traffic Control System
 Missile Guidance System
 Real-Time Operating System

Comparison of COCOMO Project Types


Feature Organic Semi-Detached Embedded
Project Size Small Medium Large
Complexity Low Moderate High
Team Experience High Mixed Expert
Constraints Few Moderate Strict
Examples Payroll System Compiler Air Traffic Control

Conclusion
COCOMO classifies projects into Organic, Semi-detached, and Embedded categories to estimate
software development effort, cost, and time more accurately.

7(a) What is the requirement of Quality Assurance for software? What methodologies are used to
ensure this? (2+4 Marks)
Requirement of Software Quality Assurance (SQA) (2 Marks)
Software Quality Assurance (SQA) is required to ensure that the software developed meets specified
requirements and quality standards.
The need for SQA arises because it:
1. Improves software quality and reliability.
2. Detects and prevents defects early.
3. Reduces development and maintenance costs.
4. Increases customer satisfaction.
5. Ensures compliance with standards and procedures.
Thus, SQA helps in producing error-free, reliable, and maintainable software.

Methodologies Used to Ensure Software Quality (4 Marks)


The following methodologies are used to ensure software quality:
1. Reviews and Inspections
Software documents and code are systematically examined to detect defects.
Examples:
 Peer Review
 Walkthrough
 Inspection

2. Verification and Validation (V & V)


 Verification: Checks whether the software is built according to specifications.
"Are we building the product right?"
 Validation: Checks whether the correct product has been built.
"Are we building the right product?"

3. Software Testing
Testing is performed to identify defects and verify correctness.
Types:
 Unit Testing
 Integration Testing
 System Testing
 Acceptance Testing

4. Audits and Standards


Quality audits ensure that software development follows established standards such as IEEE
standards.

5. Configuration Management
Controls changes in software and maintains version consistency.

Conclusion
Software Quality Assurance ensures that software is reliable, maintainable, and satisfies user
requirements through methodologies such as reviews, V&V, testing, audits, and configuration
management.

7(b) Compare and Contrast Alpha Testing and Beta Testing. (4 Marks)
Alpha Testing Beta Testing
Performed at the developer's site Performed at the user's site
Conducted by developers or testers Conducted by actual users
Done before beta testing Done after alpha testing
Controlled environment Real-world environment
Detects functional defects Detects usability and real-world issues
Software may still be unstable Software is nearly complete
Internal testing External testing

Similarities
1. Both are forms of acceptance testing.
2. Both aim to improve software quality.
3. Both help identify defects before final release.

Conclusion
Alpha testing verifies software internally in a controlled environment, whereas beta testing
evaluates software in real-world conditions using actual users. Both are essential for delivering high-
quality software.

Short 2-Mark Answer


Alpha Testing
Testing performed by developers at the developer's site before release.
Beta Testing
Testing performed by actual users in a real environment after alpha testing.
Difference: Alpha testing is internal, whereas beta testing is external.

8(b) What are the different performance requirements of software testing? Mention the names of
different types of performance testing. (4+(2+2))
Performance Requirements of Software Testing (4 Marks)
Performance requirements specify how efficiently software should perform under different
conditions.
The major performance requirements are:
1. Response Time
Time taken by the system to respond to a request.
2. Throughput
Number of transactions processed per unit time.
3. Scalability
Ability of the software to handle increased workload.
4. Resource Utilization
Efficient use of CPU, memory, disk, and network resources.
5. Reliability
Ability to perform continuously without failure.
6. Stability
Ability to operate correctly under heavy load.

Types of Performance Testing (2+2 Marks)


1. Load Testing
Tests system performance under expected workload.
2. Stress Testing
Tests system behavior beyond normal limits.
3. Volume Testing
Tests performance with large volumes of data.
4. Endurance (Soak) Testing
Checks system performance over a long duration.
5. Scalability Testing
Measures the ability to scale with increasing users.
6. Spike Testing
Examines performance under sudden load increases.

Conclusion
Performance testing ensures that software meets requirements related to speed, stability,
scalability, and reliability, thereby improving user satisfaction and system quality.

(a) What is perfective maintenance?


Answer
Perfective maintenance is the modification of software to improve its performance, maintainability,
or add new features according to user requirements.
Example
Adding a new report generation feature to an existing banking software.

(b) Why do we need a stub module?


Answer
A stub is a dummy module used to simulate lower-level modules that are not yet developed.
Need for Stub
1. Supports top-down integration testing.
2. Simulates unavailable modules.
3. Enables early testing of higher-level modules.
4. Helps detect interface errors.

(c) Describe the role of a System Analyst.


Answer
A System Analyst acts as a bridge between users and developers.
Roles
1. Studies existing systems.
2. Gathers user requirements.
3. Analyzes feasibility.
4. Prepares SRS documents.
5. Coordinates with developers and users.

(d) What is meant by structured programming?


Answer
Structured programming is a programming approach in which programs are divided into modules
and developed using control structures like sequence, selection, and iteration.
It avoids the use of GOTO statements and improves readability and maintainability.

(e) Describe the various steps of Requirements Engineering.


Answer
The major steps of Requirements Engineering are:
1. Requirement Elicitation – Gathering requirements from users.
2. Requirement Analysis – Analyzing and refining requirements.
3. Requirement Specification – Documenting requirements in SRS.
4. Requirement Validation – Checking correctness and completeness.
5. Requirement Management – Managing changes in requirements.

(f) Explain the term 'portability' with respect to Software Engineering.


Answer
Portability is the ability of software to run on different hardware platforms or operating systems
with little or no modification.
Example
Software that runs on both Windows and Linux is portable.

(g) Name any four SQA activities.


Answer
Any four Software Quality Assurance (SQA) activities are:
1. Software Reviews
2. Software Testing
3. Audits and Inspections
4. Configuration Management
Other activities include defect tracking and standards compliance.

(h) Explain the characteristics of a good SRS document.


Answer
A good SRS document should be:
1. Correct – Accurately reflects user requirements.
2. Complete – Contains all requirements.
3. Consistent – No conflicting requirements.
4. Unambiguous – Easy to understand.
5. Verifiable – Requirements can be tested.
6. Modifiable – Easy to update.
7. Traceable – Requirements can be tracked.
Thus, a good SRS helps in developing high-quality software.

2(b) Explain the Delphi Cost Estimation Technique. Write its advantages and disadvantages. (5
Marks)
Definition
The Delphi Cost Estimation Technique is an expert-based estimation method in which several
experts independently estimate the cost and effort of a software project.
A coordinator collects the estimates, summarizes them anonymously, and returns them to the
experts for revision until a consensus is reached.

Steps of Delphi Technique


1. Select a panel of experts.
2. Experts independently estimate cost and effort.
3. The coordinator collects estimates.
4. Anonymous feedback is provided.
5. Experts revise their estimates.
6. Repeat the process until consensus is reached.

Advantages of Delphi Technique


1. Utilizes expert knowledge and experience.
2. Reduces individual bias.
3. Suitable when historical data is unavailable.
4. Produces reliable estimates through consensus.

Disadvantages of Delphi Technique


1. Time-consuming process.
2. Depends heavily on expert availability.
3. Results may vary with expert quality.
4. Difficult to apply for very large projects.

Conclusion
The Delphi Technique is a systematic and expert-based approach to software cost estimation. It is
useful when quantitative data is limited, though it can be time-consuming and dependent on expert
judgment.

3(b) Explain the phases of Spiral Model with advantages and disadvantages. (5 Marks)
Introduction
The Spiral Model, proposed by Barry Boehm, is a risk-driven software development model that
combines features of the Waterfall Model and Prototyping Model.
Development proceeds through repeated cycles called spirals.

Phases of Spiral Model


Each spiral consists of four phases:
1. Objective Setting and Planning
 Determine objectives of the project.
 Identify alternatives and constraints.

2. Risk Analysis
 Identify and analyze risks.
 Evaluate alternatives.
 Develop prototypes if necessary.
This is the most important phase of the Spiral Model.

3. Engineering (Development)
 Design, coding, and testing are performed.
 The software product is developed.

4. Customer Evaluation
 Customer evaluates the developed product.
 Feedback is collected for the next iteration.

Diagram of Spiral Model


Planning

Risk Analysis

Engineering

↺ (Next Spiral)
Customer Evaluation

Advantages
1. Effective risk management.
2. Suitable for large and complex projects.
3. Accommodates changing requirements.
4. Continuous customer feedback.
5. Early detection of defects.

Disadvantages
1. Complex to manage.
2. Costly and time-consuming.
3. Requires expertise in risk analysis.
4. Not suitable for small projects.

Conclusion
The Spiral Model is best suited for large, high-risk projects because it emphasizes risk analysis and
iterative development.

3(c) List three common types of risks that a typical software project might suffer. (3 Marks)
Answer
The three common types of software project risks are:
1. Project Risk
Risks related to schedule, budget, resources, and staffing.
Example: Delay in project completion due to shortage of developers.

2. Technical Risk
Risks arising from technology, design, or implementation issues.
Example: Failure of a new technology to work as expected.

3. Business Risk
Risks affecting the business success of the software.
Example: The product is rejected by customers or competitors release a better product.

3(a) What do you mean by Software Products? (2 Marks)


Answer
A Software Product is a collection of computer programs, procedures, documentation, and
associated data developed to perform specific tasks for users.
A software product includes:
 Programs (source code)
 Documentation
 User manuals
 Configuration files
Examples
 Operating Systems (Windows, Linux)
 MS Office
 Banking Software
 Library Management System
Thus, a software product is not only the program but also all supporting documents and data
required for its operation.

(a) Discuss the limitations of testing. Why do we say that complete testing is impossible? (3+2
Marks)
Limitations of Software Testing (3 Marks)
Software testing is an important activity for detecting defects, but it has certain limitations.
1. Testing shows the presence of defects, not their absence
Testing can reveal errors, but it cannot prove that the software is completely error-free.
2. Time and cost constraints
Testing all possible scenarios requires a lot of time, money, and resources.
3. Human errors
Test cases may be incomplete or incorrectly designed, leading to missed defects.
4. Dependency on test data
The effectiveness of testing depends on the quality of test cases and input data.
5. Some defects remain hidden
Certain defects may appear only under rare conditions and may not be detected during testing.

Why is Complete Testing Impossible? (2 Marks)


Complete testing means testing the software with all possible inputs, outputs, and execution paths.
Complete testing is impossible because:
1. The number of possible inputs and execution paths is extremely large or infinite.
2. Exhaustive testing requires enormous time and cost.
3. Large software systems contain numerous combinations of conditions and paths.
Example
Consider a login form accepting an 8-character password. The number of possible passwords is
enormous, making it impossible to test every combination.
Hence, exhaustive (complete) testing is practically impossible, and therefore testing focuses on
selecting representative test cases.

(b) What are the differences between code reviews and code walkthrough? (5 Marks)
Code Review Code Walkthrough
A formal examination of source code. An informal review of code or design.
Conducted by peers or experts. Usually led by the author of the code.
Focuses on detecting defects and improving Focuses on understanding logic and
quality. functionality.
Follows predefined procedures and checklists. Less structured and more discussion-oriented.
Reviewers actively inspect the code. The author explains the code step by step.
Generates review reports and action items. May or may not produce formal reports.

Conclusion
Both code reviews and code walkthroughs are static testing techniques used to improve software
quality. Code reviews are more formal and defect-oriented, whereas walkthroughs are informal and
aimed at improving understanding of the software.

5(a) Which one is conceptually stronger: Branch Coverage Criterion or Condition Coverage
Criterion? Explain with an example. (5 Marks)
Note: The word in the question should be "stronger" (not "stranger").
Answer
Branch Coverage Criterion is conceptually stronger than Condition Coverage Criterion.
This is because if all branches of a program are executed, every decision outcome (True and False) is
tested. However, condition coverage may test individual conditions without executing all branches.

Definitions
Branch Coverage
Branch coverage ensures that every branch (True and False) of each decision statement is executed
at least once.
Condition Coverage
Condition coverage ensures that each atomic condition in a decision takes both True and False
values at least once.

Example
Consider:
if (A && B)
S1;
else
S2;
Test Cases for Condition Coverage
Test Case A B Result
T1 T F False
T2 F T False
Here:
 A takes both T and F.
 B takes both T and F.
Thus, Condition Coverage = 100%.
But the expression (A && B) is never True, so statement S1 is never executed.
Hence Branch Coverage is not achieved.
Therefore, Branch Coverage is stronger than Condition Coverage.

Conclusion
Branch coverage is conceptually stronger because it guarantees execution of all decision outcomes,
whereas condition coverage only checks individual conditions.
6(a) What is a Context Diagram? (2 Marks)
Answer
A Context Diagram is the highest-level Data Flow Diagram (Level-0 DFD) that represents the entire
system as a single process and shows its interaction with external entities.
It displays:
 External entities
 Input data flows
 Output data flows
However, it does not show internal processes or data stores.
Example
In a Library Management System, the external entities may be Member and Librarian, while the
system is shown as a single process.
Thus, a context diagram provides an overview of the system boundary and its environment.

6(b) What is the main purpose of DFD? (2 Marks)


Answer
The main purpose of a Data Flow Diagram (DFD) is to graphically represent the flow of data within a
system.
Purposes of DFD
1. Shows how data enters, moves through, and leaves the system.
2. Helps in system analysis and design.
3. Identifies processes, data stores, and external entities.
4. Improves communication between users and developers.
Thus, DFD helps in understanding and documenting system requirements.

7(b) How does Logical Cohesion differ from Temporal Cohesion? (2 Marks)
Logical Cohesion Temporal Cohesion
Elements are grouped because they perform Elements are grouped because they are executed at
similar functions. the same time.
Execution depends on a control flag. Activities occur during the same phase.
Cohesion is relatively weak. Stronger than logical cohesion.
Example
 Logical Cohesion: A module performing input, output, and error handling selected by a flag.
 Temporal Cohesion: Initialization module that opens files and allocates memory during
program startup.

7(c) What is a Test Case Suite? Give an Example. (2 Marks)


Answer
A Test Case Suite is a collection of related test cases used to verify a software module or system.
It helps ensure that different functionalities are tested systematically.
Example: Login System Test Suite
Test Case Input Expected Output
TC1 Valid username & password Login successful
TC2 Invalid password Error message
TC3 Empty fields Validation message
These test cases together form a test case suite for the login module.
8(a) Briefly discuss and compare Software Validation and Verification. (4 Marks)
Verification
Verification is the process of checking whether the software is being developed according to
specifications and design documents.
It answers the question:
"Are we building the product right?"
Verification is a static activity, as it does not involve executing the program.
Examples
 Reviews
 Inspections
 Walkthroughs

Validation
Validation is the process of checking whether the developed software satisfies user requirements.
It answers the question:
"Are we building the right product?"
Validation is a dynamic activity, as it involves executing the software.
Examples
 Unit Testing
 Integration Testing
 System Testing
 Acceptance Testing

Comparison between Verification and Validation


Verification Validation
Checks conformance to specifications Checks user requirements
Static activity Dynamic activity
No code execution required Code execution required
Done during development Done after development
Detects defects early Ensures customer satisfaction

Conclusion
Verification ensures that the software is developed correctly, while validation ensures that the
correct software is developed. Both are essential for software quality.
8(b) Consider a system taking 'age' as an input, and the valid range is 21 to 65. Design test cases
using Boundary Value Analysis. (3 Marks)
Boundary Value Analysis (BVA)
For a valid range 21 to 65, test values are selected at:
 Minimum value
 Just below minimum
 Just above minimum
 Maximum value
 Just below maximum
 Just above maximum
Test Cases
Test Case Age Expected Result
TC1 20 Invalid
TC2 21 Valid
TC3 22 Valid
TC4 64 Valid
TC5 65 Valid
TC6 66 Invalid
Reasoning
Errors often occur at boundary values; therefore values near the boundaries are tested.

8(c) When comparing Alpha Testing vis-à-vis Beta Testing, which is more impactful and why? (3
Marks)
Answer
Beta Testing is generally considered more impactful than Alpha Testing.
Reasons
1. It is performed by actual users in a real-world environment.
2. It reveals defects that may not appear in a controlled environment.
3. It provides genuine user feedback on usability and performance.
4. It helps improve customer satisfaction before release.
However, Alpha Testing is also important because it removes major defects before beta testing
begins.

Conclusion

You might also like