Tomorrow’s Software-Intensive Infrastructures
Software is the invisible force enabling the digital infrastructures that support services critical to society, from commerce and transport to healthcare, energy, finance, communication, scientific research and education. Our reliance on (reliable) software is one of today’s most pressing challenges. Software-intensive systems provide a prominent cluster of scientific challenges for the Bernoulli Institute for the future. Software is a key transformation and enabling technology, disrupting many areas of modern economy, compelling industry leaders to admit that “every company is now a software company”.
Already, the Bernoulli Institute accumulates research expertise on multiple aspects of the principled design and engineering of modern software systems—systems that are scalable, distributed, and adaptable, which are engineered to align technical, social and business aspects, following systematic methodologies that ensure that their individual components are not only reliable and trustworthy, but also sustainable.
The scientific challenge of developing tomorrow’s software-intensive systems can be divided into three intertwined topics:
The increasingly important role of AI in software engineering, from component specification and development to system validation and verification. This includes, for instance, emerging AI-enabled techniques for service composition, program synthesis, workflow and process mining, code completion, program repair and automated software engineering in general.
The principled design and evolution of large, complex, long-lived systems. The former encompasses classical approaches to efficient design of algorithms and formal verification of programs, but also emerging techniques for certified programs (based on mechanized mathematical proofs) and for model-checking critical correctness guarantees of complex systems. The latter utilizes mining software repositories, integrating tools in DevOps toolchains and emphasizes managing technical debt (the ‘silent killer’ of software projects), given that most software developed today extends legacy code.
The increasing importance of human and social factors, which are often more critical than technical aspects, shifting the paradigm towards socio-technical software engineering. This extends to communication and interaction among ourselves (scientists), industrial partners, end users, and broad audiences about software and its impact. Topics like digital literacy and the importance of software and sustainability are transversal to our scientific challenges. Domain-specific languages and languages workbenches will be our primary tools to assist non-experts in contributing to software development in specialized domains.