Software, by its very nature, ought to be the main source of functionality, flexibility, and affordability in today’s products and infrastructures. Yet in practice, software is often the main point of vulnerability, the main obstacle to redesign, and the main cause for cost overruns. In comparison to other engineering artifacts, much of today’s software is buggy, brittle, insecure, and not interoperable.
To remedy this situation, software research needs to refocus, on all levels, from a primary concern about efficiency to a primary concern about reliability. Systems need to be designed for maximum robustness in recovering from errors and tolerating incompatibilities; compilers need to give safety assurances about the generated code; and languages need to support the verifiability and composability of programs with respect to both functional and nonfunctional aspects.
At EPFL a group of faculty is concentrating their efforts, in both research and education, on achieving greater reliability in software development and deployment: