Skip to main content Accessibility help
×
Hostname: page-component-78c5997874-s2hrs Total loading time: 0 Render date: 2024-11-17T14:54:44.630Z Has data issue: false hasContentIssue false

4 - Software engineering

from Part II - Code verification

Published online by Cambridge University Press:  05 March 2013

Christopher J. Roy
Affiliation:
Virginia Polytechnic Institute and State University
Get access

Summary

Software engineering encompasses the tools and methods for defining requirements for, designing, programming, testing, and managing software. It consists of monitoring and controlling both the software processes and the software products to ensure reliability. Software engineering was developed primarily from within the computer science community, and its use is essential for large software development projects and for high-assurance software systems such as those for aircraft control systems, nuclear power plants, and medical devices (e.g., pacemakers).

The reader may wonder at this point why a book on verification and validation in scientific computing includes a chapter on software engineering. The reason is that software engineering is critical for the efficient and reliable development of scientific computing software. Failure to perform good software engineering throughout the life cycle of a scientific computing code can result in much more additional code verification testing and debugging. Furthermore, it is extremely difficult to estimate the effect of unknown software defects on a scientific computing prediction (e.g., see Knupp et al., 2007). Since this effect is so difficult to quantify, it is prudent to minimize the introduction of software defects through good software engineering practices.

Type
Chapter
Information
Publisher: Cambridge University Press
Print publication year: 2010

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

References

AIAA (1998). Guide for the Verification and Validation of Computational Fluid Dynamics Simulations. AIAA-G-077–1998, Reston, VA, American Institute of Aeronautics and Astronautics.
Allen, E. B. (2009). Private communication, February 11, 2009.
ASME (2006). Guide for Verification and Validation in Computational Solid Mechanics. ASME V&V 10–2006, New York, NY, American Society of Mechanical Engineers.
Beck, K. (2000). Extreme Programming Explained: Embrace Change, Reading, PA, Addison-Wesley.Google Scholar
Beizer, B. (1990). Software Testing Techniques, 2nd edn., New York, Van Nostrand Reinhold.Google Scholar
Boehm, B. W. (1981). Software Engineering Economics, Englewood Cliffs, NJ, Prentice-Hall.Google Scholar
Boehm, B. W., Abts, C., Brown, A. W., Chulani, S., Clark, B. K., Horowitz, E., Madachy, R., Reifer, D. J., and Steece, B. (2000). Software Cost Estimation with Cocomo II, Englewood Cliffs, NJ, Prentice-Hall.Google Scholar
Collins-Sussman, B., Fitzpatrick, B. W., and Pilato, C. M. (2009). Version Control with Subversion: For Subversion 1.5: (Compiled from r3305) (see svnbook.red-bean.com/en/1.5/svn-book.pdf).
Demarco, T. and Lister, T. (2003). Waltzing with Bears: Managing Risk on Software Projects, New York, Dorset House.Google Scholar
Duvall, P. F., Matyas, S. M., and Glover, A. (2007). Continuous Integration: Improving Software Quality and Reducing Risk, Upper Saddle River, NJ, Harlow: Addison-Wesley.Google Scholar
Eddins, S. (2006). Taking control of your code: essential software development tools for engineers, International Conference on Image Processing, Atlanta, GA, Oct. 9 (see blogs.mathworks.com/images/steve/92/handout_final_icip2006.pdf).
Fenton, N. E. and Pfleeger, S. L. (1997). Software Metrics: a Rigorous and Practical Approach, 2nd edn., London, PWS Publishing.Google Scholar
Gibson, D. L., Goldenson, D. R., and Kost, K. (2006). Performance Results of CMMI®-Based Process Improvement, Technical Report CMU/SEI-2006-TR-004, ESC-TR-2006–004, August 2006 (see ).
Godfrey, S. (2009). What is CMMI? NASA Presentation (see software.gsfc.nasa.gov/docs/What%20is%20CMMI.ppt).
Hatton, L. (1995). Safer C: Developing Software for High-Integrity and Safety-Critical Systems, New York, McGraw-Hill International Ltd.Google Scholar
Hatton, L. (1996). Software faults: the avoidable and the unavoidable: lessons from real systems, Proceedings of the Product Assurance Workshop, ESA SP-377, Noordwijk, The Netherlands.
Hatton, L. (1997a). Software failures: follies and fallacies, IEEE Review, March, 49–52.
Hatton, L. (1997b). The T Experiments: errors in scientific software, IEEE Computational Science and Engineering, 4(2), 27–38.CrossRef
Hatton, L., and Roberts, A. (1994). How accurate is scientific software? IEEE Transactions on Software Engineering, 20(10), 785–797.CrossRef
Heitmeyer, C. (2004). Managing complexity in software development with formally based tools, Electronic Notes in Theoretical Computer Science, 108, 11–19.
Humphrey, W. (1989). Managing the Software Process. Reading, MA, Addison-Wesley Professional.Google Scholar
IEEE (1991). IEEE Standard Glossary of Software Engineering Terminology. IEEE Std 610.12–1990, New York, IEEE.
ISO (1991). ISO 9000–3: Quality Management and Quality Assurance Standards – Part 3: Guidelines for the Application of ISO 9001 to the Development, Supply and Maintenance of Software. Geneva, Switzerland, International Organization for Standardization.
Kaner, C., Falk, J., and Nguyen, H. Q. (1999). Testing Computer Software, 2nd edn., New York, Wiley.Google Scholar
Kleb, B., and Wood, B. (2006). Computational simulations and the scientific method, Journal of Aerospace Computing, Information, and Communication, 3(6), 244–250.CrossRefGoogle Scholar
Knupp, P. M. and Ober, C. C. (2008). A Code-Verification Evidence-Generation Process Model and Checklist, Sandia National Laboratories Report SAND2008–4832.
Knupp, P. M., , C. C., Ober, , and Bond, R. B. (2007). Impact of Coding Mistakes on Numerical Error and Uncertainty in Solutions to PDEs, Sandia National Laboratories Report SAND2007–5341.
MATLAB (2008). MATLAB® Desktop Tools and Development Environment, Natick, MA, The Mathworks, Inc. (see ).Google Scholar
McCabe, T. J. (1976). A complexity measure, IEEE Transactions on Software Engineering, 2(4), 308–320.Google Scholar
McConnell, S. (2004). Code Complete: a Practical Handbook of Software Construction, 2nd edn., Redmond, WA, Microsoft Press.Google Scholar
Musa, J. D. (1999). Software Reliability Engineering: More Reliable Software, Faster Development and Testing, New York, McGraw-Hill.Google Scholar
Neely, R. (2004). Practical software quality engineering on a large multi-disciplinary HPC development team, Proceedings of the First International Workshop on Software Engineering for High Performance Computing System Applications, Edinburgh, Scotland, May 24, 2004.
Nejmeh, B. A. (1988). Npath: a measure of execution path complexity and its applications, Communications of the Association for Computing Machinery, 31(2), 188–200.CrossRefGoogle Scholar
Post, D. E., and Kendall, R. P. (2004). Software project management and quality engineering practices for complex, coupled multiphysics, massively parallel computational simulations: lessons learned from ASCI, International Journal of High Performance Computing Applications, 18(4), 399–416.CrossRefGoogle Scholar
Press, W. H., Teukolsky, S. A., Vetterling, W. T., and Flannery, B. P. (2007). Numerical Recipes: the Art of Scientific Computing, 3rd edn., Cambridge, Cambridge University Press.Google Scholar
Pressman, R. S. (2005). Software Engineering: a Practitioner's Approach, 6th edn., Boston, MA, McGraw-Hill.Google Scholar
Roy, C. J. (2009). Practical software engineering strategies for scientific computing, AIAA Paper 2009–3997, 19th AIAA Computational Fluid Dynamics, San Antonio, TX, June 22–25, 2009.
SE-CSE (2008). Proceedings of the First International Workshop on Software Engineering for Computational Science and Engineering, Leipzig, Germany, May 13, 2008 (see ).
SE-CSE (2009). Proceedings of the Second International Workshop on Software Engineering for Computational Science and Engineering, Vancouver, Canada, May 23, 2009 (see ).
SE-HPC (2004). Proceedings of the First International Workshop On Software Engineering for High Performance Computing System Applications, Edinburgh, Scotland, May 24, 2004.
SEI (2009). CMMI Main Page, Software Engineering Institute, Carnegie Mellon University (see ).
Sommerville, I. (2004). Software Engineering, 7th edn., Harlow, Essex, England, Pearson Education Ltd.Google Scholar
SWEBOK (2004), Guide to the Software Engineering Body of Knowledge: 2004 Edition, Borque, P. and Dupuis, R. (eds.), Los Alamitos, CA, IEEE Computer Society ().Google Scholar
Williams, L. and Kessler, R. (2003). Pair Programming Illuminated, Boston, MA, Addison-Wesley.Google Scholar
Wilson, G. (2009). Software Carpentry, .
Wood, W. A. and Kleb, W. L. (2003). Exploring XP for scientific research, IEEE Software, 20(3), 30–36.CrossRefGoogle Scholar

Save book to Kindle

To save this book to your Kindle, first ensure [email protected] is added to your Approved Personal Document E-mail List under your Personal Document Settings on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part of your Kindle email address below. Find out more about saving to your Kindle.

Note you can select to save to either the @free.kindle.com or @kindle.com variations. ‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi. ‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

Find out more about the Kindle Personal Document Service.

Available formats
×

Save book to Dropbox

To save content items to your account, please confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account. Find out more about saving content to Dropbox.

Available formats
×

Save book to Google Drive

To save content items to your account, please confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account. Find out more about saving content to Google Drive.

Available formats
×