[comp.software-eng] structure chart help needed

jharkins@sagpd1.UUCP (Jim Harkins) (11/18/89)

I'm trying to use a CASE tool to create structure charts for a project 
being done under the DOD's 2167 spec, and have found a few things that don't
seem to be addressed in either the CASE documentation nor any books I've got.

1.  I had to write some system wide utility routines, in my structure charts
    I use a library module to represent these.  Then I have separate structure
    charts for these utilities.  In the structure charts for the library
    routines should the top module be a library or a regular module?
    Below are (poor) examples of each type of module.

                    ----------          ----------
                    |        |          ||      ||
                    |        |          ||      ||
                    ----------          ----------

                    normal module       library module

2.  Modules on the structure charts have data couples going into/out of them.
    In the text description of a module I have to make a list of it's inputs
    and outputs.  But these may not have the same name, or may not even have
    a name.  For example, one library routine is a specialized malloc
    I call GPM_Malloc.  Below are 3 examples of how it could be called:

    time_buffer = GPM_Malloc(1024 * 31);
    constants = GPM_Malloc(sizeof(constants_type));
    fft_buffer = GPM_Malloc(fft_size);

    So I have 3 different names representing the data returned, and 1 name
    with 2 constants representing data input.  Currently I've decided all
    inputs are GPM_Size_Type and all outputs GPM_Address_Type.  I tried
    using these on the structure charts instead of the actual names but that
    doesn't exactly make it clear what I'm doing.

    I think the problem can be summed up as follows.  I can either name the
    inputs/outputs accurately in the structure chart, which means my inputs
    and outputs don't match those mentioned in the definition of GPM_Malloc.
    Or, I can use names like GPM_Size_Type and GPM_Address_Type, which matches
    the names used in the definition of GPM_Malloc but make the structure
    chart confusing.

3.  My project is divided into tasks, with a structure chart for each different
    task.  Communication between tasks is via queues.  In structure chart A
    it seems I should show message A going to queue A and message B being
    received from queue B.  In chart B I should show message A being received
    from queue A and messages being sent to queue B.  But I've never seen
    a way to show this type of thing in a structure chart.  It seems to me
    this is pretty important information that shouldn't be forgotten or
    overlooked.  So how do I do this?  Come to think of it, I've yet to see
    a way to show queues on structure charts.  The best we've come up with
    are data only modules, which need to be tricked in order to work properly
    in this context.

4.  All the books we have around here seem to stop at the point I'm at.  That
    is, the last chapter says "now that you've analyzed your system and
    created your tasks you need tools to make them work.  This is an
    introduction to structure charts, which is just what the doctor ordered."

    I don't want an introduction, I want a thorough treatment of not only
    what a structure chart is but a good description of how one should look,
    what kinds of modules/couples/etc go where, and the mechanics of
    creating them.  A book that does for structure charts what DeMarco's
    book Structured Analysis and System Specification did for object
    oriented design.  (We used that book to get this far.)

For what it's worth, our CASE tool is CADRE's Teamwork running on a Sun.
But the answers to these questions should be general enough so this won't
matter, nor should it matter what language I'm using (hint AB*DEF...Z).

jim
jharkins@sagpd1

"Congress.  Outside of Zsa Zsa Gabor the most bloated and self indulgent entity
 in the world."

kschnitz@puff.UUCP (Kevin Schnitzius) (12/01/89)

In article <541@sagpd1.UUCP>, jharkins@sagpd1.UUCP (Jim Harkins) writes:
> I'm trying to use a CASE tool to create structure charts for a project 
> being done under the DOD's 2167 spec, and have found a few things that don't
> seem to be addressed in either the CASE documentation nor any books I've got.
> 1.  I had to write some system wide utility routines, in my structure charts
>     I use a library module to represent these.  Then I have separate structure
>     charts for these utilities.  In the structure charts for the library
>     routines should the top module be a library or a regular module?

If it is a library module, it has alread been desgined and implemented for 
ANOTHER system.  All that is needed is the reference to that name and the
particular system and the reader should be able to find out more about the
module.  If you feel it is necessary for clarity to include the library
module in your design, it should be as a regular module (assuming it was 
one the previous system.

> 2.  Modules on the structure charts have data couples going into/out of them.

	[ example of specialized malloc deleted ]

The implemetor who is building your system can choose to use your special 
malloc or not but all that is need is a routine which produces a specific 
object.  This is an implementation detail and NOT a design detail.  There
needs to be enough detail in your design to make the implementor cognizant
of the need of specialize routines when necessary.

>3.  My project is divided into tasks, with a structure chart for each different
>     task.  Communication between tasks is via queues.  In structure chart A
>     it seems I should show message A going to queue A and message B being
>     received from queue B.  In chart B I should show message A being received
>     from queue A and messages being sent to queue B.  But I've never seen
>     a way to show this type of thing in a structure chart.  It seems to me
>     this is pretty important information that shouldn't be forgotten or
>     overlooked.  So how do I do this?  Come to think of it, I've yet to see
>     a way to show queues on structure charts.  The best we've come up with
>     are data only modules, which need to be tricked in order to work properly
>     in this context.

I either show the couple as the whole queue or just an element from the queue.
I have not found a good way to show this.

> 4.  All the books we have around here seem to stop at the point I'm at.
                [...] 
>     I don't want an introduction, I want a thorough treatment of not only
>     what a structure chart is but a good description of how one should look,
>     what kinds of modules/couples/etc go where, and the mechanics of
>     creating them.  A book that does for structure charts what DeMarco's
>     book Structured Analysis and System Specification did for object
>     oriented design.  (We used that book to get this far.)

Personnally, I prefer the Hatley/Pirbhai methodology because I deal with
more realtime problems.  For structure charts, this book recommends:

Page-Jones, Meilir.  The Practical Guide to Structured Systems Design, 2nd
	ed.  Englewood Cliffs, N.J.: Prentice-Hall, 1988.

Yourdon, E. & Constantine, L.  Structured Design: Fundamentals of a Discipline
	of Computer Program and Systems Design.  Englewood Cliffs, N.J.:
	Prentice-Hall, 1975.

Myer, G.  Reliable Software Through Composite Design.  New York: Van Nostrand
	Reinhold, 1975.

> jim
> jharkins@sagpd1
> 
> "Congress. Outside of Zsa Zsa Gabor the most bloated and self indulgent entity
>  in the world."


Good Luck....
-- 
Kevin Schnitzius     (Encore Computer Corporation, Ft. Lauderdale, Florida)
                     (formerly Gould CSD)
************!!!!!!!!! Please ignore the From: line !!!!!!!!!!!*************
Uucp:      {pur-ee,sun,codas!novavax,uunet,mcnc!rti,etc}!gould!kschnitzius
Internet:             encore.com!gould!kschnitzius
                      What a bunch of typing, huh?