Overall Approach and Purpose:

The objective of the approach described herein is to establish the "preference
structure" for a hypothetical "consensus client."  Ie, to establish a
hierarchy that describes the likes and dislikes of a representative or
average user of the system to be designed.  This heirarchy is probably not
optimal for any single client, but is acceptable to all interviewed.  A
hierarchy is established both for the *performance* demanded of the system,
and for the *cost* the user is willing to pay in order to achieve that
performance.  Weights will be assigned to each of the nodes in the hierarchy
to indicate their relative importance to the client in his acceptance of the
system as "successful."  Ultimately, this hierarchy can be entered into a
spreadsheet, and a single number can be computed describing performance of
the candidate system, with an associated one describing its cost.  Since
performance and cost are often competing objectives, it is necessary to
state beforehand how they will be traded off.  This permits a *single number*
to be generated to describe the system, such that higher is better -- giving
us an objective method to judge one candidate solution against another.
If this sounds too good to be true, the reader should realize that *assigning
the weights* is *subjective*.  It is their use, once assigned, that is
objective.  However, this approach does provide a repeatable way, using
*measurements* to select one system instead of another.  Perhaps more
importantly, it provides a way to document *why* the system was chosen
instead of the others.  And perhaps *most importantly*, it provides a way
to perform sentivity analysis which can be used to *tweak the design*,
potentially offering synthesis of even better solutions (designs) than
those originally proposed.

  Users and System Requirements:
System requirements are stated by potential *users* of the system.  A user
is defined to be anyone who has the right or the responsibility to impose
requirements on the system to be designed.  Users include those paying for
the system, those using it, those building and designing it, those
maintaining it, and the potential beneficiaries and victims of it.  A
requirement must be capable of being *measured* relative to the degree
to which it is, or is not, met.  Otherwise, it really is not a requirement!
Requirements may have thresholds.  If a requirement's measurement is above
(or below) its threshold, the system is rejected as unacceptable.  In effect
the existance of the threshold states that the requirement is mandatory at
at least the prescribed level.  Requirements are stated *functionally*; ie,
they describe what the system must *do*, without regard to the technology
that will be used to do it.  This approach is necessary because specifying
technologies to be used limits the potential solutions that may be employed
to solve the problem!  Experience has shown that for technical persons this
is amazingly difficult, but amazingly possible to accomplish.  The only place
it is permissible to discuss *technology used to solve the problem* is in
reference to the technology the system to be designed must interface with.
That implies a limitation on potentially acceptable solutions that will be
imposed on the eventual "winner" regardless of how open the design is kept.

  System Performance and Cost Hierarchies:
The performance and cost requirements are arranged into performance and
cost hierarchies.  At the top of the performance hierarchy is the system's
"top level system function" (TLSF).  The TLSF is the system's reason to exist,
it's purpose in life, or why it is being created.  The TLSF is decomposed
into major system functions, which are themselves typically too broad to be
met.  Each of these is composed until the resulting requirements become
simple enough to be met.  This forms a hierarchy or tree, with the "leaves"
(extremities) of the tree being directly achievable, and how well each is
achieved is directly measureable.  Ultimately the leaves are the requirements
of the system.  In the example below, you would specify how you would measure
"starts and runs dependably."  If you cannot measure it, it must be either
decomposed into things that you can measure, or dropped from the list of
requirements.  Requirements are things that would cause you to select one
system over another, all other things being equal.

  A Trivial Cost and Performance Hierarchy Example:

TLSF: Provide Transportation for the Meyer Family
       |-- Get Chuck to Work
       |    |-- Starts and Runs Dependably
       |    |-- Small enough to Park in the Lot
       |-- Get Andy to School
       |-- Get Virginia to the Grocery Store
       |-- Get the family to Church
       |    |-- Adequate passenger space
       |-- Transport the family on Vacation
            |-- Adequate passenger space
            |-- Adequate luggage space

      Provide Transportation at the Lowest Cost
       |-- Initial Cost
       |-- Maintenance
       |-- Fuel
       |-- Comfort
       |    |-- Air Conditioning
       |    |-- Comfortable Seats
       |-- Ease of Operation
            |-- Automatic Transmission
            |-- Power Steering & Brakes

  Assigning Requirement Weights:
Let's use the example above to discuss assigning weights to my performance
requirements.  If Chuck doesn't get to work the family has no income.  That
one should get a relatively high weight!  Andy can ride the bus to school,
he'd just prefer not to.  There are three grocery stores within two blocks
of home.  While Virginia's requirement is a little more urgent than Andy's,
not meeting it every time still does not have extremely dire consequences.
The family is devoutly religious and will get to Church if at all possible;
however, the church is five blocks away, and they can walk occassionally if
necessary.  It is pretty important to the family that they be able to take
vactions, but that is only two weeks out of the year, and they are pretty
flexible about the time.  So, a reasonable assignment of weights might be:
Chuck's work 50%, Church 20%, Grocery Store 15%, Andy 10%, Family Vacation 5%.
Note that the weights were assigned by Chuck using his estimate of the
family's overall longterm satisfaction with their transportation, if the
various needs were *not* met.  It is entirely possible, even likely, that
Virginia and Andy would assign somewhat different weights.  Ultimately the
desired result is a set of weights that all three agree they can live with.

  Providing Normalized Scores for the Requirements:
In the above trees, if I have weights assigned to each of the nodes
(requirements), and can provide a score describing how each requirement
is met, I can roll them up into a single number describing the suitablity
of the system's performance, and the cost required to achieve it.  The
scores all need to be "more is better", so a higher overall score means
a more desirable system, but they also need to be normalized so we can
compare "number (or percent) of failures to start" with things like
"parking lot footprint", "number of people seated", and "cubic feet of
luggage space."  A way to normalize scores is through use of *scoring
functions*.  A scoring function simply provides a way to project a measurement
onto a linear scale, typically from zero to 100.  Scoring functions can
be linear, such that any measurement below 10 is worth nothing, and anything
above 90 is worth 90, and for the values in between twice as much is
twice as good (40 is twice as good as 20).  More typically they are
S-shaped assymptotic curves.  Scores can be "more is better" (typical of
performance) or the reverse "less is better" (typical of cost).  Scoring
functions can also be step functions.

  Some Subtleties and Related Thoughts:
Things that appear to be performance requirements are often actually
cost requirements.  For example, a requirement for 25 miles per gallon
may initially seem to be a performance requirement because the better
the system performs, the better the fuel economy will be.  In reality
it is a cost requirement because it implies that the fuel cost will
be held below a certain level.  It is not as important to determine
exactly where the requirement should be included, as to ensure that it
is included.

Some things that seem not to be measurable may actually be.  If the
potential requirement seems to be something that would influence one
solution over another, all other things being equal, it should be
included.  Some obsure things can actually be "measured" by the
responses received on a user survey.  It is not important that the
user be able to take a measurement to give his response, but that
you be able to measure his response.  So questions like, "On a scale
of zero to 100, where would you rate this system's ease of use?"
actually provide a number (measurement) of the client's subjective
feeling about ease of use.