WBISCT Pty Ltd – Enterprise Architecture Consulting and Training

Real-Life Case Study: Prioritising Functional Requirements in Light of Other Functional and Non-Functional Requirements

Real-Life Case Study: Prioritising Functional Requirements in Light of Other Functional and Non-Functional Requirements

In the world of software development, balancing and prioritising functional requirements can be a complex task, especially when taking into account other functional and non-functional requirements. This blog explores a real-life case study of a project undertaken by an Australian retail company, RetailTech, which aimed to develop a new e-commerce platform. The study highlights the challenges faced and the strategies employed to prioritise functional requirements effectively. We will look at three specific examples to illustrate this process.

Key Differences Between Functional and Non-Functional Requirements

In software development and systems engineering, requirements are classified into two main categories: functional and non-functional requirements. Understanding the differences between these two types of requirements is crucial for successful project planning, execution, and delivery. Here’s a breakdown of the key differences between functional and non-functional requirements.

1. Definition

Functional Requirements:

  • What the System Should Do: Functional requirements describe the specific behaviours, functions, and operations that a system must perform. They detail the tasks, interactions, and processes that the system should be capable of executing.
  • Examples: User authentication, data processing, transaction management, and reporting features.

Non-Functional Requirements:

  • How the System Should Perform: Non-functional requirements define the system’s quality attributes, constraints, and overall characteristics. They describe how the system performs its functions rather than the specific functions themselves.
  • Examples: Performance, scalability, security, usability, and reliability.

2. Focus

Functional Requirements:

  • Functionality and Features: Focus on the features and functionality that the system must provide to meet user needs and business objectives.
  • User Interactions: Often derived from user stories or use cases that outline how users will interact with the system.

Non-Functional Requirements:

  • Quality Attributes: Emphasise the quality aspects of the system, ensuring it performs efficiently and effectively under various conditions.
  • System Constraints: Include constraints related to system architecture, technology, and compliance standards.

3. Measurement and Testing

Functional Requirements:

  • Verification through Functional Testing: Functional requirements are typically verified through functional testing, such as unit tests, integration tests, and system tests, to ensure each function works as intended.
  • Pass/Fail Criteria: These requirements have clear pass/fail criteria based on whether the functionality works as specified.

Non-Functional Requirements:

  • Validation through Non-Functional Testing: Non-functional requirements are validated through non-functional testing methods, such as performance testing, load testing, security testing, and usability testing.
  • Quality Metrics: These requirements are measured against quality metrics like response time, throughput, security levels, and user satisfaction.

4. Examples in Context

Functional Requirements:

  • E-Commerce Platform:
  • Users must be able to register and log in.
  • The system must allow users to search for products.
  • The checkout process must support multiple payment options.

Non-Functional Requirements:

  • E-Commerce Platform:
  • The platform must handle at least 10,000 simultaneous users without performance degradation.
  • User data must be encrypted using industry-standard encryption techniques.
  • The system should load the homepage within 2 seconds for 95% of users.

5. Impact on Development

Functional Requirements:

  • Directly Guide Development: Functional requirements directly influence the design and development of system features.
  • Scope and Complexity: The scope and complexity of functional requirements can affect the project timeline and resource allocation.

Non-Functional Requirements:

  • Shape System Architecture: Non-functional requirements often dictate architectural decisions and the selection of technologies to ensure the system meets quality standards.
  • Influence on User Experience: These requirements significantly impact the overall user experience, system performance, and security.

The Case study/examples Context

RetailTech embarked on a project to replace its outdated e-commerce platform with a modern, scalable solution. The project involved numerous functional requirements such as user account management, product catalogues, and shopping cart functionality. Additionally, non-functional requirements like performance, security, and usability were critical to the platform’s success. This of course will depend upon the Stakeholder’s wish list and where they identify real value folowwing the MoSCoW method for instance.

Example 1: User Account Management and Security

Functional Requirement: Develop a comprehensive user account management system that allows users to register, log in, and manage their profiles.

Non-Functional Requirement: Ensure the system meets stringent security standards to protect user data.

Prioritisation Process:

  1. Security Integration: Given the importance of user data protection, the development team prioritised incorporating robust security features into the user account management system. This included multi-factor authentication, encryption of sensitive data, and secure password recovery mechanisms.
  2. Phased Implementation: The team decided to implement the basic account management functionality first, followed by incremental security enhancements. This approach ensured that a functional system was available early while continuously improving its security.
  3. Collaboration with Security Experts: RetailTech engaged with security experts to review and test the system regularly, ensuring compliance with industry standards and best practices.

Outcome:

By prioritising security in tandem with functional requirements, RetailTech successfully launched a secure user account management system that met both functional needs and stringent security requirements, boosting user confidence and trust.

Example 2: Product Catalogue and Performance

Functional Requirement: Create a dynamic product catalogue that supports advanced search and filtering capabilities.

Non-Functional Requirement: Ensure the catalogue performs efficiently under high traffic conditions, providing quick response times.

Prioritisation Process:

  1. Performance-Driven Design: The team prioritised performance optimisation from the outset, designing the product catalogue with efficient indexing and caching strategies to handle high volumes of data and user queries.
  2. Load Testing: Extensive load testing was conducted to simulate peak traffic scenarios. This helped identify performance bottlenecks and allowed the team to optimise the system before deployment.
  3. Incremental Release: The product catalogue was released in stages, starting with essential features and gradually adding more complex search and filtering options. This ensured a stable and performant system at each stage of development.

Outcome:

RetailTech’s product catalogue was able to handle high traffic volumes efficiently, providing a seamless user experience. Prioritising performance ensured that the system remained responsive and reliable, even during peak shopping periods.

Example 3: Shopping Cart Functionality and Usability

Functional Requirement: Develop a shopping cart system that allows users to add, remove, and manage items before checkout.

Non-Functional Requirement: Ensure the system is intuitive and user-friendly, enhancing the overall shopping experience.

Prioritisation Process:

  1. Usability Focus: The development team prioritised usability by conducting user research and testing. This involved creating user personas and scenarios to understand how different users interact with the shopping cart.
  2. Iterative Design: The shopping cart functionality was developed iteratively, with each iteration incorporating user feedback. This iterative approach ensured that usability improvements were continuously integrated into the system.
  3. User Interface (UI) Enhancements: The team collaborated with UX/UI designers to create an intuitive interface. Key features like drag-and-drop item management, clear visual feedback, and streamlined navigation were prioritised to enhance usability.

Outcome:

The shopping cart system received positive feedback for its ease of use and intuitive design. By prioritising usability, RetailTech ensured that users could easily manage their shopping carts, leading to higher customer satisfaction and increased sales conversions.

Conclusion

Understanding the key differences between functional and non-functional requirements is essential for effective project management and system development. Functional requirements focus on what the system should do, detailing specific features and functions. In contrast, non-functional requirements focus on how the system performs these functions, defining quality attributes and constraints. By addressing both types of requirements, organisations can ensure they deliver systems that not only meet business and user needs but also perform reliably and efficiently in real-world conditions.

Was this article helpful?
Yes Definitely!Not Sure...