Structured Analysis

Murray Newcomb argus1 at ssc-bee.UUCP
Tue Jan 29 02:57:23 AEST 1985


This is for the line eater.


This is the first of five articles on a automated structure analysis
and design tool used inside of Boeing.  This is being provided
because of the high response on a earlier query to the various UNIX
networks for the formation of a SIG on automated program development.

This article is taken from a newsletter internal to Boeing (and selected 
companies) which was published in July 84 to clarify the analysis
(structure chart) phase of this UNIX based (sys III, V, BSD4.2) VAX,
onyx and zilog system (plus others).

Short Discussion of the Analysis of Structure Charts

A new system for the analysis of structure charts has been added
to the system.  It is similar to the existing dataflow diagram
analysis, specification, and reporting system, but there are a number 
of notable differences which will be discussed in this document.

The dataflow diagram system is used in the functional specification phase
of the design of a new system to describe the flow of data between components.
Dataflow diagrams and the associated specifiction sheets and data dictionary,
as provided by this system, provide an excellent way to capture high-level
abstractions and to analyze their functional decomposition.

The structure chart system provides a nuts and bolts decomposition
of program modules.  Whereas dataflow diagrams are extremely abstract,
structure charts are extremely concrete and can be fruitfully used
in the detailed design phase prior to the construction of pdl and code.
Structure charts provide a graphical means to capture input and 
output parameters of program modules, to show the order of execution
and hierarchical decomposition of program modules.  A sample
structure chart is composed below:

                         +------------+
                         |SCAN        |
                         |STRUCTURE   |
                         |CHART       |
                         +------------+
                               |
  +--------------O-------------O----O---------------------+
  |[INPUT_PARS,  |[VED_DGRM,   |    |[BUFFER,             |[<DIAGRAM_STRUCTURE>,
  |{CTRL_FLAGS}, |<BUFFER>,    |    |{DIAGRAM_STRUCTURE}, |{ERRORS}]
  |{ERRORS}]     |{ERRORS}]    |    |{ERRORS}]            | 
  |              |             |    |                     |
  v              v             |    v                     v
+------------+  +------------+ | +------------+       +------------+
|ANALYZE     |  |READ        | | |DECOMPOSE   |       |ANALYZE     |
|EXECUTION   |  |DIAGRAM     | | |DIAGRAM INTO|       |DIAGRAM     |
|PARAMETERS  |  |INTO BUFFER | | |COMPONENTS  |       |COMPONENTS  |
+------------+  +------------+ | +------------+       +------------+
                               |
                               |
                               |[DIAGRAM_STRUCTURES, {RELATIONS},
                               |{ERRORS}]
                               |
                               v
                        +------------+
                        |CREATE      |
                        |RELATIONS   |
                        |            |
                        +------------+

In this diagram, SCAN_STRUCTURE_CHART is the main program, and all the
module boxes below it attached by arrows are invoked in left-to-right
top-down order.  The parameters that are shown are all formal parameters
of the individual modules.  Actual parameters are not shown, neither
are the values that the parameters may assume.  The rules for the attachment
of formal parameters to arrows are the same as the rules for the attachment
of dataflow labels to dataflow arrows, and are discussed in the scanner
document in the system user's guide.  The rules for formal parameter
specification are quite simple.  Formal parameters will appear in the module
specification sheet in the same order that they appear on the diagram.  All
parameters are enclosed by the square brackets [ and ].  Anything appearing
inside [ and ] are input parameters unless otherwise marked.  Curley braces
{ and } around a parameter will make the parameter into an output only
parameter.  Angular braces, < and >, around a parameter will make the parameter
into an input or output parameter.  Parameters are separated by commas and
spaces.  You must reuse the angular and curley braces for each parameter in
the formal parameter specification of a module.

The power of the system for the creation of detailed design is revealed when
the module and element specification sheets are edited after the structure
chart is scanned or edited and rescanned.  There the graphical representation
of the diagram is captured in a relational database.  The formal parameters
appear in the order specified on the diagram, and the individual parameters
appear with the input-output attributes specified on the diagram.  The modules
called by the module appear in the order they are called.  The stores appear
in the order and with the parameters with which they are read and written. 
Parameters can be edited as individual elements.  A wealth of descriptive
detail can be added to the detailed design.

The question is often asked, "How do structure charts and dataflow diagrams 
relate to each other?"  In the software life cycle, the functional
specification of a system is accomplished by means of a dataflow diagram
description of the system.  The detailed design of the individual modules
of the system is accomplished with the structure chart system.  There is
no rigid mapping between the processes and the modules; however, the
elements which appear on structure charts are the same elements into which
data flows decompose!

It would really help if you would include your name, telephone (area
code - last time a person forgot) and address.  Its hard to form
a SIG without members.  Any ideas.  

Murray S. Newcomb (206)-763-5138 Analyst Boeing Computer Services
P.O.Box 24346, MS 7A-04 Seattle, Washington 98124 
 



More information about the Comp.unix mailing list