Appendix B. Current requirements practice self-assessment

This appendix contains 20 questions that you can use to calibrate your team’s current requirements engineering practices and to identify areas to reinforce. You can download a copy of this assessment and a spreadsheet to help you analyze the responses from the companion content website for this book. More comprehensive assessments are available if you want to get a more precise understanding of what aspects of your current practices and documents would benefit most from improvement. [ref216] offers a thorough project assessment that can be adapted to evaluate your organization’s requirements practices and deliverables.

To complete the quick assessment in this appendix, select the response for each question that most closely describes the way your team currently deals with that requirements issue. If you want to quantify the self-assessment, give yourself 0 points for each (a) response, 1 point for each (b), 3 points for each (c), and 5 points for each (d) response [except for question 16, where both (c) and (d) are worth 5 points]. The maximum possible score is 100 points. Generally speaking, the higher the score, the more mature—and likely more effective—your requirements practices are. Each question refers you to the chapter or chapters that address the topic of the question.

Instead of just trying to achieve a high score, use this self-assessment to spot opportunities to apply new practices that might benefit your organization. Some questions might not pertain to the kind of software your organization develops. Also, situations are different; not every project needs the most rigorous approaches. Recognize, though, that informal approaches to requirements increase the likelihood that your team will end up doing excessive rework. Most organizations will benefit from following the practices represented by the “c” and “d” responses.

The people you select to complete the assessment could influence the results. Watch out for respondents who, rather than describing what’s really going on in the organization, might bias their responses based on politics, on what they wish was being done, or on what they think the “correct” answers should be. Asking multiple people to complete the self-assessment independently will help remove some of that bias and provide a more realistic representation of your current practices than asking just one person. Multiple responders might also reveal different understandings of how certain practices are being performed at present. You can use the spreadsheet tool provided on the companion content website to accumulate multiple sets of responses and view the distribution.

  1. How are the project’s business requirements defined, communicated, and used? [Chapter 5]

    1. We sometimes write a high-level product description early on, but we don’t refer back to it.

    2. The person who conceives the product knows the business requirements and discusses them verbally with the development team.

    3. We record business requirements in a vision and scope, project charter, or similar document according to a standard template. All project stakeholders have access to this document.

    4. We actively use the documented business requirements on our project, evaluating proposed product features and requirement changes to see whether they lie within the documented scope, and adjusting scope as needed based on business objectives.

  2. How are the user communities for the product identified and characterized? [Chapter 6]

    1. The developers think they know who our users will be.

    2. Marketing or the project sponsor believes that they know who the users are.

    3. Target user groups or market segments are identified by management or marketing from some combination of market research, our existing user base, and input from other stakeholders.

    4. The project stakeholders identify distinct user classes, whose characteristics are summarized in the software requirements specification.

  3. How do you elicit customer input on the requirements? [Chapter 7]

    1. The developers are confident that they already know what to build.

    2. Typical users are surveyed with questionnaires or interviewed in focus groups.

    3. We meet with people, sometimes one on one and sometimes in groups, and they tell us what they want.

    4. A variety of elicitation techniques are used, including interviews and workshops with user class representatives, document analysis, and system interface analysis.

  4. How well trained and how experienced are your business analysts? [Chapter 4]

    1. They are developers or former users who have little experience and no specific training in software requirements engineering.

    2. Developers, experienced users, or project managers who have had some previous exposure to requirements engineering perform the BA role.

    3. The BAs have had several days of training and considerable experience in collaborating with users.

    4. We have professional business analysts or requirements engineers who are trained and proficient in interviewing techniques, the facilitation of group sessions, technical writing, and modeling. They understand both the application domain and the software development process.

  5. How are the high-level system requirements allocated to the software portions of the product? [Chapter 19 and Chapter 26]

    1. Software is expected to overcome any shortcomings in the hardware.

    2. Software and hardware engineers discuss which subsystems should perform which functions.

    3. A system engineer or an architect analyzes the system requirements and decides which ones will be implemented in each software subsystem.

    4. Knowledgeable team members collaborate to allocate portions of the system requirements to software subsystems and components and to trace them into specific software requirements. Component interfaces are explicitly defined and documented.

  6. To what extent are requirements reused on your projects? [Chapter 18]

    1. We do not reuse requirements.

    2. A business analyst who is familiar with previous projects sometimes knows of requirements that can be reused on a new project, so she copies and pastes the requirements into the new specification.

    3. A business analyst can search through the previous projects stored in our requirements management tool for requirements that are relevant to his new project. He can reuse specific versions of those requirements by using the functions built into the tool.

    4. We have established a repository of potentially reusable requirements, which have been adapted and improved from previous projects. BAs routinely check this repository for requirements that might be usable on their current projects. We use trace links to pull in child requirements, dependent requirements, design elements, and tests when possible when we are reusing a requirement.

  7. What approaches are used when working with stakeholders to identify the specific software requirements? [Chapter 7, Chapter 8, Chapter 12, and Chapter 13]

    1. We begin with a general understanding, write some code, show the software to some users, and modify the code until they’re happy.

    2. Management or marketing provides a product concept, and the developers write the requirements. Customer stakeholders tell the development team if they’ve missed anything.

    3. Marketing or customer representatives tell the development team what features and functions the product should contain. Sometimes marketing tells the development team when the product direction changes.

    4. We hold structured requirements elicitation interviews or workshops with representatives from the different user classes for the product. We employ use cases or user stories to understand the users’ goals, and we create analysis models to help ensure we identify all the functional requirements. We flesh out the requirements incrementally and iteratively, giving the customers numerous opportunities to improve them.

  8. How are the software requirements documented? [Chapter 10, Chapter 11, Chapter 12, and Chapter 30]

    1. We piece together oral history, email and voice mail messages, interview notes, and meeting notes.

    2. We write unstructured narrative textual documents, or we create simple requirements lists, or we draw some diagrams.

    3. We write requirements in structured natural language according to a standard template. Sometimes we augment these requirements with visual analysis models that use standard notations.

    4. We create requirements and visual analysis models and store them all in a requirements management tool. Several attributes are stored along with each requirement.

  9. How are nonfunctional requirements, such as software quality attributes, elicited and documented? [Chapter 14]

    1. What are “software quality attributes”?

    2. We do beta testing to get feedback about how the users like the product.

    3. We document certain attributes, such as performance, usability, and security requirements.

    4. We work with customers to identify the important quality attributes for each product, which we then document in a precise and verifiable way.

  10. How are the individual functional requirements labeled? [Chapter 10]

    1. We write paragraphs of narrative text or short user stories; specific requirements are not explicitly identified.

    2. We use bulleted or numbered lists.

    3. We use a hierarchical numbering scheme, such as “3.1.2.4.”

    4. Each discrete requirement has a unique, meaningful label that is not disrupted when other requirements are added, moved, or deleted.

  11. How are priorities for the requirements established? [Chapter 16]

    1. All of the requirements are important, so we don’t need to prioritize them.

    2. The customers tell us which requirements are most important to them. If the customers don’t tell us or don’t agree, the developers decide.

    3. Each requirement is labeled as high, medium, or low priority by customer consensus.

    4. To help us make priority decisions, we use an analytical process to rate the value, the cost, and the technical risk of each requirement, or we use a similar structured prioritization technique.

  12. What techniques are used to prepare a partial solution and verify a mutual understanding of the problem? [Chapter 15]

    1. We just build the system and then fix it if we need to.

    2. We build some simple prototypes and ask users for feedback. Sometimes we’re pressured to deliver prototype code.

    3. We create prototypes for both user interface mock-ups and technical proofs of concept when appropriate.

    4. Our project plans include tasks to create electronic or paper throwaway prototypes to help us refine the requirements. Sometimes we build evolutionary prototypes. We use evaluation scripts to obtain customer feedback on our prototypes.

  13. How are the requirements validated? [Chapter 17]

    1. We think our requirements are pretty good when we first write them.

    2. We pass the specified requirements around to people to get their feedback.

    3. The BA and some stakeholders hold informal reviews when they have time.

    4. We inspect our requirements documents and models, with participants that include customers, developers, and testers. We write tests against the requirements and use them to validate the requirements and models.

  14. How are different versions of the requirements documents distinguished? [Chapter 27 and Chapter 30]

    1. The document shows the auto-generated date that the document was printed.

    2. We use a sequence number—like 1.0, 1.1, and so on—for each document version.

    3. We have a manual identification scheme that distinguishes draft versions from baselined versions and major revisions from minor revisions.

    4. The requirements documents are stored under version control in a document management system, or requirements are stored in a requirements management tool that maintains a revision history for each requirement.

  15. How are software requirements traced back to their origin? [Chapter 29]

    1. They aren’t.

    2. We know where many of the requirements came from but don’t document the knowledge.

    3. Each requirement has an identified origin.

    4. We have full two-way tracing between business requirements, system requirements, user requirements, functional requirements, and nonfunctional requirements.

  16. How are requirements used as the basis for developing project plans? [Chapter 19]

    1. The delivery date is set before we begin requirements development. We can’t change either the project schedule or the scope. Sometimes we go through a rapid descoping phase to drop features just before the delivery date.

    2. The first iteration of the project plan addresses the schedule needed to gather requirements. The rest of the project plan is developed after we have a preliminary understanding of the requirements. We can’t change the plan much thereafter, however.

    3. We start with just enough information about requirements to prioritize them, then estimate the effort needed to implement the top-priority requirements. We develop our requirements and our software incrementally, planning the requirements for each iteration based on their priority and size. If we need to accommodate more requirements than our plan allowed, we add more iterations.

    4. We base the schedules and plans on the estimated effort needed to implement the required functionality, starting with the highest-priority requirements. These plans are updated as the requirements change. If we must drop features or adjust resources to meet schedule commitments, we do so as early as possible. We plan to deliver multiple releases to accommodate requirements changes and growth. [Note: (c) and (d) are equally good responses for this question.]

  17. How are the requirements used as a basis for design? [Chapter 19]

    1. When we have written requirements, we refer to them during development.

    2. The requirements documents describe the solution we intend to implement.

    3. Each functional requirement is traced to a design element.

    4. Developers inspect the requirements to make sure they can be used as the basis for design. We have full two-way traceability between individual functional requirements and design elements.

  18. How are the requirements used as the basis for testing? [Chapter 19]

    1. The testers test the software based on how they think it should function.

    2. The testers test what the developers said they implemented.

    3. We write system tests against the user requirements and functional requirements.

    4. Testers inspect the requirements to make sure they are verifiable and to begin their test planning. We trace system tests to specific functional requirements. System testing progress is measured in part by requirements coverage.

  19. How is a software requirements baseline defined and managed for each project? [Chapter 2 and Chapter 27]

    1. We don’t have to think about baselines because we are on an agile project.

    2. The customers and managers sign off on the requirements, but the development team still gets a lot of changes and complaints.

    3. We define an initial requirements baseline, but we don’t always keep it current as changes are made over time.

    4. The requirements are stored in a requirements management tool when an initial baseline is defined. The requirements repository is updated as requirements changes are approved. We maintain a change history for each requirement after it’s baselined. On an agile project, the team agrees on a requirements baseline for each iteration.

  20. How are changes to the requirements managed? [Chapter 28]

    1. The requirements change whenever someone has a new idea or realizes that he forgot something.

    2. We discourage change by freezing the requirements after the requirements phase is complete, but informal change agreements are still made.

    3. We use a defined format for submitting change requests and a central submission point. The project manager decides which changes to incorporate.

    4. Changes are made according to our documented change control process. We use a tool to collect, store, and communicate change requests. The impact of each change is evaluated before the change control board decides whether to approve it.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.14.129.194