CS 458 - Week 6 Lecture 1 - 2017-09-26
Jalote Chapter 3 - Software Requirements Analysis and Specification
* SRS - Software Requirements Specification
* requirement - IEEE defines as:
(1) A condition or capability needed by a user to solve
a problem or achieve an objective
(2) A condition or a capability that must be met or possessed
by a system ... to satisfy a contract, standard, specification,
or other formally imposed document"
* specifications of requirements do vary in their
level or detail or when they are formalized --
BUT one important characteristic across these is that
they describe WHAT the proposed software will do
without describing HOW the software will do it --
describes WHAT, not HOW
* Value of a "good" SRS?
* helps to bridge the communication gap between client
and team (and within the team) to help provide
a shared vision of the software being built
ASIDE:
VERIFICATON
and VALIDATION
* verification - did you build it right?
validation - did you build the right thing?
* note that a "good" SRS can provide a reasonable
reference for validation of the final product;
* it is the case that many errors are made in
the requirements phase of a project,
and that an error in the requirements can manifest
as an error in the final system...
* Boehm - the cost of fixing an error increases almost
exponentially as time progresses
* Requirements Process -- coming up with your
requirements and SRS (in whatever form it is taking)
typically includes three basic tasks:
* problem or requirement analysis
* requirements specification
* requirements validation
* Desirable Characteristics of an SRS
[pie-in-the-sky, perfect-world version?]
some desirable characteristics include (IEEE):
* Correct
* Complete
* Unambiguous
* Verifiable
* Consistent
* Ranked for importance and/or stability
* poking at these terms a bit:
* correct - "An SRS is correct if every requirement included
in the SRS represents something required in the final
system"
* complete - "An SRS is complete if everything the software
is supposed to do and the responses of the software
to all classes input data are specified in the SRS."
* unambiguous - An SRS "...is unambiguous if and only if
every requirement stated has one and only one
interpretation"
* verifiable - "An SRS is verifiable if and only if every stated
requirement is verifiable."
And: "A requirement is verifiable if there exists some
cost-effective process that can check whether the
final software meets that requirement"
* consistent - An SRS "...is consistent if there is no
requirement that conflicts with another"
* ranked for importance and/or stability -
"An SRS is ranked for importance and/or stability
if for each requirement the importance and the
stability of the requirement is indicated"
* stability: "reflects the chances of its changing
in the future"
* SO - what are/can be some components of an SRS?
* functional requirements - specify the expected behavior
of the system
* might include performance requirements
* might be STATIC or DYNAMIC
* might include design constraints
* might include external interface specifications