Software bugs come in all shapes and sizes, from critical errors in the software of crucial infrastructure such as dams and bridges, to glitches in computer games. The outcome is not always disastrous, but often annoying. So how can we build (nearly) error-free software?
It is simple enough to conclude that the road to better software must involve good programming, testing and verification. But the steps to get there are actually very complex, and will only get more so with the increasing complexity of software and hardware. During her inaugural lecture, Professor of Software Reliability Marieke Huisman provided a glimpse of how improvements in the daily practice of software verification can lead to more reliable software.
Room for improvement
In the first place, Huisman believes that proper verification depends on having a good description of the characteristics we require of the software. There is huge room for improvement in the formal, correct and uniform explication of software requirements. In complex processes, this is a crucial step to be able to verify that software can actually do what it is intended for.
The fine tuning of software verification will require close cooperation between and inside the scientific community and professional practice, so that verification techniques can be more broadly deployed. ‘For example, we need to focus on developing methods of reasoning that are easy to explain and apply, so that alongside experts (the researchers who develop the methods), software developers can use them too,’ says Huisman.
There is also a major challenge ahead to improve the interaction between and integration of verification programmes. ‘It is currently extremely difficult to use the results of the one program in another, requiring a huge amount of extra programming,’ explains Huisman. ‘The program verification community needs to focus much more on reuse and cooperation.’
Research and education
Increasing software reliability is not only the responsibility of the research community. There are also plenty of opportunities in the education sector. ‘A new approach is needed, whereby it is impressed upon students at an early stage that it is possible – and necessary – to precisely describe what a piece of code does, including making all implicit assumptions explicit,’ says Huisman. ‘The next step is to help the students experience how this can actually help them to track down their errors and improve their code. This does not have to be made compulsory, but it should be facilitated from the start in such a way that the students will experience the benefits for themselves. This will require a development environment that can provide quick feedback and that challenges users to get more out of the systems, for example through gamification (the more specifications the student writes and validates, the more points they can earn).
About Marieke Huisman
Marieke Huisman was awarded a PhD at Radboud University in 2000 on the verification of sequential programs (and in particular Java) and has been working for the University of Twente since 2008. In 2010 she received a Starting Grant from the European Research Council (ERC), which she used to initiate the development of VerCors, a set of tools for the verification of concurrent data structures. In 2013 she received the Dutch prize for ICT research and last year she was awarded a Vici grant by the Netherlands Organization for Scientific Research (NWO).
Huisman was made chair of the Ambassador’s Network in September 2017. This organization was established by the Executive Board to advise on measures to help more women get promoted to senior positions.