Existing technologies for the automation of software products

Home » Current Events »

Existing technologies for the automation of software products
Authors:

Strategies for software product innovation

When faced with a software project, one of the most relevant challenges is the uncertainty that the vast majority of these projects have, especially in terms of business (what to build) and technology (how we should build it). The challenge is greater when it comes to an R+D project where the objective is to obtain innovation that allows acquiring a competitive advantage. Software projects (or operations) may be of different nature, but we do not always consider what the strategy is (DevOps, Lean Inception, People, XP, Scrum, OKR, etc.) or the most appropriate combination of strategies to carry them out efficiently and effectively In recent years, new approaches (“low code” and “no code”) have emerged[1][2] and tools (e.g. Appinventor ‎[5] , Budibase ‎[7] , WebRatio ‎[4] , etc.) that allow you to build software with little technological knowledge, as well as AI-based tools that generate code automatically (GitHub copilot ‎[18] or OpenAI ‎[19] basades en GPT3). Gartner estimates that, by 2025, 7 out of 10 applications will be developed with this type of technology (in 2020, development with this type of technology was less than 25%).

Figure 1. Evolution of the demand for Low-Code profiles in a selection of European countries (Source: ‎[3])

If the capacity to build and exploit software products increases, the most competitive companies will be those that have more capacity to explore or discover new innovations in the form of products or services. Then it will be necessary to understand what “innovation” implies and what is the most efficient and effective strategy to achieve it.

What technologies are there to automate development and assist the developer?

Currently, there are technologies (artifacts or software tools) that are widely known and that allow us to automate development and assist developers in software building activities. Let’s see below, in a little more detail, some of these Low Code / No Code technologies and AI technologies that are already being used as an assistant or development aid as well as their origin.

Low Code / No Code

The generation of code automatically is not new, it is more than thirty years old, and depending on whether it is 100% parameterizable (No Code) or not (Low Code), it would have its origin, either in the techniques and tools developed in recent years on the so-called software product lines[20] (with a more No-Code oriented approach) or model-guided engineering (with a more Low Code oriented approach), which also includes work done on model-driven web engineer[21], which is where we will focus mainly to understand how these tools have evolved to date (mainly, from the paradigm of model-driven web engineering).

Figure 2. Comparison between No-Code and Low-Code segments (Source: [3])

RossiEtAl 2016 describes the state-of-the-art of techniques and tools that allow, from models, to generate code. During all this time, techniques and tools with different characteristics emerged, some focused more on the data model, others focused on the navigation model and others on the presentation model or interface. Few techniques and tools have survived, time undoubtedly acts as a filter, and some of those mentioned in RossiEtAl seem to have survived all these years. Proof of this is the Web Ratio tool that offers support for the techniques that have been researched and that have managed to be exploited as products/services in the market. In 2000, WebML emerged, which ended up evolving into a technique called IFML (OMG standard ‎[22]) and which included a number of advantages that managed to survive to this day. We no longer talk about model-guided web engineering methods, but about Low-code. The concept is the same, it has only been renamed. Perhaps as a result of this exposure to the market with a commercial tool such as WebRatio, that could be the reason why the tool has a series of features that give it certain competitive advantages. Most of these characteristics can be consulted on the website of the same tool [4], where you can observe an iterative-incremental work dynamics oriented towards the following activities: (1) Design of a prototype, (2) Validation of the prototype with users, if validated, the rest of the models are designed, (3) Generation of the software from the prototype, (4) Integration with other business systems (if necessary), (5) Return to activity 1. In this context, as if it were a process of natural selection, in recent years a great diversity of related tools have emerged (Appinventor [5], Budibase [7], WebRatio[4], Mendix [8], Zoho[12], Saltcorn ‎[6], Velneo ‎[9], Appian ‎[13], Microsoft PowerApps ‎[10], Converteixo ‎[14], Oracle VisualBuilder ‎[11], Joget ‎[15], Figma ‎[16], Debuild ‎[17]) which have common features to WebRatio. Most existing tools mainly focus on interface design and the use of functional components. All of them use graphical interfaces and easy-to-use configurations to create solutions. However, if the solution we want to design and build is 100% parameterizable (No Code), then they allow us to generate a fully functional version automatically. On the other hand, if the solution includes more complex functions (Low Code), they will require us to carry out manual code design and development work. However, are there any tools that help us generate these designs and build code?

IA as an assistant:

In the previous section, we talked about techniques and tools that allow us to generate software automatically. However, when the solutions are not 100% parameterizable, it is still necessary that we carry out design and development work of the code manually. In this regard, there are already tools that help us in these tasks. Proof of this is co-pilot Github, which is a tool developed by Github and OpenAI that, based on the GPT3 artificial intelligence model, allows developers to assist in development environments such as Visual Studio Code, Visual Studio, Neovim or JetBrains. The official GitHub website indicates that productivity increases by around 30% and, on average, users accept 26% of all completions displayed by GitHub Copilot and more than 27% of the code files generated by the tool. In addition, in certain languages such as Python it can even reach 40%. Along the same lines, there are languages where these percentages are similar. You can find more information in the official website of GitHub Copilot [18]

In addition, OpenAI has an API (beta) that is able to generate anything we need automatically. For example , you ask to generate the Fibonacci function or, for example, a list of questions for a seminar on innovation strategies.

Figure 3. Usage example of OpenAI API (Source: elaboració pròpia)

And if all this already seems incredible, we already find solutions that integrate previous artificial intelligence engines with the previous Low Code and No Code tools, and are capable of generating a prototype or a set of interfaces from a description about it. Proof of this are the plugins developed for the Debuild tool (see Figure 4) or Figma ‎[23].

Figure 4. Interface generation with Debuild (Source: ‎[17])

If this wasn’t enough, there’s a neuronal web called DALL-E ‎[24], it is already capable of creating a great variability of images only from concepts that are expressed in natural language. In addition, Microsoft is also moving towards these kinds of technologies, proof of that is their new model NUWA INFINITY ‎[27], which is even capable of generating videos from images. Therefore, it could be expected that soon, all these tools could help us generate a great variability of prototypes. Of course, the validation of them (deciding which version of the prototype adds more value), is still reserved for humans.

For the results obtained in some research papers ‎[25]‎[26], it seems that there is still work to be done so that we can get the most out of these tools, mainly in terms of improving the quality of the code (or data) used to train these models. Apparently, they are able to recognize fundamental algorithms and generate optimal code, but as long as the descriptions are short and concise. In some cases: (1) the algorithm still needs to be invoked several times to receive correct solutions, and also (2) they generate unnecessarily complicated code for some simple descriptions.

Conclusions

Finally, we will conclude with the most relevant conclusions:

  • Les tecnologies Low Code i No Code ens permeten automatitzar el desenvolupament. La majoria d’aquestes eines tenen un enfocament de disseny centrat en l’usuari (disseny d’interfícies que poden ser validades pels usuaris i ús de components funcionals). S’utilitzen interfícies gràfiques i configuracions fàcils de fer servir per crear les solucions:
    • If the solution we want to design and build is 100% parameterizable (No Code)
    • If the solution includes more complex functions (Low Code), they will require manual design and code development work.
  • In addition, there are AI technological tools that can be used as an assistant in code design and development tasks. However, there is still work to be done so that we can get the most out of these tools.

References

[1]. El País, “Low Code cómo aparender a programar sin saber programar”, accesible online: https://elpais.com/tecnologia/2022-05-06/low-code-como-aprender-a-programar-sin-saber-programar.html, últim accés: Juliol 2022

[2]. ITUSER, ”Estos son los principales beneficios del lowcode en el desarrollo de aplicaciones”, accesible online: https://www.ituser.es/actualidad/2022/05/estos-son-los-principales-beneficios-del-lowcode-en-el-desarrollo-de-aplicaciones, últim accés: Juliol 2022

[3]. Mobile World Capital Barcelona (MWCapital) y NTT Data, en el marco Barcelona Digital Talent, “Análisis del low-code: nuevo paradigma en el desarrollo del software”, accesible online: https://barcelonadigitaltalent.com/report/analisis-low-code/, últim accés: Juliol 2022

[4]. WebRatio, accessible online: https://www.webratio.com/site/content/es/plataforma-de-desarrollo, últim accés: Juliol 2022

[5]. MIT Appinventor, accesible online: https://appinventor.mit.edu, últim accés: Juliol 2022

[6]. Saltcorn, accesible online: https://github.com/saltcorn/saltcorn, últim accés: Juliol 2022

[7]. BuidBase, accesible online: https://budibase.com, últim accés: Juliol 2022

[8]. Mendix, accesible online: https://www.mendix.com, últim accés: Juliol 2022

[9]. Velneo, accesible online: https://velneo.es, últim accés: Juliol 2022

[10]. Microsoft PowerApps, accesible online: https://powerapps.microsoft.com, últim accés: Juliol 2022

[11]. Oracle Visual Builder, accesible online: https://developer.oracle.com/es/visual-builder/, últim accés: Juliol 2022

[12]. Zoho, accessible online: https://www.zoho.com/es-xl/creator/, últim accés: Juliol 2022

[13]. Appian, accesible online: https://appian.com/platform/overview.html, últim accés: Juliol 2022

[14]. Convertigo, accesible online: https://es.www.convertigo.com, últim accés: Juliol 2022

[15]. Joget, accesible online: https://www.joget.org, últim accés: Juliol 2022

[16]. Figma, accesible online: https://www.figma.com/, últim accés: Juliol 2022

[17]. Debuild, accessible online: https://debuild.app/, últim accés: Juliol 2022

[18]. GitHub copilot, accesible online: https://github.com/features/copilot, últim accés: Juliol 2022

[19]. OpenAI examples, accesible online: https://beta.openai.com/examples/, últim accés: Juliol 2022

[20].Automated analysis of feature models 20 years later: A literature review. Information systems, 35(6), 615-636.

[21].25 years of model-driven web engineering. what we achieved, what is missing. CLEI Electronic Journal, 19(3), 5-57.

[22]. IFML: The interaction Flow Modeling Language, accessible online: https://www.ifml.org/, últim accés: Juliol 2022

[23]. GPT3 + FIGMA, accessible online: https://gpt3demo.com/apps/gpt-3-figma-plugin, últim accés: Juliol 2022

[24]. DALL-E by OpenAI, accessible online: https://gpt3demo.com/apps/openai-dall-e, últim accés: Juliol 2022

[25]. S. Imai, “Is GitHub Copilot a Substitute for Human Pair-programming? An Empirical Study,” 2022 IEEE/ACM 44th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion), 2022, pp. 319-321, doi: 10.1109/ICSE-Companion55297.2022.9793778.

[26]. Dakhel, A. M., Majdinasab, V., Nikanjam, A., Khomh, F., Desmarais, M. C., & Ming, Z. (2022). GitHub Copilot AI pair programmer: Asset or Liability?. arXiv preprint arXiv:2206.15331.

[27]. Microsoft NUWA INFINITY, accesible online: https://nuwa-infinity.microsoft.com/#/, últim accés: Juliol 2022