Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Vladimir Bellavista Parent

Trimestre: Tercer trimestre

Crèdits: 4

Professorat: 

Josep Roure Alcobé

Curs acadèmic: 2026

Curs d'impartició: 3

Llengües d'impartició


  • Català

L'idioma d'impartició principal a classe és el català.

Tanmateix:

- Tot el codi exposat està en anglès
- Les eines usades i material addicional estan en anglès,
- Tot el codi que s'entregui ha d'estar en anglès. Examens i pràctiques que consisteixin en redactar han d'estar o en català o castellà 

Competències / Resultats d'aprenentatge


Competències bàsiques
  • B2_Que els estudiants sàpiguen aplicar els seus coneixements a la seva feina o vocació d'una forma professional i tinguin les comptències que demostren mitjançant l'elaboració i defensa d'arguments i la resolució de problemes dins de la seva àrea d'estudi

  • B4_Que els estudiants puguin transmetre informació, idees, problemes i solucions a un públic tan especialitzat com no especialitzat

  • B5_Que els estudiants hagin desenvolupat aquelles habilitats d'aprenentatge necessàries per emprendre estudis posteriors amb un alt grau d'autonomia

Competències específiques
  • EIS1_Capacitat per a desenvolupar, mantenir i avaluar serveis i sistemes software que satisfacin tots els requisits de l'usuari i que es comportin de forma fiable i eficient, siguin assequibles de desenvolupar i mantenir i compleixin normes de qualitat, aplicant les teories, principis, mètodes i pràctiques de l'enginyeria del software

  • EIS2_Capacitat per a valorar les necessitats del client i especificar els requisits software per a satisfer aquestes necessitats, reconciliant objectius en conflicte, mitjançant la cerca de compromisos acceptables, dins de les limitacions derivades del cost, del temps, de l'existència de sistemes ja desenvolupats i de les pròpies organitzacions

  • EIS3_Capacitat per donar solució a problemes d'integració en funció de les estratègies, estàndards i tecnologia disponibles

  • EIS4_Capacitat d'identificar i analitzar problemes i dissenyar, desenvolupar, implementar, verificar i documentar solucions software sobre la base d'un coneixement adequat de les teories, models i tècniques actuals

  • EIS5_Capacitat d'identificar, avaluar i gestionar els riscos potencials associats que es puguin presentar

  • EIS6_Capacitat per a dissenyar solucions apropiades en un o més dominis d'aplicació, utilitzant mètodes de l'enginyeria del software que integren aspectes ètics, socials, legals i econòmics

  • ESI2_Capacitat per determinar els requisits dels sistemes d'informació i comunicació d'una organització, atenent a aspectes de seguretat i compliment de la normativa i legislació vigent

  • ESI3_Capacitat per participar activament en l'especificació, disseny, implementació i manteniment dels sistemes d'informació i comunicació

Competències transversals
  • T1_Que els estudiants coneixin un tercer idioma, que serà preferentment l'anglès, amb un nivell adequat de forma oral i per escrit, d'acord amb les necessitats que tindran les graduades i els graduats a cada titulació

  • T2_Que els estudiants tinguin capacitat per a treballar com a membres d'un equip interidisciplinar ja sigui com un membres més, o realitzant tasques de direcció amb la finalitat de contribuir a desenvolupar projectes amb pragmatisme i sentit de la responsabilitat, assumint compromisos tenint en compte els recursos disponibles

Presentació de l'assignatura


Aquest mòdul amplia els fonaments d'enginyeria de software que els estudiants ja tenen — extracció de requisits, modelatge UML, disseny de software i els patrons de disseny del Gang-of-Four — cap a la pràctica de construir software juntament amb agents d'IA de codificació. Els estudiants aprenen a tractar les especificacions, els models de domini i els artefactes d'instrucció per a agents com a lliurables d'enginyeria de primer ordre, i a aplicar el Desenvolupament Dirigit per Especificacions (SDD), el Disseny Dirigit pel Domini (DDD) i les arquitectures de bucle agèntic per produir software la qualitat del qual es pugui verificar en lloc de donar-se per suposada. L'èmfasi al llarg de tot el mòdul recau en l'avaluació crítica de la sortida dels agents: els estudiants han de ser capaços d'explicar què ha fet un agent, per què podria estar equivocat i com detectar-ho.

En finalitzar aquest mòdul, els estudiants seran capaços de:

  • Desenvolupar sistemes de software fent servir agents d'IA tot aplicant principis establerts d'enginyeria de software i fluxos de treball de desenvolupament professionals.
  • Escriure especificacions de software precises i dirigides pel comportament utilitzant Gherkin que serveixin com a requisits executables tant per a persones com per a agents d'IA.
  • Aplicar els principis del Disseny Dirigit pel Domini per crear models de domini clars i un llenguatge ubic que millorin la comunicació i la qualitat del software generat per IA.
  • Dissenyar contextos de desenvolupament d'IA efectius organitzant la documentació del projecte, les convencions de codificació, les restriccions arquitectòniques i les instruccions per a agents (p. ex., agent.md) per guiar els agents d'IA.
  • Construir i gestionar fluxos de treball d'agents d'IA que descomponguin les tasques de desenvolupament de software en planificació, implementació, verificació i refinament iteratiu. 
  • Avaluar el software generat per IA valorant-ne la correcció, el compliment arquitectònic, la mantenibilitat, la seguretat i l'adherència als estàndards de qualitat del software.
  • Integrar el Desenvolupament Dirigit per Especificacions, les proves assistides per IA i les tècniques de verificació automatitzada en un flux de treball complet d'enginyeria de software per desenvolupar sistemes de software fiables.

 

 

Continguts


1. Introducció a l'Enginyeria de Software Nativa en IA
1.1 L'Evolució del Desenvolupament de Software

  • De la programació manual al desenvolupament assistit per IA
  • El canvi de rol de l'enginyer de software
  • Per què l'enginyeria de software importa encara més amb la IA

1.2 IA per al Desenvolupament de Software

  • LLMs i generació de codi
  • Assistents de codificació vs. agents autònoms
  • Punts forts i limitacions de la IA

1.3 Responsabilitats Humanes vs. IA

  • Comprensió del problema
  • Arquitectura
  • Verificació
  • Consideracions ètiques i legals

2. Especificacions de Comportament amb Gherkin
2.1 Per Què Especificacions de Comportament?

  • Requisits ambigus
  • Especificació per l'Exemple (Specification by Example)
  • Desenvolupament Dirigit pel Comportament (BDD)

2.2 El Llenguatge Gherkin

  • Features 
  • Escenaris
  • Given–When–Then
  • Background 
  • Scenario Outline 

2.3 Escriure Especificacions d'Alta Qualitat

  • Llenguatge de negoci vs. llenguatge d'implementació
  • Escenaris bons i dolents
  • Errors comuns

2.4 Gherkin com a Especificació per a IA

  • Dels requisits a les especificacions executables
  • Usar Gherkin com a entrada per a agents d'IA
  • De Gherkin a proves d'acceptació

3. Domain Driven Design per a la IA
3.1 Per Què Importen els Models de Domini

  • El llenguatge com a interfície amb la IA
  • El cost d'una mala nomenclatura

3.2 Ubiquitous Language

  • Vocabulari compartit
  • Glossari de domini
  • Eliminar l'ambigüitat

3.3 Conceptes Fonamentals del DDD

  • Entitats
  • Value Objects
  • Aggregates
  • Repositoris
  • Serveis de Domini

3.4 Disseny Estratègic

  • Bounded Contexts
  • Context Maps
  • Domain Events

3.5 DDD i IA

  • Models de domini rics
  • Millors prompts a través d'un millor llenguatge
  • Millorar el raonament de la IA

4. Specification Driven Development
4.1 Dels Requisits a les Especificacions

  • Requisits vs. especificacions
  • Requisits funcionals i no funcionals
  • Criteris d'acceptació

4.2 Specification Driven Development

  • Principis
  • Flux de treball de desenvolupament
  • Refinament continu

4.3 Especificacions Orientades a la IA

  • Estructurar especificacions per a la IA
  • Restriccions
  • Invariants
  • Casos límit (edge cases)

4.4 Qualitat de l'Especificació

  • Completesa
  • Consistència
  • Traçabilitat
  • Mantenibilitat

5. Enginyeria de Context
5.1 El Context com a Artefacte de Software

  • Per què importa el context
  • Memòria de treball vs. memòria de projecte

5.2 Estructuració de Projectes d'IA

  • Organització del repositori
  • Documentació
  • Documentació d'arquitectura
  • ADRs (Architecture Decision Records)

5.3 agent.md

  • Propòsit
  • Estructura recomanada
  • Convencions de codificació
  • Regles arquitectòniques
  • Flux de treball de desenvolupament

5.4 Enginyeria de Prompts

  • Prompts efectius
  • Few-shot prompting
  • Patrons de prompt
  • Errors comuns

6. Agents d'IA i Desenvolupament Agèntic
6.1 Què És un Agent d'IA?

  • Assistents vs. agents
  • Capacitats dels agents
  • Planificació
  • Ús d'eines

6.2 Arquitectura d'Agents

  • Planificador (Planner)
  • Memòria
  • Executor
  • Reflexió
  • Skills (habilitats)
  • Eines (Tools)

6.3 Bucles d'Agent

  • Observar
  • Planificar
  • Executar
  • Verificar
  • Reflexionar
  • Repetir

6.4 Sistemes Multiagent

  • Agents especialitzats
  • Col·laboració
  • Orquestració
  • Human-in-the-loop 

7. Proves i Verificació amb IA
7.1 Les Proves en el Desenvolupament Assistit per IA

  • Per què les proves esdevenen més importants
  • Verificació vs. generació

7.2 TDD Humà vs. TDD Natiu en IA

  • Red–Green–Refactor clàssic
  • Bucles d'implementació amb IA
  • Bucles de reparació (repair loops)

7.3 Generació de Proves

  • Proves unitàries
  • Proves d'integració
  • Proves d'acceptació a partir de Gherkin
  • Property-based testing
  • Mutation testing

7.4 Verificació Contínua

  • Validació automatitzada
  • Proves de regressió
  • Pipelines de CI amb IA

8. Garantia de Qualitat del Software Generat per IA
8.1 Revisió de Codi Generat per IA

  • Correcció
  • Llegibilitat
  • Mantenibilitat

8.2 Validació Arquitectònica

  • Respectar les restriccions arquitectòniques
  • Detectar la deriva arquitectònica (architectural drift)

8.3 Qualitat del Codi

  • Anàlisi estàtica
  • Complexitat
  • Duplicació
  • Deute tècnic

8.4 Seguretat i Fiabilitat

  • Al·lucinacions
  • Vulnerabilitats de seguretat
  • Riscos de dependències

8.5 El Futur de l'Enginyeria de Software Nativa en IA

  • Tendències emergents
  • Enginyeria de software autònoma
  • L'evolució del rol de l'enginyer de software

Activitats i sistema d'avaluació


La nota final es calcularà amb les qualificacions de les activitats ponderades de la forma següent:

·          Examen (EX): 60%

·          Pràctiques (PR): 40%

Per poder superar l'assignatura és necessari que tant EX com PR siguin iguals o superiors a 5 (s'ha d'aprovar teoria i pràctica per separat). En aquest cas la nota de final NF serà la ponderació segons com està descrit més amunt (40% PR, 60% EX). En cas contrari serà la mínima d'elles.

Només es podrà recuperar l’examen (EX) en una única prova de tota l’assignatura (les pràctiques no es poden recuperar). En cas de recuperació, el 60% de la nota final de l’assignatura serà la més gran entre l'examen de recuperació ER i l'obtinguda a EX.

Per poder realitzar l'examen de recuperació l’estudiant haurà de complir les condicions següents:

  • La nota de l’assignatura és inferior a cinc.
  • L'alumne s'ha presentat a EX.
  • A partir de la descripció anterior, s’infereix que la nota de pràctiques PR ha de ser superior o igual a 5.

 

Nota sobre el plagi i l'ús d'IA generativa

L’ús d’intel·ligències artificials generatives (IAGs) s’ha de limitar a aquells aspectes que no són fonamentals en el context de l’assignatura. Es poden utilitzar, de manera crítica, com a mecanisme per a resoldre dubtes sobre la matèria i/o per a millorar la redacció de documents lliurables i/o com ajut en la generació de codi de caràcter auxiliar que queda fora de l’abast dels temes de l’assignatura. En el segon cas (millora de la redacció) caldrà explicitar en el document la participació d’IAG en la redacció. En el darrer cas (generació de codi) serà imprescindible esmentar la seva naturalesa de “generat mitjançant IAG” explicitant-ne el model utilitzat i el prompt subministrat, fins i tot si ha estat posteriorment personalitzat i/o modificat. Les IAGs no podran ser utilitzades per a generar codi de programació, ni tan sols en forma de fragments, quan aquest codi quedi dins de l’abast dels temes de l’assignatura i/o tingui caràcter avaluable. Aquesta prohibició es manté fins i tot si el codi és posteriorment personalitzat i/o modificat. Davant dels dubtes respecte de la legitimitat o no de la utilització d’IAGs cal contactar, a priori, amb el professorat de l’assignatura. 

Bibliografia


Bàsic

Context Engineering for Modern AI: Strategies for Precision Prompting, Memory Management, and Reliable Agent Workflows. Craig Landford. Desembre 2025

Complementària

Beck, Kent (2002). Test Driven Development: By Example. Addison-Wesley. ISBN 9780321146533

Clean Agile: Back to Basics
Robert C. Martin, Person, ISBN 9780135781869

Clean Craftsmanship: Disciplines, Standards, and Ethics
Robert C. Martin, Person, ISBN 9780136915713

Khorikov, Vladimir (2020). Unit Testing: Principles, Practices, and Patterns. Manning Publications.

Larman, Craig. Applying UML and patterns: an introduction to analysis and object oriented design and the unified process. 3rd edition. Prentice Hall, 2005. ISBN9788420534381.