3. How Generative Analysis is driven by Questions
"Questions are a burden to others; answers a prison for oneself."
—The Prisoner, ITV, 1967-1968
The process of Generative Analysis, and, more generally, all analysis, is driven by Questions. It is fair to say that the Question is the "engine" of Generative Analysis.
You ask Questions of the stakeholders and investigate the problem domain (a kind of implicit questioning) to work out the what the system needs to do. Working with Questions generates Requirements for the software system, Propositions about the system, and other useful Information Types. Again, we cover this process in great depth in our book.
In the Information Model, a Question has content, which is the question itself, and a catch-all field called notes where you can capture any information relevant to the Question. As a class, the Question doesn't look too interesting. However, in terms of Generative Analysis, the Question is really the heart of the matter because it is a powerful generator – it generates one or more instances of the other Information Types. It is important to stress that the Question does not transform into the other Information Types; it generates them. To use an analogy, Questions are like the grain of sand in an oyster that is eventually elaborated into a pearl – the software system.
In Generative Analysis, a Question has a trivial lifecycle – it is "unanswered", "answered", or deleted because it is ill-formed or irrelevant. These "answers" are defined within the specific context of the software engineering project. In Generative Analysis we define the "answer" to a Question as being the set of Information Type instances that it generates. To summarize:
- In Generative Analysis, a Question is a generator of Information Types.
- The "answer" of a Question is the set of generated Information Type instances.
- The "answer" is often neither true nor false, but only more or less complete and useful in terms of progressing the project.
- All "answers" are constraints, because they reduce the number of possibilities.
The essence of Generative Analysis is using Questions as generators of all the Information Types.
Now we understand the Generative Analysis approach to Questions, we need to take a closer look at the nature of Questions themselves.
4. Types of Question
In a very abstract sense, a Question indicates that there is an unknown. What types of "unknowns" might there be and therefore what types of Questions may we ask? In English, we can only ask six types of Question all of which can generate one or more of the Information Types:
- Why?
- Who?
- What?
- How?
- When?
- Where?
We can extend our Question model to incorporate these types as shown in Figure 2. Note that this is a conceptual model that is for illustrative purposes only. We have chosen not to make this extension a formal part of the Information Model because it doesn't really add anything at that level of abstraction. However, it is very useful at the conceptual level because it allows us to illustrate the Generative Analysis approach to Questions very clearly.
As shown in Figure 2, we divide Questions into two types. There is AbstractQuestion, which has a single subclass Why, and there is ConcreteQuestion that has subclasses Who, What, How, When, and Where.
Figure 2: Extending the Question model with new concepts
Click to open full-sized image
In the next section, we will demonstrate that of all the types of Question, Why stands alone because it is more abstract than the others. This is the justification for classifying Why as an AbstractQuestion and all the others as ConcreteQuestions.