Showing posts with label Non-Functional Requirements. Show all posts
Showing posts with label Non-Functional Requirements. Show all posts

2023-09-30

2023-09-30 Saturday - On the distinctions between Functional and Non-Functional Requirements

 

[Image by Alexa from Pixabay]


The seed for the genesis for this blog post started with a LinkedIn post by Dave Farley, with his link to his recent YouTube video: "Non-Functional Requirements" Are STUPID - and some of our subsequent LinkedIn exchanges (1, 2, 3 - as well as 4, and 5 - which I've incorporated into the initial content for this blog post)

See link to my initial comment on his post, #1:

Possible examples of counter-arguments:

1. Some NFRs are cross-cutting - and should be consistently applied enterprise-wide, across all domains, all applications.
2. Repeating the definitions, in vertical contexts - violates the DRY principle.
3. Enterprise-level NFRs provide a consistent reference - that can be reused across initiatives, products, programs, projects, applications, etc.
4. When categorizing everything as just a "requirement" (with no distinction between technical/NFR vs. functional) - increases the complexity and cognitive load - when trying to get a business stakeholder - to focus on reviewing/approving just the business requirements.

Example:
NFR: "All NPI, PII, PHI, PCI information must be encrypted at-rest, and in-transit, with encryption standards specified in INFOSEC-STANDARD-001."


See link to my follow-up reply, #4:

Dave Farley I think revisiting some definitions might be helpful for others in considering this discussion.

I will stipulate that if someone reading this (besides Dave) doesn't value architecture, or understand the decomposition and importance of layers in architecture - they may struggle with understanding the intended purpose for making a distinction between functional and non-functional types of requirements.

If you are only focused on what is in the next sprint - and never do any requirements analysis or design - this discussion will be moot for you.

Oxford English Dictionary (OED):

Functional:

  1. “of or having a special activity, purpose, or task; relating to the way in which something works or operates.“

  2. “designed to be practical and useful, rather than attractive.“

  3. “working or operating.”



Also see ISO 25010
https://iso25000.com/index.php/en/iso-25000-standards/iso-25010

 

https://en.wikipedia.org/wiki/Functional_requirement

(selected citations)

  • “In software engineering and systems engineering, a functional requirement defines a function of a system or its component, where a function is described as a summary (or specification or statement) of behavior between inputs and outputs.”

  • “Functional requirements may involve calculations, technical details, data manipulation and processing, and other specific functionality that define what a system is supposed to accomplish”

  • “Functional requirements are supported by non-functional requirements (also known as ‘quality requirements’), which impose constraints on the design or implementation (such as performance requirements, security, or reliability). Generally, functional requirements are expressed in the form ‘system must do <requirement>,’ while non-functional requirements take the form ‘system shall be <requirement>.’”

  • “The plan for implementing functional requirements is detailed in the system design, whereas non-functional requirements are detailed in the system architecture”

  • “As defined in requirements engineering, functional requirements specify particular results of a system.”

  • “...contrasted with non-functional requirements, which specify overall characteristics such as cost and reliability.”

  • “Functional requirements drive the application architecture of a system, while non-functional requirements drive the technical architecture of a system”


https://www.altexsoft.com/blog/business/functional-and-non-functional-requirements-specification-and-types/

  • “Functional requirements are product features or functions that developers must implement to enable users to accomplish their tasks”

  • “Nonfunctional requirements, not related to the system functionality, rather define how the system should perform.” 

     

     

2012-12-30

2012-12-30 Sunday - NFRs

Non-Functional Requirements (NFRs) are often poorly documented, and there is often ambiguity that exists in the definitions of terms used by different team members.

Often teams approach NFRs using a boil-the-ocean approach - in which case, all NFRs are treated equally (at best) - or ignored (at worst) by the developers en masse due to the sheer volume of NFRs specified.

Today I happened across a paper that was published in March 2012 as part of the
20th IEEE International

Requirements Engineering Conference

September 24th-28th, 2012. Chicago, Illinois, USA.

http://crisys.cs.umn.edu/re2012/

NON-FUNCTIONAL REQUIREMENTS IN SOFTWARE ARCHITECTURE PRACTICE
Report ESSI-TR-12-1
Departament d’Enginyeria de Serveis i Sistemes d’Informació
 http://upcommons.upc.edu/e-prints/bitstream/2117/15716/1/da-ca-jc-xf-report%20essi.pdf
by
David Ameller
Claudia Ayala
Xavier Franch
Software Engineering for Information Systems Group
Universitat Politècnica de Catalunya (GESSI-UPC)
Barcelona, Spain

and
Jordi Cabot2
AtlanMod
INRIA - École des Mines de Nantes
Nantes, France

A slide presentation is also available:
http://modeling-languages.com/how-do-software-architects-deal-with-non-functional-requirements/


A few interesting quotes from the paper:

  • "Our interviews show that in 10 out of the 13 projects considered, the software architect was the main source of the NFRs."
  • "Architects did not share a common vocabulary for types of NFRs and showed some misunderstandings."
  • "The two most important types of technical NFRs for architects were performance and usability. On the other hand, architects considered non-technical NFRs to be as relevant as technical NFRs."
  • "Inability to interpret some particular term, e.g., “availability”, “accuracy”, and “sustainability”, requiring additional explanations from the interviewers"
  • "Use of a term with an incorrect definition. We found a serious confusion in the answer, e.g., “Maintainability is very important, because when something is working, we can’t make changes”

Other Resources Mentioned in the Paper
Volare Requirements Specification Template
http://www.volere.co.uk/template.htm
ISO/IEC 9126 Software engineering - Product quality
http://en.wikipedia.org/wiki/ISO/IEC_9126


Also see:

ISO/IEC 9126 in practice: what do we need to know?
http://www.essi.upc.edu/~webgessi/publicacions/SMEF%2704-ISO-QualityModels.pdf

ISO/IEC 25010:2011
http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=35733

Other Web Resource Links
http://en.wikipedia.org/wiki/Non-functional_requirement





WordCount

Copyright

© 2001-2026 International Technology Ventures, Inc., All Rights Reserved.