Software Requirements and Analysis is an important activity in the Software Development Life Cycle (SDLC). It focuses on understanding what the customer needs from the software and documenting those needs clearly before the actual design and coding begin.
Software Requirements & Analysis is
the process of collecting, analyzing, documenting, and validating the
requirements of a software system.
1.
What is a Software Requirement?
A software requirement describes a service,
function, or condition that the software must satisfy.
Example
For
a College Management System, requirements may include:
1.
Students should
be able to register.
2.
Teachers should
be able to record attendance.
3.
Students should
be able to view their results.
4.
Administrators
should be able to manage student records.
5.
The system should
protect student information.
These statements describe what the
software is expected to provide.
Requirement Engineering
Requirement Engineering is the
systematic process of identifying, defining, documenting, managing and
maintaining system needs to ensure a software product meets stakeholder
expectations.
It acts as the foundational blueprint
for a project, ensuring the development team builds the correct system to solve
the user's actual problem
Key
Stages of the Process
Inception: Establishes the basic project goals, scope, and
initial communication with stakeholders.
Elicitation: Gathers raw requirements through interviews, surveys,
and workshops.
Analysis
& Elaboration: Refines and models
the gathered data to check for clarity, consistency, and completeness.
Negotiation: Resolves conflicts and prioritizes features based on
budget and constraints.
Specification: Creates a formal Software Requirements Specification
(SRS) document.
Validation: Confirms that the specified requirements match actual
customer needs.
Management: Tracks and controls requirement changes throughout
the project lifecycle.
Types of Requirements-
Software requirements are mainly divided
into Functional Requirements and Non-Functional Requirements.
A.
Functional
B.
Non-functional;
A. Functional Requirements
Functional
requirements describe what the system should do. / What the software must do,
specifying features, behaviors, and data processing rules
System Behaviors: How the system responds to user inputs or triggers.
Features:
Specific tools like user login, search bars, or payment processing.
Data Handling:
Rules for how data is captured, stored, and updated.
Examples
For an
online banking system:
User
should be able to log in.
User
should be able to check account balance.
User
should be able to transfer money.
User
should be able to download statements.
Simple definition:
Functional
requirements specify the functions and services that a software system must
provide.
Non-Functional
Requirements
Non-functional requirements describe how
well the system should perform, covering quality attributes, performance goals,
and operational constraints. Rather than what specific function it performs.
They
may include:
1.
Performance
2.
Security
3.
Reliability
4.
Usability
5.
Scalability
6.
Availability
7.
Maintainability
Example
For
an online banking system:
The system should display the account balance
within 2 seconds.
This is a performance requirement.
Another
example:
Only authorized users should be allowed
to access account information.
This is a security requirement.
1.
Performance:
Speed, response time, and transaction capacity.
Performance refers to the ability of a
software system to respond quickly and efficiently while using system resources
effectively.
Simple
Example
In an online shopping application, when
a user clicks “Buy Now,” the system should process the request and display the
result quickly. A system that responds quickly has good performance.
Important
Performance Factors
Response
Time – How quickly the system
responds to a user request.
Throughput
– The number of tasks or requests the
system can process in a given time.
Resource
Usage – Efficient use of CPU, memory,
storage, and network.
Processing
Speed – How quickly the system
performs calculations or operations.
Scalability
– Ability to maintain performance
when users or workload increase.
2.
Security:
Data encryption, user authentication, and access control.
Security is the ability of a software
system to protect data, resources, and users from unauthorized access, misuse,
modification, or attacks.
Simple
Example
In an online banking system, only the
authorized user should be able to access their account. Passwords, OTPs, and
encryption help protect the user's information.
Important
Security Measures
Authentication
– Verifying the identity of a user.
Example: Username and password.
Authorization
– Giving users permission to access
specific resources.
Example: Only an administrator can delete user accounts.
Encryption
– Converting data into a protected
form so unauthorized people cannot understand it.
Access
Control – Restricting access to
sensitive data and functions.
Data
Protection – Protecting personal and
confidential information.
Backup
and Recovery – Keeping copies of
important data and restoring it after failures or attacks.
3.
Reliability:
Uptime targets and disaster recovery protocols.
Reliability is the ability of a software
system to perform its required functions correctly and consistently for a
specified period of time without failure.
Simple
Example
An ATM system should correctly process
withdrawals, deposits, and balance inquiries every time. If it works correctly
without frequent failures, it has high reliability.
Important
Factors of Reliability
Fault
Tolerance – The system continues
working even when some components fail.
Error
Handling – The system properly
detects and handles errors.
Testing
– Thorough testing helps identify and
remove defects.
Recovery
– The system can recover quickly
after a failure.
Consistency
– The system produces correct results
repeatedly.
4.
Usability:
Interface design and accessibility for users.
Usability refers to how easy and
convenient a software system is for users to learn, understand, and operate.
Simple
Example
A mobile banking application should have
clear menus, simple buttons, readable text, and easy navigation so that users
can perform transactions without confusion.
Important
Factors of Usability
Easy
to Learn – New users can understand
the system quickly.
Easy
to Use – Users can perform tasks
without difficulty.
User-Friendly
Interface – The interface is simple,
clear, and well organized.
Accessibility
– The system can be used by people
with different abilities.
Consistency
– Similar buttons, menus, and actions
work in the same way throughout the system.
Error
Prevention – The system helps users
avoid mistakes and provides clear error messages.
5.
Scalability: Scalability is the ability of a software
system to handle an increasing amount of work, users, data, or transactions
without a major decrease in performance.
Simple
Example
Suppose an online shopping website
initially has 1,000 users.
If the website continues to work
efficiently when users increase to 10,000 or 1,00,000, the system is said to be
scalable.
Types
of Scalability
Vertical
Scalability (Scaling Up)
Increasing the power of an existing
computer/server.
Example: Increasing RAM from 8 GB to 32 GB and adding a faster
CPU.
Horizontal
Scalability (Scaling Out)
Adding more computers/servers to share
the workload.
Example: Using 10 servers instead of 2 servers to handle more
website users.
Database
Scalability
Ability of a database to handle
increasing amounts of data and requests efficiently.
Network
Scalability
Ability of a network to support more
users, devices, and traffic.
Importance
of Scalability
1.
Supports
growth in users.
2.
Handles
increasing data.
3.
Maintains
good performance.
4.
Reduces
system failures.
5.
Makes future
expansion easier.
6.
Helps control
costs when the system grows.
6.
Availability: Availability
is the ability of a software system to remain accessible and operational
whenever users need it.
Simple
Example
An online banking system should be
available 24 hours a day, 7 days a week. If users can access their accounts
whenever required, the system has high availability.
Factors
that Improve Availability
1.
Backup
systems
2.
Fault
tolerance
3.
Regular
maintenance
4.
Disaster
recovery
5.
Redundant
servers
6.
Monitoring
and quick error recovery
7.
Maintainability :
Maintainability is the ability of a
software system to be easily modified, corrected, updated, or improved after it
has been developed.
Simple
Example
If a college management system needs a
new student attendance feature, a maintainable system allows developers to add
the feature easily without affecting the existing functions.
Types
of Maintenance
Corrective
Maintenance – Fixing errors and bugs.
Adaptive
Maintenance – Modifying software to
work with new environments or technologies.
Perfective
Maintenance – Improving features and
performance.
Preventive
Maintenance – Making changes to
prevent future problems.
Factors that Improve Maintainability
Simple and modular design
Clean and readable code
Proper documentation
Good testing
Low complexity
Proper error handling
|
Example: 24×7 banking system |
Example: Easily adding a new feature |
No comments:
Post a Comment