Computer Science 280:

Software Engineering

Gregory M. Kapfhammer

flickr photo by vpickering shared under a Creative Commons (BY-NC-ND) license

Color Scheme

Key Concept

Corresponding Diagram

In-Class Discussion

In-Class Activity

Details in SETP or MMM

Why are software requirements so important?

Refer to Sidebar 4.1 for more details!

Requirements Process

A requirement is a statement of desired behavior

Deals with objects or entities ...

... the states that objects the can be in ...

... the functions that are performed to changes states

Requirements don't say how to implement a system!

Types of Requirements

Functional (behavioral) requirements

Non-functional (quality) requirements

Examples of these for your current project?

May also have design and process constraints

See Table 4.2 for a listing of requirements types

Testable Requirements

Write requirements that you can actually verify!

Define objective standards for evaluating your solutions

Use focus groups to determine the best fit criteria

Use quantitative statements whenever you can

Testable Requirements

Quantify each adverb and adjective

Replace pronouns with the names of entities

Define every noun in exactly one place

Did you take this advice for your last assignment?

Requirements Documents

Requirements definition for the clients and users

Requirements specification for the technical team

Sometimes, these are combined into one!


... are they correct?

... are they consistent?

... are they unambiguous?

... are they complete?

... are they feasible?

... are they all relevant?

... are they testable?

... are they traceable?

Answer "yes" to all of these questions!

Faults in Requirements

See Sidebar 4.8 for some interesting insights!

Real-world defects are due to mistakes in requirements

"Invade the system early — and are the last to leave!"

"Only caught after hundreds of sites have been installed"

flickr photo shared by ebayink under a Creative Commons ( BY-NC-ND ) license

Requirements "Readiness"

Five levels for rating each of a system's requirements

See the top of page 205 for descriptions of the levels

Look at Figure 4.28 for examples of histograms

Which one of these graphs is more desirable? Why?