Showing posts with label requirements. Show all posts
Showing posts with label requirements. Show all posts

Wednesday, January 23, 2008

Agoraphilia

I'm not a natural blogger.

The only reason I created this blog was as a publicly accessible link between my contributions on other people's blogs and fora.

I've found it useful, myself. But I wonder how useful others have found it...

Well, little by little we learn. Until now, I suppose I've been more concerned about the possibility than the occurrence. Now, I think it may be time to give social networking a try. I've signed up for del.icio.us and subscribed to the requirement tag. Perhaps that's why you're here?

Welcome!

Tuesday, September 11, 2007

Prioritization and Value Maximization [Tyner Blain]

Very powerful introduction to the value-driven approach.

Writing Good Requirements: The Big Ten Rules [Tyner Blain]

There are actually twelve mentioned. We discuss the relative priorities in the comments.

There's far too much good reading on the Tyner Blain blog!

Saturday, August 18, 2007

My Seilevel requirements discussion posts

I feel the need, one day, to integrate the ideas in my posts to the Seilevel forum. Until that day arrives, my contributions can be found by following the link.

Thursday, July 05, 2007

Requirement Questions

My original post to the Portland Pattern Repository appears to have emerged unscathed (as at the date of this post). Comments here or there much appreciated, of course.

What are the benefits of meeting the requirement (or the consequences of not meeting it)? [Value]

Is the purpose of a required feature documented? [Purpose]

Who is accountable for the organisation's achievement of the stated purpose? [Owner]

How might the extent to which the requirement is met be ascertained? [Measure]

Who is interested in the extent to which the requirement is met? [Stakeholder]

What is the business context within which the requirement should be met? [Context]

Within what timescales should the requirement be met? [Timing]

What risks are associated with the requirement? [Risk]

Does the requirement have a single purpose? [Atomicity]

What is the immediate 'parent' requirement? [Parent]

Does meeting all the 'child' requirements equate to meeting the requirement itself? [Complete]

With what other requirements does the requirement conflict? [Conflict]

What requirements (other than its parent) does the requirement support? [Support]

What are the underlying assumptions? [Assume]

Why has the requirement been documented? [Motive]

Wednesday, July 04, 2007

Tom Gilb's Concept Glossary

Tom Gilb has updated his Concept Glossary, including my comments on his definition of the requirement concept (below), which he is kind enough to describe as "a particularly well thought out notion of requirement".

(The numbers in parentheses, preceded by an asterisk, refer to other concepts in Tom's glossary. The numbers in brackets refer to footnotes in the original; these follow the main text.)

1. The people whose ends a system (*145) serves are one class of stakeholders. They value the actual results, or receive benefit (*009)[1].
2. The people who consider the future of a system and/or agree to the suggestions of others are a different class of stakeholders. They perceive potential value (*269).
3. If these people take ideas forward (deciding to act or persuading others to decide to act, or considering the desirability of action), they can be described as “Founders”[2] of the resultant system or course of action.
4. The arena within which action may occur is variously described as the “problem domain”, “scope” (*419) or “context”[3].
5. A perception of value within a particular context for action is a potential requirement.
6. A potential requirement coupled with authority (*005) or discretion[4] to pursue its satisfaction is a requirement. The person[5] who confers the authority is the requirement’s “Sponsor”.
7. So, a requirement is a perception of value in a particular context for action coupled with the authority to pursue[6] its satisfaction: the authorized and contextualized pursuit of value.
8. The substance of a requirement (what is required) is the value. That of which it is a requirement is a future system[7]. The context within which it is a requirement includes the project or endeavor (“development environment”) and the anticipated operating environment. Explicit or implicit authority to pursue the requirement (within a particular context[8]) is a status of the requirement (in that context).

There are footnotes in the original:

[1] Because these stakeholders can only receive benefit from an operational system, they can be referred to as “operational stakeholders”.
[2] Or “Originators”
[3] This is not the same as Context (*483). None of these terms is entirely satisfactory, but “context” comes closest to the idea of a simple “frame of reference” or environment within which action may take place (including the operation of a system).
[4] “Discretion” might best be described here as “implicit authority”. Implicit or explicit authority could be regarded as the result of “stakeholder prioritization”.
[5] Ideally, a requirement should have a single Sponsor. A group may be collectively responsible, but even then, it is preferable for one among them to take on the role of Sponsor.
[6] “…for the time being” could be added, authority always being conditional. If the conditions are not met, the authority is no longer valid and, as an immediate and automatic consequence, the “requirement” reverts to being a “potential requirement”.
[7] Strictly, either a sub-system or an attribute (*003) of the system (*145).
[8] We can distinguish here between transitional context (e.g. a project) and operational context (where “environment” is a common alternative term). If the transitional context is undefined, we can refer to the requirement as an “orphan requirement”. If the operational context is undefined, we can only say that the Requirement Specification (*508) is defective; the status of the requirement itself is undecidable (but decidedly not authorized).

Friday, June 29, 2007

Roger Cauvin's Requirement Definition

I have never subscribed to the IEEE "definition" of requirement, and I'm not convinced that Roger's adaptation makes it acceptable. It certainly makes it more acceptable, so "well done, Roger!"

Where do we go from here?

First, can we equate "least stringent condition" to Tom Gilb's "Fail" concept (*098), "the leading edge of a Failure Range"?

If so, what do we do with the other interesting points on Gilb's continuum, reproduced (slightly modified) below?

•••••••[!!!!!!====>____>••••••[!!!!!!====>____>

•• is a catastrophe range.
[ is a lower survival level.
!!!!! is a Failure Range.
==== is an acceptable range.
> is a Goal level.
_____ is a success range.


My view would be that the requirement, if not more fully characterized in some way similar to Gilb's, is for "success", as opposed to the avoidance of "failure" or "catastrophe". It is the latter that Roger's "least stringent condition" suggests (to me).

Of course, I find even Gilb's exposition simplistic, but we have to run before we can walk! For practical purposes, it is useful to reduce the requirement concept to "measurable, valued outcomes". Observing or hypothesizing how much, and how differently, changes to outcomes are valued by diverse stakeholders is a powerful technique for establishing what might constitute success, but it is still one-dimensional. Leaving the whole multi-dimensional trade-off between benefits (including but not limited to avoided costs) to one side, what emerges from such an exploration is (hopefully) agreement about the level of outcomes to pursue. I would call this an objective rather than a requirement but, to me, objectives are a type of requirement.

What, though, of "raw" function? Here it is crucial to be very precise about the context. It is, in practice, always possible to move backwards and forwards along a cause-and-effect chain, dragging the "system boundary" one way or another (hypothetically, at least). Determining the "border zone" is, in my view, a requirements activity. This is what constructing use-cases is all about. The problem, it seems to me, is that use-cases implicitly assume an immovable boundary. The reality is that some boundaries are clearer than others; some more the result of design, some more a matter of policy or practical constraints. Defining a range of required function is key.

In this view, we recognise a distinction between "core" function, the absence of which is unacceptable, and "contingent" function, which must be present in some form in the universe, but not necessarily in the system being specified. Performance characteristics are unavoidable for all function. The valued performance characteristics are what drive the distinction between "core" and "contingent", I think, and, more relevantly, inform the ultimate decision about what "contingent" function is a necessary, desirable, unnecessary or undesirable inclusion in the final system.

Wednesday, May 02, 2007

Effective Requirement Process

I waited a month before replying to a question on one of Tom Gilb's forums. This is only partly because I wanted to avoid doing the student's assignment. The main reason was so that I could canvass opinions on LinkedIn's new(ish) Answers facility. Interesting results from LinkedIn were:

  1. A general distrust of KPIs (Key Performance Indicators)
  2. The absence of any reference to possible KPIs, however flawed or dangerous
  3. A belief in the impossibility of measuring the effectiveness of requirement processes
  4. A fairly low number of responses (7). Is that because it's a hard question or an uninteresting one, I wonder.

I may yet re-open the question with my own thoughts included as clarification. For the moment I must leave a little time for others to comment on my Gilb post.

Thursday, April 12, 2007

Just-inTime Requirement Specification

Slightly edited for formatting, my original post follows...

[quote=achen]...savings from doing requirements right? [/quote]

I think you have to talk about "savings from getting requirements right sooner".

MTalbot is right that the costs of getting things wrong can be incalculable, but only if wrong requirements are actually implemented. It is quite straightforward to talk about the (estimated) cost of fixing a requirement during design, say, versus during acceptance testing. Only rarely, if at all, is it cheaper to fix requirements later rather than sooner.

Averaged statistics are not particularly helpful, however. Some defective requirements can be fixed almost as cheaply at the end of development. And I'm not just referring to "cosmetic" defects. Take, for example, legal caveats or wordings prescribed by statute. If we know early on that these are required but not exactly what is required, we can generally proceed with development at little additional risk while the precise text is hammered out by an army of lawyers, copywriters, focus groups and officials. Often all we really need to do is plan accordingly.

So for every requirement we can repeatedly apply what I call the "so what?" test:

[QUOTE]
This requirement may be wrong, so what?

The answer is often that it probably doesn't matter very much at this stage.

So when will it begin to matter more?
[/QUOTE]

Finalizing a requirement before it begins to matter very much saves you next to nothing. Delaying development while you try to finalize such requirements, on the other hand, can cost a very great deal, both in terms of "burned" resources and delayed, or increased risk of late, implementation.

As a general rule, we do not want to use up valuable elapsed time now unless there is a fair prospect that it will save us more elapsed time in the future. Too often, this debate refers only to cost in terms of (mythical) manhours, overlooking the simplest of critical path analyses. Even if, as is usually the case, getting the requirement right now does cost several times less in terms of effort, this "saving" may be more than outweighed by the costs of an extended critical path.

<<<--post ends

This received some positive feedback. "I think this is actually a really great point. In an SRS, how have you typically handled or called our requirements that you know are incomplete/wrong at the time of writing?"

Now I guess I'll have to come up with an answer!