Systems, Software and Models (SOM Research Lab) és un equip de recerca conjunt d’ICREA i de la UOC, amb seu a l’Internet Interdisciplinary Institute (IN3), que s’interessa per la modelització del programari (i dels sistemes amb els quals aquest programari interactua) com a base per a l’optimització del procés de desenvolupament, manteniment i evolució del programari. Semblant al que passa a la resta d’enginyeries, el grup SOM promou l’ús rigorós de models per a millorar la productivitat i la qualitat del programari, però sense perdre de vista el factor humà, tant pel que fa a la comunitat d’usuaris del programari com pel que fa al grup de desenvolupadors que el creen.
Per dur a terme aquesta visió, el SOM combina tècniques de modelització, de mètodes formals, de desenvolupament col·laboratiu, d’aprenentatge automàtic (machine learning) i d’anàlisi de comunitats de desenvolupadors.
Mètodes formals
En els sistemes de programari, els errors poden tenir conseqüències catastròfiques, sobretot en els sistemes crítics per a la seguretat, com els programes mèdics o aeroespacials. Les comprovacions i les revisions de codi poden reduir la taxa d’errors, però en alguns casos cal disposar d’un nivell de seguretat més alt. Amb aquesta finalitat, els mètodes formals formen part d’una categoria de tècniques que analitzen una descripció matemàtica del sistema per tal de garantir-ne l’exactitud. Algunes de les tècniques que s’utilitzen per a la verificació formal del programari són la comprovació de models, la demostració de teoremes i l’anàlisi estàtica. Un problema que tenen en comú tots aquests mètodes és la gran complexitat computacional, que en pot limitar l’aplicabilitat en exemples del món real. Aquesta línia de recerca té en compte els enfocaments pragmàtics per a garantir la qualitat dels sistemes de programari a escala industrial, i explora temes clau com la usabilitat, l’eficiència i l’aplicabilitat.
Enginyeria dirigida per models
El desenvolupament dirigit per models és un paradigma que promou l’ús de models de programari en totes les tasques de disseny de programes (enginyeria directa, enginyeria inversa, interoperabilitat...), com es fa habitualment en totes les altres disciplines d’enginyeria. Per exemple, intenta reduir els costos de desenvolupament centrant-se en la creació de models de programari (especificats en UML o per mitjà de llenguatges específics del domini) més que no pas en el codi i, un cop aquests models s’han validat, es basa en eines de generació de codi per a generar automàticament la implantació final d’aquests models. En aquesta línia de recerca explorem tècniques i eines per donar suport a tots els aspectes de l’enginyeria dirigida per models, incloent-hi la manipulació de models molt grans, els models heterogenis, el modelatge col·laboratiu i la descoberta de models (d’API a codi font).
Analítica de programari
L’analítica de programari és l’estudi de totes les dades relacionades amb els programes i els seus processos d’enginyeria amb la finalitat d’entendre millor com es construeix el programari. L’objectiu és ser capaços de predir i millorar factors de qualitat importants dels artefactes de programari i conèixer les millors pràctiques dels projectes del passat (tant si han tingut èxit com si no). L’aprenentatge d’aquests factors es duu a terme per mitjà de la mineria massiva de repositoris de programari com GitHub (amb més de 50 milions de projectes en aquest moment). L’analítica de programari inclou l’anàlisi del codi del programa, però ens interessa especialment estudiar tots els aspectes socials i col·laboratius que s’hi relacionen (quina és la comunitat que construeix el programari, com s’organitzen, quines són les millors pràctiques que segueixen, etc.). Últimament també hem començat a estudiar com l’ús dels bots (assistents virtuals) pot ajudar a la gestió automatitzada d’aquestes comunitats.
Dades obertes
Avui dia, moltes institucions publiquen les seves dades i les posen a disposició del gran públic. Per desgràcia, molt poques vegades els ciutadans les poden fer servir realment, perquè es publiquen en formats molt heterogenis (XML, CSV, API...) i sense una informació precisa dels seus continguts. El nostre grup treballa en l’obtenció automàtica dels esquemes/models que s’amaguen darrere d’aquestes dades i en l’eliminació de barreres tècniques amb vista a facilitar un ús efectiu de les dades obertes per part dels usuaris que no són tècnics.