The Purpose of this Page
This
page gives a glimpse of a requirements
specification software application that I have been doggedly pursuing
since the late twentieth century—and which has now reached an advanced stage of development. Its emphasis is squarely on improving the specifying of requirements; it is not concerned with managing requirements, which is well handled by existing applications. The purpose of this page is to spark
interest from any company that might benefit from acquiring the rights to this
software—especially
vendors of requirements management products who wish to offer serious, rich
requirements specification functionality.
Origins
Once
upon a time a start-up company needed a system to drive its new
business venture. Its development team specified the system's
requirements and was putting the final touches to a hundred detailed
use cases when the boss gave the green light and demanded that the
business start operating at the earliest possible date—which an
all-hands-to-the-pump crash effort achieved in a miraculous five
weeks (albeit with a morass of cobbled-together spreadsheets and manual
processes). The requirements and use cases were cast to one side,
because they were not in a form that could readily be acted upon. I was
part of that development team and I felt this was a shame and a waste—that it must
be possible to do better. This led me to reflect on the ways that the
right software could assist the requirements process and then exploit the
requirements once they're written. I made some observations:
Observation 1.
|
The only thing you can do with textual requirements is to read them. That's tediously time-consuming and liable to human error. Further, when
you lay out a piece of text, those pieces with special formatting tend to
reflect the items with special meaning. If we could mark up its meaning
instead, we'd be a long way towards making it machine-understandable—to be able to extract meaning in ways other than a human being reading it. |
Observation 2.
|
Almost all systems are implemented in multiple phases—which
means that some requirements remain unsatisfied until the final phase
(and the bulk of requirements often aren't satisfied in the first phase).
How is a business to manage with a system that doesn't yet do all it
needs to? A software application that understands the requirements to
some degree is in a position to plug some of the gaps. And the more
gaps that can be filled in this way, the quicker an acceptable initial
system can be deployed.
|
Observation 3.
|
A requirements specification application must itself possess many features that almost every software system needs—awareness of users, access control, database
support, maintenance and inquiry functions, considerable configurability, a rich user interface ... the
list goes on. Such an application is well placed to make these features
available for use in the initial implementation of a system—to plug the kind of gaps mentioned in Observation 2. (However, I always sensed that to achieve this, these features would need to be developed in the right way in the first place—that they would be hard to retro-fit later.)
|
These observations are on top of the factors that determine the best way to frame requirements themselves—such as the importance of the first audience for requirements, the customer, being able to understand them. That means writing in the customer's language, free of obscure technical notations, which usually means that requirements must be expressed textually, with judicious use of diagrams whenever they'll help. But I won't cloud this page with a discussion of that subject.
Since
no product on the market remotely did what I wanted, I embarked upon
developing my own. (They say that the reasonable person adapts themself
to the world, and the unreasonable person attempts to adapt the world
to themself—so all progress is made by the unreasonable person. In this sense I'm proudly unreasonable.)