Semantic Werks

Thoughts on people, machines and systems.

Posts Tagged ‘requirements

Preserving knowledge in design projects

leave a comment »

James D. Herbsleb and Eiji Kuwana. Preserving knowledge in design projects: what designers need to know. CHI ’93: Conference on Human factors in computing systems, 7–14 , Amsterdam, April 1993.

I hadn’t read this paper until it was recommended to me by an advisor, but it is now one of my favourites. It describes an experiment the authors ran on three industrial software projects. They had access to the requirements and design phase meetings from these companies (NTT, Andersen, and MCC), and coded the discussions based on three variables: the target of the question (subject of the question, categorized as evolve, task assignment, interface, realization, and identity), the attribute of the question (who, what, how, why, when), and lifecycle stage (req, design, impl, maintenance).

The results were somewhat surprising. While most questions referred mainly to requirements or design stages (not surprising, since these were planning meetings), few questions sought the intentions behind a decision. Many more questions were oriented to ‘what’ was being changed/affected (~60%), and ‘how’ that was to happen/happening (30%).

Practitioners might not find this surprising; after all, pragmatically those two questions are most relevant to “getting ‘er done”. However, at the time (1993) there was a lot of work on design-rationale tools, which specifically targeted the ‘why’ questions. This is also a central argument behind early-requirements analysis: that understanding intentionality will improve how well a tool performs for the users. Now, I think an important distinction is between answering ‘why’ a particular implementation is necessary, or why the change was made, versus a better understanding of user goals. User goals describe ‘what’ the tool should satisfy, while design-rationale is answering ‘why’ a certain change is being made.

The authors present four possibilities for ‘why’ questions having such low representation:

  1. the information is perceived to be unimportant or avoided by people conscious they are not domain experts;
  2. these questions are important, but these meetings are not the venue for addressing them, or the context is clear to the participants;
  3.  ’what’ and ‘how’ questions provide enough information to elicit or understand the ‘why’ questions;
  4. it is hard to answer these questions with current tools;
  5. (least likely) while low in frequency, these questions are greater in importance: this suggestion seems unsupported by the data; e.g., the minutes didn’t reflect that such questions are more important.

Another critique that can be made, in a similar vein, is regarding the outcomes of these projects-to-be. I would imagine that studying the design meetings of ultimately failed projects doesn’t tell us much about what ought to be done in these meetings. Perhaps they focused to such a great extent on the implementation details that they omitted other important considerations.  However, the fact the paper has used three fairly distinct datasets strengthens the results considerably.

The paper concludes with an observation that usage scenarios are very important according to the data; this supports the agile focus on use cases and user stories.

All in all an excellent paper, grounded in empirical and externalizable data. The one regret I have is that (to my knowledge) the data is not publicly available. It seems like a rich source of data for a wide variety of questions. While I understand the privacy and IP problems involved, one would think that there is either a way to anonymize it, or that 10 years later, it would be of very little relevance.

Written by Neil

2007 December 19 at 13:21

Smart monkey syndrome

leave a comment »

I just returned from the ICSM conference and associated workshops in Paris, France (very nice, thank you). I have many notes on talks I saw, but herewith a few impressions:

ICSM is about software and machine artifacts, not requirements. Requirements come from on high, and the impetus for maintenance tasks is generally assumed to be well understood. It seemed a little like solving the problem of getting suburbanites to a downtown office by improving the highway signage, or improving offramps, but ignoring urban rail as an option altogether.

A discussion at the workshop on evolvability spurred me to consider the ‘smart-monkey syndrome’. My contention is that building software, while hard, is not the hardest problem. I think there is a lot of evidence for this, starting with Brooks’s law, which is all about the external effects on software development, specifically communication.

Along the same lines, Bruce Eckel posted a neat thought-experiment, asking, “If Microsoft, with all the money and smart people it has, can’t release cool applications more than once every few years, than who can?” Several responses disagree, suggesting Microsoft is actually quite innovative. However, one of the respondents posted an argument with which I wholeheartedly concur, namely that it is again the external factors — multi-national lawsuits, legacy support for code from the 80s, internal communication, device support, etc. — that is the real bottleneck. This, I think, supports my contention that the building of software — e.g., GMail — is the easy part. I am almost certain that Microsoft engineers have had many of the same ideas as Google, but external reasons prevented their realization, such as corporate strategy, marketing, etc. Much as I have shied from the business side of software as fuzzy and pseudo-scientific (meaning that many of the claims in the literature are wholly unsubstantiated by evidence), I am coming to realize that it may be the one aspect that matters the most – and certainly more than language choice.

Written by Neil

2007 October 13 at 13:57

Posted in Uncategorized

Tagged with , , ,

As-is and to-be: an argument against 'kitchen-sink' modeling

leave a comment »

Like the is-ought problem expressed by David Hume, we should be careful in making models not to merge tenses and verbs. One major purpose of modeling is to create a clear and accurate picture for decision-making. But in some models this clarity is obscured by including information on not just what the current state of the world is (indicative, is), but also what would be desirable (ought, optative – see Jackson in “Software Requirements and Specifications“, p. 125).

i* models are used for capturing agent-oriented intentional properties in a domain. One purpose of i* modeling is to enumerate alternatives and design opportunities. But the purpose is also to cast new light on the existing state of affairs — who depends on whom, etc. When these two states are combined, it becomes difficult to evaluate a design alternative: are we assuming Situation A will still hold; how can we be sure the Environment will still be the same; when is the shift in mood going to happen. For example, if I’m considering whether to introduce a technical wiki for storing common solutions in a business, does my i* model reflect the existing situation (no wiki) or the desired situation (wiki).  How can I distinguish between the two versions? Often we want to evaluate models to see how well certain decisions achieve strategic goals. How can we do this in a repeatable way if the same model is used for both current and desired conditions?

Another confusion is between structures of the domain and actions in the domain. We often say that a certain task satisfies a particular goal; but we really want to enumerate, initially, these structural properties of the domain — what exists now — and allow the designer to choose the implementation path. The tasks that are possible depend on the objects in the domain and certain basic constraints (time/space, physical laws, etc.). If we try to describe tasks that are necessary, or that exist already, we fall into a trap of descriptive analysis, where what already is confines our new design. Cognitive Work Analysis, for one, insists that structural properties in the domain be enumerated first, followed by tasks and strategies for accomplishing those tasks.

We should have 2 i* models: one enumerating the indicative, structural constraints the work domain imposes; the other providing rationale and alternatives for optative desiderata in the Machine-to-be.

Written by Neil

2007 August 17 at 09:47

Posted in Uncategorized

Tagged with , ,

Follow

Get every new post delivered to your Inbox.

Join 198 other followers