Developer companion for documented and annotated code reference
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 1) introduce new languages to represent knowledge in a more abstract manner, 2) develop transformations leading from informal material into specifications and code and vice-versa, 3) define and prototype a Persistent Knowledge Monitor for managing all relevant knowledge, and 4) 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.