Software Engineering
Software Engineering
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:
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
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.
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
6. Difficulty in Testing
Testers do not know expected outputs or system behavior
Hard to design proper test cases
👉 Incomplete or ineffective testing
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?”
✔️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
5. Risk Analysis
Identify possible risks (technical, financial, operational)
Suggest mitigation strategies
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.
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
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.
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
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
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
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
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
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.
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.
Example
Suppose:
Module A calls Module B
Module B not developed
Then create stub:
int moduleB()
{
return 100;
}
This stub temporarily replaces Module B.
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
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.
#include<stdio.h>
int moduleB();
void main()
{
int result;
result = moduleB();
printf("%d", result);
}
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
3. Testing Objectives
Definition
Testing objectives are the goals achieved through software testing.
4. Testing Principles
Software testing follows important principles for effective testing.
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.
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.
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
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.
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.
3. Simplifies Debugging
Since modules are tested separately, locating and fixing defects becomes easier.
5. Facilitates Integration
Correctly tested modules integrate more easily with other modules.
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
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
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
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.
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.
Example
A mobile application is released to limited users through a beta version for testing and feedback
before official launch.
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.
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.
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.
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.
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.
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.
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.
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");
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.
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
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
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
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.
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.
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.
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
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
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"
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"
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.
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.
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.
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."
Importance of Quality
1. Increases customer satisfaction
2. Reduces maintenance cost
3. Improves reliability
4. Enhances software performance
5. Increases market reputation
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
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
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.
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.
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.
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.
7. Improves Productivity
Well-defined processes help developers work more efficiently and reduce rework.
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.
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.
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?"
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.
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.
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.
DFD Symbols
Symbol Meaning
Circle Process
Rectangle External Entity
Arrow Data Flow
Open Rectangle Data Store
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.
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
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.
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.
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.
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.
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
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 ¿
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.
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.
(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.
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.
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.
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.
Conclusion
SRS is the foundation of software development. A good SRS should be correct, complete, consistent,
unambiguous, verifiable, modifiable, and traceable.
Types of Coupling
Coupling is generally arranged from worst to best.
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.
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.
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.
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.
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.
\
(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.
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.
4. Flexible to Changes
Changes can be incorporated easily in the Prototype Model, whereas changes are difficult in the
Waterfall Model.
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(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.
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.
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.
Conclusion
A good SRS should be correct, complete, consistent, unambiguous, verifiable, modifiable,
traceable, and prioritized. These characteristics help in developing high-quality 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)
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.
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.
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(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
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.
3. Software Testing
Testing is performed to identify defects and verify correctness.
Types:
Unit Testing
Integration Testing
System Testing
Acceptance Testing
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.
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.
Conclusion
Performance testing ensures that software meets requirements related to speed, stability,
scalability, and reliability, thereby improving user satisfaction and system quality.
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.
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.
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.
↺ (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.
(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.
(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.
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.
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
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