C1W4 distinction between functional and non-functional requirements

I found that it is silly to have the distinction between functional and non-functional requirements. So I asked ChatGPT about it. I’m happy that I’m not alone :slight_smile:

Answer from ChatGPT:
You’re not alone in questioning the distinction between functional and non-functional requirements. Some argue that the division is arbitrary because, ultimately, both types of requirements contribute to the system’s overall behaviour and user experience. Here’s why some people find this distinction “silly” or less useful:

  1. Interdependency: Functional and non-functional requirements often influence each other. For instance, a functional requirement might specify that a user can upload a file, while a non-functional requirement may state that the upload must happen within 2 seconds (latency). If the system can’t meet the latency constraint, the functionality becomes inadequate, blurring the line between the two.
  2. Value to the User: Users don’t experience these requirements separately. They care that the system works well as a whole, regardless of whether a requirement is classified as functional or non-functional. For example, a payment system that works (functionally) but takes 30 seconds to process (non-functional) won’t satisfy users.
  3. Ambiguity: The classification of some requirements can be ambiguous. Is usability a functional or non-functional requirement? It can impact how the system operates (functional) but is also related to the user experience (non-functional).
  4. Modern System Complexity: With today’s complex systems, especially in areas like machine learning or cloud-based architectures, performance, scalability, and security (traditionally non-functional) are so integral to functionality that it’s hard to separate them.

Because of these points, many people advocate for focusing on all requirements holistically, ensuring that the system performs well as a whole rather than drawing lines between these categories.

I think your problem is that you trust the response from chat gpt. The response is not accurate and you should speak to humans who have experience in data engineering, otherwise you operate with incorrect assumptions.

2 Likes

Sometimes functional requirements come straight from the feature wish list of customers/users, while non-functional requirements are derived. A security requirement, for example not being susceptible to cross site scripting, is not typically something that comes from end users. In my development teams, functional requirements most often were outside-in, while non-functional came more from the platform engineering and internal business objectives (eg scalability). Often different parts of the team were responsible for their design and implementation. So is it a rigidly codified boundary? Not really. Is there any difference? I tend to think so.

1 Like

Chat bots are not experts that you can trust without consideration. They’re just language models.

Thank you for your input. “silly” wasn’t the best choice of wording. What I meant to say is that the boundary is sometimes blurred, and emphasising the distinction can feel pedantic in certain contexts.

For example, in the transcript, we see that the data scientist explicitly states that the response must occur within 1 or 2 seconds. However, in the feedback on the assignment, latency is categorised as a non-functional requirement.

Data Scientist: Sure, so we would like to be able to present recommended products to the user more or less instantaneously as they are browsing through different products or during the checkout process. It usually takes a new page a second or two to render so if the recommender could work that fast it would be great.

However, I do agree with the examples shared by ai_curious.

I don’t trust ChatGPT—I always carefully review its output. But I believe that a significant number of people likely share a similar opinion, which could influence ChatGPT’s learning. In fact, I examined its arguments and I found that they make sense.