SOFTWARE ENGINEERING HEIDELBERG



PhD-project: Scientific Software Engineering

Our research group is looking for PhD students with a background in 'Software Engineering' and/or 'Scientific Software'.
Interested students are invited to contact Sebastian Sager or Barbara Paech as soon as possible by email.


Project Description

This innovation project aims at a framework for scientific software engineering. This framework should support the full software engineering cycle comprising requirements engineering, architecture and design, implementation, quality assurance, and evolution. It should focus on maintainability, reusability, and transparency for users other than the developers. Therefore software engineering best practices have to be adapted to the specifics of computational science software (CSS). In particular, the following challenges have to be addressed.

  • A rigid waterfall process with a fixed requirements document is not possible in scientific software development. Developing new features or applications for CSS is a complex process of developing the underlying mathematics and numerics and the requirements for the implementation of all of it in software. The main issue is finding the appropriate abstractions, both in mathematics and in software. As CSS are typically developed by a changing team of PhD students for a changing set of users the situation is often comparable to a small software company who works well with a dedicated customer basis, but is on the verge to grow and address a bigger market. This induces the need of more explicit requirements processes. As is well-known from other software process improvement efforts the introduction of a requirements template is an important first step.
  • The developers of CSS must be experts in at least three domains: mathematics and numerics as well as software design as well as parallel computing. There do not exist well-established standards for separating these concerns. Thus, the design is not a typical engineering activity, but also requires significant research effort to define adequate structures and interfaces. This seems to be a good opportunity to apply modern software design techniques. Clearly, approaches such as product-lines or model-driven development which focus on a specific structure for a given domain are necessary. However, neither of them offers new mechanisms for uncoupling tightly coupled components. Neither of them has so far been investigated in the context of parallel programming.
  • If the software does not behave as expected, the defect could be either in the mathematical model, in the data describing the problem, in the numerics or in the software. For the mathematical model sometimes mathematical theorems can be used as oracles for test cases. To get reliable problem data for the test cases, experiments have to be conducted which measure a real process often on a lab-scale. Thus, test cases are typically problem dependent and are defined by the developers in cooperation with the applying scientists. These tests can be used to detect problems with the mathematical model or the data. Typically there is no specific coverage metric applied guaranteeing that the important parts of the code are exercised through the tests. The tests basically only assure that no major problems are introduced by changes to the software. The situation is aggravated by the parallel computing. Due to the inherent non-determinism it is difficult to repeat specific program runs.

The general challenges listed above will be investigated for the example of the CSS MUSCOD-II developed in the group of Georg Bock and Johannes Schlöder. It is designed to efficiently and reliably solve nonlinear optimal control problems for systems described by differential equations.




Project Partners

This project will be is realised in cooperation with the Heidelberg Graduate School of Mathematical and Computational Methods for the Sciences

 

Further Information

©2005-2008 Software Engineering Heidelberg, Institute for Computer Science, University of Heidelberg

Impressum | Universität Heidelberg | Institut für Informatik