Tecnologies existents per a l’automatització dels productes software

Tecnologies existents per a l’automatització dels productes software
Autors:

Estratègies per a la innovació de productes software

Quan ens enfrontem a un projecte de programari, un dels reptes més rellevants és la incertesa que tenen la gran majoria d’aquests projectes, sobretot pel que fa al negoci (què hem de construir) i a la tecnologia (com ho hem de construir). El repte és més gran quan es tracta d’un projecte d’R+D on l’objectiu és obtenir una innovació que permeti adquirir un avantatge competitiu. Els projectes (o les operacions) software poden ser de diferent naturalesa, però no sempre ens plantegem quina és l’estratègia (DevOps, Lean Inception, Persones, XP, Scrum, OKR, etc.) o la combinació d’estratègies més adequada per portar-los a terme de manera eficient i eficaç. En els últims anys, han sorgit nous enfocaments (“low code” i “no code”) ‎[1]‎[2] i eines (per ex. Appinventor ‎[5] , Budibase ‎[7] , WebRatio ‎[4 ] , etc.) que permeten construir programari amb pocs coneixements tecnològics, així com eines basades en IA que generen codi de forma automàtica (GitHub copilot ‎[18] o OpenAI ‎[19] basades en GPT3). Gartner estima que, el 2025, 7 de cada 10 aplicacions estaran desenvolupades amb aquest tipus de tecnologies (el 2020, el desenvolupament amb aquest tipus de tecnologies era menor a un 25%).

Figura 1. Evolució de la demanda de perfils Low-Code en una selecció de països europeus (Font: ‎[3])

Si la capacitat de construir i explotar productes software augmenta, les empreses més competitives seran aquelles que tinguin més capacitat en explorar o descobrir noves innovacions en forma de productes o serveis. Aleshores caldrà entendre què implica “innovar” i quina és l’estratègia més eficient i eficaç per aconseguir-ho.

Quines tecnologies hi ha per automatitzar el desenvolupament i assistir al desenvolupador?

Actualment, hi ha tecnologies (artefactes o eines de programari) que són àmpliament conegudes i que ens permeten automatitzar el desenvolupament i assistir els desenvolupadors en activitats de construcció del programari. Vegem a continuació, amb una mica més de detall, algunes d’aquestes tecnologies Low Code/No Code i de tecnologies d’IA que ja s’estan fent servir com a assistent o ajuda al desenvolupament així com l’origen d’aquestes.

Low Code / No Code

La generació de codi de forma automàtica no és nova, té més de trenta anys, i en funció de si és 100% parametritzable (No Code) o no (Low Code), tindria el seu origen, bé en les tècniques i eines desenvolupades als darrers anys sobre les anomenades línies de productes programari ‎[20] (amb un enfocament més orientat cap al No Code) o en l’enginyeria guiada per models (amb un enfocament més orientat cap al Low Code), que inclou a més els treballs realitzats sobre enginyera web guiada per models ‎[21], què és on ens centrarem principalment per entendre com han evolucionat aquestes eines fins avui (principalment, des del paradigma de l’enginyeria web guiada per models).

Figura 2. Comparativa entre segments No-Code i Low-Code(Font: [3])

A Rossi Et Al 2016 es descriu l’estat de l’art de tècniques i eines que permeten, a partir de models, generar codi. Durant tot aquest temps, van sorgir tècniques i eines amb diferents característiques, unes se centraven més en el model de dades, altres se centraven en el model de navegació, d’altres en el model de presentació o la interfície. Poques han estat les tècniques i eines que han sobreviscut, el temps, sens dubte, actua de filtre, i algunes de les esmentades a RossiEtAl semblen haver sobreviscut a tots aquests anys. N’és una prova l’eina Web Ratio que ofereix suport a les tècniques que s’han investigat i que han aconseguit ser explotades com a productes/serveis al mercat. L’any 2000, sorgeix WebML que va acabar evolucionant cap a una tècnica denominada IFML (estàndard de l’OMG ‎[22]) i que incloïen una sèrie d’avantatges que van aconseguir sobreviure fins avui. Ja no es parla de mètodes d’enginyeria web guiats per models, sinó de Low-code. El concepte és el mateix, només n’ha canviat el nom. Potser fruit d’aquesta exposició al mercat amb una eina comercial com WebRatio, podria ser el motiu pel qual l’eina té una sèrie de característiques que li donen certs avantatges competitius. La majoria d’aquestes característiques es poden consultar a la web de la mateixa eina ‎[4], on es pot observar una dinàmica de treball iterativa-incremental molt orientada cap a les activitats següents: (1) Disseny d’un prototip, (2) Validació del prototip amb usuaris, si és validat, es dissenyen la resta de models, (3) Generació del programari a partir del prototip, (4) Integració amb altres sistemes empresarials (si cal), (5) Tornada a l’activitat 1. En aquest context, com si es tractés d’un procés de selecció natural, en els darrers anys han sorgit una gran diversitat d’eines relacionades (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]) que tenen característiques comunes a WebRatio. La majoria de les eines existents se centren principalment en el disseny de les interfícies i lús de components funcionals. En totes s’utilitzen interfícies gràfiques i configuracions fàcils de fer servir per crear les solucions. No obstant això, si la solució que volem dissenyar i construir és 100% parametritzable (No Code), aleshores ens permeten generar una versió completament funcional de manera automàtica. En canvi, si la solució inclou funcions més complexes (Low Code), requeriran que portem a terme feines manuals de disseny i desenvolupament de codi. Tot i això, hi ha eines que ens ajudin a generar aquests dissenys i la construcció de codi?

IA com a assistent:

A la secció anterior, hem parlat de tècniques i eines que ens permeten generar programari de forma automàtica. Tot i això, quan les solucions no són 100% parametritzables, encara és necessari que duem a terme treballs de disseny i desenvolupament del codi de forma manual. Sobre això, ja hi ha eines que ens ajuden en aquestes tasques. N’és una prova Github copilot, que és una eina desenvolupada per Github i OpenAI que, basades en el model d’intel·ligència artificial GPT3, permet assistir els desenvolupadors en entorns de desenvolupament com Visual Studio Code, Visual Studio, Neovim o JetBrains. Al web oficial de GitHub s’indica que la productivitat augmenta al voltant del 30% i que, de mitjana, els usuaris accepten el 26% de totes les finalitzacions mostrades per GitHub Copilot i més del 27% dels fitxers de codi que genera l’eina . A més, en certs llenguatges com Python pot arribar fins i tot al 40%. En aquesta mateixa línia, hi ha llenguatges on aquests percentatges són semblants. Pots trobar més informació a la web oficial de GitHub Copilot ‎[18].

A més, OpenAI disposa d’una API (versió beta) que és capaç de generar qualsevol cosa que necessitem automàticament. Per ex. us pots demanar que et generi la funció de Fibonacci o, per exemple, una llista de preguntes per a un seminari sobre estratègies d’innovació.

Figura 3. Exemple d’ús de l’API d’OpenAI (Font: elaboració pròpia)

I si tot això ja sembla increïble, ens trobem ja amb solucions que integren els motors anteriors d’intel·ligència artificial amb les eines Low Code i No Code anteriors, i són capaços de generar un prototip o un conjunt d’interfícies a partir d’una descripció sobre aquesta. N’és una prova els plugins desenvolupats per a l’eina Debuild (veure Figura 4) o Figma ‎[23].

Figura 4. Generació d’interfícies amb Debuild (Font: ‎[17])

Si això no fos suficient, una xarxa neuronal anomenada DALL-E ‎[24], ja és capaç de crear una gran variabilitat d’imatges només partir de conceptes que siguin expressats en llenguatge natural. A més, Microsoft també està apostant per aquest tipus de tecnologies, prova d’això és el seu model NUWA INFINITY ‎[27], que fins i tot és capaç de generar vídeos a partir d’imatges. Per tant, es podria esperar que aviat, totes aquestes eines ens poguessin ajudar a generar una gran variabilitat de prototips. Per descomptat, la validació dels mateixos (decidir quina versió del prototip aporta més valor), encara queda reservada als humans.

Pels resultats obtinguts en alguns treballs de recerca ‎[25]‎[26], sembla que encara queda feina per fer perquè puguem treure el màxim partit a aquestes eines, principalment quant a millorar la qualitat del codi (o de les dades) que s’usa per entrenar aquests models. Pel que sembla, són capaços de reconèixer algorismes fonamentals i generar codi òptim, però sempre que les descripcions siguin curtes i concises. En alguns casos: (1) encara cal invocar diverses vegades l’algorisme per rebre solucions correctes, i a més (2) també generen codi innecessàriament complicat per a algunes descripcions senzilles.

Conclusions

Finalment, finalitzarem amb les conclusions més rellevants:

  • 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:
    • Si la solució que volem dissenyar i construir és 100% parametritzable (No Code)
    • Si la solució inclou funcions més complexes (Low Code), requeriran que portem a terme treballs manuals de disseny i desenvolupament de codi.
  • A més, hi ha eines tecnològiques d’IA que es poden fer servir com a assistent en les tasques de disseny i desenvolupament de codi. Tot i això, encara queda feina per fer perquè puguem treure el màxim partit a aquestes eines.

Referències

[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 systems35(6), 615-636.

[21]. 25 years of model-driven web engineering. what we achieved, what is missing. CLEI Electronic Journal19(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