‘Exploring Requirements: Quality Before Design’ by Donald C. Gause and Gerald M. Weinberg is a must read for students as well as professionals. In this book, the authors emphasize that project teams need to ask context-free questions in order to understand high level details that are necessary to create the right product in the right way. According to them there are two primary categories of context-free questions: a) context-free process questions and b) context-free product questions. Also, they discuss about the third broad category of questions called metaquestions or questions about questions. Context-free questions are applicable to any product design. They consume less effort but provide an opportunity to obtain valuable information.
Context-free questions can be used in Software Engineering irrespective of the lifecycle methodology used. Also, IT consulting teams can use context-free questions during portfolio analysis or assessment phase in order to better understand the customer requirements.
Context-free process questions relate to the process to be followed and the answers to context-free questions relate to the project or the lifecycle activities. Context-free product questions relate to the design of the product and the answers to context-free product questions provide details on attributes, considerations or trade-offs related to design of the product. Let me share few examples here. Most of these examples are based on my experience.Examples of Context-Free Process Questions:
- What are the success criteria for this project? Or how do we measure the success of this project?
- What are the driving factors for executing this project with a collocated team (or distributed team) or a consulting partner?
- How much time do we have for this project?
- What is your trade-off between schedule and quality?
- Where else can the solution to this design problem be obtained?
- Can we reuse something that already exists? Can we use open source?
- Who are the competitors for this product?
Examples of Context-Free Product Questions:
- What problems does this product solve?
- What problems could this product create?
- What are the operational environments for this product?
- What kind of precision is required or desired in the product?
- What are the interfacing standards to be followed?
- Am I asking you too many questions?
- Do my questions seem relevant?
- Who is the right person to answer these questions?
- Do you think our team needs to contact multiple members in your organization to get answers to these questions?