Wednesday 27 July 2022
Strategies for software product innovation
When we face a software project, one of the most relevant challenges is the uncertainty that most of these projects have, especially regarding the business (what should we build) and the technology (how should we build it). The challenge is even greater when it is an R&D project where the objective is to obtain an innovation that will enable the acquisition of a competitive advantage. Software projects (or operations) can be of different natures, but we do not always consider the most appropriate strategy (DevOps, Lean Inception, Personas, XP, Scrum, OKR, etc.) or combination of strategies to carry them out efficiently and effectively. In recent years, new approaches ("low code" and "no code") [1][2] and tools (e.g. Appinventor [5] , Budibase [7] , WebRatio [4] , etc.) have emerged that allow software to be built with little technological knowledge, as well as AI-based tools that generate code automatically (GitHub copilot [18] or OpenAI [19] based on GPT3). Gartner estimates that, in 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%).
Figure1. Evolution of the demand for Low-Code profiles in selected European countries (Source: [3]).
If the capacity to build and exploit software products increases, the most competitive companies will be those that have a greater capacity to explore or discover new innovations in the form of products or services. By then it will be necessary to understand what "innovate" implies and what is the most efficient and effective strategy to achieve it.
What technologies exist 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 construction 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 development assistants or helpers, as well as their origin.
Low Code / No Code
Automatic code generation is not new, it is more than 30 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 in model-driven engineering (with a more Low Code oriented approach), which also includes the work done on model-driven web engineering [21], which is where we will focus mainly to understand how these tools have evolved until today (mainly from the paradigm of model-driven web engineering).
Figure 2. Comparison between No-Code and Low-Code segments (Source: [3]).
In Rossi Et Al 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, others on the presentation model or interface. Few have been the techniques and tools that 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 to the techniques that have been researched and have managed to be exploited as products/services in the market. In 2000, WebML emerged and evolved into a technique called IFML (OMG standard [22]), which included a number of advantages that have survived to this day. We no longer speak of model-driven web engineering methods, but of "Low-code". The concept is the same, only the name has changed. Perhaps the result of this exposure to the market with a commercial tool such as WebRatio could be the reason why the tool has a number of features that give it certain competitive advantages. Most of these features can be found in the tool's own website [4], where an iterative-incremental work dynamic can be observed, very 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 natural selection process, a great diversity of related tools have emerged in recent years (Appinventor [5], Budibase [7], WebRatio[4], Mendix [8], Zoho [12], Saltcorn [6], Velneo [9], Appian [13], Microsoft PowerApps [10], Convertigo [14], Oracle VisualBuilder [11], Joget [15], Figma [16], Debuild [17]) that have features common to WebRatio. Most of the existing tools focus mainly on the design of interfaces and the use of functional components. In all of them, graphical interfaces and user-friendly configurations are used to create the 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 design and code development work. Even so, are there tools that help us to generate these designs and code construction?
AI as an assistant:
In the previous section, we discussed techniques and tools that allow us to generate software automatically. However, when solutions are not 100% parameterizable, it is still necessary to carry out design and code development work manually. In this regard, there are already tools that help us in these tasks. Proof of this is Github copilot, which is a tool developed by Github and OpenAI that, based on the GPT3 artificial intelligence model, allows to assist developers in development environments such as Visual Studio Code, Visual Studio, Neovim or JetBrains. GitHub's official website indicates that productivity increases by around 30% and that, on average, users accept 26% of all the completions shown by GitHub Copilot and more than 27% of the code files generated by the tool. Moreover, in certain languages such as Python, it can even reach 40%. In this same line, there are languages where these percentages are similar. You can find more information on the official GitHub Copilot website [18].
In addition, OpenAI has an API (beta version) that is able to generate anything we need automatically. For example, you can ask it to generate the Fibonacci function or, for example, a list of questions for a seminar on innovation strategies.
Figure 3. Example of the use of the OpenAI API (Source: own elaboration)
And if all this already seems incredible, we already find solutions that integrate the previous artificial intelligence engines with the previous Low Code and No Code tools, being able to generate a prototype or a set of interfaces from a description of the same. 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 the above were not enough, a neural network called DALL-E [24], is already capable of creating a great variability of images only from concepts that are expressed in natural language. In addition, Microsoft is also betting on this type of technologies, proof of this is its NUWA INFINITY model [27], which is even capable of generating videos from images. Therefore, it could be expected that soon, all these tools could help us to generate a great variability of prototypes. Of course, the validation of these prototypes (deciding which version of the prototype provides more value) is still reserved to humans.
From the results obtained in some research papers [25][26], it seems that there is still work to be done to 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) it is still necessary to invoke the algorithm several times to receive correct solutions, and furthermore (2) they also generate unnecessarily complicated code for some simple descriptions.
Conclusions
Finally, we will end with the most relevant conclusions:
- Low Code and No Code technologies allow us to automate development. Most of these tools have a user-centered design approach (design of interfaces that can be validated by users and use of functional components). Graphical interfaces and user-friendly configurations are used to create the solutions:
- 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 us to carry out manual design and code development work.
- In addition, there are AI technology tools that can be used as an assistant in design and code 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, last access: July 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, last access: July 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/, last access: July 2022
[4]. WebRatio, accessible online: https://www.webratio.com/site/content/es/plataforma-de-desarrollo, last access: July 2022
[5]. MIT Appinventor, accesible online: https://appinventor.mit.edu, last access: July 2022
[6]. Saltcorn, accesible online: https://github.com/saltcorn/saltcorn, last access: July 2022
[7]. BuidBase, accesible online: https://budibase.com, last access: July 2022
[8]. Mendix, accesible online: https://www.mendix.com, last access: July 2022
[9]. Velneo, accesible online: https://velneo.es, last access: July 2022
[10]. Microsoft PowerApps, accesible online: https://powerapps.microsoft.com, last access: July 2022
[11]. Oracle Visual Builder, accesible online: https://developer.oracle.com/es/visual-builder/, last access: July 2022
[12]. Zoho, accessible online: https://www.zoho.com/es-xl/creator/, last access: July 2022
[13]. Appian, accesible online: https://appian.com/platform/overview.html, last access: July 2022
[14]. Convertigo, accesible online: https://es.www.convertigo.com, last access: July 2022
[15]. Joget, accesible online: https://www.joget.org, last access: July 2022
[16]. Figma, accesible online: https://www.figma.com/, last access: July 2022
[17]. Debuild, accessible online: https://debuild.app/, last access: July 2022
[18]. GitHub copilot, accesible online: https://github.com/features/copilot, last access: July 2022
[19]. OpenAI examples, accesible online: https://beta.openai.com/examples/, last access: July 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/, last access: July 2022
[23]. GPT3 + FIGMA, accessible online: https://gpt3demo.com/apps/gpt-3-figma-plugin, last access: July 2022
[24]. DALL-E by OpenAI, accessible online: https://gpt3demo.com/apps/openai-dall-e, last access: July 2022
[27]. Microsoft NUWA INFINITY, accesible online: https://nuwa-infinity.microsoft.com/#/, last access: July 2022