Enginyeria de requisits (I)

En aquest text de caire introductori farem una breu presentació d’una de les disciplines més importants (sinó la que més) a tenir en compte a l’hora de desenvolupar programari, l’enginyeria de requisits. Sovint ens fixem en aspectes com la usabilitat, consistència, disseny, robustesa, rendiment, etcètera a l’hora de desenvolupar aplicacions. Tot això està molt bé, però no ens enganyem, si no hem identificat correctament els requisits o no es satisfan plenament al client estarem davant d’un producte inaprofitable.

L’enginyeria de requisits és la disciplina q­ue inclou totes aquelles activitats relacionades amb els requisits del programari. Tot i estar molt relacionada amb l’enginyeria del programari, es tracta de disciplines amb objectius diferents.

Mentre que l’enginyeria del programari té com a objectiu desenvolupar un producte de manera correcta, l’enginyeria de requisits té com a objectiu desenvolupar el producte correcte. Per aquest motiu requereix coneixements i habilitats d’altres disciplines com la psicologia, el màrqueting o l’organització d’empreses.

L’enginyeria de requisits té un gran impacte econòmic en la indústria del programari. Quan un equip de desenvolupament dedica el seu esforç a desenvolupar un programari amb els requisits equivocats, no solament s’està malgastant aquesta capacitat (que es podria haver utilitzat per a desenvolupar el producte correcte) sinó que, a més, caldrà dedicar esforços a corregir la situació.

Així, l’enginyeria de requisits és aquell subconjunt de l’enginyeria del programari que s’encarrega de les activitats següents:

  • Obtenció de requisits: identificar les fonts d’informació dels possibles requisits del sistema i obtenir quins són aquests requisits candidats.
  • Gestió de requisits: estimar el cost que implica tenir en compte cada requisit, prioritzar-los segons la importància que tinguin per als stakeholders i així poder seleccionar els requisits que finalment es tindran en compte en l’etapa actual de desenvolupament del sistema.
  • Documentació de requisits: documentar els requisits de manera que quedi constància del resultat del procés de gestió de requisits i que, al mateix temps, els stakeholders i els desenvolupadors comparteixin la visió de quin és el producte per desenvolupar. Aquesta documentació pot formar part o no de la documentació final del sistema.
  • Validació de requisits: comprovar que els requisits triats per al producte que estem desenvolupant reflecteixen les expectatives dels stakeholders i, per tant, que no hi ha hagut errors en l’obtenció, priorització, selecció i documentació.
  • Verificació de requisits: verificar si el sistema desenvolupat (o parcialment desenvolupat en el cas de cicles de vida iteratius) satisfà o no els requisits i quins.

Les tasques i artefactes concrets de l’enginyeria de requisits que es facin servir dependran, en bona part, del mètode emprat. Així, per exemple, els mètodes que segueixin un cicle de vida en cascada necessitaran una documentació de requisits molt més exhaustiva que els mètodes àgils.

Problemàtiques de l’enginyeria de requisits

Les principals problemàtiques de l’enginyeria de requisits es troben en el fet que es tracta d’una activitat de comunicació entre persones i, com en qualsevol activitat d’aquest tipus, ens podem trobar amb diverses dificultats. Les més típiques són:

  • Diferències respecte a la informació amb què treballen les diferents parts. Els stakeholders tenen informació sobre el domini que els desenvolupadors no tenen, mentre que els desenvolupadors tenen informació sobre la capacitat de la tecnologia que els stakeholders, no tenen. Això sol condicionar la visió del problema que tenen uns i altres, i pot afectar negativament la comunicació.
  • Limitacions del canal utilitzat. Qualsevol canal de comunicació té limitacions. Així, per exemple, la comunicació escrita perd els matisos del llenguatge immediat i no verbal, mentre que la comunicació verbal impedeix o si més no dificulta la revisió del que es va dir.
  • Limitacions del llenguatge utilitzat. Les persones que es comuniquin ho han de fer en un llenguatge que tots dos coneixen. Els llenguatges naturals (el català, el castellà, etcètera) són els més comuns, però són propensos a l’ambigüitat. Hi ha llenguatges més formals, però esdevenen poc útils si no són coneguts per totes les parts que es comuniquen.
  • Dificultat de definir el millor sistema possible. Molt sovint és difícil descobrir quin és el millor sistema possible, en el sentit que pot ser difícil saber què volen realment els stakeholders. Moltes vegades ni ells mateixos ho sabran dir del cert, ja que estaran condicionats pel seu desconeixement de la tecnologia, per solucions que ja coneixen, etc.

En properes entregues parlarem de les activitats com són l’obtenció, la gestió, la documentació, la validació i la verificació de requisits.

Font: Introducció a l’enginyeria de requisits. Jordi Pradel Miquel i Jose Raya Martos. FUOC. Fundació per a la Universitat Oberta de Catalunya