Software Requirements
Outline
• Why Software Requirements?
• Software Requirements Definition
• Software Requirements Documents
• Various Types of Requirements
• Are We Done with Requirements Elicitation?
Gerhard, a senior manager at Contoso Pharmaceuticals, was meeting with Cynthia, the
manager of Contoso’s IT department. “We need to build a chemical tracking information
system,” Gerhard began. “The system should keep track of all the chemical containers
we already have in the stockroom and in laboratories. That way, the chemists can get
some chemicals from someone down the hall instead of always buying a new container.
This should save us a lot of money. Also, the Health and Safety Department needs to
generate government reports on chemical usage and disposal with a lot less work than it
takes them today. Can you build this system in time for the compliance audit in five
months?”
“I see why this project is important, Gerhard,” said Cynthia. “But before I can commit to a
schedule, we’ll need to understand the requirements for the chemical tracking system.”
Gerhard was confused. “What do you mean? I just told you my requirements.”
“Actually, you described some general business objectives for the project,” Cynthia
explained. “That doesn’t give me enough information to know what software to build or
how long it might take. I’d like to have one of our business analysts work with some users
to understand their needs for the system.”
“The chemists are busy people,” Gerhard protested. “They don’t have time to nail down
every detail before you can start programming. Can’t your people figure out what to
build?”
Cynthia replied, “If we just make our best guess at what the users need to do with the
system, we can’t do a good job. We’re software developers, not chemists. I’ve learned
that if we don’t take the time to understand the problem, nobody is happy with the
results.”
“We don’t have time for all that,” Gerhard insisted. “I gave you my requirements. Now just
build the system, please. Keep me posted on your progress.”
……
Fred Brooks Quote
“The hardest single part of building a software system is deciding precisely
what to build. No other part of the conceptual work is so difficult as
establishing the detailed technical requirements, including all the interfaces
to people, to machines, and to other software systems. No other part of the
work so cripples the resulting system if done wrong. No other part is more
difficult to rectify later.
Therefore, the most important function that software builders do for their
clients is the iterative extraction and refinement of the product
requirements.”
-- Fred Brooks, The Mythical Man-Month: Essays on Software Engineering
Outline
• Why Software Requirements?
• Software Requirements Definition
• Software Requirements Documents
• Various Types of Requirements
• Are We Done with Requirements Elicitation?
Software Requirements
• Definition: Requirements are a specification of what should be
implemented. They are descriptions of how the system should
behave, or of a system property or attribute. They may be a constraint
on the development process of the system.
• Some goals of doing requirements:
• understand precisely what is required of the software
• communicate this understanding precisely to all development parties
• control production to ensure that system meets specs (including changes)
Requirements Abstraction
“If a company wishes to let a contract for a large software development
project, it must define its needs in a sufficiently abstract way that a
solution is not pre-defined. The requirements must be written so that
several contractors can bid for the contract, offering, perhaps, different
ways of meeting the client organization’s needs.
Once a contract has been awarded, the contractor (aka the developers)
must write a system definition for the client in more detail so that the
client understands and can validate what the software will do.
Both of these documents may be called the requirements document for
the system.”
-- Alan Davis
Some Requirements Examples
• The system shall track 60% of commercial chemical containers and 50% of
proprietary chemicals within 4 weeks of software release.
• When the credit score is above 750, the system shall automatically approve
credit.
• The system shall use the following algorithm when automatically
determining credit approvals for scores less than 750: [algorithm would be
included here]
• Approvals shall be returned to the user within 30 seconds.
• The system development process and deliverable documents shall conform
to the process and deliverables defined in XYZCo-SP-STAN-95.
• The system shall not disclose any personal information about customers
apart from their name and reference number to the operators of the
system.

5 Software Requirements.pptx

  • 1.
  • 2.
    Outline • Why SoftwareRequirements? • Software Requirements Definition • Software Requirements Documents • Various Types of Requirements • Are We Done with Requirements Elicitation?
  • 3.
    Gerhard, a seniormanager at Contoso Pharmaceuticals, was meeting with Cynthia, the manager of Contoso’s IT department. “We need to build a chemical tracking information system,” Gerhard began. “The system should keep track of all the chemical containers we already have in the stockroom and in laboratories. That way, the chemists can get some chemicals from someone down the hall instead of always buying a new container. This should save us a lot of money. Also, the Health and Safety Department needs to generate government reports on chemical usage and disposal with a lot less work than it takes them today. Can you build this system in time for the compliance audit in five months?” “I see why this project is important, Gerhard,” said Cynthia. “But before I can commit to a schedule, we’ll need to understand the requirements for the chemical tracking system.” Gerhard was confused. “What do you mean? I just told you my requirements.” “Actually, you described some general business objectives for the project,” Cynthia explained. “That doesn’t give me enough information to know what software to build or how long it might take. I’d like to have one of our business analysts work with some users to understand their needs for the system.” “The chemists are busy people,” Gerhard protested. “They don’t have time to nail down every detail before you can start programming. Can’t your people figure out what to build?” Cynthia replied, “If we just make our best guess at what the users need to do with the system, we can’t do a good job. We’re software developers, not chemists. I’ve learned that if we don’t take the time to understand the problem, nobody is happy with the results.” “We don’t have time for all that,” Gerhard insisted. “I gave you my requirements. Now just build the system, please. Keep me posted on your progress.”
  • 4.
  • 5.
    Fred Brooks Quote “Thehardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is so difficult as establishing the detailed technical requirements, including all the interfaces to people, to machines, and to other software systems. No other part of the work so cripples the resulting system if done wrong. No other part is more difficult to rectify later. Therefore, the most important function that software builders do for their clients is the iterative extraction and refinement of the product requirements.” -- Fred Brooks, The Mythical Man-Month: Essays on Software Engineering
  • 6.
    Outline • Why SoftwareRequirements? • Software Requirements Definition • Software Requirements Documents • Various Types of Requirements • Are We Done with Requirements Elicitation?
  • 7.
    Software Requirements • Definition:Requirements are a specification of what should be implemented. They are descriptions of how the system should behave, or of a system property or attribute. They may be a constraint on the development process of the system. • Some goals of doing requirements: • understand precisely what is required of the software • communicate this understanding precisely to all development parties • control production to ensure that system meets specs (including changes)
  • 8.
    Requirements Abstraction “If acompany wishes to let a contract for a large software development project, it must define its needs in a sufficiently abstract way that a solution is not pre-defined. The requirements must be written so that several contractors can bid for the contract, offering, perhaps, different ways of meeting the client organization’s needs. Once a contract has been awarded, the contractor (aka the developers) must write a system definition for the client in more detail so that the client understands and can validate what the software will do. Both of these documents may be called the requirements document for the system.” -- Alan Davis
  • 9.
    Some Requirements Examples •The system shall track 60% of commercial chemical containers and 50% of proprietary chemicals within 4 weeks of software release. • When the credit score is above 750, the system shall automatically approve credit. • The system shall use the following algorithm when automatically determining credit approvals for scores less than 750: [algorithm would be included here] • Approvals shall be returned to the user within 30 seconds. • The system development process and deliverable documents shall conform to the process and deliverables defined in XYZCo-SP-STAN-95. • The system shall not disclose any personal information about customers apart from their name and reference number to the operators of the system.

Editor's Notes

  • #6 The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks first published in 1975, with subsequent editions in 1982 and 1995. Its central theme is that “Adding manpower to a late software project makes it later.” This idea is known as Brooks’ law. Brooks’ observations are based on his experiences at IBM while managing the development of OS/360. Brooks received Turing Award in 1999.
  • #8 Simply put, requirements are functions and qualities a software should provide. This definition acknowledges that diverse types of information that collectively are referred to as “the requirements.” Other definitions: The requirements of a system define what it needs to do – but now how. The requirements for a system are the descriptions of the services that a system should provide and the constraints on its operation.
  • #9 The term requirement is not used consistently in the software industry. In some cases, a requirement is simply a high-level, abstract statement of a service that a system should provide or a constraint on a system. At the other extreme, it is a detailed, formal definition of a system function. Davis explains why these differences exist. In our case, the vision document is more abstract while the software requirements specification (SRS) must be very detailed and testable.
  • #10 Show a list of requirements.