Β· 22 min read

Unit 1 - Introduction To Software Engineering

Table of Content

Basics of Software Engineering:

Software Engineering is the process of designing, developing, testing, and maintaining software. It is a systematic and disciplined approach to software development that aims to create high-quality, reliable, and maintainable software. It follows the engineering principles to create reliable, scalable, and maintainable software.

There are key principles like modularity, security, reusability, and testing that help in reducing development time, improving software performance, and making future updates easier. Software engineering is not just about codingβ€”it involves proper planning, designing, testing, and maintaining software to meet user requirements effectively.

Why do we need Software Engineering?

Software Engineering has many needs in today’s world. There are following points that tell about the need of Software Engineering:

  • Handles Large & Complex Projects πŸ—οΈ

    • Helps in developing large-scale software systematically.
    • Breaks projects into manageable parts for better efficiency.
  • Ensures Software Reliability & Security πŸ”’

    • Reduces bugs and system failures.
    • Implements security measures to prevent cyber threats.
  • Improves Cost & Time Efficiency πŸ’°β³

    • Reduces unnecessary expenses by following structured development.
    • Ensures faster development and on-time project completion.
  • Enhances Maintainability & Scalability πŸ”„πŸ“ˆ

    • Makes future updates and modifications easier.
    • Ensures the software can grow with business needs.
  • Promotes Reusability & Modularity πŸ”

    • Allows reuse of code and components in multiple projects.
    • Saves development time and effort.

Conclusion:

Software engineering is essential for developing secure, efficient, and scalable software in a structured manner. It saves time, reduces costs, improves collaboration, and ensures software qualityβ€”making it a crucial field in today’s technology-driven world.


What is Software and its characteristics

Software is defined as a collection of computer programs, procedures, rules, and data.

Characteristics of Software:

  1. Functionality: The software meets the requirements and specifications that it was designed for, and it behaves as expected when it is used in its intended environment.

  2. Usability: The software is easy to use and understand, and it provides a positive user experience.

  3. Reliability: The software is free of defects and it performs consistently and accurately under different conditions and scenarios.

  4. Performance: The software runs efficiently and quickly, and it can handle large amounts of data or traffic.

  5. Security: The software is protected against unauthorized access and it keeps the data and functions safe from malicious attacks.

  6. Maintainability: The software is easy to change and update, and it is well-documented, so that it can be understood and modified by other developers.

  7. Reusability: The software can be reused in other projects or applications, and it is designed in a way that promotes code reuse.

  8. Scalability: The software can handle an increasing workload and it can be easily extended to meet the changing requirements.

  9. Testability: The software is designed in a way that makes it easy to test and validate, and it has a comprehensive test coverage.


Software Myths πŸ˜ΆπŸŒ«οΈπŸ‘Ύ

Software Myths are beliefs that do not have any pure evidence. Software myths may lead to many misunderstandings, unrealistic expectations, and poor decision-making in software development projects.

(i) Management Myths:

  • Myth 1: We have all the standards and procedures available for software development.

    • Fact: Software experts do not know all the requirements for software development, and all existing processes are incomplete as new software development is based on new and different problems.
  • Myth 2: The addition of the latest hardware programs will improve software development.

    • Fact: The role of the latest hardware is not very high on standard software development; instead, CASE (Computer-Aided Software Engineering) tools help more in producing quality and productivity.
  • Myth 3: With the addition of more people and program planners, software development can meet project deadlines (if lagging behind).

    • Fact: Adding more people to a late project will only make it worse as new workers need time to learn from existing ones, and they are less productive.

(ii) Customer Myths:

The customer can be the direct users of the software, the technical team, marketing/sales department, or another company. Customers have myths leading to false expectations, creating dissatisfaction with developers.

  • Myth 1: A general statement of intent is enough to start writing plans (software development), and details of objectives can be done over time.

    • Fact: A detailed description of database functions, ethical performance, and communication issues is necessary for development.
  • Myth 2: Software requirements continually change, but change can be easily accommodated because software is flexible.

    • Fact: Changes are easier early in the development process. As time passes, changes become more costly due to committed resources.

(iii) Practitioner’s Myths:

  • Myth 1: The work is complete once the plan is written.

    • Fact: 60-80% of effort goes into the maintenance phase after the product is delivered.
  • Myth 2: There is no other way to achieve system quality until it is β€œrunning”.

    • Fact: A systematic review of technology and quality filters is more effective than just testing.
  • Myth 3: An operating system is the only product that can be successfully exported.

    • Fact: A working system alone is insufficient; documentation is essential for software support.
  • Myth 4: Engineering software will always delay the process by creating unnecessary documents.

    • Fact: Software engineering is about creating a quality product, not just documentation.

Program versus Software Product

FeatureProgramSoftware Product
DefinitionA set of instructions for a specific taskA complete, user-friendly software solution
Development ApproachCreated by an individual for personal useDeveloped using structured SDLC principles
ScalabilityLimited to a specific task or purposeCan be expanded and customized for various users
User InterfaceMay not have a user-friendly interfaceDesigned with UI/UX for ease of use
Testing & DebuggingMinimal or no formal testingRigorously tested for bugs and security
SecurityBasic or no security measuresIncludes security features
ExampleA small Python scriptMicrosoft Word, Google Chrome, etc.

Software Development Life Cycle Models πŸŒ€πŸ”

Software Development Life Cycle

SDLC is a process followed for software building within an organization. It involves a plan to develop, maintain, replace, and enhance specific software to improve quality.

Phases of SDLC:

  1. Planning πŸ“Š

    • Define project scope, objectives, and feasibility.
    • Estimate cost, time, and resources.
  2. Requirement Analysis πŸ“

    • Gather and document user needs.
    • Identify functional and non-functional requirements.
  3. Design 🎨

    • Create system architecture and UI/UX design.
    • Define database, modules, and data flow.
  4. Implementation (Coding) πŸ’»

    • Developers write and implement code.
    • Follows programming best practices.
  5. Testing βœ…

    • Identify and fix bugs before release.
    • Ensures software meets quality standards.
  6. Deployment πŸš€

    • Software is released for users.
    • Can be launched in phases (beta testing).
  7. Maintenance & Updates πŸ”„

    • Fix issues, update features, and improve performance.
    • Ensure security and user satisfaction.
  • Waterfall Model – Sequential, step-by-step approach.
  • Agile Model – Iterative, flexible, and user-centric.
  • Spiral Model – Risk-driven, combining iterative and waterfall methods.
  • V-Model (Verification & Validation) – Testing happens at every stage.

Waterfall Model 🌊

Waterfall Model

The Waterfall Model is a linear and sequential software development model where each phase flows downwards like a waterfall. It follows a step-by-step approach, meaning that a phase must be fully completed before moving to the next.

Phases of the Waterfall Model:

1. Requirement Analysis πŸ“‹

  • Gather and document user needs.
  • No changes allowed once finalized.

2. System Design 🎨

  • Design system architecture, database, and UI.
  • Blueprint for implementation.

3. Implementation (Coding) πŸ’»

  • Developers write the code based on design.
  • No major changes after development starts.

4. Testing βœ…

  • Identify and fix bugs in the software.
  • Ensures quality before deployment.

5. Deployment πŸš€

  • Software is delivered to users.
  • Ready for real-world use.

6. Maintenance πŸ”§

  • Fixes issues and provides updates if needed.
  • Ensures long-term usability.

When to Use the Waterfall Model?

  • βœ… Small projects with clear requirements.
  • βœ… Projects where changes are unlikely.
  • βœ… Government or banking projects that require strict documentation.

Advantages of Waterfall Model

  • βœ” Simple and easy to follow.
  • βœ” Clearly defined phases.
  • βœ” Good for small and well-defined projects.
  • βœ” Documentation is strong and detailed.

Disadvantages of Waterfall Model

  • ❌ Not flexible for changing requirements.
  • ❌ High risk if errors are found late.
  • ❌ Not suitable for complex or evolving projects.
  • ❌ Testing happens only after development, which may lead to costly fixes.

Prototype Model πŸ€–

Prototype Model

The Prototype Model is a software development approach where a working model (prototype) of the software is built before the final product. It helps in gathering user feedback early and refining requirements before actual development.

Phases of the Prototype Model:

1. Requirement Gathering πŸ“‹

  • Collect initial user requirements.
  • Identify key features and functionalities.

2. Quick Design 🎨

  • Create a rough design for the prototype.
  • Focuses on UI/UX and basic functionality.

3. Prototype Development πŸ’»

  • Build a basic working model with limited features.
  • Demonstrates how the final software will function.

4. User Feedback & Refinement πŸ”„

  • Users test the prototype and provide feedback.
  • Developers modify and improve the design.

5. Final System Development πŸš€

  • Once the prototype is approved, the actual software is developed.
  • Follows SDLC phases like coding, testing, and deployment.

6. Maintenance & Updates πŸ”§

  • Fix bugs and make enhancements as needed.

When to Use the Prototype Model?

  • βœ… When user feedback is critical.
  • βœ… For complex projects where requirements are unclear.
  • βœ… In UI/UX-heavy applications like web and mobile apps.
  • βœ… For innovative software where trial versions help in decision-making.

Advantages of the Prototype Model

  • βœ” Reduces misunderstandings by involving users early.
  • βœ” Helps detect issues before full development.
  • βœ” Improves user satisfaction with a refined final product.
  • βœ” Saves cost and effort by reducing changes in later stages.

Disadvantages of the Prototype Model

  • ❌ Can increase development time if too many iterations occur.
  • ❌ Users may have unrealistic expectations.
  • ❌ Not suitable for projects with clear and fixed requirements.
  • ❌ Prototype may be inefficient compared to the final optimized software.

Spiral Model πŸŒ€

Spiral Model

The Spiral Model is a risk-driven and iterative software development model that combines elements of the Waterfall Model and Prototyping. It focuses on continuous risk assessment and refinement through multiple iterations (spirals).

Phases of the Spiral Model

Each iteration (spiral) consists of four phases:

1. Planning πŸ“‹

  • Gather requirements.
  • Estimate cost, time, and resources.

2. Risk Analysis & Prototyping ⚠️

  • Identify and assess risks.
  • Develop a prototype for user feedback.

3. Engineering (Development & Testing) πŸ’»

  • Design, code, and test the software.
  • Improve based on previous cycle feedback.

4. Evaluation & Refinement πŸ”„

  • Review with users and stakeholders.
  • Plan the next spiral iteration.

This cycle repeats until the final product is ready.

When to Use the Spiral Model?

  • βœ… For large-scale and high-risk projects.
  • βœ… When requirements are unclear or changing.
  • βœ… For mission-critical applications (e.g., aerospace, banking).
  • βœ… When continuous risk assessment is necessary.

Advantages of the Spiral Model

  • βœ” Best for large and complex projects with evolving requirements.
  • βœ” Early risk detection and management.
  • βœ” Continuous user feedback ensures a refined product.
  • βœ” Flexible to requirement changes.

Disadvantages of the Spiral Model

  • ❌ Expensive due to multiple iterations.
  • ❌ Time-consuming, especially for small projects.
  • ❌ Requires experienced risk management.
  • ❌ Not suitable for simple or short-duration projects.

R.A.D (Rapid Application Development model)

The Rapid Application Development (RAD) Model is an iterative and fast-paced software development approach that focuses on quick prototyping and user feedback instead of extensive planning. It aims to deliver high-quality software in less time with continuous user involvement.

Phases of the RAD Model

1. Requirement Planning πŸ“‹

  • Gather business requirements.
  • Identify the project scope and constraints.

2. User Design 🎨 (Prototype Development)

  • Create prototypes with user involvement.
  • Users give feedback, and refinements are made.

3. Construction (Development & Testing) πŸ’»

  • Convert the refined prototype into a functional system.
  • Use reusable components and automated tools for faster development.

4. Deployment & Cutover πŸš€

  • Implement the final product.
  • Provide user training and ongoing maintenance.

When to Use the RAD Model?

  • βœ… For small to medium-sized projects that need quick delivery.
  • βœ… When user feedback is essential during development.
  • βœ… For UI/UX-focused applications like mobile apps and web apps.
  • βœ… When time-to-market is a priority.

Advantages of the RAD Model

  • βœ” Faster development compared to traditional models.
  • βœ” Improved flexibility due to continuous feedback.
  • βœ” Reduces development cost and effort.
  • βœ” Focuses on user experience and satisfaction.

Disadvantages of the RAD Model

  • ❌ Not suitable for complex or large projects.
  • ❌ Requires continuous user involvement.
  • ❌ Needs skilled developers for rapid prototyping.
  • ❌ Difficult to manage if requirements are unclear.

Comparison of Various Models

Difference between the Prototype Model and Waterfall Model

FeaturesPrototype Model πŸ› οΈWaterfall Model πŸ’§
DefinitionA model where a working prototype is built before the final software.A linear and sequential model where each phase is completed before moving to the next.
ApproachIterative – Prototypes are refined based on user feedback.Sequential – Each phase follows a strict order.
User InvolvementHigh – Users review and refine the prototype.Low – Users provide requirements at the beginning, with little involvement later.
FlexibilityHigh – Changes can be made easily based on feedback.Low – Changes are difficult once a phase is completed.
Development TimeFaster initial development but longer refinement time.Slower, as all planning and design must be completed first.
CostCan be high due to multiple iterations.Generally lower for small projects but expensive for large ones.
Testing PhaseHappens during each prototype iteration.Happens after the coding phase is completed.
Best Suited ForProjects with unclear or evolving requirementsProjects with clear and fixed requirements.
ExamplesWeb applications, UI/UX-heavy apps, innovative projects.Government projects, banking systems, military applications.

Difference between Spiral model and Prototype Model

FeatureSpiral Model πŸŒ€Prototype Model πŸ› οΈ
DefinitionA risk-driven model that combines iterative development with systematic risk assessment.A model where a working prototype is built first to gather user feedback before final development.
ApproachIterative and evolutionary – software is developed in multiple cycles (spirals).Iterative – A prototype is built, refined, and then final software is developed.
User InvolvementHigh – Users provide feedback after each iteration.Very High – Users test the prototype and provide continuous feedback.
FlexibilityHigh – Changes can be made at any stage.Very High – Frequent changes and refinements are possible.
Risk HandlingExcellent – Risks are assessed and handled at each phase.Moderate – Issues are identified early, but risk assessment is not systematic.
Development TimeLonger – Multiple iterations and risk analysis increase time.Faster initial development but longer refinement time.
CostHigher – Due to risk management and continuous iterations.Can be high due to multiple iterations.
Testing PhaseTesting is done after every iteration.Testing happens during each prototype iteration.
Best Suited ForLarge, complex, and high-risk projects where risk analysis is crucial.Projects with unclear or evolving requirements where user feedback is crucial.
ExamplesAerospace software, Banking systems, Medical applications.Web applications, UI/UX-heavy apps, Mobile apps.

Software Requirement Analysis (SRS):

New Image

Software Requirement Analysis (SRS) is a critical phase in software engineering where the requirements of a software system are gathered, analyzed, documented, and validated to ensure the final product meets user expectations.

Value of a Good SRS:

Following are the value of a Good SRS:

  1. Clear Understanding of Requirements πŸ“‹

    • A well-written SRS clearly defines the functional and non-functional requirements of the system.
    • Ensures that developers, testers, and stakeholders have a common understanding of the software.

    βœ…Example: A banking application SRS specifies that users must be able to transfer funds, check balances, and view transaction history.

  2. Reduces Development Costs and Time β³πŸ’°

    • Prevents rework by documenting correct requirements upfront.
    • Reduces misunderstandings, minimizing delays and extra expenses.

    βœ…Example: If security requirements are not defined in the SRS, adding them later can increase costs significantly.

  3. Acts as a Contract Between Developers & Clients πŸ“‘

    • Serves as an agreement between the development team and the client.
    • Ensures that both parties are aligned on project expectations.

    βœ…Example: A healthcare system SRS specifies that patient data must be encrypted, ensuring compliance with security regulations.

  4. Improves Software Quality & Maintainability πŸ”„

    • Helps in designing better architecture and documentation.
    • Ensures that software is scalable and easy to update.

    βœ…Example: If new payment methods need to be added later, a well-structured SRS will make it easier to implement without major changes.

  5. Supports Effective Testing & Validation βœ…

    • Helps testers create test cases based on defined requirements.
    • Ensures that the software meets all functional and non-functional criteria.

    βœ…Example: If an e-commerce app must handle 1000 concurrent users, testers can verify this based on the SRS.

  6. Enhances Communication & Collaboration 🀝

    • Acts as a reference document for developers, testers, managers, and clients.
    • Reduces confusion and improves team efficiency.

    βœ…Example: A food delivery app SRS ensures that developers and UI designers work with the same order tracking requirements.

  7. Helps in Risk Management ⚠️

    • Identifies potential risks early, reducing project failures.
    • Helps in planning for future modifications and scalability.

    βœ…Example: If an IoT-based smart home system needs future expansion, the SRS will include flexibility provisions.


Requirement Process:

The Requirement Process is a systematic approach used to gather, analyze, document, and validate software requirements before development begins. It ensures that the final software meets the needs of users and stakeholders.

Phases of the Requirement Process:

  1. Requirement Elicitation (Gathering) πŸ“‹
    This phase focuses on collecting requirements from stakeholders, users, and customers.

    βœ…Techniques for Requirement Elicitation:

    • Interviews – Direct discussion with stakeholders.
    • Surveys & Questionnaires – Collecting user preferences.
    • Observations – Studying existing workflows.
    • Brainstorming – Collaborative discussions for ideas.
    • Prototyping – Building sample models for feedback.

    πŸ“ŒExample: For an online banking system, elicitation involves talking to bank employees and customers about required features like fund transfer, account statements, and mobile payments.

  2. Requirement Analysis πŸ”
    Once gathered, requirements are analyzed for feasibility, conflicts, and priority.

    βœ…Key Aspects of Analysis:

    • Feasibility Study – Can the requirement be implemented technically and economically?
    • Conflict Resolution – Resolving contradictory requirements from different stakeholders.
    • Prioritization – Classifying features as essential, optional, or future scope.

    πŸ“ŒExample: If customers request instant refunds in an e-commerce system, but finance teams prefer manual processing, a balance must be found.

  3. Requirement Specification (SRS Documentation) πŸ“
    The analyzed requirements are documented in a formal Software Requirement Specification (SRS) document.

    βœ…SRS includes:

    • Functional Requirements – What the system should do (e.g., user login, order placement).
    • Non-Functional Requirements – Performance, security, scalability, etc.
    • Constraints – Hardware, software, legal restrictions.

    πŸ“ŒExample: An SRS for a hospital management system specifies that patient records must be encrypted and accessible only by authorized staff.

  4. Requirement Validation βœ…
    Validation ensures that requirements are accurate, complete, and feasible before development starts.

    βœ…Methods of Validation:

    • Review Sessions – Stakeholders verify requirements.
    • Prototyping – A working model is tested.
    • Test Case Generation – Ensuring requirements are testable.

    πŸ“ŒExample: If an e-learning platform requires video streaming, validation checks if it can support HD video without buffering.

  5. Requirement Management πŸ”„
    As projects evolve, requirements may change. This phase handles modifications, version control, and impact analysis.

    βœ…Key Activities:

    • Change Management – Tracking modifications.
    • Version Control – Maintaining updated requirement documents.
    • Traceability – Mapping requirements to design and testing.

    πŸ“ŒExample: If a ride-sharing app originally supports only cash payments, but later requires digital payments, this change must be managed properly.


Requirement Specification:

Requirement Specification is the process of documenting the gathered and analyzed requirements in a structured format. It defines what the software should do without specifying how it will be implemented. This ensures a clear understanding between developers, testers, and stakeholders.

Purpose of Requirement Specification:

  • βœ…Clearly defines the functional and non-functional requirements.
  • βœ…Acts as a contract between developers and clients.
  • βœ…Helps in design, testing, and maintenance.
  • βœ…Reduces misunderstandings and project failures.

Types of Requirements in Specification

  1. Functional Requirements

    • Define what the software should do.
    • βœ…Example: β€œThe system should allow users to reset passwords via email.”
  2. Non-Functional Requirements

    • Define system qualities like performance, security, usability.
    • βœ…Example: β€œThe website should load in under 3 seconds for 95% of users.”
  3. Interface Requirements

    • Specify how the system interacts with hardware, software, and users.
    • βœ…Example: β€œThe system should support integration with Google Maps for navigation.”

Importance of Requirement Specification

  • βœ” Ensures clarity and agreement between teams.
  • βœ” Acts as a reference for development and testing.
  • βœ” Helps in reducing cost and time overruns.
  • βœ” Improves software maintainability and scalability.

Desirable Characteristics of a Good SRS:

A Software Requirement Specification (SRS) document serves as the foundation for software development. To be effective, it must have certain desirable characteristics that ensure clarity, completeness, and reliability.

  1. Correctness βœ…

    • The SRS must be accurate and free from errors.
    • All requirements should be validated and approved by stakeholders.
    • πŸ“ŒExample: If an SRS for a banking system states that β€œUsers can transfer money to their accounts,” it should specify internal accounts or external accounts to avoid confusion.
  2. Completeness πŸ“‹

    • The document should cover all functional, non-functional, and external requirements.
    • Should include edge cases, constraints, and assumptions.
    • πŸ“ŒExample: If an SRS for an e-commerce website specifies a checkout process, it must also mention payment options, tax calculations, and invoice generation.
  3. Unambiguity πŸ”

    • Each requirement should have only one possible interpretation.
    • Avoid vague terms like β€œfast,” β€œuser-friendly,” or β€œefficient.”
    • πŸ“ŒExample: Instead of saying β€œThe system should respond quickly,” say β€œThe system should respond within 2 seconds for 95% of users.”
  4. Consistency πŸ”„

    • No contradictory or conflicting requirements.
    • The document should maintain a uniform terminology and structure.
    • πŸ“ŒExample: If one section states that β€œUsers can reset passwords via email” and another states that β€œOnly administrators can reset passwords,” there is an inconsistency.
  5. Verifiability βœ…

    • Each requirement should be testable with measurable criteria.
    • It should be possible to verify if the requirement is met.
    • πŸ“ŒExample: β€œThe system should support 500 concurrent users without crashing.” This can be tested using performance testing tools.
  6. Modifiability πŸ”§

    • The SRS should be easy to update when new requirements arise.
    • Use a modular structure so changes affect only specific sections.
    • πŸ“ŒExample: If a travel booking system needs to add β€œTrain Bookings” in addition to flights and hotels, the changes should be easily integrated into the document.
  7. Traceability πŸ”—

    • Each requirement should be linked to its source (stakeholder request, business rule, law, etc.).
    • Helps track changes and ensure all requirements are implemented.
    • πŸ“ŒExample: If a government portal requires compliance with GDPR regulations, the SRS should mention which requirements satisfy this law.

Components of a Software Requirement Specification (SRS)

A Software Requirement Specification (SRS) document is essential for guiding software development. It contains detailed descriptions of the software’s functional and non-functional requirements, ensuring that both the development team and stakeholders are aligned. Below are the primary components of an SRS:

  1. Introduction πŸ“

    • This section provides an overview of the project and introduces the purpose, scope, and objectives of the SRS document. It helps in setting the context for the entire document.
    • Key elements:
      • Purpose – The objective of the document.
      • Scope – The software product’s scope and boundaries.
      • Definitions, Acronyms, and Abbreviations – Explanation of terms used in the document.
      • References – Any external resources referenced in the document.
      • Overview – A summary of what is covered in the document.
  2. Overall Description 🌍

    • This section provides a high-level view of the system, including its goals, users, and constraints.
    • Key elements:
      • Product Perspective – Describes how the system fits into the broader environment (existing system, related projects).
      • Product Features – A summary of the major features of the software.
      • User Classes and Characteristics – Description of the system’s users (e.g., administrators, end-users).
      • Operating Environment – Details about hardware, software, and other systems the product interacts with.
      • Design and Implementation Constraints – Constraints such as hardware limitations or legal requirements.
      • Assumptions and Dependencies – Assumptions made during requirements gathering and external dependencies.
  3. System Features βš™οΈ

    • This section outlines the functional requirements of the software in detail. Each feature describes what the system should do.
    • Key elements:
      • Feature Name – A unique name for each feature.
      • Description – A clear and concise description of the feature’s function.
      • Functional Requirements – Detailed specifications of the feature’s operations.
      • Use Cases – Scenarios that describe how users will interact with the system.
    • πŸ“ŒExample:
      • Feature Name: User Authentication
      • Description: Allows users to log in and access their profiles.
      • Functional Requirements:
        • The system must authenticate users via email and password.
        • The system must provide a β€œForgot Password” option.
        • The system must log failed login attempts.
  4. External Interface Requirements 🌐

    • This section specifies how the system interacts with other systems, hardware, and users.
    • Key elements:
      • User Interfaces – Describes the layout, design, and behavior of the user interface.
      • Hardware Interfaces – Specifies any hardware the system must interact with.
      • Software Interfaces – Specifies other software or APIs the system must interact with.
      • Communication Interfaces – Describes the protocols, ports, and data formats for communication.
  5. System Attributes πŸ…

    • This section defines the non-functional requirements of the system, such as performance, security, and scalability.
    • Key elements:
      • Performance Requirements – Speed, response time, throughput, etc.
      • Security Requirements – Authentication, authorization, encryption, data protection, etc.
      • Reliability and Availability – System uptime, failure recovery.
      • Maintainability – How easily the system can be updated, patched, and supported.
      • Scalability – Ability to grow and handle increased load.
      • Usability – User-friendliness and accessibility.
    • πŸ“ŒExample: The system must support 500 concurrent users with a response time of less than 3 seconds.
  6. Other Non-Functional Requirements πŸ§‘πŸ’»

    • These include additional qualities that do not relate to system functionality but are still important.
    • Key elements:
      • Legal and Regulatory Requirements – Compliance with laws and regulations (e.g., GDPR, HIPAA).
      • Environmental Requirements – Energy consumption, carbon footprint, etc.
      • Social and Cultural Requirements – Cultural or regional specifications, such as language or user preferences.

Structure of a Requirements Document

The structure of a requirements document (commonly referred to as a Software Requirements Specification (SRS) document) is designed to provide a clear, organized, and detailed description of the system’s requirements. A well-structured document helps ensure that the development team understands the user’s needs and that the final product meets expectations.

A structured SRS document follows:

  1. Title Page 🏷️:

    • Title: The name of the software project.
    • Version: Document version number.
    • Date: The date of document creation or the last update.
    • Author(s): The person(s) responsible for creating the document.
    • Approvals: Signatures or names of stakeholders approving the document.
  2. Table of Contents πŸ“‘

    • A list of sections, subsections, and appendices with corresponding page numbers for easy navigation.
  3. Introduction πŸ“

    • This section introduces the purpose of the document and provides an overview of the project.
  4. Overall Description 🌍

    • This section gives a broad view of the software product, its goals, and its users.
  5. System Features βš™οΈ

    • This section describes the functional requirements in detail. Each system feature must be described clearly to explain what the system will do.
  6. External Interface Requirements 🌐

    • Defines the software’s interactions with external systems, hardware, and users.
  7. System Attributes πŸ…

    • Describes the non-functional requirements related to the performance, security, scalability, etc.
  8. Other Non-Functional Requirements πŸ§‘πŸ’»

    • Describes additional constraints and requirements that are important for the system but don’t fall under functionality.
  9. Appendices πŸ“š

    • Provides supplementary materials or resources that support the SRS.
  10. Approval and Sign-Off πŸ–ŠοΈ

    • A section for stakeholders or project managers to formally approve and sign the document.

Problems in SRS πŸ˜ΆπŸŒ«οΈπŸ‘Ύ

Common challenges in SRS include:

  • ❌Incomplete Requirements – Missing functionalities.
  • ❌Ambiguity – Unclear descriptions leading to confusion.
  • ❌Inconsistency – Conflicting requirements.
  • ❌Scope Creep – Continuous changes in requirements.
  • ❌Lack of User Involvement – Poor understanding of actual needs.
    Share:
    Back to posts