Uploaded by Thanh Le

The essential software requirement

advertisement
The essential software requirement
This chapter will help you to:
■■ Understand some key terms used in the
software requirements domain.
■■ Distinguish product requirements from
project requirements.
■■ Distinguish requirements development from
requirements management.
■■ Be alert to several requirements-related
problems that can arise.
Taking your requirements pulse
■■ The project’s business objectives, vision, and scope were never clearly
defined.
■■ Customers were too busy to spend time working with analysts or
developers on the requirements.
■■ Your team could not interact directly with representative users to
understand their needs.
■■ Customers claimed that all requirements were critical, so they didn’t
prioritize them.
■■ Developers encountered ambiguities and missing information when coding,
so they had to guess.
■■ Communications between developers and stakeholders focused on user
interface displays or features, not on what users needed to accomplish with the
software.
■■ Your customers never approved the requirements.
■■ Your customers approved the requirements for a release or iteration and
then changed them continually.
Software requirements defined
• When a group of people begin discussing
requirements, they often start with a
terminology problem. Different observers
might describe a single statement as being a
user requirement, software requirement,
business requirement, functional
requirement, system requirement, product
requirement, project requirement, user story,
feature, or constraint. The names they use for
various requirements deliverables also vary.
The pure dictionary “requirement”
• The pure dictionary “requirement”
• Software people do not use “requirement” in the same
sense as a dictionary definition of the word: something
demanded or obligatory, a need or necessity.
• People sometimes question whether they even need to
prioritize requirements, because maybe a low-priority
requirement won’t ever be implemented.
• If it isn’t truly needed, then it isn’t a requirement, they
claim. Perhaps, but then what would you call that
piece of information? If you defer a requirement from
today’s project to an unspecified future release, is it
still considered a requirement? Sure it is.
Product vs. project requirements
So far we have been discussing requirements that describe properties
of a software system to be built.
Let’s call those product requirements. Projects certainly do have other
expectations and deliverables that are not a part of the software the
team implements, but that are necessary to the successful completion
of the project as a whole.
These are project requirements but not product requirements. An SRS
houses the product requirements, but it should not include design or
implementation details (other than known constraints), project plans,
test plans, or similar information.
Separate out such items so that requirements development activities
can focus on understanding what the team intends to build. Project
requirements include:
cont.…
•
•
•
•
•
•
•
•
•
•
Physical resources the development team needs, such as workstations,
special hardware devices, testing labs, testing tools and equipment, team
rooms, and videoconferencing equipment.
■■ Staff training needs.
■■ User documentation, including training materials, tutorials, reference
manuals, and release notes.
■■ Support documentation, such as help desk resources and field
maintenance and service information for hardware devices.
■■ Infrastructure changes needed in the operating environment.
■■ Requirements and procedures for releasing the product, installing it in
the operating environment, configuring it, and testing the installation.
• Product certification and compliance
requirements.
• ■■ Revised policies, processes, organizational
structures, and similar documents.
• ■■ Sourcing, acquisition, and licensing of thirdparty software and hardware components.
• ■■ Beta testing, manufacturing, packaging,
marketing, and distribution requirements.
• ■■ Customer service-level agreements.
Product vs. project requirements
•
•
•
•
•
•
•
Physical resources the development team needs, such as workstations,
special hardware devices, testing labs, testing tools and equipment, team
rooms, and videoconferencing equipment.
■■ Staff training needs.
■■ User documentation, including training materials, tutorials, reference
manuals, and release notes.
■■ Support documentation, such as help desk resources and field
maintenance and service information for hardware devices.
■■ Infrastructure changes needed in the operating environment.
■■ Requirements and procedures for releasing the product, installing it in
the operating environment, configuring it, and testing the installation.
■■ Requirements and procedures for transitioning from an old system to a
new one, such as data migration and conversion requirements, security
setup, production cutover, and training to close skills gaps; these are
sometimes called transition requirements (IIBA 2009).
Cont.
• ■■ Prod acquisition, and licensing ct certification and
compliance requirements.
• ■■ Revised policies, processes, organizational
structures, and similar documents.
• ■■ Sourcing, of third-party software and hardware
components.
• ■■ Beta testing, manufacturing, packaging, marketing,
and distribution requirements.
• ■■ Customer service-level agreements.
• ■■ Requirements for obtaining legal protection
(patents, trademarks, or copyrights) for intellectual
property related to the software.
Gold plating
• Gold plating takes place when a developer adds
functionality that wasn’t in the requirements
specification (or was deemed out of scope) but which
the developer believes “the users are just going to
love.” If users don’t care about this functionality, the
time spent implementing it is wasted.
• Rather than simply inserting new features, developers
and BAs should present stakeholders with creative
ideas for their consideration.
• Developers should strive for leanness and simplicity,
not going beyond what stakeholders request without
their approval.
Benefits from a high-quality requirements process
• Some people mistakenly believe that time
spent discussing requirements simply delays
delivery by the same duration. This assumes
that there’s no return on investment from
requirements activities. In actuality, investing
in good requirements will virtually always
return more than it costs.
What is a Requirement?
• Requirement [Merriam-Webster On-Line
Dictionary]
– a : something wanted or needed : necessity
– b : something essential to the existence or occurrence
of something else : condition
• Software requirement is a condition or capability [IEEESTD-610.12-1990 Software Engineering Glossary]
- Needed by a user to solve a problem or achieve an objective
- Met or possessed by a system to satisfy formally imposed
documents such as specifications or standards
Types of Requirements
Business – business objectives, the “business case”
Business rules – policy, guideline, regulation, algorithm
User – goals and tasks for a class of user; HCI
Quality Attributes – non-functional level of service
System – high level requirements for the system at large
External Interface – interfaces to users and/or other
systems
• Constraints – development choice restrictions
• Functional – behavior the system must exhibit to satisfy
user and business requirements
• Non-functional – System attributes to achieve non-user
goalsIn(performance,
usability,
…)
today’s world … Security,
Ethics …
•
•
•
•
•
•
Goals vs. Requirements?
• System functions and features must address
goals
• Tasks are the means to the end (goals)
• Goals are the motivation for observed
behaviors
• Goals drive usage behavioral patterns
Why Engineer Requirements?
• The most significant contributors to project failure
relate to requirements (Standish Group’s CHAOS
Reports)
– Most failed projects fail due to changing customer
requirements
• Meeting your project’s requirements defines success
• We can engineer a higher probability of success
Why Software Fails
Ø Unrealistic or unarticulated project goals
•
Inaccurate estimates of needed resources
Ø Badly defined system requirements
•
•
Poor reporting of the project's status
Unmanaged risks
Ø Poor communication among customers, developers, and users
•
•
•
•
•
•
Use of immature technology
Inability to handle the project's complexity
Sloppy development practices
Poor project management
Stakeholder politics
Commercial pressures
http://spectrum.ieee.org/computing/software/why-software-fails
A Notable Example of
Requirements(?) Failure
• (CNN) -- NASA lost a $125 million Mars orbiter because a
Lockheed Martin engineering team used English units of
measurement while the agency's team used the more
conventional metric system for a key spacecraft operation,
according to a review finding released Thursday.
• The units mismatch prevented navigation information from
transferring between the Mars Climate Orbiter spacecraft
team in at Lockheed Martin in Denver and the flight team at
NASA's Jet Propulsion Laboratory in Pasadena, California.
How would YOU categorize this
failure? Is it requirements?
Something else?
“The hardest single part of building a software system is deciding
precisely what to build. No other part of the conceptual work is as
difficult as establishing the detailed technical requirements, …
…..
No other part of the work so cripples the resulting system if done
wrong. No other part is more difficult to rectify later.”
[Brooks, The Mythical Man-Month 1995]
Requirements Engineering Process
Frameworks
• We will survey techniques from a variety of sources
• We will utilize elements of the Unified Modeling
Language (UML) from the Rational Unified Process
(RUP)
• Even though UML is outdated/ out of favour, it’s
important to know
• It is essential to learn some “systematic, disciplined,
quantifiable approaches” to engineering of software
requirements
– the “classics” like basic arithmetic
• We will look at Use Cases, Stories, System Requirements and so on
…
UML reference – “UML 2 Toolkit” @RIT Libraries 24/7 Books
Vocabulary
•
Domain (application)
– The target area of interest, usually the business context
– E.g., health care, scientific research, a product market, an enterprise sales department
•
Business
– The sponsoring institution – profit, non-profit, commercial (external products and
systems), enterprise (internal products and systems)
•
Problem
– A business issue to be resolved or objective to be accomplished by the solution
•
Solution
– The system or product that addresses the problem requirements
•
System
– The inputs, processing, and outputs comprising the solution
– “System” will be used generally as the abstraction for what is to be built
Vocabulary (cont)
•
Product
– The specific incarnation of the solution – a system, subsystem, application
•
Project
– All of the activities managed by some process necessary to create a finished system or
product solution to satisfy the domain problem
•
User
– The individual (or external system) that interacts with the system features
•
•
Stakeholder
– Individuals (or external systems) that have some vested interest in the success of the
system
– E.g., management, users, customers, developers, service providers, etc.
Customer
– The individual who pays for and receives the completed system or product
Download