1

Refined description

Because of great contributions, the description mutated as follows:

My application's purpose is to register customers into a system.

The requirement is: enable traceability for registration attempts under certain conditions, and it can be implemented by creating a boolean flag which can be used for data analytics.

Under the following premise, the requirement is a functional one:

If I write the user story like: As a Data Analyst, I want to enable traceability for registration attempts so I can measure the amount of abandoned applications...I can see that the app creates output so the persona (Data Analyst) is able to use the system for his purposes.

On the next opposite premise, the requirement is a non-functional one:

Measuring the amount of abandoned applications is basically measuring the system's usability and that is universally recognized as a non-functional requirement.

So which one is it, functional or non-functional?


Historic

Please consider contributing instead of downvoting. It's a valid question that most people won't care to dig in. Just look at few youtube videos (e.g. a, b, c) and everybody talks about the same definitions and written material covers same extent. I am note expecting textbook definitions but a well cemented argument. It's so discouraging getting negative feedback from bad apples in a good community.

I have a practical example and I need some help. Please share your expertise, good practices, lessons learned from your organizations.

My application's purpose is to register customers into a system.

The requirement is to enable traceability for registration attempts under certain conditions, and it can be implemented by creating a boolean flag which can be used for data analytics.

In my head, that requirement is not part of the system's functionality. I think of it as an enabler for reporting and tracing the product's usability. I want to classify it as a non-functional requirement. However, it doesn't intuitively follow the main guideline from this answer:

Functional requirements define what the system or application will do...NF requirements are also not implementation details...

On the other hand, when I check wikipedia I can see that common examples of non-functional requirements are:

  • Reporting.
  • Usability

My rationale is: this requirement is meant for reporting and tracing usability. It can be expressed as an implementation detail but has nothing to do with the functionality of the application so I want to classify it as a non-functional requirement, however, it is something that must be implemented by the system and will produce a flag (output) and certainly can be translated to an implementation detail (but at the end of the day everything has to be implemented some way, right?).

Edit (Apr/30/2022)

I believe that it is a functional requirement and the mistake I made while posting this question is that I didn't define the story properly and was not considering that the persona might be the consumer of the data.

The story I was working on was poorly written and that caused the confusion so I am realizing the importance of having good processes and how those affect the overall health of a project.

1
  • I work in a regulated industry and auditing some aspects of a session / work flow is a functional requirement, as the system must provide that to allowed to run. This sounds a bit like that. The analytics and toggle / flag reference makes it sounds discretionary. Discretionary might be functional, but if its not discretionary to provide the ability (rather than run-time of whether to us it), then I would say it is functional. And from an abstract point of view, a toggle that allows a chain of run-time behavior, in my opinion, is pretty much always a functional case.
    – Kristian H
    Commented Apr 30, 2022 at 10:36

4 Answers 4

3

That sounds like a functional requirement to me. It requires that your system exhibits certain behaviour (setting a Boolean flag) when something specific happens.

Non functional requirements tend to be about things such as coding standards and documentation, which aren't about what the system actually does.

1
  • thanks! Your answer made me think that we can think of Data Analyst as a persona and in that case the system would be fulfilling a need so even if the requirement is not directly related to product's business line it is contributing in a way Commented Apr 29, 2022 at 12:57
2

I would say that this is a Functional requirement.
Being able to report on (or otherwise analyse) certain Data means that the system has to "do" something to support that. Functional. OK, if setting a Boolean flag really is all that's required, then it's an easy build, but it still needs to start from a Requirement.

The User Story might read something like this:

As a (Person interested in registrations), I want to trace registration attempts that occur under these conditions:
X,
Y,
Z.

1
  • thanks a lot @Phill, bizarrely, just an instant before you posted your answer, Simon's answer just made me think about that and commented his answer. The issue I am facing is that our stories are not being defined properly and I might need to contribute the way you just did Commented Apr 29, 2022 at 13:03
1

This can be a functional requirement and a non-functional requirement. It becomes a matter of perspective.

Describing the behavior of gathering metrics about user sign-ups and attempts is solidly a functional requirement. The implementation of this behavior as a boolean flag could be viewed as a non-functional requirement. From the same wikipedia page you link to:

The plan for implementing non-functional requirements is detailed in the system architecture, because they are usually architecturally significant requirements.

(emphasis, mine)

From the perspective of the technical implementation for reporting on registration attempts, it is a non-functional requirement (use a boolean flag). From the perspective of how the system behaves (enable traceability for registration attempts) it is a functional requirement.

0

I've changed my mind back to my original hunch and now I know it is a non-functional requirement. I came across this question and learned a couple of things while poking around the web (reading from forums and parts of different books).

I'll start citing a critical idea from the Software Architect's Handbook on what quality attributes are:

They are non-functional requirements of a software system as opposed to its features, which are functional requirements.

Even if the requirement: enable traceability for registration attempts under certain conditions can have a persona, a neat story definition and a clear implementation as a software feature it still derives from the need of measuring the usability of the system. And other requirements derived from other quality features like performance or security will follow this same situation.

In my search of a trustable source to ratify this conclusion I came across with the Project Management Institute and I will add the following definitions:

Functional requirements are capabilities that the product must do to satisfy specific user needs. They are the most fundamental requirements. Functional requirements are sometimes referred to as business requirements. They describe capabilities that the intended product can perform to enable business users to do some part of their work and carry on with their business (operational) work.

Non-functional requirements include usability, performance, reliability and security requirements. These are qualities that the product must have. Technical requirements also fall under the non-functional category. Nonfunctional requirements are no less vital than functional requirements. In some projects, completed products that satisfy all functional requirements but leave even one important non-functional requirement (e.g., performance requirements) unsatisfied are considered a project failure.

I found particularly misleading the definition at Mastering the Requirements Process, so I wouldn't use it.

This answer is not good but the experiences shared in the answer and in the comments made me think about the purpose of requirements and gives you real insight about how this kind of stuff is handled in different organizations.

To talk a little bit more about my requirement

As english is not my first language and I will work with examples instead of writing down my conceptualizations.

Oversimplifying, my system registers users. Its functions and features circle around of enabling upstream and downstream systems to cooperate with the registration and the registration process itself so I have a bunch of functional requirements that describe the needs of the stakeholders and depict whatever the system does to satisfy them.

There are a bunch of incidental and yet crucial features that have to be considered as part of the implementation of those functional requirements like accessibility, performance, security, usability etc. that will make my system viable and can be defined as non-functional requirements (quality attributes).

Imagine that you are working on developing an accessibility or security system. You will have functional requirements related to accessibility or security from your system and still you will have non-functional requirements to take care of your accessibility or security quality attributes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.