Software

The research concerns development and evaluation of tools and methods to develop, test, and maintain software and cyber-physical systems. Examples of our expertise are the Modelica compiler, software for supercomputers, and large-scale software.

The largest component of the research centres on Modelica and other object-oriented, equation-based languages, intended for modelling and simulation of larger cyber-physical systems. Cyber-physical systems contain sensors that can collect data from the surroundings, allowing them to subsequently self-adapt to prevailing conditions. Examples are the systems used in autonomous vehicles.

Open Modelica

A research group at LiU hosts the Open Modelica Consortium. This software package contains not only a compiler, which translates computer code to machine language, but also a simulation engine, together with an equation solver and a graphical editor. The research is integrated in the Open Modelica software, which is widely used, not least within the energy-supply industry.

Parallel computing

Research is also being conducted into software engineering for parallel computing – for use in, for example, supercomputers. Further, distributed computer systems such as those used in vehicles, where computers with different tasks in the vehicle are components of the same system, are studied. Another field of research is heterogeneous computer systems – where each processor in the system is used specifically for its optimal task. The generation and automatic optimisation of computer code for these types of advanced computer architectures are central research topics that are highly significant for increased performance, reduced energy consumption, and optimised memory use.

Large-scale development

Another field is large-scale software development. We study, in close collaboration with companies, how to manage the many methods that lead to continuous integration, testing and deployment of software. The involves, not least, the optimisation of regression testing, in which a complete system or parts of it are tested after each new update of the code has been committed, to ensure that the system in its entirety functions as intended.

We also conduct research and development into how to teach software engineering.

We have expertise available across a broad spectrum, such as compiler technology (the translation from computer code to machine language), software analysis and optimisation, automatic debugging, the design of programming languages, decision-support systems, requirements management, the maintenance of software, systems technology, sustainable development and serious computer gaming.

Contact

Research