6. ConcreteQuestions
"6: Where am I?
2: In the Village.
6: What do you want?
2: Information.
6: Whose side are you on?
2: That would be telling. We want information... information... INFORMATION!
6: You won't get it!
2: By hook or by crook, we will.
6: Who are you?
2: The new Number 2.
6: Who is Number 1?
2: You are Number 6.
6: I am not a number; I AM A FREE MAN!
2: [LAUGHTER]"
The Prisoner, ITV, 1967-1968
In this section, we will look at how to use the ConcreteQuestions in Generative Analysis. As we saw above, the key thing about these ConcreteQuestions is that there is already an agreed map that can be used to answer them, and this makes them a lot simpler. If there is no agreed map, then you need to first establish a map as described above.
Note that ConcreteQuestions can also be used to take someone to the edge of their current map by simply asking a ConcreteQuestion that is unanswerable based on that map. In this case you usually find that ConcreteQuestions tend to extend the existing map, rather than replace it with a new one. It is interesting to note that you can also take someone right to the edge of their map by using answers, as the above quote from The Prisoner illustrates.
The use of ConcreteQuestions in Generative Analysis is obvious, so we will have less to say about them than we had for the AbstractQuestion.
Who
Who is a very concrete Question because it asks for information about people or the roles they play with respect to the system. It is an ontological Question because it asks the question, "what is there?" [Quine 1].
In terms of the Information Model, Who questions mostly generate Resources, Propositions, and Actions. If they refer to people, you need to capture their details, and if they refer to roles, you need to find out about the roles, perhaps by finding a job description or interviewing and observing people who carry out the roles. You need to record important Actions that might be suggested by the answers.
In terms of the UML model, when Who questions refer to people, they tend to generate classes, actors, use cases, subsystems, objects, and components. However, when they refer to roles, they also indicate processes that are captured by activity diagrams, state machines, sequence diagrams, communication diagrams, actors and use cases.
For example, where A is the Generative Analyst and S is a librarian:
A: So, who decides who can access the library's Restricted Collection?
S: That would be Henry and Asenath.
A: That's Henry Armitage and Asenath...?
S: Asenath Waite.
A: How do they go about it?
S: I don't know... I suppose they check people out to see if they are trustworthy... It's not my business, so you had better ask them.
The above dialog generates quite a lot of information:
- Resource: Dr. Henry Armitage (who we already knew about).
- Resource: Asenath Waite (new).
- Action: Interview Henry and/or Asenath to find out about vetting for the Restricted Collection.
- Candidate process: Vetting process for the Restricted Collection.
- Candidate use case: Vet Library User
- Candidate role: Vetter? Administrator?
- Candidate actor: Vetter? Administrator?
You can see that we have a candidate use case and a candidate actor. These can be added to a first-cut use case model as described in Generative Analysis.