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