Functional and Non-Functional Requirements

Design Pattern
Design Pattern @Image courtesy of Suat Eman/

Functional and Non-Functional Requirements

Welcome to CodeSpread!

Before we begin a project, we are always required to document the requirements and classify them between functional requirements and non-functional requirements. This activity is beneficial whenever there is a future risk or disagreements.

What are Functional requirements?

  • Wikipedia says,In software engineering, a functional requirement defines a function of a software system or its component.
  • Functional requirements may be calculations, technical details, data manipulation and processing and other specific functionality that define what a system is supposed to accomplish.
  • In simple terms, Functional requirements defines what a system is supposed to do.

What is a function?

  • A function is described as a set of inputs, the behavior, and outputs.
  • So, A function specifically involves external interaction.


  • It describes the action which completes the work,that system is supposed to do.
  • Behavioral requirements describing all the cases where the system uses the functional requirements are captured in use cases.
  • This behavior may be expressed as services, tasks or functions the system is required to perform.

Use Case?

  • A use case describes an interaction between an actor and the system.

For example: Interaction between customer and Bank System.



Still More..

  • The plan for implementing functional requirements is detailed in the system design.
  • Examples:
    • Business Rules like, A user can see only his profile information and data entered by him.
    • Authentication like A user should be authenticated with the bank’s database.
    • Reporting Requirements like A user can see his account details.

What are non-Functional Requirements?

  • Wikipedia says, a non-functional requirement is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors.
  • In simple terms, It defines how a system is supposed to be.

There is no a clear distinction between functional and nonfunctional requirements. Still we can try,

  • It defines the qualities or attributes of the system.
  • It helps define the boundaries of the solution
  • It describes the experience of the user while doing the work.

Non-functional requirements are still requirements but there is no function like system’s input/output behavior attached to them. A Non-functional requirement measures these functions on various parameters. These parameters are experimented against the user’s experience. After that, a metrics is formed to document it.

  • The plan for implementing non-functional requirements is detailed in the system architecture.

Measurement Parameters:

  • Performance: Performance is related to the speed of operation of a system. For example:
    • Response: The time taken by the system to react on user’s request.
  • Scalability: It defines the capability of the system to extend under load.
  • Reliability: Reliability is the ability of a system to perform its required functions under stated conditions for a specific period of time.
  • Usability: Usability is the ease with which a user can learn to operate the system or component.
  • Maintainability: When the system is deployed and running, Maintainability defines the ease with which the changes  can be introduced in the system.

Each function will lead to another non-functional requirements like,

  • User requires a function of ‘site-navigation’ then by default, a non-functional requirements like usability gets attached to it.
  • User requires transactions functionality then by default, Security and reliability gets attached to it.

I hope we were able to help you about differentiation between functional and non-functional requirements. Thanks.

Author: hershey

A passion for knowledge drives me to do programming, A passion for programming drives me to create something different, A passion for creation drives me to spread the knowledge.

Share This Post On


  1. nice superb explaination

    Post a Reply
  2. thanks for the tutorial
    I am having a problem.
    The feature “Create SQL server database” isn’t available , I can’t select it.
    Can you help, please ?

    Post a Reply

Submit a Comment

Your email address will not be published. Required fields are marked *

More from CodeSpread:

  • Agile Encounters UnpredictabilityAgile Encounters UnpredictabilityWhat is Agile? Wikipedia says “Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through...
  • Functional and Non-Functional Requirements SlideShow and ScreenCastFunctional and Non-Functional Requirements SlideShow and ScreenCastHere is a slide show and screencast of Functional and Non-Functional Requirements . This slide show is also available for download. You can also check the screencast on our youtube channel. ...
  • Importance of Software MaintenanceImportance of Software MaintenanceWhat is Software Maintenance? Software maintenance is an important phase of SDLC. It is defined as a set of activities to keep the software functional and behavioral as intended for as long as ...
  • SDLC: Importance of Requirement Analysis.SDLC: Importance of Requirement Analysis.What is SDLC? SDLC is the acronym for Software Development Life Cycle or System Development Life Cycle.It is a conceptual model that describes the stages involved in development of a software or a...
  • Sofware Estimation includes Size,Effort,Schedule and Cost.Sofware Estimation includes Size,Effort,Schedule and Cost.Estimation is a per-development  activity which bows the first seed and proves to be a real foundation of a successful project delivery. It initiates the the beginning of project planning activitie...
  • Lean in ITLean in ITWikipedia says ‘Lean IT is the extension of lean manufacturing and lean services principles to the development and management of information technology (IT) products and services.’ What are these ...
  • User Interface DesignUser Interface DesignWhat is a User Interface? Webopedia says “Abbreviated UI, the junction between a user and a computer program. An interface is a set of commands or menus through which a user communicates with a pr...
  • Asp.Net: More about CookiesAsp.Net: More about CookiesWe have seen, how our cookies looks in our last article Cookies Part 1. In this article, we will talk about their properties,limitations and technical part. Properties and Limitations Cook...