DECODER Overall Concept

To improve the workflow of software developers, DECODER is mixing several mature techniques including static source program analysis, model extraction, natural language processing with machine learning. DECODER is producing new components to be tested on industrial application components and to be integrated into official Open Source releases once they are mature and stable. Several components will be integrated in commercial products from the project industrial partners. The DECODER use-cases will also contribute to provide more distribution channels focused on high quality and open source communities.

DECODER aims to provide a free software toolset and a related methodology to help software developer's daily work, taking into account that most software development are leveraging existing software components, mainly from open source code bases.

DECODER_lifecycle.png

DECODER Objectives

The DECODER project addresses code and resources abstraction, and advanced software systems development. The DECODER consortium is providing productive and effective development tools for safe and secure ICT systems.

One of the main goals of the project is to leverage existing code bases for easier reusing, thanks to documentation generation.

The DECODER project improves productivity by increasing the abstraction level, at specification stage, using requirements engineering techniques to integrate more complete specifications into the development process, and formal methods to reduce the time and efforts for integration testing, replacing it by formal analyses

The project team is developing new abstract specification languages, a key solution to raising the productivity and reliability problems: 

  1. ASFM, an abstract formal design language to navigate between different levels of abstractions defined by the formal and informal requirements, the specification, the user documentation, the developer documentation and the formal annotations and the code.
  2. GSL, an abstract graphical specification language, capable of intuitively specifying some code and generating detailed specifications in ACSL/ACSL++ and JML. These abstractions concern the code as well as the data.

Project Methodology

New methods for describing software, data and requirements are necessary to advance software application development, in particular in SDI (Software-Defined Infrastructures). DECODER focuses on new means of describing software requirements, by proposing new languages and methods to formalise these requirements that are often informal. These new languages allow to describe data and processes amenable for specification and refinements.

DECODER provides general-purpose languages and methods that are expected to be applicable to multiple application domains. Innovative tools and methods are being experimented on several DECODER use-cases such as IoT/embedded systems, computer vision through Artificial Intelligence and IoT, enterprise computing including Cloud computing/Big Data and Middleware/Cloud computing.

DECODER Software Infrastructure

The objective of DECODER consists in developing and validating a software infrastructure as a development environment that assists the programmer with: 

  1. an instantaneous access to project documentation, abstract models and verification processes, 
  2. an access to a virtual expert in order to produce code that is functionally correct (including the parameterization of the underlying libraries), free of Run Time Errors, and with a control on memory space and execution time, 
  3. facilities for producing requirements and verifying them, and 
  4. facilities for producing user documentation conformant to requirements. The project applies to software built on large open source C, C++ and Java ecosystems such as OpenCV, the Linux kernel, Lutece, C++ & Java standard libraries, Devonfw.

The project aims to produce a virtuous development cycle applicable to new code as well as mature library code. It naturally adds better documentation, abstraction models, formal verification and a traceability matrix in a common modern development life.