ScholarQuill logoScholarQuillUniversity Notes
  • Notes
  • Past Papers
  • Blogs
  • Todo
Login
ScholarQuill logoScholarQuillUniversity Notes
Login
NotesPast PapersBlogsTodo
More
SubjectsDiscussionCGPA CalculatorGPA CalculatorStudent PortalCourse Outline
About
About usPrivacy PolicyReportContact
Notes
Past Papers
Blogs
Todo
Analytics
    Current Subject
    🧩
    Software Engineering
    CC-212
    Progress0 / 25 topics
    Topics
    1. Nature of Software2. Overview of Software Engineering3. Professional software development4. Software engineering practice5. Software process structure6. Software process models7. Agile software Development8. Agile process models9. Agile development techniques10. Requirements engineering process11. Functional and non-functional requirements12. Context models13. Interaction models14. Structural models15. Behavioral models16. Model driven engineering17. Architectural design18. Design and implementation19. UML diagrams20. Design patterns21. Software testing and quality assurance22. Software evolution23. Project management and project planning24. Configuration management25. Software Process improvement
    CC-212›Functional and non-functional requirements
    Software EngineeringTopic 11 of 25

    Functional and non-functional requirements

    5 minread
    905words
    Intermediatelevel

    Functional and Non-Functional Requirements

    In the context of software engineering, requirements are typically classified into two main categories: functional requirements and non-functional requirements. Both are essential for defining the scope, behavior, and quality of a system. Understanding the distinction between them is crucial for building systems that meet both user needs and quality expectations.


    1. Functional Requirements

    Functional requirements describe the specific behavior or functions that the system must support. They define what the system should do — the actions it must perform to meet the needs of users or other systems.

    These requirements typically focus on:

    • Inputs: The data or information the system should receive.
    • Processing: How the system should process or manipulate the data.
    • Outputs: The results the system produces or how it communicates with other systems or users.
    • Interactions: The way the system should respond to user actions or requests.

    Functional requirements are often captured as use cases, user stories, or functional specifications.

    Examples of Functional Requirements:

    1. Login functionality: "The system must allow users to log in using a username and password."
    2. Order processing: "The system must allow customers to place orders, including selecting items, adding them to the cart, and completing the checkout process."
    3. Search functionality: "The system must allow users to search for products by name, category, and price range."
    4. Report generation: "The system must allow administrators to generate monthly sales reports based on data from the database."

    Characteristics of Functional Requirements:

    • Focus on system operations, features, and behaviors.
    • Directly linked to business objectives or user needs.
    • Typically serve as the basis for system design and implementation.
    • Easy to validate with users (e.g., through testing or demonstrations).

    2. Non-Functional Requirements

    Non-functional requirements define the quality attributes, system performance, or constraints that the system must meet. These requirements specify how the system should perform or behave, rather than what it should do. Non-functional requirements are concerned with the system’s overall qualities and user experience.

    Non-functional requirements are often categorized by the specific quality attribute they address. These include, but are not limited to:

    • Performance: How fast the system performs tasks, such as response time, throughput, or latency.
    • Scalability: The system’s ability to handle increasing loads or to be expanded in terms of capacity or functionality.
    • Security: The level of protection the system should provide against unauthorized access, data breaches, or attacks.
    • Usability: The ease with which users can interact with the system, often related to the user interface design.
    • Reliability: The system’s ability to operate without failure for a specified period.
    • Availability: The system's readiness for use, often expressed as uptime percentages (e.g., 99.99% uptime).
    • Maintainability: How easy it is to modify, fix, or enhance the system.
    • Compatibility: How well the system integrates with other systems or technologies.
    • Compliance: Adherence to regulatory standards or industry norms.

    Examples of Non-Functional Requirements:

    1. Performance: "The system must process 100 transactions per second under normal load."
    2. Security: "The system must encrypt all user data stored in the database using AES-256 encryption."
    3. Scalability: "The system must be able to handle 10,000 concurrent users without performance degradation."
    4. Availability: "The system must have an uptime of 99.9% over a 12-month period."
    5. Usability: "The system’s user interface must be intuitive, with all major features accessible within two clicks."

    Characteristics of Non-Functional Requirements:

    • Focus on system attributes and behavior, often related to performance, security, and user experience.
    • Impact the system design, architecture, and testing processes.
    • Often cannot be validated directly through user interaction or a simple test case; instead, they require performance testing, simulations, or evaluations.
    • Generally apply across the system and affect multiple areas of functionality or performance.

    Differences Between Functional and Non-Functional Requirements

    Aspect Functional Requirements Non-Functional Requirements
    Definition Describes what the system should do. Describes how the system should perform.
    Focus System features, actions, and processes. Quality attributes, performance, and constraints.
    Examples Login, search, order processing, report generation. Performance, security, scalability, reliability, usability.
    Measurement Often quantifiable and specific to system behavior. Typically qualitative or measurable in terms of system attributes.
    Validation Validated through system behavior or functionality testing. Validated through performance testing, compliance checks, etc.
    Change Impact Changes in functional requirements usually affect system logic and design. Changes in non-functional requirements usually affect system infrastructure and performance.
    Priority Directly tied to user needs and business goals. Impacts the overall quality and user satisfaction, but not always directly tied to business functionality.

    Importance of Both Requirements

    Both functional and non-functional requirements are essential for building a successful software system. Functional requirements ensure that the system delivers the core features and functionality needed by users. Non-functional requirements, on the other hand, ensure that the system performs well, is secure, and provides a positive user experience.

    Inadequately defining or neglecting non-functional requirements can lead to problems such as:

    • Poor performance: Slow or unresponsive systems.
    • Security vulnerabilities: Exposing data or system functionality to unauthorized users.
    • Scalability issues: Inability to handle increased loads as the system grows.
    • User dissatisfaction: Difficult or frustrating user interfaces.

    Similarly, neglecting functional requirements can result in a system that does not meet the needs of its users or stakeholders.

    By addressing both sets of requirements during the requirements engineering process, you can build a software system that is not only functional but also reliable, secure, and user-friendly.

    Previous topic 10
    Requirements engineering process
    Next topic 12
    Context models

    Past Papers

    Open this section to load past papers

    Click on Show Past Papers to see past papers.
    On This Page
      Reading Stats
      Est. reading time5 min
      Word count905
      Code examples0
      DifficultyIntermediate