--> Sayadasite: Software Requirements & Analysis:

Multiple Ads

Search

Menu Bar

Software Requirements & Analysis:

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: