Created by bagwell on 2010-06-20. Updated: 2010-06-20, 07:27

Klaus Havelund at NASA's Jet Propulsion Laboratory (JPL) has been using Scala to explore the use of DSLs in shuttle and other space mission launch control applications. Klaus, a Senior Research Scientist at JPL's Laboratory for Reliable Software (LaRS), has compared the benefits of creating DSLs with Python and Scala with the aim of simplifying the writing of reliable launch control programs.

Using the problem of hydrogen fuel tank filling as a basis, his team has created a DSL to allow the simple description of the actions and instrument constraints for this process. A DSL will enable the launch engineers to write statically checked launch procedures that are easy to read and maintain.

He gives a clear explanation of the conceptual approach and reliability considerations in his paper or you can watch his presentation given at ScalaDays 2010.

Klaus's main interest is the development of runtime monitoring techniques, including the design of powerful monitoring logics, and algorithms for detecting concurrency errors such as deadlocks and various forms of data races. His most recent work includes the LogScope system/temporal logic for analyzing log files; based on the more general Ruler monitoring logic. Previous work includes the RMOR monitoring tool for monitoring C programs against state machines using aspect oriented techniques; and the very powerful Eagle temporal monitoring logic, implemented in the Eagle Flier trace checker. Eagle supports user definable logics and combinators, using recursive fixpoint rules and parameterization with formulas as well as with data. Real-time logics can be defined in few lines of Eagle.

He is also the co-author of the "JPL Institutional Coding Standard for the Java Programming Language". The primary purpose of the standard is to help Java programmers reduce the probability of run-time errors in their programs. A secondary, but related, purpose is to improve on dimensions such as readability and maintainability of code.