comp.lang.ada
 help / color / mirror / Atom feed
From: vestal@src.honeywell.com (Steve Vestal)
Subject: Automatic code generation (was ARIANE-5 Failure (DC-X works))
Date: 1996/06/12
Date: 1996-06-12T00:00:00+00:00	[thread overview]
Message-ID: <4pn266$p7i@moon.htc.honeywell.com> (raw)
In-Reply-To: 4pd540$rl2@Starbase.NeoSoft.COM


MATRIXx is one of a number of toolsets that allow feed-back control
engineers to specify both control algorithms and models of physical systems
in what some call a domain-specific language (MATLAB, BEACON, ACSL, and our
own ControlH are other examples).  Such languages are used to model plants
(e.g. aircraft) as well as specify control algorithms.  The tools typically
support simulation and mathematical analysis as well as automatic
generation of code.  I think computer scientists would catalog them as data
flow languages, although they have a precise semantics based on dynamical
systems theory (the meaning of a specification is a system of differential
or difference equations, at least until the control engineer starts
throwing in discrete event or procedural constructs :-)

There are several reasons why we think the nature of the code produced by
such tools is a consideration, and we favor generation of well-structured
code where there is good traceability between specification and code (a
principle we try to follow in our tools):

  - Some bugs first manifest themselves at the "object" code level.  For
    example, on several occasions I have been given a specification that
    was debugged in simulation (using C code generation), flipped the
    translator switch to generate Ada code for a real-time target, and
    discovered the algorithm was dividing by zero (something C seems to
    allow and Ada seems to think objectionable).  It is helpful to be able to
    read the generated code and trace bugs found at that level back to the
    originating constructs in the control specification.

  - Safety-critical software requires various certification steps,
    typically including unit testing that achieves full path coverage
    (according to a particular definition of path) on the target hardware.
    It is helpful if the generated code is broken into units as that term is
    used by the software testers, and it is helpful if localized changes in
    the control specification cause only a few units to be re-generated and
    re-unit-tested.

  - There are other kinds of domain-specific languages and generators used
    by other kinds of engineers for other purposes, e.g. generators of
    display management code.  A complex system (such as an avionics system)
    consists of many kinds of functions, only some of which are candidates
    for automatic generation from feed-back control specifications.  In
    general, automatically generated code produced by various tools will
    need to be integrated with each other, with hand-written modules, and
    with modules re-engineered/re-used from previous systems. (Software and
    (computer) systems analysis and integration is a problem area in its
    own right, we have another language and toolset for that task called
    MetaH.)

We generate both Ada and C.  Unconstrained arrays were certainly a
convenience when generating code from a language where matrices are a
fundamental data type.  Discriminant records were also a convenience.

Our web pages contain some more information, although not about Ada
issues specifically:
        http://www.htc.honeywell.com/projects/dssa

Steve Vestal
Mail: Honeywell Technology Center, 3660 Technology Drive, Minneapolis MN 55418 
Phone: (612) 951-7049      Fax: 7438     Email: vestal_steve@htc.honeywell.com





  parent reply	other threads:[~1996-06-12  0:00 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-06-06  0:00 ARIANE-5 Failure John McCabe
1996-06-07  0:00 ` Theodore E. Dennison
1996-06-07  0:00 ` Tronche Ch. le pitre
1996-06-07  0:00   ` Bert Peers
1996-06-07  0:00   ` Ken Garlington
1996-06-07  0:00     ` Robert Dewar
1996-06-07  0:00     ` John McCabe
1996-06-07  0:00   ` David Weller
1996-06-07  0:00     ` Ken Garlington
1996-06-08  0:00       ` Samuel Mize
1996-06-09  0:00         ` ARIANE-5 Failure (DC-X works) Eugene W.P. Bingue 
1996-06-08  0:00           ` Robert Dewar
1996-06-09  0:00             ` ARIANE-5 Failure Dale Stanbrough
1996-06-09  0:00             ` ARIANE-5 Failure (DC-X works) Samuel Mize
1996-06-10  0:00               ` Robert Dewar
1996-06-12  0:00                 ` Samuel Mize
1996-06-13  0:00                   ` Robert Dewar
1996-06-17  0:00                     ` David Zink
1996-06-18  0:00                       ` Robert Dewar
1996-06-12  0:00                 ` Theodore E. Dennison
1996-06-15  0:00                   ` Robert Dewar
1996-06-13  0:00                 ` Ken Garlington
1996-06-14  0:00                   ` Robert Dewar
1996-06-17  0:00                     ` Ken Garlington
1996-06-18  0:00                       ` 4GL code in a deliverable (was: ARIANE-5 Failure) Arthur Evans Jr
1996-06-19  0:00                         ` Ken Garlington
1996-06-20  0:00                           ` Robert Dewar
1996-06-24  0:00                             ` Ken Garlington
1996-06-24  0:00                             ` Ken Garlington
1996-06-10  0:00               ` ARIANE-5 Failure Dale Stanbrough
1996-06-10  0:00             ` ARIANE-5 Failure (DC-X works) Ken Garlington
1996-06-14  0:00               ` Robert Dewar
1996-06-17  0:00                 ` Ken Garlington
1996-06-19  0:00                   ` 4THGL code Warren Taylor
1996-06-12  0:00         ` Steve Vestal [this message]
1996-06-08  0:00   ` ARIANE-5 Failure Jim Kingdon
1996-06-09  0:00   ` Jim Kingdon
1996-06-09  0:00   ` Jim Kingdon
1996-06-09  0:00     ` Robert Dewar
1996-06-10  0:00       ` Keith Thompson
1996-06-10  0:00       ` Dewi Daniels
1996-06-12  0:00         ` Theodore E. Dennison
1996-06-12  0:00           ` Ken Garlington
1996-06-13  0:00             ` Theodore E. Dennison
1996-06-13  0:00         ` Jan Kok
1996-06-10  0:00   ` William Clodius
1996-06-10  0:00 ` William Clodius
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox