SOFTWARE SYSTEMS.pdf
Document Details
Uploaded by Deleted User
Full Transcript
05 FUNCTIONAL AND NON-FUNCTIONAL REQUIREMENTS Software requirements are essential to the success of a software project. They define the expected functionalities and qualities of a software system. Requirements are g...
05 FUNCTIONAL AND NON-FUNCTIONAL REQUIREMENTS Software requirements are essential to the success of a software project. They define the expected functionalities and qualities of a software system. Requirements are generally categorized into two types: functional and non-functional requirements. 1. Functional Requirements Functional requirements define the specific behavior, tasks, or functions the software system is supposed to perform. These are the features and functionalities that the system should provide to its users. Key Characteristics: Describes What the System Should Do: Functional requirements specify actions or services the system must provide. User-Centric: They are often derived from the needs of users or stakeholders. System’s Behavior: They describe the system's response to specific inputs or conditions. Atomic and Measurable: Functional requirements are typically broken down into smaller, independent units and are measurable. Examples of Functional Requirements: User Authentication: The system must allow users to log in using a username and password. Search Functionality: The system should allow users to search for products by name, category, or price. Report Generation: The system must generate financial reports at the end of every month. Inventory Management: The system should automatically update stock levels after a sale. Tools for Documenting Functional Requirements: Use Case Diagrams: Illustrate interactions between users (actors) and the system. User Stories: Written descriptions of features from the perspective of an end user (commonly used in Agile). Functional Specification Document (FSD): A detailed document outlining all functional requirements in a structured manner. Importance of Functional Requirements: Guide Development: They serve as a blueprint for developers, ensuring the system delivers the required functionality. Testing Basis: Functional requirements provide the foundation for creating test cases to validate the system’s functionality. Stakeholder Communication: They help ensure that all stakeholders are aligned on what the system should do. Challenges: Incomplete Requirements: Missing or vague functional requirements can lead to costly changes later. Changing Requirements: As projects evolve, functional requirements may change, impacting project scope and timeline. 2. Non-Functional Requirements (NFRs) Non-functional requirements specify criteria that can be used to judge the operation of a system, rather than specific behaviors. These define the system's quality attributes, such as performance, security, usability, and reliability. Key Characteristics: Describes How the System Should Perform: Non-functional requirements focus on the quality attributes of the system. System Qualities: These are typically related to performance, security, scalability, maintainability, etc. Global Constraints: Non-functional requirements often apply to the entire system rather than individual features. Measurable Metrics: Non-functional requirements are defined in terms of measurable benchmarks (e.g., response time, uptime). Examples of Non-Functional Requirements: Performance: The system should respond to user queries within 2 seconds. Security: All data must be encrypted using AES-256 encryption. Scalability: The system should support up to 10,000 concurrent users without degradation in performance. Availability: The system must be available 99.99% of the time, excluding scheduled maintenance. Usability: The system should be accessible to visually impaired users, adhering to WCAG 2.1 standards. Types of Non-Functional Requirements: 1. Performance: Defines the response time, throughput, and resource utilization. o Example: The system should handle 500 transactions per second. 2. Security: Addresses concerns such as data protection, authentication, and authorization. o Example: Only authorized users can access the administrative dashboard. 3. Reliability: Refers to the system's ability to function correctly under specific conditions for a certain period. o Example: The system must operate continuously without failure for at least 24 hours. 4. Usability: Specifies how easy and user-friendly the system should be. o Example: New users should be able to navigate the system with minimal training. 5. Scalability: Describes the system’s ability to grow and manage increased demand. o Example: The system should support 10,000 additional users without a performance drop. 6. Maintainability: Specifies how easy it should be to update, modify, or maintain the system. o Example: Codebase should be modular to allow for easy updates. Tools for Documenting Non-Functional Requirements: Quality Attribute Scenarios: Describes specific measurable scenarios for testing non- functional attributes. Metrics: Clearly define thresholds or benchmarks for attributes like performance, security, or usability. Importance of Non-Functional Requirements: System Performance: NFRs ensure that the system operates under acceptable conditions. User Experience: They impact the overall user satisfaction, influencing how users interact with the system. System Security and Reliability: NFRs contribute to making the system secure, stable, and trustworthy. Challenges: Measuring Compliance: Some non-functional requirements can be difficult to measure, like usability or maintainability. Trade-offs: Sometimes improving one non-functional attribute (e.g., performance) can impact another (e.g., security). 3. Differences Between Functional and Non-Functional Requirements Aspect Functional Requirements Non-Functional Requirements Focus What the system does How the system performs or behaves Type Features, tasks, services Performance, security, usability, scalability Response time, encryption, availability, Examples Login, search, booking, reporting uptime Easily measurable (Does the system do Harder to quantify, often includes specific Measurement X or not?) benchmarks Derived from quality attributes or system Dependency Derived from business and user needs expectations Aspect Functional Requirements Non-Functional Requirements Verified through performance testing, Testing Verified through functional testing security testing, etc. 4. How Functional and Non-Functional Requirements Work Together: Both functional and non-functional requirements are crucial to the development of a successful software system. While functional requirements ensure that the system provides necessary features, non-functional requirements ensure that the system performs efficiently, securely, and is user - friendly. Functional Example: A website should allow users to create an account (functional). Non-Functional Example: The website should load the account creation page within 1 second (non-functional). Together, they ensure the software is both effective (meets user needs) and efficient (performs well).