| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Enginyeria del programari¶Què és l'enginyeria del programari?¶La enginyeria del programari és una disciplina que engloba eines, tècniques, recomanacions i mètodes que s'utilitzen en la creació d'una aplicació/sistema/aplicatiu/plataforma informàtica o, més genèricament, al desenvolupament d'un projecte de programari que resol un problema o supleix una necessitat.
Aquesta disciplina té la codificació o programació com a pilar fonamental, però inclou altres tasques abans i després que són tant o més importants que la codificació. L'enginyer de programari, per tant, s'encarrega de tota la gestió del projecte perquè es puga desenvolupar a temps i forma, és a dir, en un termini determinat i amb pressupost i requisits previstos. L'enginyeria del programari inclou:
Per què és important?¶El terme Crisi del Programari es va definir a principis dels anys 70, quan la planificació d'un projecte programari era pràcticament inexistent. Seguien un procés de desenvolupament força artesanal, sense una metodologia o un camí que cal seguir per al seu desenvolupament. L'anàlisi prèvia a la codificació abastava el 8% del temps total de desenvolupament de programari. El 80% dels errors es produïen en aquesta fase, de manera que s'incrementava el cost de correcció d'errors a mesura evolucionava el projecte. Amb aquests indicadors estava clar que alguna cosa estava fallant i que el procés de desenvolupament de programari necessitava un canvi radical. L'Informe CHAOS2 de Standish sobre l'èxit dels projectes de programari va concloure a 2015 que:
Cada any, des del 1994, el Grup Standish crea una llista de 10 atributs i el seu pes relatiu que ells anomenen els factors d'èxit. Els tres primers per al 2018 són:
Standish Group 2015 Chaos Report Estadístiques informe CHAOS 2015 Cicle de vida del programari¶Fases més comunes¶Les fases del desenvolupament de programari, conegudes com a cicle de vida del programari, representen les etapes per les quals ha de passar una aplicació per ser lliurada al destinatari amb totes les garanties. Autor desconegut Cicle de vida del programari Anàlisi¶
L'anàlisi d'una aplicació pretén determinar les necessitats que ha de cobrir. Aquesta fase es realitza en contacte directe amb el client. S'especifiquen els requisits funcionals i no funcionals del projecte. L'obtenció de requisits es plasma en aquests documents:
Pel que fa als requisits, s'agrupen en:
Disseny¶
Al disseny (o modelat del programari) es planteja una solució per a l'aplicació i es fa un model utilitzant diferents tècniques. Aquest disseny sol fer-se per nivells, començant amb una idea general que es va dividint en components per després modelar cadascun (disseny descendent/drop-down).
Codificació¶
A la codificació es realitza el programa atenent tots els seus components; això inclou elements com la base de dades, servidors o comunicacions. En molts projectes es comet l'error de suposar que, per una banda, el programador és la "persona per a tot" en el desenvolupament del programari i que, de l'altra, qualsevol analista o consultor és també un bon programador. No tot professional està capacitat per tractar directament amb el client. Proves¶
Les proves són revisions que han de realitzar persones diferents de les que van codificar el aplicatiu per detectar errors d'usabilitat o errors no detectats a la fase anterior. Es poden fer proves de diversos tipus: individuals, d'integració i sobretot d'acceptació amb el client, sempre amb l'especificació de requisits (l'anàlisi) al davant. Documentació¶
La fase de documentació consisteix a deixar per escrit les decisions tècniques que s'han pres. Des de per què un framework i no un altre fins per què s'han creat 10 taules a la base de dades i no 200. Aquesta fase no s'ha de fer necessàriament després de la de codificació. De fet, es considera una bona pràctica documentar a la vegada que codifica. Implantació o desplegament¶
La implantació o desplegament (no confondre amb implementació) consisteix a publicar la solució final a la plataforma destinació o lliurar al client el producte final en el format acordat. Molt poques persones a l'organització tenen (o han de tenir) accés als servidors on resideixen les aplicacions que estan publicades (servidors de producció). Aquesta fase recau en els més veterans i experimentats (sènior). Manteniment¶
La fase de manteniment sol tindre una secció específica en els contractes de desenvolupament on es detalla com es facturarà aquest servei i en quins termes. El manteniment pot ser:
Tipus de cicles de vida¶En funció de com se seqüencien les fases que hem vist abans, tindrem aquests tipus: Clàssic o cascada (waterfall)¶Totes les fases es distribueixen en una estructura lineal, on no hi ha retroalimentació ni la possibilitat de tornar enrere. Només vàlid en projectes grans amb requisits molt clars. Autor desconegut Model en cascada Cicle de vida iteratiu¶Totes les fases es distribueixen en una estructura iterativa, on es repeteix en bucle el sistema lineal. Una vegada realitzat el desplegament de l'aplicació, es prova i s'avalua el sistema per veure si cal fer alguna modificació. Autor desconegut Model iteratiu Cicle de vida a espiral¶A partir del model iteratiu, afegeix la gestió de risc, per determinar si és viable aturar o no el desenvolupament de l'aplicació. Autor desconegut Model en espiral Metodologies¶Els cicles de vida es combinen i exploten per crear metodologies, que ofereixen tècniques concretes per cada etapa o fase dels cicles de vida escollits. Hi ha tres enfocaments:
Standish Group 2015 Chaos Report Estadístiques informe CHAOS àgils vs cascada Bibliografia¶
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||