User Tools

Site Tools


skill-tree:sd:b

**This is an old revision of the document!**

SD-B Software Development

Background

Software engineering is often neglected in computational science. However, it bears potential to increase productivity by providing scaffolding for the collaborative programming, reducing the coding errors and increasing the manageability of software.

Aim

  • To apply practices and methods from software engineering that are relevant for high performance computing

Outcomes

  • Explain agile software engineering methods and practices relevant in high-performance computing
  • Apply software engineering methods and best practices when developing parallel applications
  • Write modular, reusable code by applying software design principles like loose coupling and information hiding
  • Apply design patterns for HPC
  • Configure and use integrated development environments (IDEs) to seamlessly perform the typical development cycle with the steps edit, build (compile and link), and test
  • Use sophisticated debuggers for parallel programs
  • Recognize where (parallel) programming idioms are violated and refactor the code to comply to a specific programming idom
  • Define and establish coding standards and conventions in a project
  • Apply version and configuration management to the development of (parallel) programs in order to track and control changes in the sources and to establish and maintain consistency of the program or software system throughout its life
  • Configure an environment for continuous integration with basic processing steps like compiling and automated testing
  • Apply unit testing in a specific programming language using an appropriate unit testing framework
  • Appropriately document the entire software system

Subskills

skill-tree/sd/b.1592570060.txt.gz · Last modified: 2020/06/19 14:34 by kunkel