Cognifying Model-Driven Software Engineering

Tweet about this on TwitterShare on FacebookBuffer this pageShare on RedditShare on LinkedInShare on Google+Email this to someone

Cognification is the application of knowledge to boost the performance and impact of a process. According to Kevin Kelly, cognification is one of the 12 technological forces that will shape our future (I strongly recommend reading his book: The Inevitable or at the very least, watch this video).

We (myself, Robert Clarisó, Marco Brambilla and Sébastien Gerad) believe cognification will also be a revolution in the way software is built. In particular, we’d like to discuss the opportunities and challenges of cognifying Model-Driven Software Engineering (MDSE) tasks. These ideas will be presented at the GrandMDE (Grand Challenges in Modeling) workshop.

UPDATE: We’re offering a fully funded 3-year PhD Thesis on this topic. Read more  

Check the slides or read the full description of the work below.

Why the cognification of model-driven engineering?

We are aware that the limited adoption of model-driven engineering is due to a variety of social and technical factors [4] but we can summarize them all in one: its benefits do not outweigh its costs.

We believe cognification could drastically improve the benefits and reduce the costs of adopting MDSE.

Cognification is not just a synonym of Artificial Intelligence

Cognification does not restrict itself to what we typically refer to as artificial intelligence, with Deep Learning as its latest and hottest technique. Cognification includes as well the combination of past and current human intelligence (i.e. all current humans online and the actions they do).

Under this definition, collective intelligence and crowdsourcing [8] can be valid cognification tools. Cognification does not imply either the existence of a super AI but the availability of highly specialized intelligences that can be plugged in depending on the needs of the problem to be solved.

Cognification in Software Engineering

Several initiatives aim to cognify specific tasks in Software Engineering, for instance, using machine learning (ML) for requirements prioritization [6], for estimating the productivity of individual practitioners [5] or to predict defect-prone software components [7]. This trend is also happening at the tool level, e.g., the recent Kite IDE claims to “augment your coding environment with all the web’s programming knowledge”. MDSE should join this ongoing trend.

Opportunities (and a challenge) in the cognification of MDSE

All MDSE tasks and tools are candidates to be cognified. Here, we comment on a few examples that could be specially boosted thanks to cognification.

  • A modeling bot playing the role of virtual modeling assistant. Based on previous models on the same domain available online or on a comparison between your current model and general ontologies, it could suggest missing properties on the model, recommend best practices or warn that some model aspects differ from the way they are typically modeled.
  • A model inferencer able to deduce a common schema behind a set of unstructured data (logs, tweets, forum messages,…). This model would be a useful “lense” to interpret the data.
  • A code generator able to learn the style and best practices of a particular organization and mimic them in the code it outputs. Hopefully able to pass the turing test for code-generation tools
  • A real-time model reviewer able to give continuous feedback on the quality of the model by resorting to different verification and validation techniques and past experiences. depending on the model complexity and available time.
  • A morphing modeling tool, able to adapt its interface at run-time (and even the expressiveness of the language offered) to the expertise of the tool user and to the context of the modeling problem addressed.
  • A semantic reasoning platform able to map modeled concepts to existing ontologies and provide definitions (similar to Kindle WordWise), references, relations to relevant concepts, services and contextual information; and conversely also generate new knowledge.
  • A data fusion engine that is able to perform semantic integration and impact analysis of design-time models with runtime data such as software usage logs[1], user profiles and so on.
  • A tool for collaboration between domain experts and modeling designers, thanks to knowledge extractors from vertical data sources and adaptive crowdsourcing [2].

All the above share a common challenge that deserves special attention from our community: cognification requires lots of training data. In MDSE, this means a curated catalog of good and bad models, meta-models, transformations, code, and so on [3].


1. Bernaschina, C., Brambilla, M., Koka, T., Mauri, A., Umuhoza, E.: Integrating modeling languages and web logs for enhanced user behavior analytics. In: WWW’17. pp. 171–175 (2017)
2. Brambilla, M., Ceri, S., Della Valle, E., Volonterio, R., Acero Salazar, F.: Extracting emerging knowledge from social media. In: WWW’17. pp. 795–804 (2017)
3. Gogolla, M., Cabot, J.: Continuing a benchmark for UML and OCL design and analysis tools.
In: Workshop on Software Technologies: Applications and Foundations. pp. 289–302 (2016)
4. Hutchinson, J.E., Whittle, J., Rouncefield, M.: Model-driven engineering practices in industry: Social, organizational and managerial factors that lead to success or failure. Sci. Comput. Program. 89, 144–161 (2014),
5. Lopez-Martin, C., Chavoya, A., Meda-Campaa, M.E.: A machine learning technique for predicting the productivity of practitioners from individually developed software projects. In: SPND’2014. pp. 1–6 (2014)
6. Perini, A., Susi, A., Avesani, P.: A machine learning approach to software requirements priorization. IEEE Transactions on Software Engineering 39(4), 445–461 (April 2013)
7. Shepperd, M., Bowes, D., Hall, T.: Researcher bias: The use of machine learning in software defect prediction. IEEE Transactions on Software Engineering 40(6), 603–616 (June 2014)
8. Stol, K.J., Fitzgerald, B.: Two’s company, three’s a crowd: A case study of crowdsourcing software development. In: ICSE 2014. pp. 187–198. ACM (2014)

Tweet about this on TwitterShare on FacebookBuffer this pageShare on RedditShare on LinkedInShare on Google+Email this to someone
  1. Moon


Your email address will not be published. Required fields are marked *