Enginyeria del Programari i Cicles de Vida

Escolta l'àudio del tema:

1. Sistemes d'Informació i Programari

Sistemes d'Informació (SI)

Conjunt de procediments (manuals o automatitzats) dirigits al tractament i manipulació de la informació.

Objectiu: Promoure el flux d'informació per generar valor i donar suport a la presa de decisions.

  • Part Física: Maquinari (Hardware)
  • Part Lògica: Programari (Software)
  • Part Humana: Usuaris i procediments

El Programari

Conjunt d'instruccions que proporcionen el comportament esperat d'un sistema informàtic.

Components integrals:

  • Instruccions (codi executable)
  • Estructures de dades
  • Documentació (descriu l'ús)

2. Evolució i Crisi del Programari

L'Evolució del Desenvolupament

Anys 50–70

Desenvolupament a mida per a grans corporacions.

Anys 80

Compra de paquets estàndard (COTS).

Inicis 2000

Composició i Arquitectures SOA.

Actualitat

Big Data i Intel·ligència Artificial.

La Crisi del Programari

Neix per una frustració constant on els sistemes lliurats:

  • No compleixen les expectatives del client
  • Presenten altes taxes d'error
  • Superen els pressupostos fixats
  • Incompleixen els terminis
⚠️ Conseqüència: Cercle viciós de manteniment correctiu molt car.

El Con de la Incertesa

Demostra que a l'inici d'un projecte les estimacions de costos i temps tenen un marge d'error extremadament alt.

−400% → +400% Marge d'error a l'inici del projecte

3. Enginyeria del Programari

Concepte encunyat al congrés de l'OTAN del 1968 a Garmisch. Aplicació de principis d'enginyeria per obtenir un programari fiable i eficient sobre màquines reals.

Els Tres Pilars

Mètodes

Com es construeix el programari i quines tècniques s'hi apliquen.

Eines

El suport automàtic o semi-automàtic als mètodes.

Procediments

Com s'organitzen les seqüències i el control de qualitat dins l'organització.

Principis Rectors a Retenir

4. Tipus de Manteniment

Alta Probabilitat Test

Segons les Lleis de Lehman, el manteniment és tractat com un desenvolupament evolutiu, sent la fase que acaba consumint més recursos al llarg de la vida útil del sistema.

Tipus Descripció Clau
Correctiu Orientat a corregir errors o funcionalitats que operen de manera defectuosa.
Evolutiu / Augmentatiu Incorporació de noves funcionalitats al sistema o modificació directa sobre les ja existents.
Adaptatiu Adaptar el programari a canvis en el seu entorn operatiu (ex: canvis de S.O., versions de BBDD, obsolescència de la JVM).
Perfectiu Millora de factors interns de qualitat (refactorització, simplificació del codi, millora d'indexacions) sense alterar la funcionalitat visible per l'usuari.
Preventiu Accions per augmentar la capacitat de manteniment futur i la fiabilitat, evitant problemes abans que esdevinguin crítics.

5. Models de Cicle de Vida

Conjunt d'etapes des de la concepció fins al retir del programari. No hi ha un model únic perfecte; s'ha de seleccionar segons el context, l'equip i la certesa de requisits.

A. Models Clàssics i Variants

Model en Cascada

  • Fases completament seqüencials (Anàlisi, Disseny, Codi, Proves)
  • Requereix lliurables tancats per passar a la fase següent

⚠️ Inconvenients:

  • Seqüencialitat massa estricta
  • Assumeix requisits 100% coneguts
  • Retarda el feedback del client

Model Sashimi

  • Cascada amb encavalcament (solapament) entre fases
  • Redueix l'impacte dels canvis de personal
  • Fomenta un equip més estable i paral·lelitzat

Models en V i W

  • Model V: Mapeja cada fase de disseny amb la seva corresponent fase de proves (unitàries, integració).
  • Model W: Verificació i validació exhaustiva. Ideal per sistemes crítics.

B. Models Basats en Prototips

1

Prototipat Clàssic (D'un sol ús)

Tècnica de descobriment: Usat quan el client no té clars els requisits. La variable clau és el temps (s'ignora la qualitat del codi). Un cop validat, el prototip es llença.

2

Prototipat Evolutiu

S'aplica quan es té ~90% de certesa dels requisits. Es construeix el producte real (codi net i mantenible), el qual s'anirà adaptant iterativament.

3

Prototipat Incremental

Requisits completament coneguts. Es divideix el sistema per valor i es fan lliuraments planificats (releases), on cada increment aporta una funcionalitat acabada.