Software Engineering for Computational Science and
Engineering
Project Description
An important type of software that has received little attention from software engineering researchers is software developed for computational science and engineering (CS&E) applications. This software is vital for the study of many important topics from diverse application domains. A list of the Top 500 supercomputers, for which many CS&E applications are written, provides an example of the diversity of government, scientific, and commercial organizations that use CS&E and highlights its growing prevalence and impact on modern society. Some examples of the important topics addressed by CS&E include designing and maintaining nuclear weapons, defense against radiological attacks, crash simulation, and satellite data processing. Because many of these domains are complex and involve advanced scientific or engineering concepts, much of the CS&E software is written by domain experts rather than by software engineers. Another indication of the importance of CS&E is the High Productivity Computing Systems (HPCS) project (http://www.highproductivity.org), a large project sponsored by DARPA, NSF and other agencies. The overall goal of the HPCS project is to develop the next generation of viable supercomputers and ensure their programmability to maintain the competitiveness of the United States.This work began as part of the High Productivity Computing Systems project sponsored by DARPA and other agencies. The main focus of my portion of the work has been to conduct case studies of large scale scientific and engineering codes (typically using high performance supercomputers). These codes often take 10 to 20 years to develop and then are used for another 10 to 20 years. The issues encountered during this type of development are different than those encountered in more traditional software development.
As another indication of the growing importance of better integration of software engineering into CS&E, three workshops have been held on this topic. I was the organizer of the Third Workshop on Software Engineering for High Performance Computing Applications (SE-HPC) held at ICSE07. This workshop provided an opportunity for software engineering researchers to interact with researchers and practitioners from the CS&E application community. A significant portion of the workshop was devoted to discussion of position papers with the goal of generating a research agenda to improve the tools, techniques and experimental methods for CS&E software development. An important aspect of the research agenda was that CS&E researchers and developers need techniques that are tailored to the specific needs of their environment. Therefore, it is important for software engineering researchers to spend time understanding their environment.
Research Findings
My colleagues and I recently conducted case studies of five CS&E projects with the goal of understanding the software development process. The results of these case studies produced two important insights into CS&E software development that require further research. The first insight is the identification of important characteristics of the CS&E environment that affect the types of software engineering processes and techniques that are useful. One characteristic is the way that the requirements gathering and discovery process must be conducted. Often, because researchers are writing CS&E software to support new scientific investigations, detailed requirements cannot be known in advance. While the underlying laws of nature are fixed requirements, their specific application to the problem being studied is unknown. Another important characteristic is that the main driver for CS&E projects is the investigation of science or engineering, not necessarily the use of sound software engineering principles. The main reasons for the lack of focus on software engineering is that projects are staffed largely by scientists or engineers who lack formal software engineering training and project sponsors provide little funding to support traditional software engineering processes. The last characteristic is that the developers tend to avoid the use of process, partially as a result of the lack of formal software engineering training. In addition, long project lifecycles, prompting multiple requirement changes, cause developers to avoid any processes they view as too rigid or restrictive.The second insight is the documentation of eight important lessons learned that lay the foundation for much of the future work in this area. These lessons learned are:
- Verification and validation are very difficult on CS&E projects;
- Higher-level development languages are rarely used, and once chosen, do not vary over time;
- Developers prefer the flexibility of the UNIX command line over a graphical IDE;
- Externally developed software is viewed as a risk;
- Execution performance (speed) is not always the most important goal;
- Agile methods are more accepted (and a better fit) than traditional methodologies;
- Multi-disciplinary teams are important to project success; and
- Success or failure depends on keeping customers (and sponsors) satisfied.
Publications supported by this project
(Note: Blue = Journal; Red = Refereed Conference; Green = Workshop/Tech Report)- Heaton, D., Carver, J., Bartlett, R., Oakes, K., and Hochstein, L. "The Relationship between Development Problems and Use of Software Engineering Practices in
Computational Science & Engineering: A Survey." Proceedings of the 1st International Worksho on Maintainable Software Practices in e-Science (held during eScience 2012). Chicago, Il.
- Carver, J."Software Engineering for Computational Science and Engineering." Computing in Science & Engineering. 14(2):8-11.
- Carver, J., "Development of a Mesh Generation Code with a Graphical Front-End: A Case Study
Journal of Organizational and End-User Computing. 23(4):1-16, 2011
- Halverson, C. and Carver, J. "Climbing the Plateau: Getting from Study Design to Data that Means Something."
Proceedings of Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU) 2009. [Held during SPLASH2009].
October 2009.
- Carver, J. "Report from the Second International Workshop on Software Engineering for Computational Science and Engineering (SE-CSE 09)."
Computing in Science & Engineering. 11(6):14-19. Nov/Dec 2009.
- Carver, J. "SE-CSE09: The Second International Workshop on Software Engineering
for Computational Science and Engineering." Proceedings of the 31st International Conference
on Software Engineering (Companion Volume). May 2009. Vancouver, Canada. p. 484-485.
- Carver, J. "First International Workshop on Software Engineering for Computational
Science and Engineering." Computing in Science and Engineering. 11(2): 8-11. March 2009.
- Kendall, R., Carver, J., Fisher, D., Henderson, D.,
Mark, A., Post, D., Rhoades, C. and Squires, S. "Development of a Weather Forecasting Code: A Case Study."
IEEE Software, 25(4): 59-65. July/August 2008.
- Basili, V., Carver, J., Cruzes, D., Hochstein, L.,
Hollingsworth, J., Shull, F. and Zelkowitz, M. "
Understanding the High Performance Computing Community: A Software
Engineer's Perspective." IEEE Software, 25(4): 29-36. July/August 2008.
- Carver, J. "SE-CSE 2008: The First International Workshop on
Software Engineering for Computational Science and Engineering."
Proceedings of the 30th International Conference on Software Engineering.
May 13, 2008. Leipzig, Germany. p. 1071.
[© ACM, (2008). This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version is available at http://doi.acm.org/10.1145/1370175.1370252] - Carver, J. "Post-Workshop report for the Third International Workshop on Software
Engineering for High Performance Computing Applications (SE-HPC07)."
ACM Software Engineering Notes. 32(5): 38-43, Sept. 2007.
- Carver, J., Kendall, R., Squires, S. and Post, D.
"Software Development Environments for Scientific and Engineering Software: A Series of Case Studies."
Proceedings of the 29th International Conference on Software Engineering.
Minneapolis, USA. May 23-25, 2007. p. 550-559.
- Kendall, R., Post, D., Carver, J.,
Henderson, D. and Fisher, D. "A
Proposed Taxonomy for Software Development Risks for High-Performance
Computing (HPC) Scientific/Engineering Applications."
Technical Note CMU/SEI-2006-TN-039. Software Engineering Institute, Carnegie
Melon University. January, 2007.
- Carver, J. "Third International Workshop on Software Engineering for High
Performance Computing (HPC) Applications." Proceedings of the 29th International
Conference on Software Engineering - Companion Volume. Minneapolis, USA. May 25, 2007.
p. 147.
- Carver, J., Hochstein, L., Kendall, R., Nakamura, T.
Zelkowitz, M., Basili, V. and Post, D. "Observations about Software Development for High End Computing."
CTWatch Quarterly. 2(4A): 33-37. November, 2006. (Invited Paper).
- Hochstein, L., Nakamura, T., Basili, V., Asgari, S., Zelkowitz, M.
Hollingsworth, J., Shull, F., Carver, J., Voelp, M., Zazworka, N., and
Johnson, P. "Experiments to Understand HPC Time to Development."
CTWatch Quarterly, 2(4A): 24-32. November, 2006. (Invited Paper).
- Kendall, R., Post, D., Carver, J., and Squires, S. "Case Study of the Eagle Code Project."
Los Alamos Technical Report, LA-UR-06-1092. 2006.
- Shull, F., Carver, J. , Hochstein, L., and Basili, V. "Empirical Study Design in
the Area of High Performance Computing (HPC)." In Proceedings of the 2005 International
Symposium on Empirical Software Engineering (ISESE). Nov. 17-18, 2005. Noosa Heads, Australia. p. 305-314.
- Hochstein, L., Carver, J., Shull, F., Asgari, S., Basili, V., Hollingsworth, J., and Zelkowitz, M.
"Parallel Programmer Productivity: A Case Study of Novice Parallel Programmers." In Proceedings of
SuperComputing 2005. (Awarded Best Paper By A Student
Led Author)
[© ACM, (2005). This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version is available at http://doi.acm.org/10.1109/SC.2005.53] - Hochstein, L., Basili, V., Zelkowitz, M., Hollingsworth, J., and Carver, J.
"Combining self-reported and automatic data to improve effort measurement." In Proceedings of
Joint 10th European Software Engineering Conference and 13th ACM SIGSOFT Symposium on the Foundations of Software
Engineering (ESEC/FSE 2005).
[© ACM, (2005). This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version is available at http://doi.acm.org/10.1145/1081706.1081762] - Asgari, S., Hochstein, L., Basili, V., Carver, J., Hollingsworth, J., Shull, F.,
Zelkowitz, M. "Generating Testable Hypotheses from Tacit Knowledge for High Productivity Computing."
2nd Workshop on Software Engineering and High Performance Computing (held at ICSE
2005).
- Kendall, R., Carver, J., Mark, A., Post, D., Squires, S., and Shaffer, D. "Case Study of the Hawk Code Project."
Los Alamos Technical Report, LA-UR-05-9011. 2005.
- Carver, J., Asgari, S., Basili, V., Hochstein, L., Hollingsworth, J., Shull, F., and
Zelkowitz, M. "High Productivity Computing Systems (HPCS): Empirical Studies on Development
Time." Poster. In Proceedings: Volume II: Poster and Fast Abstract Sessions of the 2004
International Symposium on Empirical Software Engineering. Redondo Beach, CA. August 2004.
- Carver, J., Asgari, S., Basili, V., Hochstein, L., Hollingsworth, J., Shull, F., and Zelkowitz, M.
"Studying Code Development for High Performance Computing: The HPCS Program." In Proceedings of the Workshop
on Software Engineering and High Performance Computing Applications (held at ICSE 2004). Edinburgh, Scotland.
- Asgari, S., Basili, V., Carver, J., Hochstein, L., Hollingsworth, J., Shull, F., and Zelkowitz, M. "Challenges in
Measuring HPCS Learner Productivity in an Age of Ubiquitous Computing." In Proceedings of the Workshop on Software
Engineering and High Performance Computing Applications (held at ICSE 2004). Edinburgh, Scotland.
- Basili, V., Asgari, S., Carver, J., Hochstein, L., Hollingsworth, J., Shull, F., Zelkowitz, M. "A
Pilot Study to Evaluate Development Effort for High Performance Computing." University of Maryland Technical
Report CS-TR-4588. April 2004.
Collaborators
- Richard Kendall, Software Engineering Institute
- Doug Post, Department of Defense High Performance Computing Modernization Office
- Victor Basili and Marvin Zelkowitz, University of Maryland
Funding
This work has been funded by as part of the DARPA High Productivity Computing Systems (HPCS) grant and NSF..Projects Front Page    |    
Homepage    |    
List of Publications
Last Updated on December 13, 2012 by Jeffrey Carver