1 Overview
2 Need for Shared Understanding
3 The Co-operative Inquiry Method
4 Applying Co-operative Inquiry to Requirements Engineering
5 Discussion (comparisons, recommendations, predictions)
This paper has grown out of my specific dissatisfaction with a view of the world centred on technology, rather than on the people who will use that technology. I have therefore looked for a framework which makes a definite shift of focus towards users, but allowing existing techniques wherever these are helpful.
The paper presents a new framework in which Requirements Engineering is treated as a Co-operative Inquiry (CI), a general method for reaching shared understanding within a group. The treatment leads to a division of the requirements engineering life-cycle into four cycles of co-operation between users and developers. With each cycle, a model (which may be quite conventional) is developed. The approach is compared with existing methods, and some predictions are made about how it may perform.
Traditional approaches to system development essentially asked users to sign a contract at the start of development. The developers went away, returning at the end with a product to be accepted against a specification that was complicated, written by developers, and often no longer current.
I have been moving for the last few years to change my own thinking: from that corporate view – a contractual us/them split between developers and clients – towards a way of working together. I have been searching for a practical but intellectually sound framework which respects the knowledge, skills, and experience of users as well as of developers. I feel this must mean co-operating, so as to build a shared understanding.
It is impossible to develop anything without users. Users are ultimately responsible for specifying and accepting every system ever developed [Stevens 1998]. From this perspective it is startling how far industry’s focus on tools and methods has distracted attention away from users [Mumford 1996]. The reasons for this include time pressure, inexperience, and desire for results. The price is documented by the Standish Corporation [Standish 1998] from extensive market research:
"Opinions about why projects are impaired and ultimately canceled ranked
incomplete requirements and lack of user involvement at the top of the list."
1. Incomplete Requirements 13.1%
2. Lack of User Involvement 12.4%
Any project that does not involve its users thoroughly in all decisions, especially in requirements, is taking a serious risk.
CI is a method of reaching shared understanding within a group. It was devised by the humanistic psychologists John Heron [e.g. Heron 1996] and Peter Reason [e.g. Reason 1994]. It has been tested extensively in applications including shared medical research, social work, and psychology.
CI involves a specific cycle of action and review, designed to be both robust in the face of shocks, and attentive to individuals' differences of outlook. These qualities appear to be exactly what is needed of a framework for requirements engineering.
The distinctive feature of the co-operative inquiry method is a cycle (Figure 1) consisting of separate phases for thought and for action. Orderly and effective processes carefully separate these. Who has not sat through a review meeting where it was not clear whether the task was to review a previous action, to plan future actions, or even to work on the next action? From the CI point of view, each person in that meeting was speaking in the phase which they personally had reached. Chaos resulted, as no attention had been paid to the process.
Figure 1: The Co-operative Inquiry Cycle
Traditional software life-cycles (in particular) have formalized some activities into constructive stages and review stages. For example, the European Space Agency's PSS-05 standards [Mazza 1994] call for a Software Requirements Phase, containing the writing of a document followed by review as its main activities.
The CI framework offers the possibility of extending this kind of structure so as to involve users intimately in all aspects of requirements engineering. The CI cycle contains four discrete phases:
Proposition
- proposal for action, debate, decision to proceedAction
- perform task, e.g. build a modelReaction
- check the result is acceptable, e.g. users react verbally to modelReflection
- consider results, implications, way ahead, e.g. plan changes to modelIn the first phase, any member of the CI group can make a proposal for action. For example, a user may suggest that an area of concern should be investigated and modelled. This can be challenged, modified, added to, and debated by the CI group. The phase ends when the group reaches a decision, ideally by agreement across the group. A group can of course use a CI cycle to agree a decision procedure, such as by show of hands. Reaching agreement can take time with a new group but can become very rapid in an experienced team.
The second phase consists of taking whatever action was agreed. The action may be something that the whole group can do, or it may be specialized, calling for individual action. During the action phase, the group stands back from making proposals, reviewing, or criticizing, as these can interfere both with the decision that was taken and with the action that is under way. This suspension of criticism allows the group to immerse itself in the action.
The third phase consists in reacting to the product of the action phase. Reaction may mean reviewing a document or model, or it may quite simply mean allowing members of the group to express their 'gut reactions'. That may not sound very constructive, but by providing a time at which such expression is accepted, it effectively avoids long periods of destructive complaint and criticism, and enables everyone in the group to feel that other people have heard what they have to say.
The fourth phase consists of making sense of what has happened. This can mean reflecting on what a model shows (or does not show), what ought to be thought about next, what the results so far imply. If documents are produced, they are likely to be technical notes which discuss meanings, implications and perhaps theoretical underpinnings. A definite phase for reflection in each cycle prevents people from rushing from action to action (such as by following a Standard rigidly, with over-tight deadlines) without checking to see if the process is meeting the users' needs.
The cycle can be terminated at this point, if the results are satisfactory; a particular cycle can be repeated, if there is a case for proposing further action; or the cycle may lead naturally to another cycle, where the work needs to be deepened, as happens when a clearly expressed User Requirement leads on to a System Requirement.
A CI cycle with a simple action can be completed in a single meeting; other cycles may take weeks or months. Some managers in industry think that democracy is a slow process. CI strives to be totally democratic, but it can be very quick once people are familiar with the method. Time is saved because people know they will get a chance to speak if they need to; everyone listens; and what is said can be dealt with promptly, instead of hanging around as a problem and dividing the team. The bigger picture is that getting requirements right, that is, grounded in experience but accurately expressed, saves much time by avoiding misunderstandings and rework.
CI is nothing if not a practical method. Here is an example of what can happen. The described activities are not necessarily recommended practice.
For the sake of example, a CI meeting could begin by agreeing (phase 1) to Alison's proposal to start to identify the goals of a new project by brainstorming. This proposition could be acted on (phase 2) by having Ben write down all the suggested goals, uncritically.
After ten minutes or so when the flow has dried up, the group could express its immediate reactions (phase 3) to what is on the screen, perhaps by marking a tick, a cross, a question mark or a comment against an item, without argument, to indicate what each person thought of each item that they cared to comment on.
The group could then sit back and discuss (phase 4) the relative importance of each goal, aiming to converge on a preliminary list of priorities. Further cycles could then be planned, to organise the goals into a hierarchy and to check they were complete and realistic.
Sometimes, a CI group member becomes distressed by the process. For instance, Charles may be upset that his first goal is being given bad marks by several people in the group. Diana notices that he is looking uncomfortable and proposes to the group that it takes the time to resolve his discomfort (creating a small special-purpose cycle, incidentally, within the 'goals' cycle).
Charles explains why his goal mattered to him and how other users want it also. On being questioned, he describes how he felt it was unfair that the group seemed to be picking on his contribution. Alison asks what could be done to resolve the issue, and Charles suggests that the goal could be divided into two parts. Ben writes these on the board and Emma checks that Charles is happy with the result. The group agrees to reconsider the priorities and resumes the 'goals' cycle.
The meeting proceeds quietly – too quietly? Ben asks the group whether it might not be avoiding something – perhaps the real issue is that the goal suggested initially by the Director is unrealistic, but nobody feels like challenging it. The group votes to consider if this is so, and collects and summarizes arguments for and against. Everybody gives their gut reaction to the arguments, and the group then reflects on the problem.
The outcome is that the group sees that the goals need to be adjusted to be less ambitious. A meeting is arranged with the Director to present the group's findings. A major failure a few months down the line has been averted.
CI is robust because participants can quickly check if it is working correctly [Postle 1998], and take action it if is not. For example, if a discussion seems to be ending abruptly or if any sort of distress is observed, CI effectively encourages participants to draw this to the attention of the inquiry group. This prevents the inquiry from becoming distorted.
In a healthy CI:
To create a framework for requirements engineering, four cycles seem to emerge naturally:
There is nothing new about this division, though unhappily the first three are often compressed or merged, while design, properly part of the last cycle, is often present from the start. A practical reason for separating out four cycles, then, is to emphasize the difference between problems and solutions.
Figure 2: Identifying a problem
In Cycle 1 (Figure 2), the users, together with consultants, discuss and assess the problem area. They also get to know each other, and learn the CI method. The consultants may interview the users or conduct workshops to study the problem and prepare a structured description of the problem area. This can be a task or goal model, or any other representation which does not make assumptions about the nature of the solution.
A task model has several advantages for co-operative identification of problems. It is easy to understand; can be animated to show how it works, to check for errors, and to generate operational scenarios; and it can be transformed readily into either a conventional process model, or into the heading structure of a user requirements document. I have created a tool specially for this purpose [Alexander 1997, 1998].
Figure 3: Defining the problem
In cycle 2 (Figure 3), given a properly worked out and agreed document structure in which the problem can be defined, user requirements for each class of user can be phrased quickly and easily.
Cycle 1 established a CI framework in which requirements engineers can work closely together with users, and a document structure, possibly based on a hierarchy of goals or user tasks. In Cycle 2, engineers and users co-operate to draft, review and revise the user requirements.
The cycle is concluded when the team has agreed the scope and prioritised the requirements. A requirement with so low a priority that it will not be worked on (at least in the foreseeable future) is naturally out of scope.
Using a problem identified with a task model, I treat the problem definition cycle as consisting of populating the task or goal headings with requirements for each of the actors involved.
For example, a task called 'Evaluate Risk' might have a functional requirement 'The project manager shall be enabled to calculate the financial risk in launching the product', as well as a security constraint 'The risk evaluation shall be available only to authorized users'. In other words, once the users have agreed what tasks are involved, the shape of the problem is known and definition consists of filling in the details.
I find this easiest with a requirements tool, such as DOORS, which supports a hierarchy of headings and an outliner with which to view and edit them.
Figure 4: Defining the solution envelope
The third cycle (Figure 4) defines the envelope within which any acceptable solution must lie. The developers draft the system requirements by transforming the user requirements into specific demands on the system, complete with constraints and system attributes such as whether a requirement is safety-related and how it is to be verified. The users review the requirements and validate them by checking that they satisfy all aspects of the problem (within the scope). Finally, the users adjust the scope to ensure that they can afford the (first) solution and give the go-ahead, in the form of a plan, schedule, and budget for development. I find a requirements tool which supports attributes and traceability very helpful for these purposes.
Figure 5: Developing a solution
Probably little need be said about the fourth cycle (Figure 5). The users present the developers with an agreed budget and timescale, and ask for a solution which meets the requirements. The developers design and build a solution as usual: there is no reason why this should not be by means of an evolutionary life-cycle that involves repeated deliveries for user reaction, but that is not our concern here. The cycle, and the framework, are completed when the users have validated the solution and decided whether further work is called for.
At the end of this paper I venture some broad predictions about the general effect of applying the CI Framework. Here I need only point out, very briefly, some immediate effects within the process.
Users are central throughout the life-cycle. This does not prevent developers from being delegated to go away and make a model, or a program, but it keeps the responsibility for decision-making (such as changing a requirement) firmly with the CI group, which includes the users. In other words, developers as well as users may propose, but users decide. The framework depends totally on co-operation between users and developers, a human process which can be assisted with technology but which is not driven by it. Design decisions are postponed until needed. This actually increases the freedom of the developers to consider alternative design solutions. Validation is (virtually) continuous, as users and developers together have the opportunity to examine and reflect on each phase of action during regular CI-style meetings.
Each individual meeting can, and should, be treated as a CI cycle in its own right, with a few minutes at the start to agree a proposition, a phase of action such as presenting a design document, a phase of reaction in which everyone says what they feel about the ideas presented, and a final phase of making sense of the meeting's discussion, with decisions and plans for further work and the next meeting.
Importantly, errors are never allowed to grow because the whole group focuses its attention on the results or products immediately they are available. In other words, action is always balanced by review.
"Participation … is the very expression of permanent discomfort"
John Ralston Saul, The Unconscious Civilization
The role of the requirements engineer in a CI framework is facilitative, as it should always be. Some aspects of this could include allowing time to find out what the users want; making the effort to discover differences of opinion on scope, and alternative approaches; having the patience to hear what everyone has to say; and maintaining a firm determination not to be rushed into solutions, very possibly in the face of management or peer pressure.
There is a severe problem in all collaborative methods: of staying in balance. Professionals are always in danger of 'living in an ivory tower' with special knowledge which separates them from users. At the other extreme, engineers who enthusiastically dive in to the users' problems run the risk of 'going native' and losing their perspective [Flick 1998].
The CI answer is to cycle between total (if possible) immersion in action and reflection on that action. Ideally the requirements engineer and the users participate totally in the action so they can reflect on their own immersive experience [Heron 1996]. This is a subtle balance. The experience in the action phase is fully grounded, but not reflective. The reaction and reflection phases are detached, but are grounded in reality through the recent memory and experience of the group. Alternative approaches such as ethnography do not achieve this result.
The related question, of how far it is possible or desirable for engineers to experience the users' domain, is a difficult challenge, supplying material for much future work.
I personally have found the journey from controlling to participating and facilitating very rewarding so far. I am sure I have much further to go, but I hope that by thinking out what I am trying to do, other practitioners may be stimulated to take these ideas further, put them into their practice, and so contribute towards a practical and sound theory of co-operative requirements engineering.
CI is a general method. In requirements engineering, this may be limited by various factors. Firstly, it is not always possible to find users who can participate in a CI group. Secondly, experienced users may be a scarce resource. Thirdly, mass-market products may after their launch have a million users; before launch they may have none. CI offers the possibility of integrating development closely with the needs of a small number of users. It may be possible to select some 'Ambassador Users' as in the DSDM approach, but in the case of a mass-market product, these users must be funded in some way, and their representativeness must always be in some doubt.
As for the nature of the final system, CI ought to be generally applicable. All systems however remote have human users. For example, a deep-space probe has at least two classes of user: astronomers and ground controllers. Representatives of each identified class of user should be invited to join the CI team. This can be difficult: Linda Macaulay discusses a range of options for team structure [Macaulay 1993].
Few life-cycle models involve users to any depth. For example, ‘Spiral’ and ‘Evolutionary’ Models typically have one cycle per product version (not 4). If each version is a prototype or 'early working model', then the time between each user specification and each delivery may be shorter than in traditional life-cycles such as the waterfall [e.g. Mazza 1994]. In contrast, the CI framework attempts to establish continuous co-operation between users and developers.
The Dynamic Systems Development Method [DSDM 1998] is a fully-worked out approach for 'rapid application development' (RAD). It seems to combine both evolutionary and co-operative methods:
"The project should … identify all the classes of users who will use the end result so that knowledgeable representatives can participate throughout the life of the project and provide coverage of the views of all the user classes. DSDM calls these representatives 'Ambassador Users' … ".
DSDM provides some guidance on the choice of users: they should be experienced and knowledgeable. It seems likely that good DSDM projects in fact use some of the techniques of CI informally. For example it is mentioned in a case study that an Ambassador User not only "had an overall knowledge of the business areas involved, but also had a good understanding of computer systems" and there is a reference to a "give and take attitude". Interestingly, the study also mentions the value of a cooling-off period "for the team to regain their energy and enthusiasm". If this was more than just a rest, it might imply a period of reflection on the actions so far accomplished, leading to planning of the next phase: but this was not stated. CI may well be valuable in DSDM and similar approaches in formalising the place of users, and the way the team interactions can be managed. The effect should be to bring more projects up to the level of the best.
Ed Yourdon [e.g. Yourdon 1989] has proposed a structured approach including up to four models, in a scheme which presages the four cycles of the CI framework, though without necessarily implying particularly close collaboration with users. The limited range of modelling techniques formerly available, combined with the once generally weak perception in industry of the importance of users, has probably been responsible for the poor response to this kind of approach.
The DERA System Engineering model [Stevens 1998] explicitly involves User Requirements at each level (subsystem) of a hierarchical system, and requires user review of each phase. One thing that is clear from Stevens' work is that the early stages in the life-cycle - modelling of the problem domain and of the user requirements - can be completed quite rapidly and at low cost, provided there is a commitment from managers to get the job done. Modern tools also help. The first two CI cycles in the framework may therefore be less daunting than Yourdon's modelling phases.
User involvement is gradually becoming accepted as necessary in industry, e.g. in BPR and Kai-Zen. Checkland's Soft Systems Methodology (SSM) [e.g. Checkland 1990] makes this explicit, using representations which avoid analytic methods, favouring human views of the problem. SSM is not itself a development approach, though it has been incorporated as the first part of the Multiview method [Avison 1990]. Multiview pays commendable attention to obtaining viewpoints from different classes of user before building system models. It also emphasizes 'participative design' based on Enid Mumford's pioneering ETHICS method [Mumford 1985, 1996], not only involving users but reflecting their needs. Co-operative inquiry is a fresh take on requirements engineering, but it may well be that methods such as those advocated in Multiview are suitable for it.
Colin Potts' Inquiry-Based approach [Potts 1994] involves an inquiry cycle, which can be matched with the CI cycle as a particular application (interpretation for a specific purpose, centred on the requirements document) of a co-operative inquiry. The Potts cycle takes a document, allows the inquiry to challenge it (CI phase 3, Reaction), conducts a reasoned discussion (CI phase 4, Reflection) involving questions, answers, and reasons, which lead to a decision (CI phase 1, Proposition) on how to evolve the requirements. This leads to a change (CI phase 2, Action) to the requirements document, where the Potts cycle repeats.
The approach presented in the current paper proposes four major CI cycles, supported as needed by cycles of other types, and distinguishing the collection of goals and scenarios (cycle 1) from the writing of user requirements (cycle 2), and system requirements (cycle 3), but it is interesting that Potts has in effect 'rediscovered' CI in a specialized form.
As it happens, I also believe [Alexander 1998] that the place for putting together scenarios is a goal model, which is then used to organize the requirements, rather than trying to organize already-documented requirements by analysing use cases, as suggested by Potts and others. But all these processes are iterative.
Approaches which involve users include Linda Macaulay's Co-operative Requirements Capture [Macaulay 1993], developed at UMIST and well tested on business systems with the User Skills Task Match method (USTM). She advocates identifying and including 'stakeholders', but argues that in addition
"two further components are needed. Firstly a mechanism for focussing the discussion of the 'team' and encouraging sharing of views and concerns. Secondly a structure is needed which will enable the team to address all the important issues…"
USTM provides a detailed structure of meetings, each planned and debriefed, and each with a prescribed set of tasks leading to prescribed outputs. The users actively share in these tasks but are not involved in designing the task structure itself. That said, Macaulay permits the agenda to be updated co-operatively. The method is not formally a Co-operative Inquiry, though it has some of its attributes.
It is likely that a USTM meeting when led by an experienced facilitator comes close to executing a CI cycle; whereas if USTM or any other method is applied relatively rigidly, there is a risk that the predefined structure itself may put up barriers to effective co-operation. Macaulay explicitly admits that USTM places the responsibility for detecting and diagnosing any problem in the group, designing a solution, and intervening to address the problem. The USTM 'facilitator' thus has the power to control the group, whereas CI always attempts to share this power. The CI facilitator may be more experienced in the method than other participants, so strict equality is probably unattainable. The point is, perhaps, that the CI facilitator's experience is more likely to be applied by holding back or by asking a question than by direct intervention.
CI has been applied in several very different fields to good effect. From this background, it is possible to guess what its effect may be in requirements engineering. These guesses are testable, so they can be treated as tentative predictions for investigation.
The CI Framework for RE should help to :
As an aside, there is a special problem when group membership changes. It takes time to get people up to speed with a method. There is a danger that firm decisions made in one meeting may not be understood, or shared, by people who drift into the project. And if too many people leave, the group's grasp of the method may be lost. Important issues that could be investigated include: How much turnover of users or of developers can be handled? What should be done to accommodate such change?
This paper is intended mainly to present a framework for applying CI to requirements engineering, but to emphasize that this is something practical which I mean both to use and to share, here are some very brief recommendations on putting CI into practice, ideally as a test of one of the predictions.
Alexander, Ian, Scenario Plus User Guide,
http://www.scenarioplus.com 1997 (a tool designed to assist collaborative working on goals for user requirements)Alexander, Ian, A Co-operative Task Modelling Approach to Business Process Understanding, Workshop on Object-Oriented Business Process Modelling, ECOOP 1998 (http://www.ibissoft.se/oocontr/alexander.htm) (a paper on task modelling using a requirements tool, discussing its application in a CI framework)
Avison, D.E. and Wood-Harper, A.T., Multiview: an Exploration in Information Systems Development, Blackwell 1990 (a text on the Multiview method with ideas from Checkland and Mumford)
Checkland, P. and Scholes, J., Soft Systems: Methodology in Action, John Wiley, 1990 (one of several texts on SSM by its inventor)
DSDM: The Dynamic Systems Development Method, http://www.dsdm.org 1998 (a widespread rapid applications development method from a consortium of UK industry)
Flick, Uwe, An Introduction to Qualitatitive Research, Sage, 1998 (a excellent and detailed discussion, among other things, of the issues in observing and/or participating in the users' domain)
Heron, John, Co-operative Inquiry, Research into the Human Condition, Sage, 1996 (a recent text by one of the founders of CI, with detailed examples and discussion)
Macaulay, Linda, Requirements Capture as a Co-operative Activity , IEEE International Symposium on Requirements Engineering, Jan 4-6 1993, San Diego, Ca (RE'93) (a paper on her approach, discussing both the social process of collaboration and the options for a team structure)
Mazza, C, et al, Software Engineering Standards, Prentice Hall 1994 (a terse statement of the waterfall model meant for use on software projects)
Mumford, Enid, 'Defining system requirements to meet business needs: a case study example', The Computer Journal, Vol 28, 2, 97-104, 1985 (a paper on her participative design method ETHICS)
Mumford, Enid, Systems Design, Ethical Tools for Ethical Change, Macmillan, 1996 (an intelligent and reflective text on systems engineering in its social context)
Postle, Denis, personal communication. 1998
Potts, Colin, Takahashi, Kenji, and Anton, Annie, Inquiry-based Requirements Analysis, IEEE Software, 11(2), 21-32, 1994
Reason, Peter, Participation in Human Inquiry, Sage, 1994 (a textbook by one of the founders of CI with an academic slant)
Saul, John Ralston, The Unconscious Civilization, Anansi Press, Canada, 1995 (an essay on the need for participation by individual citizens in politics)
Standish Group, web site at www.standishgroup.com, 1998 (a corporate view of the cost of poor systems development)
Stevens, Richard, Systems Engineering, coping with complexity, Prentice Hall, 1998 (a modern industrial perspective on systems)
Yourdon, Ed, Modern Structured Analysis, Prentice Hall, 1989 (an older textbook from an original thinker in software engineering)