Software forms the basis of the computing systems that we use every day – from providing entertainment to supporting society’s fundamental infrastructure.
As the world around us becomes more complex, so does the software; and as software becomes responsible for more mission-critical tasks, the stakes become higher – the consequences of failure more damaging.
“At Simula, we conduct frontier research to ensure that your software systems will run smoothly and accurately – today and tomorrow.”Prof. Are Magnus Bruaset, Research Director
We use software engineering methods and tools to design, develop, maintain and test complex software systems. Our goal is to ensure that the software we rely on is robust, reliable, safe and secure, both for today’s systems and for quantum systems of the future.
Underpinning everything we do is the human element: the societal impact and ethics of computing systems ensuring that technology is used in a way that helps society.
Validation Intelligence for Autonomous Software Systems
Data-Driven Software Engineering
Engineering Complex Software Systems
AI-based, autonomous and intelligent-adaptive systems
We design, develop, maintain, and test smart systems that are AI-based, autonomous or intelligent-adaptive.
AI technology uses reasoning to detect patterns and anomalies and advise a human user or autonomous system about what action should be taken. Autonomous systems have the power to make decisions, which are often based on AI-based algorithms, and to change their behaviour accordingly. Decisions made by autonomous systems are typically based on a predetermined set of rules, which is interfaced with real-life via technology such as sensors and other data feeds.
Two key areas that we focus on in development of such systems are the planning, scheduling and execution of complex software-controlled tasks, and recommender systems, which link to AI-based or autonomous systems to advise on actions that should or should not be taken.
Exhaustive testing of software systems is crucial, especially in safety-critical scenarios. We develop AI-based algorithms, which rely on – and preserve the properties of – historical data, to generate simulated data that can be used to test systems. Using simulated data means we can test the system under a range of conditions and can add randomness and other variables.
Cyber-physical system and digital twins
We work on cyber-physical systems and digital twins, which usually incorporate AI and autonomous components, and are composed of multiple distributed connected components.
We develop cyber-physical systems: complex AI-based software systems made up of distributed components. A system may comprise multiple devices, surveillance cameras, sensors, computers, as well as centralised computer resources that communicate over a physical network.
We also work on digital twins: software models representing a physical system and its components, such as a manufacturing process. Digital twins are used to help understand the complex processes and interactions occurring in the physical twin and to make decisions – for example, for determining production levels or scheduling maintenance.
Secure and reliable software environments
Another key area for us is ensuring that AI is trustworthy – safe, technically robust and operates in an ethical way. During the software engineering process, we focus on cybersecurity through identification and repair of vulnerabilities; ensuring software is resilient, with the ability to detect threats and self-heal; and continuous analysis of observation data.
Quantum software engineering
Currently, a totally new paradigm of computing is emerging, based on the concepts of quantum mechanics. Such quantum computers will be fundamentally different in design and architecture from classical computers, meaning that several decades’ worth of software engineering concepts and methods need to be revised and extended. Quantum computers are still several years away from being a go-to resource for industry but, together with international partners, we are pioneering software engineering for the quantum age.
Effective digitalisation of the public sector
In this centre we work on digitalisation of current and future services provided by the public sector. Our research approach is empirical, including controlled experiments, observational studies, case studies and surveys with a focus on benefits management in the development of IT systems; flexible work processes and organisation of software development; management and leadership of projects and product development; competence evaluation and resource management; and cooperation and forms of agreement between actors. The research aims to provide knowledge about what leads to successful digitalisation in the public sector and to disseminate knowledge that leads to higher efficiency and more value creation.
Simula researchers and collaborations
Simula researchers are an important part of the bigger picture. Researchers in software engineering at Simula are helping to drive the future of technology through collaborative partnerships and networks, including:
- HIT (The Capital Area Network for IT Management and Management) network: The network exists to help members, including IT companies, customers, and government bodies, share knowledge and experience.
- RESIST (Resilient Software Science). This joint project team with Inria in France addresses software resilience.
- AI4EU: A strategic initiative to develop the European on-demand AI platform.
- QuIC (European Quantum Industry Consortium): A non-profit association driving the growth of commercial quantum solutions in Europe.
Contract research in software engineering
We welcome opportunities to collaborate with government, industry and academic partners to target complex software systems planned for or already in use. We work closely with organisations to ensure that we are addressing the right problems at the right time.
Core software engineering competence areas
- Constrained optimisation and scheduling
- Artificial intelligence and machine learning
- Natural language processing
- Variability testing and metamorphic testing
- Model-based engineering and testing
- Search-based software engineering
- Empirical software engineering
- Software repository mining
- Program analysis
- Reverse engineering of software
- Human judgement and decision making in software development contexts
- Benefits management
- Cost estimation