This topic is READ ONLY
import-bot (20212) [Avatar] Offline
[Originally posted by diogenes]

Hi, your book is an absolute goldmine of information, especially for students
like myself who have no real knowledge of industry!
I am currently writing my Masters Thesis on the problems presented when trying
to trace requirements to specifications.
What would you say is the biggest problem in actually using traceability and
why don't CASE tools seem to be resolving the problem?
import-bot (20212) [Avatar] Offline
Re: Requirements Traceability
[Originally posted by bkovitz]

Hi, Kev. Glad to hear you're enjoying the book!

Here are some thoughts about traceability.

1. This thought might bring tears to your eyes, if you have a lot
invested in the importance of traceability. In my 16 years or so on
the job, I have never once seen anyone look at or request
information about what traced to what. I once heard a second-hand
story that traceability info was used once (a friend of a friend,
you know), but that's it.

This wiki page has some pretty brutal analysis of this topic:

The biggest problem, I think, is just that keeping track of
traceability info costs a lot of bandwidth for no perceivable

2. Jackson's notion of separating problem domain from interface
(shared) domain seems to me to solve the problem of traceability at
its root. By discovering facts about the problem domain, we often
discover ways to simplify or even eliminate our ideas for
interfaces. By treating the combination of interface design and
descriptive assumptions about the problem domain as propositions
that should deductively prove that requirements are satisfied, we
get satisfaction that the design really addresses what we care
about. And we sidestep the mess that would result if people really
tried to connect every part of the program to all the requirements
that justify its existence.

This message (posted minutes ago!) gives an example of using
problem-domain info to steer clear of designing and implementing an
unnecessary interface (the last full paragraph):

3. One argument for maintaining a traceability matrix is to help
deal with requirements changes. The theory is that some changes
"ripple" throughout the design in complex ways, so you need a sort
of dependency graph to follow the implications. Extreme Programming
has a nice solution to this problem, though: storing requirements as
automated tests. Changing the requirements = changing the tests.
The now-failing tests show you what changes you need to make to the
program. When they pass again, you know the program meets the new

That doesn't help prune code that no longer serves a purpose, but if
the programmers are continuously refactoring, any code that doesn't
help pass a test will sooner or later get deleted.

Hmm, I'm afraid I've mostly talked about tracing requirements to
code, not to specifications. Most folks in industry think of the
specifications as the requirements. It's usually seen as the
customer's job to say what screens they want, what use cases they
want, etc. Any connection from interface specifications to desired
conditions in the problem domain is left to the inside of the
customer's mind and is often not discussed. I believe this is
because specifications serve much better as contracts. Requirements
in Jackson's sense are not necessarily met perfectly even by the
best software design.

CASE tools don't solve the problem of relating the specification to
the (domain) requirements because computer programs are systematic
and brittle. Probing for relevant aspects of the problem domain and
brainstorming for better interface designs really requires human
intelligence and creativity. I'm told, though, that traceability
for purposes of accountability and status tracking (keeping lists of
requirements, who provided them, and whether they've been
implemented and tested) is handled well by programs such as DOORS.
I've never used such a program myself, though.