I just started as a junior business analyst and working on defining the requirement for an already existing system, so I am gathering the requirements for a just added service.

  1. One of the requirements is that an invoice file should be able to be downloaded as a csv and xml, and not only as a excel file. I have a hard time figuring out if it is a functional or non-functional requirement, because it does not impact how the system behaves, but it also has nothing to do with security/maintenance etc.

  2. The second requirements is that the file now has a few columns which will have to be extended to 5 more (like currency, VAT, etcetera). I do not know if these are already stored in the database, but if they do exist --> would it be seen as a functional or non functional requirement? And if they do no exist yet --> would it be seen as a functional or non functional requirement?

thanks a lot!

  • 8
    To be honest, I've always struggled with how dividing requirements into functional and non-functional categories is beneficial. I see it prompting questions like this. I think it is more important to record how we expect the application to behave rather than categorizing requirements. Often times you need both functional and non-functional requirements in order to understand a use case. Why separate them? Commented Oct 12, 2022 at 14:35
  • 1
    It's like in certain circles of economics, where they simply define every attribute of a product which is not its price as "quality", simply because trying to find a general definition of what "quality" means is impossible, so why even try? Commented Oct 12, 2022 at 15:26
  • The kinds of things that I see defined as non-functional are things like resiliency and security requirements. They also often given by different teams than the stakeholders who define the functional requirements and are non-specific to the functional requirements.
    – JimmyJames
    Commented Oct 12, 2022 at 16:57
  • 1
    @GregBurghardt: Seems like an ("executive-summary" or "elevator-pitch")-type logic. In that, if someone's only going to briefly consider the project, then they may just want a short, simplistic blurb about what it does. Such divisions may seem extraneous/unhelpful if you're considering the project more thoroughly. For example, non-scientists might think of "quantum mechanics" in terms of its functionality (a tool for doing physics) along with some qualities (maybe they'd regard it as complicated, math-heavy, etc.). Though a scientist might not find that description so helpful.
    – Nat
    Commented Oct 12, 2022 at 19:51
  • 1
    Does this answer your question? Is this a functional or non-functional requirement?
    – Christophe
    Commented Oct 12, 2022 at 20:47

2 Answers 2


functional requirements define what a system is supposed to do and non-functional requirements define how a system is supposed to be.

Wikipedia - Non functional requirements

“The system shall produce yellow rocks” is a functional requirement.

“The system shall be yellow” is a non-functional requirement.

What makes 1 a functional requirement is the download. If the system hid the file format used from the user it would be a implementation detail and so a non-functional requirement. But since it’s part of what the system is expected to do it’s a functional requirement.

2 Seems like a non-functional requirement to be extensible. What the fields should be before or after extension is a functional requirement though since that changes what the system makes.

  • 1
    What though is the principle that distinguishes the two cases? The 'expectations of the end-user' (as distinct from matters and choices which would only concern the developer) seem to define the first case, but in the second case this principle seems to be further qualified by what the user requires today (but not that which he requires today only for purposes tomorrow, such as 'extensibility'). Like @GregBurghardt, I'm also unclear what this kind of distinction is supposed to achieve, even if the criteria for distinction could be made clearer and easier to apply.
    – Steve
    Commented Oct 12, 2022 at 20:21
  • @steve among other things it changes how you test the requirements. A non functional requirement requires testing that is aware of the system. Not just it’s output. Commented Oct 12, 2022 at 22:43
  • For me that only muddies the water further. I can make sense in a distinction between very narrow requirements which can often be defined and tested quickly by mechanical means, and the broadest requirements that require expertise, judgment, and time to assess (and potentially are never final, but constantly monitored over time). But this - if it is the distinction you make - is obviously a spectrum and not a cleavage, and it has nothing to do with the presence or absence of "function" (as implied by the functional/non-functional distinction). Am I on the right road here?
    – Steve
    Commented Oct 13, 2022 at 8:36
  • @Steve not sure where you get the idea that this is a spectrum. A functional requirement doesn’t care what system fulfills it so long as it’s fulfilled. A non-functional requirement does. There’s nothing fuzzy here. Commented Oct 13, 2022 at 13:05
  • So a functional requirement is a requirement "where a commissioner wouldn't care what system is used to fulfil that requirement"? Why would he care any less about what system produces yellow rocks, than he would about which equipment is painted yellow? I'm not being intentionally obtuse about this - I really don't understand the nature of this distinction, and I'm doing my best to make sense of what you're saying.
    – Steve
    Commented Oct 13, 2022 at 14:25
  1. This is functional. The user says they needs a csv and XML versions and will complain if they are not available, so it's a functional requirement.
  2. This is also functional, and part of the above. You don't just need "a csv file". The requirements must include a detailed list of each field and for each one of them it must say what it is supposed to contain, how it is formatted and what happens if that piece of data is not available (if it might not be). Same for XML. If the csv/XML file is meant to be imported into another application, you should find all that information in the documentation of that application but be aware that you are responsible for asking any clarification on how to put the data that your application has in that form.

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