Increasing software engineering productivity
The emergence of new specifications, design and programming paradigms and languages, has increased the workload for software engineers. The EU-funded DECODER project will develop a methodology and tools to propose radical solutions for increased productivity of the software development process for medium-critical applications in the fields of IoT, cloud computing and operating systems. The project will apply an innovative method combining natural language processing and modelling techniques with formal methods, and use existing techniques from Big Data and model-driven engineering. It will allow a balanced transition from informal requirements engineering to deployment and maintenance stages and demonstrate the efficiency of these techniques in a wide range of cases in the above-mentioned fields.
Software is everywhere and the productivity of Software Engineers has increased radically with the advent of new specification, design and programming paradigms and languages. The main objective of the project DECODER is to introduce radical solutions to increase productivity and by means of new languages that improve the situation by abstractions of the formalisms used today for requirements analysis and specification. We will develop a methodology and tools to improve the productivity of the software development process for medium-criticality applications in the domains of IoT, Cloud Computing, and Operating Systems by combining Natural Language Processing techniques, Modelling techniques and Formal Methods. The combination is a novel approach that permits a smooth transition from informal requirements engineering to deployment and maintenance phases. A radical improvement is expected from the management and transformation of informal data into material (herein called ‘knowledge’) that can be assimilated by any party involved in a development process. Thus, the DECODER project will
- introduce new languages to represent knowledge in a more abstract manner,
- develop transformations leading from informal material into specifications and code and vice-versa,
- define and prototype a Persistent Knowledge Monitor for managing all relevant knowledge, and
- develop a prototype IDE. The project will automate the transformation steps using existing techniques from the Big Data (knowledge extraction), Model-Driven Engineering (knowledge representation and refinement), and Formal Methods (specifications and proofs).
The project will produce a novel Framework combining these techniques and demonstrate its efficiency on several uses cases belonging to the beforehand mentioned domains. The project expects an average benefit of 20% in terms of efforts on these use-cases and will provide recommendations on how to generalise the approach to other medium-criticality domains.