Notes taken while reading the book. Part1 is the most valuable while
subsequent parts elaborate topics in more details.
1. PART I Software requirements: What, why, and who
CHAPTER 1 The essential software requirement
CHAPTER 2 Requirements from the customer’s perspective
CHAPTER 3 Good practices for requirements engineering
CHAPTER 4 The business analyst
1.1. CHAPTER 1 The essential software requirement
TABLE 1-1 Some types of requirements information
Term | Definition |
---|---|
Business requirement | A high-level business objective of the organization that builds a product or of a customer who procures it. |
Business rule | A policy, guideline, standard, or regulation that defines or constrains some aspect of the business. Not a software requirement in itself, but the origin of several types of software requirements. |
Constraint | A restriction that is imposed on the choices available to the developer for the design and construction of a product. |
External interface requirement | A description of a connection between a software system and a user, another software system, or a hardware device. |
Feature | One or more logically related system capabilities that provide value to a user and are described by a set of functional requirements. |
Functional requirement | A description of a behavior that a system will exhibit under specific conditions. |
Nonfunctional requirement | A description of a property or characteristic that a system must exhibit or a constraint that it must respect. |
Quality attribute | A kind of nonfunctional requirement that describes a service or performance characteristic of a product. |
System requirement | A top-level requirement for a product that contains multiple subsystems, which could be all software or software and hardware. |
User requirement | A goal or task that specific classes of users must be able to perform with a system, or a desired product attribute. |
- 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.
- Term Definition Business requirement A high-level business objective of the organization that builds a product or of a customer who procures it. Business rule A policy, guideline, standard, or regulation that defines or constrains some aspect of the business. Not a software requirement in itself, but the origin of several types of software requirements. Constraint A restriction that is imposed on the choices available to the developer for the design and construction of a product. External interface requirement A description of a connection between a software system and a user, another software system, or a hardware device. Feature One or more logically related system capabilities that provide value to a user and are described by a set of functional requirements. Functional requirement A description of a behavior that a system will exhibit under specific conditions. Nonfunctional requirement A description of a property or characteristic that a system must exhibit or a constraint that it must respect. Quality attribute A kind of nonfunctional requirement that describes a service or performance characteristic of a product. System requirement A top-level requirement for a product that contains multiple subsystems, which could be all software or software and hardware. User requirement A goal or task that specific classes of users must or a desired product attribute.
- FIGURE 1-1 Relationships among several types of requirements information. Solid arrows mean “are stored in”; dotted arrows mean “are the origin of” or “influence.”
- Business requirements describe why the organization is implementing the system—the business benefits the organization hopes to achieve.
- We like to record the business requirements in a vision and scope document.
- User requirements describe goals or tasks the users must be able to perform with the product that will provide value to someone. The domain of user requirements also includes descriptions of product attributes or characteristics that are important to user satisfaction. Ways to represent user requirements include use cases (Kulak and Guiney 2004), user stories (Cohn 2004), and event-response tables.
- Functional requirements specify the behaviors the product will exhibit under specific conditions. They describe what the developers must implement to enable users to accomplish their tasks (user requirements), thereby satisfying the business requirements.
- The business analyst (BA)1 documents functional requirements in a software requirements specification (SRS), which describes as fully as necessary the expected behavior of the software system.
- System requirements describe the requirements for a product that is composed of multiple components or subsystems (ISO/IEC/IEEE 2011).
- Business rules include corporate policies, government regulations, industry standards, and computational algorithms.
- Sometimes, as with corporate security policies, business rules are the origin of specific quality attributes that are then implemented in functionality.
- Other classes of nonfunctional requirements describe external interfaces between the system and the outside world.
- Other-than-functional requirements might specify not what the system does, but rather how well it does those things.
- Other-than-functional requirements might specify not what the system does, but rather how well it does those things.
- Some people consider nonfunctional requirements to be synonymous with quality attributes, but that is overly restrictive. For example, design and implementation constraints are also nonfunctional requirements, as are external interface requirements.
- A feature consists of one or more logically related system capabilities that provide value to a user and are described by a set of functional requirements. A customer’s list of desired product features is not equivalent to a description of the user’s task-related needs. Web browser bookmarks, spelling checkers, the ability to define a custom workout program for a piece of exercise equipment, and automatic virus signature updating in an anti-malware product are examples of features. A feature can encompass multiple user requirements, each of which implies that certain functional requirements must be implemented to allow the user to perform the task described by each user requirement.
- FIGURE 1-2 Relationships among features, user requirements, and functional requirements.
- To illustrate some of these various kinds of requirements, consider a project to develop the next version of a text editor program. A business requirement might be “Increase non-US sales by 25 percent within 6 months.” Marketing realizes that the competitive products only have English-language spelling checkers, so they decide that the new version will include a multilanguage spelling checker feature. Corresponding user requirements might include tasks such as “Select language for spelling checker,” “Find spelling errors,” and “Add a word to a dictionary.” The spelling checker has many individual functional requirements, which deal with operations such as highlighting misspelled words, autocorrect, displaying suggested replacements, and globally replacing misspelled words with corrected words. Usability requirements specify how the software is to be localized for use with specific languages and character sets.
- FIGURE 1-3 An example of how different stakeholders participate in requirements development.
- Figure 1-1, shown earlier in this chapter, identified three major requirements deliverables: a vision and scope document, a user requirements document, and a software requirements specification.
1.1.1. Product vs. project requirements
Project requirements include:
- 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).
- Product certification and compliance requirements.
- Revised policies, processes, organizational structures, and similar documents.
- Sourcing, acquisition, and licensing 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.
1.1.2. Requirements development and management
FIGURE 1-4 Subdisciplines of software requirements engineering.
Usage-centric or product-centric? Requirements elicitation typically takes either a usage-centric or a product-centric approach, although other strategies also are possible. The usage-centric strategy emphasizes understanding and exploring user goals to derive the necessary system functionality. The product-centric approach focuses on defining features that you expect will lead to marketplace or business success.
- Elicitation
- Analysis
Analyzing requirements involves reaching a richer and more precise understanding of each requirement and representing sets of requirements in multiple ways. Following are the principal activities:
- Analyzing the information received from users to distinguish their task goals from functional requirements, quality expectations, business rules, suggested solutions, and other information
- Decomposing high-level requirements into an appropriate level of detail
- Deriving functional requirements from other requirements information
- Understanding the relative importance of quality attributes
- Allocating requirements to software components defined in the system architecture
- Negotiating implementation priorities
- Identifying gaps in requirements or unnecessary requirements as they relate to the defined scope
- Analyzing the information received from users to distinguish their task goals from functional requirements, quality expectations, business rules, suggested solutions, and other information
- Specification
Requirements specification involves representing and storing the collected requirements knowledge in a persistent and well-organized fashion. The principal activity is:
- Translating the collected user needs into written requirements and diagrams suitable for comprehension, review, and use by their intended audiences.
- Translating the collected user needs into written requirements and diagrams suitable for comprehension, review, and use by their intended audiences.
- Validation
Requirements validation confirms that you have the correct set of requirements information that will enable developers to build a solution that satisfies the business objectives. The central activities are:
- Reviewing the documented requirements to correct any problems before the development group accepts them.
- Developing acceptance tests and criteria to confirm that a product based on the requirements would meet customer needs and achieve the business objectives.
- Reviewing the documented requirements to correct any problems before the development group accepts them.
- Requirements management
Requirements management activities include the following:
- Defining the requirements baseline, a snapshot in time that represents an agreed-upon, reviewed, and approved set of functional and nonfunctional requirements, often for a specific product release or development iteration
- Evaluating the impact of proposed requirements changes and incorporating approved changes into the project in a controlled way
- Keeping project plans current with the requirements as they evolve
- Negotiating new commitments based on the estimated impact of requirements changes
- Defining the relationships and dependencies that exist between requirements
- Tracing individual requirements to their corresponding designs, source code, and tests
- Tracking requirements status and change activity throughout the project
- Defining the requirements baseline, a snapshot in time that represents an agreed-upon, reviewed, and approved set of functional and nonfunctional requirements, often for a specific product release or development iteration
1.2. CHAPTER 2 Requirements from the customer’s perspective
FIGURE 2-1 Frequent customer engagement reduces the expectation gap.
FIGURE 2-2 Potential stakeholders within the project team, within the developing organization, and outside the organization.
1.2.1. TABLE 2-1 Requirements Bill of Rights for Software Customers
You have the right to
- Expect BAs to speak your language.
- Expect BAs to learn about your business and your objectives.
- Expect BAs to record requirements in an appropriate form.
- Receive explanations of requirements practices and deliverables.
- Change your requirements. 6. Expect an environment of mutual spect.
- Hear ideas and alternatives for your requirements and for their lution.
- Describe characteristics that will make the product easy to use.
- Hear about ways to adjust requirements to accelerate development through reuse. 10. Receive a system that meets your functional needs and quality expectations.
1.2.2. TABLE 2-2 Requirements Bill of Responsibilities for Software Customers
You have the responsibility to
- Educate BAs and developers about your business.
- Dedicate the time that it takes to provide and clarify requirements.
- Be specific and precise when providing input about requirements.
- Make timely decisions about requirements when asked.
- Respect a developer’s assessment of the cost and feasibility of requirements.
- Set realistic requirement priorities in collaboration with developers.
- Review requirements and evaluate prototypes.
- Establish acceptance criteria.
- Promptly communicate changes to the requirements.
- Respect the requirements development process.
1.2.3. Decision rule
The decision-making group needs to identify its decision leader and to select a decision rule, which describes how they will arrive at their decisions. There are numerous decision rules to choose from, including the following (Gottesdiener 2001):
- The decision leader makes the choice, either with or without discussion with others.
- The group votes and the majority rules.
- The group votes, but the result must be unanimous to approve the decision.
- The group discusses and negotiates to reach a consensus. Everyone can live with the decision and commits to supporting it.
- The decision leader delegates authority for making the decision to one individual.
- The group reaches a decision, but some individual has veto authority over that decision.
1.2.4. sign-off
Whether your team uses a formal sign-off process or some other means of reaching agreement on requirements, the subtext of that agreement should read something like this: “I agree that this set of requirements represents our best understanding of the requirements for the next portion of this project and that the solution described will meet our needs as we understand them today. I agree to make future changes in this baseline through the project’s defined change process. I realize that changes might require us to renegotiate cost, resource, and schedule commitments.”
1.2.5. agile projects
Commonly on agile projects, the product owner publicly accepts or rejects the requirements for an iteration, which consist of a set of stories and their accompanying acceptance criteria and acceptance tests. The ultimate “sign-off” is acceptance of the working, tested software delivered from the iteration.
1.3. CHAPTER 3 Good practices for requirements engineering
TABLE 3-1 Requirements engineering good practices
FIGURE 3-1 Requirements development is an iterative process.
TABLE 3-2 Implementing requirements engineering good practices
1.4. CHAPTER 4 The business analyst
The business analyst is the individual who has the primary responsibility to elicit, analyze, document, and validate the needs of the project stakeholders. The analyst serves as the principal interpreter through which requirements flow between the customer community and the software development team, as shown in Figure 4-1. Many other communication pathways also are used, so the analyst isn’t solely responsible for information exchange on the project. The BA plays a central role in collecting and disseminating product information, whereas the project manager takes the lead in communicating project information.
1.4.1. The business analyst’s tasks
- Define business requirements
- Plan the requirements approach
- Identify project stakeholders and user classes
- Elicit requirements
- Analyze requirements
- Document requirements
- Communicate requirements
- Lead requirements validation
- Facilitate requirements prioritization
- Manage requirements
1.4.2. Essential analyst skills
- Listening skills
- Interviewing and questioning skills
- Thinking on your feet
- Analytical skills
- Systems thinking skills
- Learning skills
- Facilitation skills
- Leadership skills
- Observational skills
- Communication skills
- Organizational skills
- Modeling skills
- Interpersonal skills
- Creativity
1.4.3. The making of a business analyst
- The former user
- The former developer or tester
- The former (or concurrent) project manager
- The subject matter expert
- The rookie
1.4.4. FIGURE 4-2 Knowledge, skills, and experience feed into creating an effective business analyst.
2. PART II Requirements development
CHAPTER 5 Establishing the business requirements
CHAPTER 6 Finding the voice of the user
CHAPTER 7 Requirements elicitation
CHAPTER 8 Understanding user requirements
CHAPTER 9 Playing by the rules
CHAPTER 10 Documenting the requirements
CHAPTER 11 Writing excellent requirements
CHAPTER 12 A picture is worth 1024 words
CHAPTER 13 Specifying data requirements
CHAPTER 14 Beyond functionality
CHAPTER 15 Risk reduction through prototyping
CHAPTER 16 First things first: Setting requirement priorities
CHAPTER 17 Validating the requirements
CHAPTER 18 Requirements reuse
CHAPTER 19 Beyond requirements development
3. PART III Requirements for specific project classes
CHAPTER 20 Agile projects
CHAPTER 21 Enhancement and reengineering projects
CHAPTER 22 Packaged solution projects
CHAPTER 23 Outsourced projects
CHAPTER 24 Business process automation projects
CHAPTER 25 Business analytics projects
CHAPTER 26 Embedded and other real-time systems projects
4. PART IV Requirements management
CHAPTER 27 Requirements management practices
CHAPTER 28 Change happens
CHAPTER 29 Links in the requirements chain
CHAPTER 30 Tools for requirements engineering
5. PART IV Requirements management
CHAPTER 27 Requirements management practices
CHAPTER 28 Change happens
CHAPTER 29 Links in the requirements chain
CHAPTER 30 Tools for requirements engineering
6. PART V Implementing requirements engineering
CHAPTER 31 Improving your requirements processes
CHAPTER 32 Software requirements and risk management