Functional and Non Functional Requirements

Andrew Makar
2 Sept 201913:24

Summary

TLDRThis transcript provides an overview of functional and non-functional requirements in system design. Functional requirements describe what a system should do, while non-functional requirements focus on how the system performs. It emphasizes the importance of clarity, testability, and feasibility in requirements, using user stories and the INVEST acronym for agile development. The script also discusses non-functional aspects like security, performance, scalability, and maintainability, and introduces tools like the requirements traceability matrix to track progress and ensure that the system meets its intended goals.

Takeaways

  • πŸ“ Functional requirements specify what a system should do, focusing on inputs, behaviors, and outputs.
  • πŸ” A good requirement is unambiguous, testable, feasible, independent, traceable, necessary, and implementation-free.
  • πŸ“š User stories can be broken down using the INVEST acronym: Independent, Negotiable, Valuable, Estimable, Small, and Testable.
  • πŸ“± An example of a user story is developing an iPhone application for issuing school permission slips.
  • πŸ“ˆ Non-functional requirements describe the quality of the user experience and system properties without altering functionality.
  • πŸ”‘ Security, performance, availability, and accessibility are examples of non-functional requirements.
  • 🌐 Accessibility requirements ensure that systems are usable by people with disabilities, such as color blindness.
  • πŸ› οΈ Non-functional requirements also include system architecture, technology stack, and network considerations.
  • πŸ“Š Requirements can be categorized into must-haves, wants, and assumptions to prioritize and manage them effectively.
  • πŸ“‹ A requirements traceability matrix helps maintain a master list of requirements and track their status and testing.

Q & A

  • What are functional requirements?

    -Functional requirements refer to the specific functions of a system or component, detailing the inputs, behaviors, and outputs, and clearly stating what the system should do.

  • What are the characteristics of a good requirement?

    -A good requirement should be unambiguous, testable, feasible, independent, traceable, necessary, and implementation-free.

  • What does the INVEST acronym stand for in the context of user stories?

    -INVEST stands for Independent, Negotiable, Valuable, Estimable, Small, and Testable, which are the characteristics that user stories should possess.

  • How can user stories be used to develop requirements for an iPhone application for school permission slips?

    -User stories can be written from the perspective of different users, such as 'As a principal, I want to run a report that identifies all completed permission slips so I will know which students can go on the field trip.'

  • What are non-functional requirements?

    -Non-functional requirements describe the qualities or attributes that the product must have, such as performance, usability, and security, without altering the product's functionality.

  • Why are non-functional requirements important?

    -Non-functional requirements are important as they help to describe the user experience and ensure the system meets certain standards of quality, even though they do not directly contribute to the system's functionality.

  • What is a common format for writing user stories?

    -A common format is 'As a [user role], I want [functionality] so that [value/benefit].'

  • How do non-functional requirements differ from functional requirements?

    -Non-functional requirements focus on the quality and constraints of the system, such as performance and security, while functional requirements specify what the system should do.

  • What are some examples of non-functional requirements?

    -Examples include response time, system capacity, data security, legal compliance, and system availability.

  • How can a requirements traceability matrix help in managing requirements?

    -A requirements traceability matrix helps maintain a master list of all requirements, tracks their status, and links them to test cases, ensuring that all requirements are delivered and tested as planned.

  • What are the categories of non-functional requirements mentioned in the script?

    -The categories include performance, availability, maintainability, capacity and scalability, and recovery.

Outlines

00:00

πŸ“ Understanding Functional and Non-Functional Requirements

This paragraph discusses the distinction between functional and non-functional requirements in software development. Functional requirements specify what a system should do, focusing on inputs, behaviors, and outputs, and are often the main focus of development. They should be clear, testable, feasible, independent, traceable, necessary, and implementation-free. Non-functional requirements, on the other hand, describe the quality of the user experience, such as performance, security, and usability, without altering the product's functionality. The paragraph also introduces the concept of user stories, which are a way to capture functional requirements in a format that is independent, negotiable, valuable, estimable, small, and testable. An example of user stories for an iPhone application for school permission slips is provided, illustrating how these stories can be used to manage and implement requirements.

05:01

πŸ” Non-Functional Requirements: The Backbone of Quality

The second paragraph delves into non-functional requirements, emphasizing their importance in defining the user experience and system properties. These requirements cover aspects such as response time, system capacity, service level agreements, security, legal compliance, and architectural design. It discusses how non-functional requirements guide the system's performance, availability, maintainability, capacity, and recovery. Examples include password policies, accessibility standards, uptime requirements, and data handling practices. The paragraph also touches on the organizational and change management aspects of system deployment, such as training and support, highlighting the need for these requirements to ensure the system's successful adoption and operation.

10:02

πŸ“Š Managing Requirements with Traceability and Prioritization

The final paragraph addresses the management of both functional and non-functional requirements through the use of a requirements traceability matrix. This tool helps maintain a master list of all requirements, track their status, and link them to test cases, ensuring that each requirement is verified and delivered as expected. The paragraph introduces the concept of categorizing requirements into 'musts,' 'wants,' and 'assumptions' to prioritize and manage them effectively. It also discusses the importance of considering various aspects of system operation, such as maintenance windows, application location, network latency, and restoration times, to ensure that the system meets business needs and user expectations.

Mindmap

Keywords

πŸ’‘Functional Requirements

Functional requirements refer to the specific functions that a system or component must perform. They define what the system should do in terms of inputs, behaviors, and outputs. In the context of the video, functional requirements are the core of what is being developed and are often unambiguous, testable, and implementation-free, focusing on the main business needs without dictating how they should be implemented. An example from the script is the requirement for an iPhone application to enable instructors and students to issue a permission slip for a field trip.

πŸ’‘Non-functional Requirements

Non-functional requirements describe the qualities or attributes that a product must have, such as performance, security, and usability. They do not alter the product's functionality but ensure that the system meets certain standards of quality and user experience. The video emphasizes that non-functional requirements are crucial for defining the user experience and include aspects like response time, capacity, security measures, and legal compliance.

πŸ’‘User Stories

User stories are a way of documenting requirements from a user's perspective. They are typically written in a simple, everyday language and follow the INVEST acronym: Independent, Negotiable, Valuable, Estimable, Small, and Testable. The video explains that user stories should be independent, allowing each story to stand alone, negotiable to adapt to changing needs, valuable to the business, estimable to be sized for planning, small to be easily understood and developed, and testable to verify that the requirement is met. An example given is a user story for a principal wanting to run a report identifying completed permission slips.

πŸ’‘INVEST Acronym

INVEST is a set of criteria for creating good user stories. It stands for Independent, Negotiable, Valuable, Estimable, Small, and Testable. The video uses this acronym to illustrate how user stories should be crafted to ensure they are clear, manageable, and valuable to the business. Each letter of the acronym represents a quality that helps in breaking down requirements into manageable and testable units.

πŸ’‘Traceability

Traceability in requirements management refers to the ability to track the requirements from their origin through to delivery and beyond. It ensures that all requirements are accounted for and that changes can be managed effectively. The video mentions the use of a requirements traceability matrix, which is a tool for maintaining a master list of all requirements and linking them to test cases, architecture documents, and other relevant artifacts to ensure that the system is tested and functions as intended.

πŸ’‘Product Backlog

A product backlog is a list of all the work that needs to be done for the product, including both functional and non-functional requirements. In the video, it is mentioned that as requirements are developed, they become backlog items that are prioritized and selected for implementation. The product backlog is a dynamic tool that helps in managing and organizing the development process, especially in agile methodologies.

πŸ’‘Assumptions

Assumptions are expectations or presuppositions made by the project team about the project's environment, constraints, or other factors that may affect the project. The video highlights that assumptions can include dependencies, timing considerations, or characteristics of the system's functionality. These assumptions are important to document and manage because they can influence the project's direction and outcomes.

πŸ’‘Must, Wants, and Wishes

In the context of requirements management, 'must,' 'wants,' and 'wishes' categorize the priority and necessity of requirements. 'Musts' are critical requirements that must be met, 'wants' are desirable but can be deferred, and 'wishes' are nice to have but not essential. The video uses this categorization to discuss how to prioritize requirements and manage the scope of a project effectively.

πŸ’‘Requirements Traceability Matrix

A requirements traceability matrix is a tool used to track and link all requirements to corresponding test cases, ensuring that each requirement is tested and verified. The video provides an example of how such a matrix can be structured in an Excel document, with columns for technical assumptions, functional requirements, status, and links to architecture documents and test cases. This matrix is crucial for maintaining oversight of the requirements and ensuring that the system meets all specified needs.

πŸ’‘Performance

Performance in the context of non-functional requirements refers to how well a system operates under certain conditions, such as response times and processing times. The video discusses the importance of defining performance requirements, such as how quickly a website should load or how fast a report should run, to ensure that the system meets user expectations and is considered usable.

Highlights

Functional requirements specify what the system should do, focusing on inputs, behaviors, and outputs.

Good requirements are unambiguous, testable, feasible, independent, traceable, necessary, and implementation-free.

User stories are a way to document requirements, following the INVEST acronym: Independent, Negotiable, Valuable, Estimable, Small, and Testable.

User stories should be independent and negotiable to allow for flexibility in development.

Valuable user stories ensure that the implemented business requirement makes sense for the organization.

Estimable user stories are crucial for planning and should be broken down into smaller requirements if estimation is difficult.

Small user stories are beneficial for developers to understand and implement effectively.

Testable requirements are essential, and if a requirement cannot be tested, it should be revised.

An example of writing user stories for an iPhone application involves permission slips for field trips.

Non-functional requirements describe the quality of the user experience and system properties without altering functionality.

Non-functional requirements are often described using adjectives, such as response time and capacity.

Security, legal, and regulatory requirements are examples of non-functional requirements that impact the system.

Accessibility is a key non-functional requirement, ensuring the system is usable by people with disabilities.

Availability requirements specify system uptime and maintenance windows, ensuring service continuity.

Maintainability considers the ease of software development, coding standards, and frameworks used.

Recovery requirements plan for system restoration and backup processes in case of data loss.

Requirements can be categorized into musts, wants, and assumptions to prioritize and manage them effectively.

A requirements traceability matrix is a tool to track and log the status of requirements and associated test cases.

Transcripts

play00:00

I want to continue our discussion about

play00:02

requirements and requirements management

play00:04

by giving an overview of functional and

play00:06

non-functional requirements when you

play00:09

hear the term functional requirements

play00:10

this refers to a function of a system or

play00:13

component it looks to the inputs

play00:15

behaviors outputs it specifically says

play00:19

what the system should do these are

play00:21

typically the requirements that you've

play00:23

been developing in this course when you

play00:26

think about what makes a good

play00:27

requirement it's helpful that it's

play00:28

unambiguous so it's clear and easily be

play00:31

easily understood it's testable it's

play00:34

clear understandable the requirement is

play00:38

actually feasible it's independent

play00:40

traceable necessary as well as

play00:43

implementation free often as IT

play00:46

professionals we try to specify the

play00:48

requirement in a way that determines how

play00:51

the requirements should be implemented

play00:52

but really we're trying to develop the

play00:54

business requirements that speak to just

play00:57

the main business need the

play00:59

implementation on that business need is

play01:00

up to the systems analysts and the rest

play01:02

of the development team to determine

play01:05

another way that we document

play01:07

requirements the solace in previous

play01:10

chapters was using user stories and user

play01:13

stories can be broken down into the

play01:15

invest acronym and invest stands for

play01:18

independent negotiable valuable

play01:22

estimable small and testable so as we

play01:26

start developing user stories we want

play01:28

the requirements to be independent so

play01:30

each story can stand on its own we

play01:34

should also be able to negotiate these

play01:35

stories as you come up with large

play01:37

requirements we need to be able to split

play01:39

those stories and negotiate as to what

play01:41

actually goes into a story rather than

play01:43

creating a different story with these of

play01:46

these stories we want to make sure that

play01:48

they are indeed valuable so we're

play01:50

actually implementing a business

play01:51

requirement that makes sense and we need

play01:53

to be able to estimate them if you can't

play01:56

estimate it's gonna be a difficult

play01:57

difficult to work with that user story

play02:00

so you should look to further split

play02:01

those user stories into smaller

play02:03

requirements to a point that the team

play02:05

can actually estimate how long it will

play02:07

take to turn that requirement into a

play02:09

working software solution

play02:11

we'll also a big fan of making sure

play02:13

these user stories are small having

play02:15

small concise requirements are helpful

play02:18

to a developer so they can actually

play02:20

understand what requirement they're

play02:22

trying to develop and the culmination of

play02:25

those small requirements will lead to a

play02:27

larger functioning system and of course

play02:30

the requirement needs to be testable if

play02:32

you can't actually test the requirement

play02:33

you need to go back in and review and

play02:35

revise how that requirement could be

play02:37

written so it could indeed be testable

play02:40

so here's an example how you can write

play02:42

some user stories let's say you're going

play02:44

to develop an iPhone application and you

play02:47

want to enable a school permission slip

play02:48

so in this case the instructors and the

play02:51

students they need to be able to issue a

play02:52

permission slip for a field trip

play02:54

once that parent signs the permission

play02:56

slip using the application the principal

play02:59

will run a report identifying the

play03:00

different completed slips and missing

play03:02

parents approval and you can use this in

play03:05

a couple different ways one of the most

play03:07

common formats for user stories is you

play03:10

can say as a user I want a specific

play03:12

function so that it provides whatever

play03:15

the certain value is going to be so in

play03:18

this example one user story could be as

play03:21

the principal I want to run a report

play03:24

that identifies all the completed

play03:27

permission slips so the students so I

play03:30

will know what students go on the

play03:32

specific field trip you could also write

play03:35

our user story as says as a principal I

play03:37

want to run a report that identifies the

play03:40

incompleted

play03:42

permission slips so I can identify which

play03:46

students are missing parent approval

play03:48

those are just two different examples of

play03:50

how you can do this but as you develop

play03:53

these different requirements and

play03:54

different features they become backlog

play03:56

items in your product backlog so

play03:59

depending on how you approach your

play04:01

systems analysis and design you will be

play04:03

adding requirements to a document or

play04:05

adding requirements to a product backlog

play04:07

for those of you that you went through

play04:09

the Trello example you've seen how we

play04:11

built out the backlog of requirements in

play04:13

our Trello list and from there we'd be

play04:15

able to pick those requirements and

play04:16

actually implement them then of course

play04:20

we get into non-functional requirements

play04:22

non-functional requirements are

play04:23

important elements to consider

play04:25

because they all speak about the

play04:27

property is that the product must have

play04:28

so these help to describe the experience

play04:30

the user has while doing the work now

play04:34

they're called out in a way that you

play04:35

know their customer wants but also need

play04:38

to be performed in a certain manner now

play04:40

it's also important to notice that they

play04:41

don't alter the products functionality

play04:43

the functional requirements help

play04:45

describe what they want to have happen

play04:47

and the non-functional requirements will

play04:49

help describe the experience the user

play04:52

has while doing the work you can see

play04:54

this file using adjectives as a way to

play04:56

describe how the system should work so

play04:59

for example when you use that website

play05:01

you want to make sure the response time

play05:03

responds in a timely manner so you can

play05:05

have a functional requirement that says

play05:07

the website loads within two seconds or

play05:10

when you process a form you get a

play05:12

response within a two-second time sign

play05:14

at a time frame you may also have to

play05:17

specify the capacity of the system how

play05:19

much disk space is needed how much how

play05:22

are you gonna plan for growth of the

play05:24

system as you add more users to it what

play05:27

about service level agreements when you

play05:29

actually just launched a system how are

play05:31

you gonna ensure that the system will be

play05:33

kept up and running and if you have an

play05:35

external vendor managing the system for

play05:37

you what service level agreements are

play05:39

you gonna be putting into place how many

play05:41

Tayna Balazs the system we all want her

play05:43

data to be secure so what type of

play05:44

security goes behind those systems how

play05:47

are you managing the system what about

play05:49

legal and regulatory requirements and

play05:51

then we get into the actual architecture

play05:52

layers of how's the application built

play05:54

what's the underlying data architecture

play05:56

what about the technology stack and what

play05:59

about the network architecture all these

play06:01

become non-functional requirements that

play06:03

you need to start identifying then even

play06:05

think about how you're gonna roll out

play06:07

the system it gets in a little bit of

play06:08

organizational design and change

play06:11

management training is often a key

play06:14

deliverable out of a system but those

play06:16

form their own set of requirements that

play06:18

are gonna be needed to help roll out the

play06:19

system and communicate to your target

play06:21

audience

play06:22

also thinking about support and

play06:24

maintenance how usable is the system

play06:26

where is the system actually located how

play06:29

are you gonna deliver deploy the

play06:30

application what about development

play06:33

standards as well as overall software

play06:34

configuration management

play06:36

thinking through where you're going to

play06:38

store your code how the code is going to

play06:40

be developed these are all

play06:42

non-functional requirements that they

play06:44

don't impact

play06:45

well they do impact the usability of the

play06:47

application but they're not specifically

play06:49

stated in the form of a function that's

play06:52

going to deliver a direct business value

play06:55

but if you don't have these

play06:56

non-functional requirements thought of

play06:58

you can definitely impact the quality of

play07:00

your application so let's look at the

play07:03

security example employees shall be

play07:05

forced to change their password the next

play07:06

time they log in if they have not

play07:08

changed it within the length of time

play07:10

established as the password expiration

play07:12

duration password should never be

play07:15

viewable at any pet the point of entry

play07:17

or any time within the system the access

play07:20

permissions for the system data may only

play07:22

be changed by the system administrator

play07:23

these are all business rules that need

play07:26

to be baked into the system but you see

play07:28

none of these rules end up delivering a

play07:31

functional component such as I'll

play07:34

develop a report but or but it will see

play07:37

the example here that you're using this

play07:38

to find a way to determine what your

play07:41

password rules should be so in this case

play07:43

you got to change your password next

play07:45

time so these are all go into

play07:47

requirements that build out those

play07:49

modules accessibility this is an

play07:53

important one within the system the

play07:55

system needs to be accessible to people

play07:56

with disabilities in accordance with

play07:58

American with Americans with

play08:00

Disabilities Act of 1990 accessibility

play08:03

and websites is becoming more and more

play08:04

popular topic as we want to make sure

play08:07

that everybody can view data within our

play08:09

websites even if they have a disability

play08:11

as we need to make sure we were writing

play08:13

code appropriately for the target

play08:15

audience the system shall be accessible

play08:17

by people who are color blind to the

play08:19

extent that they should be able to

play08:20

discern alt text and all the other

play08:22

information displayed by the system as

play08:24

easily as a person without color

play08:26

blindness it's a key feature because

play08:28

folks with color blindness actually

play08:30

still buy a lot of products online

play08:33

availability the online payment system

play08:36

shall be available for use between the

play08:37

hours of 6:00 a.m. and 11:00 p.m. the

play08:40

system shall achieve a 99.5 percent

play08:41

uptime these are all requirements that

play08:45

still need to be considered as you're

play08:46

building out your application although

play08:49

it may not

play08:50

correctly specify a feature that a

play08:52

business user will perform so when you

play08:57

look at non-functional requirements that

play08:58

you run in for every application you can

play09:01

this is divided across a number of

play09:02

different categories including

play09:03

performance availability maintainability

play09:06

capacity and scalability and recovery so

play09:10

often we look at response times

play09:11

processing times when you're running a

play09:14

report how fast should a report run you

play09:16

know if you run a large report or a

play09:17

large query what's the expected time

play09:20

that the business user will accept

play09:22

before they start complaining and saying

play09:23

that the system's not usable when you

play09:26

think about capacity and scalability how

play09:28

many transactions can the system handle

play09:30

what happens if you receive thousands of

play09:32

orders all at once however you are you

play09:34

ensuring you're scaling your application

play09:36

and only think about your data how much

play09:38

data will be stored where will you store

play09:40

it and how will that that data be

play09:42

encrypted it's very important in today's

play09:45

day and age as more of our personal

play09:47

personally identifiable information is

play09:49

brought out to the web that we know how

play09:52

that data is being handled as well as

play09:53

how is it being stored and encrypted

play09:55

given all the different data leaks that

play09:57

we've seen in the organization

play10:01

availability is also a concern what are

play10:04

the specific hours of operation when can

play10:06

the system actually go down for

play10:07

maintenance and where's the location of

play10:09

the application if you have your server

play10:11

located in North America but your users

play10:14

are over in Europe how are you ensuring

play10:16

that the application is available and

play10:17

there is a network latency that can

play10:20

impact the performance of the system you

play10:23

can but maintainability are we

play10:24

developing the software using standard

play10:26

solutions or are these one-offs that are

play10:29

developing software in a language that

play10:31

only a few people understand think about

play10:33

the coding standards as well what

play10:35

language and what coding frameworks are

play10:36

being used and a big one too is recovery

play10:39

so you think of restoration time how

play10:41

long before the applications backup as

play10:43

well as backup time how long do you

play10:46

backup the data because you need to be

play10:47

able to understand how long does it take

play10:49

the nolley and restore the application

play10:50

but if you were to restore a days worth

play10:54

of data would that be sufficient to

play10:55

maintain your business process or do you

play10:57

need data to be restored up to the very

play11:00

hour or the half hour all those form and

play11:02

requirement

play11:03

that the application team needs to

play11:05

determine while they're building their

play11:06

system another way of viewing

play11:12

requirements too is when you look at the

play11:13

must wants and absorption and

play11:15

assumptions so all requirements be them

play11:18

functional or non-functional they can be

play11:20

freely deposed into musts wants and

play11:22

assumptions so a must is clearly a

play11:25

time-critical requirement that must be

play11:27

achieved or delivered within the current

play11:29

lease of the solution other requirements

play11:31

are watts it's a requirement that's

play11:33

wished for but it can be deferred until

play11:35

a later release so in agile terms or in

play11:38

using scrum we think of this as a

play11:40

separate user story please remember we

play11:43

want to break down those requirements

play11:44

into smaller chunks so we can deliver

play11:46

accordingly and an assumption it's the

play11:49

expectation on part of the project team

play11:51

now these may include other dependencies

play11:53

and other project teams timing

play11:55

considerations or just overall

play11:57

characteristics that you are making

play12:00

assumptions about and how the system is

play12:02

actually going to function now another

play12:06

way to view all your requirements is by

play12:08

using a requirements traceability matrix

play12:09

and the requirements traceability matrix

play12:12

it's usually in the form of an Excel

play12:14

document or a table and allows you help

play12:17

maintain a master list of all the

play12:18

requirements and the other pieces allows

play12:21

you to start identifying all the test

play12:22

cases that need to be written to verify

play12:25

those requirements are being achieved so

play12:28

then you can track and the log when you

play12:31

track the status of each requirement and

play12:34

how often have the requirements been

play12:36

tested reviewed and ensure that the

play12:39

application is functioning as desired

play12:41

because in a system implementation you

play12:43

can generate hundreds of different

play12:45

requirements but if you don't track

play12:46

those requirements how are you ensuring

play12:48

requirements are delivered on time this

play12:51

is an example and the link is here in

play12:53

the the deck but it's a simple Excel

play12:55

document where you've got technical

play12:57

assumptions functional requirements

play12:59

what's the status and you can actually

play13:01

list links to the architecture document

play13:04

the technical specification the system

play13:06

components but you see here under the

play13:08

column a software module and test case

play13:10

number those are two key attributes to

play13:13

identify the requirement as well as the

play13:15

test case

play13:16

that is used to ensure that the system

play13:18

is properly tested in functioning

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Requirements ManagementSystems AnalysisFunctional NeedsNon-Functional AttributesUser StoriesBusiness RulesSoftware DevelopmentQuality AssuranceProject PlanningAgile Methodology