Deal of the Day

Home » Main » Manning Forums » 1998 » Practical Software Requirements

Thread: Problem Framing

Reply to this Thread Reply to this Thread Search Forum Search Forum Back to Thread List Back to Thread List

Permlink Replies: 1 - Pages: 1 - Last Post: Oct 17, 1999 11:00 PM by: import-bot Threads: [ Previous | Next ]
import-bot

Posts: 20,296
Registered: 12/6/03
Problem Framing
Posted: Sep 30, 1999 11:00 PM
  Click to reply to this thread Reply

[Originally posted by shawnc]

Dear Ben

I now have quite a dogged-eared copy of PSR and I'm thoroughly enjoying it.
I'm still not totally clear, however, about problems frames. The problem I'm
addressing goes like this:

My organisation is responsible for regulating the radio frequency spectrum in
Australia. We issue licences to organisations to use spectrum space. Spectrum
space is 3 dimensional - area, and frequency bandwidth. We need to know who
has what licence, be able to charge for these licences on an annual basis but
probably more importantly we need to know what space is available for future
sales. Our aim is to increase competition and increase the effective use of
spectrum space.

I know I have an information problem and there is a connection problem in
terms of users entering the information about the frequencies and areas. But
do I have a workpiece problem in the sense that spectrum space is created in
the system and we manage these spaces inside the system?

I would welcome your thoughts and would greatly appreciate it if you can give
me an idea of what the frame diagram would look like I.

Regards

Shawn Callahan


import-bot

Posts: 20,296
Registered: 12/6/03
Re: Problem Framing
Posted: Oct 17, 1999 11:00 PM   in response to: import-bot in response to: import-bot
  Click to reply to this thread Reply

[Originally posted by bkovitz]

Shawn Callahan wrote:

> My organisation is responsible for regulating the radio frequency
> spectrum in Australia. We issue licences to organisations to use
> spectrum space. Spectrum space is 3 dimensional - area, and
> frequency bandwidth. We need to know who has what licence, be
> able to charge for these licences on an annual basis but probably
> more importantly we need to know what space is available for
> future sales. Our aim is to increase competition and increase
> the effective use of spectrum space.
>
> I know I have an information problem and there is a connection
> problem in terms of users entering the information about the
> frequencies and areas. But do I have a workpiece problem in the
> sense that spectrum space is created in the system and we manage
> these spaces inside the system?

Sounds like you've pegged it! Regarding the question of whether
"ownership of spectrum space" is a realized domain, here's the
question I'd ask if I were doing the analysis: do you want the
system to *decide* which parts of the spectrum space to grant to
new applicants, or do you want the system only to *inform* people
of which parts of the spectrum space are available?

An analogous example is a scheduler for conference rooms. The
main responsibility of the scheduler is to *decide* who can have
which room and when, according to certain rules, like "first
come, first served." The table of who has what room at what
times is a purely conceptual construction, which the system has
to embody within itself--hence, in a realized domain, not a
domain that the system has to connect to.

BTW, I think that whenever classification is difficult, it's
probably unimportant. The only reason for classifying things
under one category or another is because we want to take
different actions depending on the facts that lead to one
classification for another. If we have all the facts, and we
know what to do, but we're still not sure which category is
appropriate, then the distinctions made by that system of
categories probably aren't of much consequence in that situation.

For purposes of requirements engineering, the important
difference that I think different problem types relate to is that
they lead you to ask different questions. That's all I'm
shooting for: to help people ask some good questions. As long as
you ask the questions whose answers will enable you to define a
really useful system, then it doesn't matter how you classify a
given problem.


So, with that in mind, here are some thoughts on good questions
to ask, which relate to the question of whether the
spectrum-allocation domain is internal to the system (as in a
workpiece-like problem) or external to the system (as in an
information problem).

If the responsibility of the system is to make decisions about
which segments of the spectrum space to grant to new applicants,
then you have two questions to ask next. (1) What are the rules
according to which the system should make these decisions? (2)
What types of acts do you want people to be able to do with the
system, that would feed into those rules? A likely such act is
"Request a segment of spectrum space." A simple rule might be,
"Whoever first submitted a valid request for a given segment gets
that segment." (Another such act might be, "Request to override
an allocation." And the corresponding rule might be, "Only a
member of the communications commission may override an
allocation.")

The route of "the system makes the decisions" implies that the
acts that you define must have some legally recognized
significance: people must agree that they will be bound by the
rules that you define. That is, people must agree that whatever
interface behavior you invent to implement "request computer to
grant segment of spectrum space" will have legally binding
consequences (as defined by the spectrum-allocation rules).
(Making a bid on eBay is an example of one of these acts with
legally binding consequences.)

On the other hand, if the responsibility for making these
decisions is something you want to leave with the government, the
system's job might only be to inform users of current and
proposed allocations of the spectrum. In this case, there are
different questions to ask. (1) What are all the events that
change the allocation of spectrum space? (2) How can the system
find out when these events occur, along with all the pertinent
information associated with them? If the people who make the
allocation decisions are known to always or usually follow
certain rules, that's good information to gather, too, since you
can exploit that to detect data-entry errors.

A third alternative is that perhaps you don't want to give the
system the responsibility for making the decisions about what
spectrum space to grant to whom, but you want the system to serve
as an aid to the people who do make those decisions. People
could type a request into the system, and the system could
propose a possible way to satisfy the request, or perhaps let a
user view a variety of "what-if" scenarios. In this case, you
have a classic workpiece problem: the spectrum-space domain is
purely fictitious, embodied only in the computer. The software
provides a set of operations that users can perform on this
fictitious world in order to see the results.

You could also call this a sort of transformation problem, in
that the system's job is to perform calculations on data entered
by the user. Indeed small transformation problems are a
subproblem of almost every software problem. But notice that the
main questions to ask are, "What fictitious entities do you want
me to create in the computer, and what operations and/or
calculations would you like to be able to perform on them?"

Thinking of the problem as "Build me a little computerized
blackboard for exploring consequences of possible ways to satisfy
requests for spectrum space" seems to lead to all sorts of
fruitful questions. Eventually, you should wind up with answers
of a sort that you can give to a programmer, tester, and UI
designer to implement, like "An allocation has attributes X, Y,
and Z. The possible values of X are..." That's when the
requirements are really done.


BTW, for a long time now, I've been trying to come up with a
really good *first* question to ask during analysis--a question
that you can ask even before you know anything about the problem
domain. I think I've got it: "What benefit do you want to make
the software responsible for achieving?" That seems to get the
customer focused on the most important effects to be achieved in
the problem domain--informing people of something, making things
happening according to certain rules, providing the results of
certain calculations, etc.

Once you've got that main problem identified, then you can start
addressing all the subproblems involved in bringing it about,
like what services the data-entry subsystem will need to provide,
how to address the inevitable errors that will occur during data
entry, what existing systems provide what existing information,
how the system should behave during those inevitable times when
the legacy systems go down, etc.

How would your customer answer this question? "We want to see
the consequences of different ways of satisfying a request for
spectrum space before we commit to a decision"? "We want
allocation of spectrum space to be automated, so that people can
request it and be granted it without human intervention"? "We
want to make a map of allocated spectrum space available to
people via the web, and to update it as allocations change?" "We
want to billing for spectrum space to occur automatically"?
Naturally, the answer isn't limited to any of these, nor even to
just one of these.

BK


P.S. Sorry to take so long to reply. These last couple weeks
I've mostly been out of town and/or furiously busy on a project.


Legend
Gold: 300 + pts
Silver: 100 - 299 pts
Bronze: 25 - 99 pts
Manning Author
Manning Staff