home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c100 / 1.ddi / SNAV0111.ZIP / METAD.PRN < prev    next >
Encoding:
Text File  |  1990-04-16  |  31.1 KB  |  514 lines

  1. <         the╔══╗╔══╗╔                      ╔
  2.             ║  ╙╢  ╙╢                      ║ █
  3.             ║   ║   ║ ╔═══╗ ╠═ ╔═══╗╔ ╔═══╗║ ╔ ╔═══╗╔ ╔═══╗╔ ╓─╖ ╔═══╗╔ ╔═╗╔═╗╔
  4.             ║   ║   ║ ║   ║ ║  ║   ╙╢ ║   ╙╢ ║ ║   ╙╢ ║   ╙╢ ║╓╜ ║   ╙╢ ║ ╙╢ ╙╢
  5.             ║   ║   ║┌╫───╜ ║ ┌╢    ║┌╢    ║ ║┌╢    ║┌╢    ║ ║║ ┌╢    ║ ║  ║  ║
  6.             ║   ║   ║│║   ╓─╢ │║   ╓╢│║   ╓╢ ║│║   ╓╢│║   ╓╢ ║║ │║   ╓╢ ║  ║  ║
  7.             ╜   ╨   ╙┘╚═══╝ ╚═╛╚═══╝╙┘╚═══╝╙─╨┘╚═══╝╙┘╚═══╝║┌╜╙─┘╚═══╝╙─╜  ╨  ║
  8.                                                       ╓────╫┘                 ║
  9.             ╓─────────────────────────────────────────╚════╝──────────────────╜
  10.             ╙─── architecture
  11.          
  12.             (software foundation)
  13.                              metadiagram progress report #4
  14.                                    - 16.4.90 page 1 -
  15.          
  16.                            ┌───────┐
  17.                  ─────────>│ AVNER │
  18.                  ─────────>│  BEN  │──────> Software Engineering Method
  19.                            └───────┘
  20.                  10 Dov-Hoz st. Tel-Aviv 63416 Israel tel. 972-3-221535
  21.          
  22.          
  23.          
  24.          
  25.          
  26.          
  27.          
  28.          
  29.          
  30.          
  31.          
  32.          
  33.                    ┌─────────────────────────────────────────────────┐
  34.                    │                                                 │
  35.                    │                  METADIAGRAM                    │
  36.                    │               (formerly SHAPES)                 │
  37.                    │    Specification Document Management System     │
  38.                    │                                                 │
  39.                    │              progress report #4                 │
  40.                    │                                                 │
  41.                    └─────────────────────────────────────────────────┘
  42.          
  43.                             Copyright (c) 1990 by Avner Ben
  44.          
  45.          
  46.          
  47.          
  48.          
  49.          
  50.          
  51.                                                 Written by  Avner Ben
  52.                                                             10 Dov-Hoz st.,
  53.                                                             Tel-Aviv 63416,
  54.                                                             Israel,
  55.                                                             16 April 1990.
  56.          
  57.                                           Original written  28.10.88.
  58.                              metadiagram progress report #4
  59.                                    - 16.4.90 page 2 -
  60.          
  61.          EPREFACEF
  62.          E───────────────────────────────────────────────────────────────────────F
  63.          
  64.          I have  given the  name "The  metadiagram Architecture"  to a software
  65.          platform  I  have  been  developing  for  the  last  7 years or so, in
  66.          conjunction with a number of stand-alone documentation and CASE tools,
  67.          mostly, for use in projects in which I have been involved.
  68.          
  69.          The current prototype (number 3) is written in C++.  I believe I  have
  70.          gained enough experience with this sort of application, and have  made
  71.          a thorough enough analysis and design job, to offer a broad  platform,
  72.          for  use  by  other  programmers,  who  wish  to  develop  their   own
  73.          specialized software specification environment.
  74.          
  75.          Currently, I have  released only one  module, "Snav", which  is one of
  76.          about 6 primitives needed as "software foundation".  Snav is aimed  at
  77.          a very low-performance market - character graphics.  While the idea of
  78.          practicing  CASE  with  character  graphics  may  seem  repulsive   to
  79.          sophisticated  heavyweight  users,  the  fact  is that 99% of current
  80.          software  specification  are   completely  textual,  and   incorporate
  81.          character graphic charts of some sort.  And then, I have gained enough
  82.          experience  with  low-cost  personal-computer  based documentation, to
  83.          persuade me that  the real scope  of character graphics  is very large
  84.          indeed, if one is aware of the limitations of the medium, and does not
  85.          push it to what it can't do.
  86.          
  87.          But most important, the use of character graphics as the first  output
  88.          driver, has allowed me to  concentrate on the main issues  - analysing
  89.          the  data  structures  and  processes  involved  with  documenting and
  90.          specifying  software  in  general.    Anyone  with  some experience in
  91.          graphic drivers should  be familiar with  their tendency to  take over
  92.          the design process.   When I am through  with learning the problem,  I
  93.          will disconnect the simplistic  driver used for the  construction job,
  94.          and  replace  it  with  a  shining  pixel-graphics  or  DTP driver, or
  95.          whatever is in vogue with the  hardware community at that time.   I am
  96.          doing all attempts to  make ny design generic  enough, to stand up  to
  97.          it.  Besides, I would like  these products to be inexpensive, and  run
  98.          on any hardware available.
  99.                              metadiagram progress report #4
  100.                                    - 16.4.90 page 3 -
  101.          
  102.          ETHE METADIAGRAM CONCEPTF
  103.          E───────────────────────────────────────────────────────────────────────F
  104.          
  105.          Let us assume that the purpose of software development methodology  is
  106.          to  publish  and  maintain  the  library  of  books, involved with the
  107.          software project.   It should schedule  these documents, censor  their
  108.          contents, regulate their format, correct their syntax, and so on.  For
  109.          further information, refer to my complete Method (available from a BBS
  110.          near you, or on diskette. current version is entitled Bmethd13).
  111.          ┌─────────────────────────────────────────────────────────────────────┐
  112.          │                                                                     │
  113.          │      the essence of            ┌─────────┐                          │
  114.          │     the application ──────────>│ The Art │                          │
  115.          │                                │ of Prog-│─────────> paper          │
  116.          │      recycled paper ──────────>│ ramming │                          │
  117.          │                                └─────────┘                          │
  118.          │                                                                     │
  119.          └─────────────────────────────────────────────────────────────────────┘
  120.          
  121.          Obviously,  metadiagram  belongs  with  those programming environments
  122.          that are  based on  a single  concept.   In metadiagram, everything is
  123.          document,  and  every  document  is  a  diagram.    Let  us  call this
  124.          diagram/document  entity  -  a  "Graphic-Model,  (or  simply "Shape").
  125.          metadiagram   manages   shapes.      It   enables   their   definition
  126.          (metadiagrams),  creating  and  modifying  object occurrences of them,
  127.          (diagrams) and packaging the  combined result (document).   All levels
  128.          are "shapes", all following the very same logic, syntax and esthetics,
  129.          and all managed  by the same  (recursive) software mechanism,  on-line
  130.          real-time, and regardless of the display medium.
  131.                              metadiagram progress report #4
  132.                                    - 16.4.90 page 4 -
  133.          
  134.          EBUSINESS PLANF
  135.          E───────────────────────────────────────────────────────────────────────F
  136.          
  137.          
  138.          This is the "big  plan" behind the metadiagram  project.  This is  the
  139.          kind of system that  I shall have, when  the project is over.   I have
  140.          approached  in two  phases.   In the  first phase,  will be
  141.          marketed a specialized system with a predefined set of graphic models,
  142.          addressing  the  CASE  application,  more  or  less, supporting the my
  143.          Method, (a superstructure which complies with such industry standards
  144.          as  DFD  and  ER).    This  restricted  model  will have the full user
  145.          interface and  support environment,  but will  lack the  "metadiagram"
  146.          facility proper, that is,  a facility for user-define  graphic-models.
  147.          This phase will be written in C++, marketed as C++ source code  (that
  148.          is,  intended  for  professional  programmers),  with the "application
  149.          programs" supplied as demo.
  150.          
  151.          In the second phase, this will be replaced by a dedicated  programming
  152.          language.  The whole system of the previous phase will be rewritten in
  153.          this  language  and  marketed  in  source-code  form, as a specialized
  154.          application.
  155.          
  156.          This  bottom-up  policy  ensures  a  pragmatic,  goal-driven course of
  157.          development, and enables the marketing of some useful product within a
  158.          short term.  The development effort should be covered by revenues from
  159.          the  first  prototype  product,  after  a  relatively  small   initial
  160.          investment.  This policy also  ensures that the design effort  will be
  161.          directed to the metadiagram goal, and will not be misled to  packaging
  162.          considerations, such as sophisticated graphics or hardware technology.
  163.          
  164.          The  first  phase  will  be  gradual,  as  well.  The first commercial
  165.          prototype will be limited to  plain text, with character graphics.   I
  166.          have  made  exhaustive  exercises  with  this  medium,  on   real-life
  167.          projects, and  have demonstrated  that specification  documents may be
  168.          produced to a high degree of presentation quality and analytic  value,
  169.          with this medium, using the  technology that I developed, namely  Snav
  170.          and the other primitives to come.
  171.          
  172.          Only when all principal problems concerning the metadiagram engine are
  173.          solved, using this  generic medium, will  the more sophisticated  (and
  174.          common) interfaces be studied:  pixel-graphics (either stand-alone  or
  175.          within an accepted environment), DTP, sound, etc.
  176.          
  177.          Finally, when all visual interface problems are understood, fixed  and
  178.          integrated  into  the  metadiagram  engine,  will  the whole system be
  179.          redesigned, after  disassembling the  preceding commercial  prototypes
  180.          and analysing their logic.  This will be an entirely new product which
  181.          will probably be slower and more expensive than its predecessors,  and
  182.          will not out date them - the whole three generation product lines  may
  183.          be marketed in parallel,  appealing to different markets,  and fitting
  184.          different budgets.
  185.          
  186.          Obviously, the development period is to be measured in man-years,  and
  187.          calls  for  the  help  of  more  than  one  person,  that  is, myself.
  188.          Entrepreneurs or organizations interested in investing in the project,
  189.          are welcomed to contact at the address in page 1.
  190.                              metadiagram progress report #4
  191.                                    - 16.4.90 page 5 -
  192.          
  193.          ESYNTACTICAL CONCEPTF
  194.          E───────────────────────────────────────────────────────────────────────F
  195.          
  196.          metadiagram  manages  graphic-models,  which  may  be  either  of  the
  197.          following:
  198.          
  199.          * "Documents", pointing to other shapes, each taking a page or more.
  200.            E.g. a software subsystem procedural implementation specification
  201.            document.
  202.          
  203.          * "Shapes" proper. Normally restricted to one printed page.
  204.            E.g. ODD, ER, decision tree, DFD, structured English, EBNF.
  205.          
  206.          * "Primitive" shapes, used as building blocks for page-bound shapes.
  207.            E.g. indented paragraph, box, arc.
  208.          
  209.          Metadiagram is not  naturally fit for  printing continuous text  which
  210.          does not suggest page boundaries.  It is intended for use with formal,
  211.          logically rigorous, precisely  segmented documents, such  as typically
  212.          used by certain  professionals, with software  specification documents
  213.          being the canonical  example.  It  is definitely not  a word processor
  214.          (though  it  may  be  used  as  such,  if  you  can produce a rigorous
  215.          syntactic definition of the graphic-model "text", as you use it).
  216.          
  217.          Each shape is an autonomous  unit, obeying its own internal  logic and
  218.          explicit syntax  rules.   metadiagram does  not supply  any means  for
  219.          cross-reference  between  distinct  shapes.   However, some shapes may
  220.          manage indices to other  page-delimited shapes, and some  shapes, such
  221.          as an index proper, contain nothing  else.  However, it is the  user's
  222.          responsibility  to  select   the  level  to   work  with.     Zooming,
  223.          backtracking  and  continuation  follow  from  metadiagram's recursive
  224.          implementation.  But it must  be stressed that these may  be practiced
  225.          only within the syntax of predefined shapes!
  226.                              metadiagram progress report #4
  227.                                    - 16.4.90 page 6 -
  228.          
  229.          EOBJECT-ORIENTED ARCHITECTUREF
  230.          E───────────────────────────────────────────────────────────────────────F
  231.          
  232.          metadiagram  is  a  restricted  form  of  "Object-Oriented design", as
  233.          reflected by the following definition:
  234.          
  235.          A "graphic-model" is an object, made of all the following elements:
  236.          
  237.          * A fixed-format internal representation.
  238.            We assume this to be implemented in the computer by a  "dynamic data
  239.            structure. For each internal representation occurrence there must be
  240.            exactly one major scanning path, fixed by a predetermined algorithm.
  241.          
  242.          * A finite "editing protocol".
  243.            Methods for creating, modifying and deleting the shape in  whole  or
  244.            part, and navigating within it.
  245.            E.g. add node to tree, locate next node, paste subtree.
  246.          
  247.          * A formal-language for specification.
  248.            This consists of a syntax (top-down single-pass), expressed  by  the
  249.            pair of methods "parser" and "unparser". Any internal representation
  250.            occurrence, however complex, and no matter how conceived, is capable
  251.            of  being  unparsed  and  then  parsed,  retaining  the  same  shape
  252.            occurrence.
  253.          
  254.          * A set of aesthetic conventions for listing, given a specific medium.
  255.            Expressed  by  at  least  one  "lister"  method.  There is no way of
  256.            considering a shape occurrence as a  whole,  without  invoking  some
  257.            lister, however trivial.
  258.            E.g. the shape "decision tree"  may have  both  a  vertical  and  an
  259.            horizontal lister.
  260.          
  261.          * A facility for "walk-through" over  the  above-mentioned  "listing".
  262.            A collection of paths for  traversing  the  internal representation,
  263.            as manifested with the listing,  adding speculations on the content
  264.            of nodes passed.
  265.            E.g. DFD walk-through.
  266.          
  267.          * Zero or more "generators" which,  given  an internal representation
  268.            occurrence, produce either an occurrence of another shape, or plain
  269.            text.
  270.            E.g. decision-tree to EBNF, pseudocode to Pascal, DND to program
  271.            tree.
  272.                              metadiagram progress report #4
  273.          E                     OBJECT-ORIENTED ARCHITECTUREF
  274.                                    - 16.4.90 page 7 -
  275.          
  276.          For example, let us assume a simple shape called "military  notation".
  277.          It may consist of:
  278.          
  279.          * An internal representation, consisting of a recursive dynamic data
  280.            structure, where each element points at:
  281.            * A paragraph of text (possibly, in itself, defined as a shape).
  282.            * The next paragraph in the current level.
  283.            * The first paragraph in a level to be indented under the current.
  284.          
  285.          * A parser, reading a text with embedded directives for:
  286.            * Identifying the beginning and end of paragraphs.
  287.            * Begin-level symbol.
  288.            * End-level symbol.
  289.            * Telling the paragraph's header from the rest of the text.
  290.          
  291.          * A lister, scanning the data structure, producing a text, which:
  292.            * Is block-justified to a predefined line width.
  293.            * Has levels indented appropriately.
  294.            * Has level headers highlighted using a predefined printer
  295.              attribute, and
  296.              preceded by the level number.
  297.                              metadiagram progress report #4
  298.          E                     OBJECT-ORIENTED ARCHITECTUREF
  299.                                    - 16.4.90 page 8 -
  300.          
  301.          Following are three  textual listings made  for one occurrence  of the
  302.          shape "decision tree".
  303.          
  304.          1. horizontal             2. "vertical"          3. table
  305.          
  306.                                          compare          ┌─────────────┬─────┐
  307.                 -1combination-0   -1max-0           │             │ combination │ max │
  308.                                        ┌────┴─────┐       ├──────┬──────┼─────┤
  309.                      ┌─a>=c──>a        │          │       │      │ a>=c │ a   │
  310.               ┌─a>=b─┤               a>=b        a<b      │ a>=b ├──────┼─────┤
  311.               │      └─a<c───>c        │          │       │      │ a<c  │ c   │
  312.          com──┤                      ┌─┴──┐     ┌─┴──┐    ├──────┼──────┼─────┤
  313.          pare │      ┌─b>=c──>b      │    │     │    │    │      │ b>=c │ b   │
  314.               └─a<b──┤             a>=c  a<c  b>=c  b<c   │ a<b  ├──────┼─────┤
  315.                      └─b<c───>c      │    │     │    │    │      │ b<c  │ c   │
  316.                                      V    V     V    V    └──────┴──────┴─────┘
  317.                                 -1max-0: a    c     b    c
  318.          
  319.          Here  is  a  scenario  for  a  "walk-through"  on  the shape above:
  320.          ┌─────────────────────────────────────────────────────────────────────┐
  321.          │ How do  we find  the biggest  of three  numbers?   Let us call the  │
  322.          │ first "a", the second "b" and the third "c".  First, we compare  a  │
  323.          │ with b. There  are two possibilities:   either a  is ge b,  or the  │
  324.          │ contrary (a lt b).  Let us take the first branch (a ge b).   There  │
  325.          │ are two possibilities, each leading to a unique solution:  when  a  │
  326.          │ is ge b, a is the biggest.  When a is lt c, c is the biggest.   So  │
  327.          │ far for  the first  branch.   Now, let  us take  the other branch.  │
  328.          │ There are two  possibilities in here  too.  When  b is ge  c, b is  │
  329.          │ biggest.  But when b is lt c, c is biggest.                         │
  330.          └─────────────────────────────────────────────────────────────────────┘
  331.                              metadiagram progress report #4
  332.          E                     OBJECT-ORIENTED ARCHITECTUREF
  333.                                    - 16.4.90 page 9 -
  334.          
  335.          Here is an example source code for a shape of Decision_Tree:
  336.          ┌─────────────────────────────────────────────────────────────────────┐
  337.          │                                                                     │
  338.          │   -\:                                                               │
  339.          │     a>=b\:                                                          │
  340.          │       a>=c                                    \!a                   │
  341.          │       a<c                                     \!c                   │
  342.          │     \.                                                              │
  343.          │     a<b\:                                                           │
  344.          │       b>=c                                    \!b                   │
  345.          │       b<c                                     \!c                   │
  346.          │     \.                                                              │
  347.          │   \.                                                                │
  348.          │   \"                                                                │
  349.          │     \"                                                              │
  350.          │       \"                                                            │
  351.          │         \"max                                                       │
  352.          │                                                                     │
  353.          └─────────────────────────────────────────────────────────────────────┘
  354.          
  355.          Semigraphic listing produced for the above:
  356.          ┌─────────────────────────────────────────────────────────────────────┐
  357.          │                                                                     │
  358.          │                    max                                              │
  359.          │                                                                     │
  360.          │           ┌─a>=c──>a                                                │
  361.          │    ┌─a>=b─┤                                                         │
  362.          │    │      └─a<c───>c                                                │
  363.          │   ─┤                                                                │
  364.          │    │      ┌─b>=c──>b                                                │
  365.          │    └─a<b──┤                                                         │
  366.          │           └─b<c───>c                                                │
  367.          │                                                                     │
  368.          └─────────────────────────────────────────────────────────────────────┘
  369.                              metadiagram progress report #4
  370.          E                     OBJECT-ORIENTED ARCHITECTUREF
  371.                                    - 16.4.90 page 10 -
  372.          
  373.          The tree above, after the following tree editor commands:
  374.            root
  375.            goto next
  376.            goto next
  377.            rename a>c
  378.            insert down a=c
  379.            insert next a
  380.            down 2
  381.            rename b>c
  382.            insert down b=c
  383.            insert next b
  384.          ┌─────────────────────────────────────────────────────────────────────┐
  385.          │                                                                     │
  386.          │                    max                                              │
  387.          │                                                                     │
  388.          │           ┌─a>c──>a                                                 │
  389.          │           │                                                         │
  390.          │    ┌─a>=b─┼─a=c──>a                                                 │
  391.          │    │      │                                                         │
  392.          │    │      └─a<c──>c                                                 │
  393.          │   ─┤                                                                │
  394.          │    │      ┌─b>c──>b                                                 │
  395.          │    │      │                                                         │
  396.          │    └─a<b──┼─b=c──>b                                                 │
  397.          │           │                                                         │
  398.          │           └─b<c──>c                                                 │
  399.          │                                                                     │
  400.          └─────────────────────────────────────────────────────────────────────┘
  401.          Source text unparsed from the edited tree.
  402.          ┌─────────────────────────────────────────────────────────────────────┐
  403.          │                                                                     │
  404.          │   -\:                                                               │
  405.          │     a>=b\:                                                          │
  406.          │       a>c                                     \!a                   │
  407.          │       a=c                                     \!a                   │
  408.          │       a<c                                     \!c                   │
  409.          │     \.                                                              │
  410.          │     a<b\:                                                           │
  411.          │       b>c                                     \!b                   │
  412.          │       b=c                                     \!b                   │
  413.          │       b<c                                     \!c                   │
  414.          │     \.                                                              │
  415.          │   \.                                                                │
  416.          │   \"                                                                │
  417.          │     \"                                                              │
  418.          │       \"                                                            │
  419.          │         \"max                                                       │
  420.          │                                                                     │
  421.          └─────────────────────────────────────────────────────────────────────┘
  422.                              metadiagram progress report #4
  423.                                    - 16.4.90 page 11 -
  424.          
  425.          EPROCEDURAL ARCHITECTUREF
  426.          E───────────────────────────────────────────────────────────────────────F
  427.          
  428.          The first generation metadiagram product will include:
  429.          
  430.          * System shell, including stream i/o, parsing and full-screen editing
  431.            facility.
  432.          
  433.          * Textual listing facility.
  434.          
  435.          * Textual WYSIWYG editor.
  436.          
  437.          * Textual ("ANSI animation) walk-through facility.
  438.          
  439.          * A standard shape library allowing to use it the for CASE
  440.            application, complying with my Method.
  441.          
  442.          The  "Textual"  medium  assumed  by  the  first generation metadiagram
  443.          product  is  character  oriented  graphics (non-proprtionally spaced),
  444.          using the 255 characters of  the IBM PC extended ASCII  character set.
  445.          This character set  is to be  adopted by the  user to the  appropriate
  446.          machine's "newcode",  where available.   Only  three visual attributes
  447.          are used:  boldface, underline and (console only) low-video.
  448.          
  449.          It will be implemented using the various software package  primitives,
  450.          such  as  "SNAV",  written  by  me  in  the  C++ programming language.
  451.          metadiagram will be written in C++, to ensure both portability on  all
  452.          C  and  UNIX  speaking  machines,  and  the  utilization of full-scale
  453.          object-oriented programming, without loosing efficiency of execution.
  454.                              metadiagram progress report #4
  455.                                    - 16.4.90 page 12 -
  456.          
  457.          ETHE METADIAGRAM ARCHITECTURE - OVERALL VIEWF
  458.          E───────────────────────────────────────────────────────────────────────F
  459.          
  460.          In the heart of metadiagram are so many shape objects.  Each shape has
  461.          a formal language for specification, supported by a parser for  input,
  462.          and unparser for output.  The parser reads a sequential file and  adds
  463.          elements to  the shape  data structure.   The  Unparser reads elements
  464.          from  the  data  structure  and  adds  the  appropriate  clauses  to a
  465.          sequential file.
  466.          
  467.          Any shape has one or more listers. the lister reads elements from  the
  468.          data structure and outputs a stream  of text.  This is intercepted  by
  469.          the lister of  the primitive shape  "text".  It  produces a sequential
  470.          file, and  supplies raw  text-editting services,  such as  translating
  471.          "TypeWriter Graphics" to semigraphics, and highlighting.
  472.          
  473.          The textual editor facility reads the shape's listing and displays the
  474.          relevant "page". cursor is placed on the current element, telling  its
  475.          position from the address left there  by the lister.  The editor  then
  476.          receives  commands  from  the  user  and  translates  them  to   shape
  477.          operations, sent to the appropriate shape  method.  At the end of  the
  478.          editing session, the unparser may be called to save the shape on disk.
  479.          ┌─────────────────────────────────────────────────────────────────────┐
  480.          │                                                                     │
  481.          │                    [SHAPE] SOURCE TEXT                              │
  482.          │                   ─────────────────────                             │
  483.          │                           │    ^                                    │
  484.          │                    clause │    │ clause                             │
  485.          │  ┌──── 1 ────┐       read │    │ written    ┌──── 2 ────┐           │
  486.          │  │  [shape]  │<───────────┘    └────────────│  [shape]  │           │
  487.          │  │  Parser   │                              │ Unparser  │           │
  488.          │  │           │────┐ clause     element ┌───>│           │           │
  489.          │  └───────────┘    │ added     unparsed │    └───────────┘           │
  490.          │                   V                    │                            │
  491.          │                  ************************                           │
  492.          │                      THE [SHAPE] OBJECT                             │
  493.          │                  ************************                           │
  494.          │                   │         ^   │   ^                               │
  495.          │  ┌──── 3 ────┐    │ element │   │   │ oper- ┌──── 5 ────┐    User   │
  496.          │  │  Generic  │    │ to      │   │   │ ation │  Generic  │<───Cmd    │
  497.          │  │  [shape]  │<───┘ list    │   │   └───────│ Editor &  │           │
  498.          │  │  Lister   │──────────────┘   └──────────>│ Walkthru  │───>list   │
  499.          │  └───────────┘  pos listed       pos cursor └───────────┘    page   │
  500.          │    │      │                                       ^                 │
  501.          │    │      │                                       │                 │
  502.          │    │      │ disp.line ┌──── 4 ────┐ disp.         │                 │
  503.          │    │      └──────────>│  Generic  │ line  ──────────────────        │
  504.          │    │  text directive  │   Text    │──────> [SHAPE] PRINTOUT         │
  505.          │    └─────────────────>│  Lister   │       ──────────────────        │
  506.          │                       └───────────┘                                 │
  507.          │                                                                     │
  508.          └─────────────────────────────────────────────────────────────────────┘
  509.          
  510.          An ANSI animation walk-through for  the above DFD is available  in the
  511.          file "lecture.bat", in the Method pack.
  512.          
  513.          <EOF>
  514.