Software in human language
It is possible to develop software in a comprehensible, natural language, instead of a language based on mathematics and computers. This is the conclusion of computer scientist Robert Deckers.
Deckers sees software development as a process in which knowledge and decisions from different people are integrated to produce a specification that can be read by a machine. Most current specification and programming languages are based on computer-oriented and mathematical concepts. These languages are difficult for people who are not software professionals. Decker investigated how we can change this.
Natural language
He argues that it is possible to develop software in a language that is based on natural language (such as Dutch) and on how people think and make decisions, instead of a language that is based on mathematics and on how a computer works. This activity is not an art or expertise that requires years of experience. It can be realized according to clear steps and guidelines, which can be applied to all aspects of a software system. So not only on functionality, but also on safety, user-friendliness and reliability. The latter is not the case today.
Deckers conducted the research in three paths. He made an initial method description based on his thirty years of experience in modelling and specifying. He supplemented this with what was found in a literature study of existing techniques. He tested and adapted this by means of case studies. He also linked extensive literature study to the foundations of the method to demonstrate how software development can be based on how people think and communicate, instead of on how computers work.
Efficiency and effectiveness
Deckers: ‘My approach can yield enormous productivity gains for the development of software systems, both in terms of efficiency and effectiveness. Instead of implementing the same thinking steps for each piece of (software) functionality to be developed, design choices can now be reused for other applications. Making a banking system reliable, for example, is not essentially different from making a car control system reliable. If you follow my approach, it is no longer necessary to develop both from scratch. Another advantage is that technical people, such as programmers, do not need to understand all aspects of a system. This is often the case now. They can focus on their own field and communicate in their own (professional) language, just like the user, the project manager, and the user interface designer. People can stick to what they know. The research still needs to be incorporated into practical tools.’
More information on the thesis