Welcome to the Software Technology Group and Reactive Programming
Our research is dedicated to developing robust, secure and efficient software. The research includes the following main focuses:
Programming paradigms and languages for resilient decentralized data-intensive software systems
Learning systems are often interactive distributed software systems that are increasingly decentralized and act “on the edge”. The dominant architecture of interactive distributed software systems is usually based on centralized data storage and callback controlled interactions. However, callback-driven interactions are notorious for their complexity hell, and centralized data storage is not well suited in terms of offline availability, low latency, user control over privacy as well as overall architecture in the age of programmable network devices and powerful mobile devices and sensors. On the other hand, while decentralized data storage seems a natural choice to solve the problems of offline availability, low latency and data protection, when building distributed applications, developers can no longer rely on fault tolerance and concurrency control solutions built into centralized data storage systems and would have to deal with them at the application level. The Software Technology Group researches and develops declarative programming platforms inspired by functional reactive programming, not only in managing the complexity of enabling interactivity and real-time viability without the callback hell, but also by enabling language implementation to automatically handle complicated aspects of distributed software such as concurrency control and fault tolerance with strong “out-of-the-box” consistency guarantees.
Code intelligence: learning program analyses for automated software quality (e.g., discovering security vulnerabilities, data protection violations, API misuses, etc.)
In a digitalized world (“software is eating the world”), software quality in general and software security in particular play a central role. The research goal of the Software Technology Group at TU Darmstadt is to contribute to the development of high-quality and especially secure software. An important means for this are powerful intelligent methods and algorithms of program analysis, which automate the detection of different kinds of problems, rule violations and especially security vulnerabilities. Automated analysis or automated understanding of program code is a very difficult task (for example, the simultaneous assurance of precision and correctness is generally an unsolvable problem; abstraction and approximation, as well as the systematic deviation between the two goals are required). The analysis is made even more difficult if the code is obfuscated – for example, if obfuscated code is integrated into third-party software libraries.
The Software Technology Group’s research addresses the above mentioned challenges. On the one hand, we investigate architectural models of artificial intelligence in order to facilitate the systematic assessment between different objective functions (precision, correctness, performance). Specifically, we are developing a software analysis platform called OPAL, the core of which is a “blackboard system”, in which a common knowledge base, the “blackboard”, is iteratively updated by a diverse group of expertise sources (individual code analyses), starting with a problem specification and ending with a solution. On the other hand, we develop learning analysis algorithms based on machine learning methods, which learn patterns from large code bases that encode knowledge about the code. In particular, we have developed methods and learning program analysis to automate the verification of security vulnerabilities in code and data protection specifications, i.e. without specific expert knowledge, or to support developers in the correct use of programming interfaces and libraries and thus contribute to the correct use of programming interfaces and prevent the occurence of faulty code or security holes.
Development methods and declarative languages for AI software systems
The development of AI software systems differs significantly from that of classical software systems. For example, the handling of training data is the main focus in the development of AI software systems. Nevertheless, there is a lack of appropriate development methods and tools. Even though there are many libraries available for training models, e.g. TensorFlow, their correct use poses great challenges for developers without deep knowledge of the methods encoded in them and it requires automation. At the same time, tools that are usually used in software development for the analysis of software correctness are hardly available. Therefore, the group is researching new methods and tools that support developers in meeting these challenges and help to ensure that AI can be used by a larger circle of developers and thus be transferred to a broad application.
In addition to increasing productivity in the development of software systems with built-in AI components, another object of our research is the development of new software engineering methods to enhance the AI itself. For example, we are exploring ways to introduce ideas of reactive programming and modular programming into the pipeline design of ML APIs. Their stages are sequential and require a complete restart if a stage fails. Perspectively, we want to explore new programming languages to support the third wave of AI. Such AI integrates learned, modeled and built in knowledge and cognitive models to achieve human-like properties, for example by continuously extending existing knowledge and independently “thinking” logically. The von-Neumann machine model on which today's programming is based describes calculations on a level too low to be suitable for the complexity of third-wave AI. However, a new suitable model has not yet been systematically researched. Possibly, the same architectures that are used for the pipeline design of the ML APIs can be applied to the composition of different components of third wave AI.
Our work is funded by the following organizations:
European Research Council (ERC)
Deutsche Forschungsgemeinschaft (DFG)
German Federal Ministry of Education and Research (BMBF)
Hessen State Ministry for Higher Education, Research and the Arts (HMWK)