Software Project Management

advertisement
Requirements Engineering
and Management
INFO 627
Refining the System Definition
Glenn Booker
INFO 627
Lecture #6
1
Requirements


Now that we have a good idea of the customer
needs, have defined the main features for our
system, and selected a structure for managing
the implementation of those features…
*whew*
We can now work on refining requirements
to guide development and testing
INFO 627
Lecture #6
2
Requirements



As we define and refine requirements, it must
be clear that the written description of those
requirements is the only authority as to what
we are creating
And changes in scope or intent need to be
reflected immediately
We started by defining features vaguely – now
we add details
INFO 627
Lecture #6
3
Requirements



The system must fulfill user needs
The system requirements must be complete
and consistent, and fit in the environment
where it will live
Definition of requirements also supports
detailed feasibility study, to ensure we are
making a wise investment
INFO 627
Lecture #6
4
Requirements

How precise requirements need to be depends
on the type of application and the industry it
supports


We hope that aircraft flight control software is
designed more carefully than Microsoft Word
Goal is to produce understandable
requirements to support meeting user needs
INFO 627
Lecture #6
5
Requirements

Many methods or models can be used
to express requirements




Use Cases
Natural language
Formal methods (Z or Larch)
Storage and management of those
requirements could be in a spreadsheet
or database
INFO 627
Lecture #6
6
Requirements

Requirements need to be:



Understood by all parties concerned
Specific enough to be verified
and demonstrated
From the beginning, think of requirements in
terms of being able to prove whether they
have been fulfilled (“Trust but verify”)
INFO 627
Lecture #6
7
Software Requirements



Software requirements are generally related to
some capability the user needs to have, or
some capability the systems needs for some
other reason
Inputs and outputs are good places to start
looking for requirements
Don’t forget non-functional requirements!
INFO 627
Lecture #6
8
Software Requirements


Think of the system as a black box, and focus
on what needs to go into and leave the system
Five major classes of things can describe a
system (per Davis)

INFO 627
Inputs to the system, in terms of content, format,
and source
Lecture #6
9
Software Requirements




INFO 627
Outputs from the system, including the type of
output device, and format of the outputs
Functions of the system, to accept inputs and/or
create outputs
Attributes of the system, such as the “–ilities”,
throughput, and performance
Attributes of the system environment, such
as where it is used, and compatibility with
other systems
Lecture #6
10
Software Requirements



Using this kind of breakdown helps
ensure completeness of requirements
Also can use these categories to
help determine if something really
is a requirement
Features lead to one or more requirements

INFO 627
So requirements help to define the scope
and exact capabilities of features
Lecture #6
11
1E p. 231
Mapping Features to Requirements


We need to trace the origin of requirements
from their corresponding features
This traceability helps ensure we define
complete requirements


INFO 627
All features result in one or more requirements
[Side note: Microsoft products don’t recognize
“traceability” as a word…does that tell us
something about their products?]
Lecture #6
12
What Requirements Are Not

The challenge in writing requirements
is to avoid things which shouldn’t
impersonate requirements




Project management information
Unneeded design or implementation details
Testing information
Requirements should focus on system
behavior, not its inner workings
INFO 627
Lecture #6
13
Project Management Information

Requirements should not include




Budget, staffing, or schedule information
Configuration management plans
Testing plans (except maybe hints for very
unusual cases)
Put these in separate Program Management
Plan, CM Plan, etc.
INFO 627
Lecture #6
14
Unneeded Design Details

Do not define the system design or
architecture as requirements


INFO 627
Reduces the creativity of the developers
to use an even better approach
Includes specifying development language, tools,
design methodology (e.g. OO vs. relational
database)
Lecture #6
15
Design Constraints

If an aspect of the system design is artificially
constrained BY THE CUSTOMER, make it
a design constraint


Only if the customer mandated it
Other design decisions should only
appear in design documents, not hiding
among requirements

INFO 627
E.g. if using VB is the best language
Lecture #6
16
Testing Plans

Requirements do not include




Test plans
Verification and validation plans
Test cases
In very rare cases, a testing approach may be
hinted at or suggested if a suitable approach
may not be obvious
INFO 627
Lecture #6
17
Implied Requirement Details

Beware of stating assumptions about the form
or format of an input or output


E.g. an output might be assumed to be on paper,
but why not a web page or PDF file?
Be clear what assumptions are made about the
environment the user will have

INFO 627
Don’t necessarily have a keyboard and mouse
Lecture #6
18
Requirements vs. Design



Requirements (what the system does) should
be determined before design
Requirements are determined by the users and
customers, since they (generally) know their
needs best
Design (how) is done by technical experts,
because they know the options available
INFO 627
Lecture #6
19
Requirements vs. Design



Yet trying to implement requirements may
lead to a design which alters the req’ts
Hence in reality, design and requirements are
iterative, feeding off each other until an
acceptable balance is achieved
Changes in technology can drastically affect
requirements (client/server vs. web)
INFO 627
Lecture #6
20
Types of Requirements

A basic breakdown of requirements
may include:




1E p. 237
Functional software requirements
Non-functional software requirements
Design constraints
Functional requirements focus on actions
(user does x, system does y)
See also lecture 2, INFO 620 for the FURPS+ model
INFO 627
Lecture #6
21
Non-Functional Requirements

Non-functional requirements typically
include:

Usability





INFO 627
Time needed for training
Time to perform task
Usability compared to other systems
Availability of help
Compliance with HCI standards (Windows, Mac)
Lecture #6
22
Non-Functional Requirements

Reliability






INFO 627
Availability (%)
Mean time between failures (MTBF, hours)
Mean time to repair (MTTR, hours)
Accuracy (numeric precision, number of decimals)
Defect rate (defects/1000 lines of code)
Bugs per type (number of bugs by severity)
Lecture #6
23
Non-Functional Requirements

Performance




INFO 627
Response time for a transaction – average, maximum,
some % below some value
Throughput (transactions per second)
Capacity (number of simultaneous users)
Degraded modes of operation (what are performance
expectations if system is partially offline)
Lecture #6
24
Non-Functional Requirements

Supportability


INFO 627
Expected implementation time for minor, medium,
and major enhancements
Planned or possible future enhancements mostly
affect design decisions
Lecture #6
25
Design Constraints


We generally want to define requirements so
that several design approaches might be used
to implement them
Constraints might need to be imposed such as
the development language, use of corporate
reuse libraries, coding standards, or external
standards such as FDA, DOD or FCC
regulations
INFO 627
Lecture #6
26
Design Constraints


Should distinguish constraints from
requirements, such as using a “DC” prefix,
and isolate them from the true requirements
Identify the source of each constraint, and
why it was imposed (if known)
INFO 627
Lecture #6
27
Parent-Child Requirements



A child requirement specifies details about
its parent
Could look on as the parent is a requirement,
and the child a specification
Don’t go crazy with lots of grandchildren and
great-grandchildren – usually not worth the
effort
INFO 627
Lecture #6
28
Use Case Refinement


Use cases make sense particularly when a
system has lots of functions to perform, and
you’re using an OO methodology
If there are few users or interfaces, or
extensive non-functional requirements, might
not be the best choice
INFO 627
Lecture #6
29
Use Case Refinement



Use cases focus on who does something
(actor), how they interact with the system, and
what the system does in response (including
tasks like saving data, displaying a report,
etc.)
Use case must be of value to the actor
Name each use case clearly and concisely
INFO 627
Lecture #6
30
Use Case Refinement

Refinement of use cases may include:




INFO 627
The basic flow, or main success scenario
Variants or alternative flows – such as different
methods of payment, processing personal versus
business orders, or error conditions
Preconditions – what happens before this use case
may be used?
Postconditions – what has changed as a result of
this use case?
Lecture #6
31
Software Requirements Specification
(SRS)




A Software Requirements Specification (SRS)
defines the conceptual model of what the
system will be
Main standard is IEEE 830:1998
SRS isn’t always a single document, but
a collection of documents and models
Is a living package; evolves with the system
INFO 627
Lecture #6
32
SRS Purpose




The SRS serves to communicate among the
developers and various stakeholders
Represents an agreed contract as to what will
and won’t be in the system
Provides a basis for tracking completion of
the system
Feeds design, testing, training, etc.
INFO 627
Lecture #6
33
SRS Ownership



The SRS is owned by the developers
Often each part may have a separate owner
who is responsible for that part
All are overseen by the Vision champion,
chief architect, and the program manager
INFO 627
Lecture #6
34
SRS Format

There are many ways to arrange the contents
of an SRS



Text provides one structure (1E pp. 266-267),
which assumes you are using use cases
IEEE 830 provides another (p. 11 therein), which
is more generalized
Not all sections apply to every system; use
“Not Applicable” if that’s the case
INFO 627
Lecture #6
35
SRS Contents


Some parts of the SRS look like Vision
contents – purpose, scope, constraints,
interfaces, documentation and help – but here
the latter are described in more detail
Other issues are now addressed – licensing
and legal issues, purchased components
(implying some design concept), and all
requirements are identified (not just key)
INFO 627
Lecture #6
36
SRS Contents


The main body of the SRS is a detailed
description of the functional and nonfunctional requirements
Functional requirements can be broken down
many ways
INFO 627
Lecture #6
37
Functional Requirements

Functional requirements may be organized
(IEEE 830, App. A) by:

Mode of operation of the system; best used for
software-intensive mechanical systems, each
mode’s functional requirements are detailed
(scanning mode, editing mode, acquisition mode,
etc.)

INFO 627
If needed, each mode’s interfaces, functional, and
performance requirements can be addressed
Lecture #6
38
Functional Requirements


INFO 627
User class; where each type of user of the system
has well defined activities they must perform,
then their functional requirements are listed
Class; for object oriented systems; each class is
described in terms of its attributes, methods, and
messages
Lecture #6
39
Functional Requirements


INFO 627
Feature; similar to use case descriptions, identify
when and how each feature is to be used, and the
functional requirements for each feature
Stimulus; useful when the system’s responses
(functional requirements) are based on what kind
of specific stimulus or message it receives
Lecture #6
40
Functional Requirements


INFO 627
Functional hierarchy; break the requirements
down by information flow, process, or data
construct, and provide a data dictionary to specify
each data element’s format; good for
reengineering legacy information systems
Or any combination of the above methods
(multiple organizations), such as mixing user
class then stimulus and response
Lecture #6
41
Non-Functional Requirements

Non-functional requirements can be
documented according to the structure already
outlined




INFO 627
Usability
Reliability
Performance
Supportability
Lecture #6
42
Balancing Requirements

We need to review requirements for



Consistent level of detail throughout the system
Adequate level of detail to guide implementation,
without over constraining that implementation
Most of the SRS is text; graphics can be
helpful but beware of adding implied design
INFO 627
Lecture #6
43
Download