During the course of the project, DECODER explored several directions. First and foremost, all partners were involved in the definition of the PKM meta-model, in order to gain a comprehensive view of all the various user roles interacting with the PKM during software development lifecycle, as well as which types of artifacts might be stored in the knowledge base, and which kinds of requests the PKM should be able to answer. In parallel, DECODER investigated methodological solutions for taking advantage of the PKM server in existing software development processes, such as Waterfall, V-cycle, or agile methods.
Based on the meta-model, the PKM server and its API were designed and implemented on top of MongoDB, a document-oriented database. The preferred interacting device with the database itself is a RESTful server, which features a powerful set of requests specified through the OpenAPI format.
A prototype for the graphical user interface of the PKM client was designed and implemented, acting as the main user entry point to the PKM. Moreover, an orchestrator was developed that takes care of making the relevant calls to the PKM server and to the individual tools, providing a very smooth user experience for the most standard usages of the platform. In order to facilitate its insertion in existing SW development chains, the PKM server can be synchronized with a git server, ensuring that the code artifacts stored in the PKM are always up-to-date.
On another aspect of the project, a first version of the ASFM language was designed. ASFM takes the PKM meta-model as reference, and is defined as a JSON schema that closely follows the PKM API to ease the task of generating ASFM models from requests to the PKM server. ASFM schemas can be extracted from standard .doc or .pdf documents, and are the basis of the FormalDebug tool that represents graphically the datastructures of the program and can be manipulated interactively to better understand the invariants in the code.
Another work stream concerned NLP and the connections between code and informal documents. Code summarization tools were applied to track potentially misused identifiers and suggest a fix. The identification of correspondances between documentation and code using machine translation techniques also proceeded well. All NLP tools were integrated within the PKM. It is now possible to visualize the traceability matrix between high-level requirements (in English) and the relevant code. Finally, some work was devoted to semantically analyze CVE messages and highlight their main characteristic, in order to help users to assess whether their code is impacted by a given vulnerability.
Finally, the selection of use-cases was refined, ensuring that they are representative of a large class of applications and that they can lead to a wide spectrum of activities involving the PKM and the other DECODER tools. All use-cases were analyzed with the tools developed within the project and the results are stored in the PKM server.