dcheng@amelia.nas.nasa.gov (Doreen Y. Cheng) (06/08/90)
I am interested in applying CASE technologies to scientific computing
with three characteristics.
(1) Methods for developing good software are rarely used.
(2) FORTRAN is the most popular language, C is getting broader acceptance.
(3) Parallel processing is one of the major concerns.
I would like to ask the people who are familiar with CASE technologies
to comment on two of my thoughts.
1. A dream environment for scientists:
(1) The system keeps track of the decision making process at each design
and implementation step which includes what, how, and why the choice
is made.
(2) Help the top-down refinement design and implementation process.
a. Allow user to partition the physical problem into subproblems
and keep track of their specifications and relations.
b. For each subproblem, the system helps specifying the set of
equations to be solved, the domain of interest, the boundary
conditions, the time duration, the solution of interest, the
accuracy and the maximum execution time the user can tolerate.
c. At each step of refinement, the user can query the system for
available choices. For example, select the mesh, select
discretization scheme, and select linear solver, etc. The
system also allows the user define a choice that is not available
in the system.
(3) The user can use a graphic editor and a text editor to enter the
specification and implementation hierarchically. The system
maintains the consistency between the graphic and textual views.
(4) At any step, the user can query the system if the software under
development is consistent and complete.
(5) When modifications are required in cases where the accuracy or
performance is not satisfactory, the user can go back to the
appropriate level of the design decision tree and make new choices.
The system points out inconsistencies and incompleteness caused
by the modification.
(6) The system helps in documentation, version control, and building
the entire program out of a different set of components.
(7) The environment understands some parallel architectures and the
user can query performance estimate based on static analysis
and performance bottleneck based on dynamic trace.
(8) The environment is open architectured so that it is easy to add
new tools, and to adopt to new technologies.
I am not looking for automatic program synthesis, rather an
interactive environment with system assistant.
Can this dream environment ever become a reality? What are the
difficulties? How difficult is each difficulty?
2. Can CASE approach help parallel processing?
There are many parallel processing tools available. Most of them
only address the program development phase. Many of them only
provide tools for a specific task, for example, for parallelization,
or for debugging or for performance evaluation.
I would like to argue for a CASE-based integrated environment for
parallel processing tools for the following reasons.
(1) Most tools share data (compilers, parallelization tools,
debugging tools, and performance evaluation tools all
manipulate program structure). It is more powerful and
efficient to build these tools on top of a common data
repository.
(2) An integrated environment provides a relatively stable user
interface. (Now different tools use different user interfaces)
(3) Maintenance is more difficult for parallel programs than
sequential programs because more iterations between design
and implementation are required. System support can be
beneficial.
(4) Debugging parallel programs is very time consuming. CASE
technologies can help reducing errors greatly.
Any disadvantages of such an integrated environment?
How difficult it is to integrate existing tools into a CASE
tool environment?
How difficult it is to support FORTRAN in CASE if one does not
support FORTRAN right now?
Thanks in advance!
Doreen Cheng NASA Ames Research Center
dcheng@orville.nas.nasa.gov MS 258-6
(415) 604-4361 Moffett Field, CA 94035