UML(Unified Modeling Language) Llenguatge unificat de modelització
- Model estàtic: descriu l’estructura de classes i objectes
- Model dinàmic: descriu les interaccions entre objectes dins del programari
- Model d’implementació: descriu l’estructura del programari en termes dels components de què consta i de llur ubicació
MODEL ESTÀTIC
- Diagrama de classes
- Diagrama d’objectes
- Diagrames de paquets
- Diagrama d’estructures compostes
- Diagrama de components
- Diagrama de desplegament
- Diagrama de perfil
CLASSIFICADORS
Classificador: entitat bàsica del model estàtic. Quelcom més general que una classe; és un conjunt els elements del qual es diuen instàncies. El classificador té els seus estereotips: classe, tipus de dada i interfície.
PAQUETS
Paquet: caixa que conté elements com ara classificadors, objectes o altres paquets. Les relacions entre paquets poden ser:
- Especialització: un paquet A hereta d’un altre B tots els elements de B
- Inclusió: si el paquet A inclou el B, tots els elements de B estan també a A
- Importació: des del paquet que importa es reconeixen els noms dels elements de l’altra paquet visibles des de l’exterior
- Accés: es reconeixen els noms dels elements i es poden fer servir
CLASSES
Classe: cjt. d’objectes que comparteixen els mateixos atributs (característiques) i operacions (accions). Una classe es representa per un rectangle dividit en tres compartiments:
- Nom de la classe
- Llista dels atributs
- Serveis de la classe
Compartiment del Nom
El nom ha de ser un substantiu en singular i es recomana que comenci amb majúscula. A sota del nom hi pot haver comentaris optatius entre ({}) anomenats cadenes de caràcters de propietats (property string) o valors etiquetats (tagged values).
Compartiment dels atributs
Un atribut o propietat té assignat un tipus. Un atribut es defineix així: visibilitat nom ‘:’ expressió-de-tipus ‘=’ valor-inicial ‘{‘ property string ‘}’. Es recomana que comenci amb minúscula i si es tracta d’un atribut derivat, el nom hauria d’anar precedit de “/”
Visibilitat: àmbit des del qual podran ser utilitzats els elements
- + públic: element accessible per tots els elements del sistema
- – privat: element només accessible pels elements continguts dins el mateix objecte
- # protected: element només accessible per als elements del mateix objecte i pels elements que pertanyen a objectes que són especialitzacions
- ~ package: l’element només és visible pels elements continguts directament o indirectament dins el paquet que conté directament l’objecte (quan l’objecte no és un paquet).
Compartiment de les operacions
Una operació o mètode es defineix així: visibilitat nom ‘(‘ llista-de-parametres ‘):’ tipus-de-retorn ‘{‘ property string ‘}’. Es recomana que els noms de l’operació comencin amb minúscula.
- Els paràmetres tenen nom, tipus, multiplicitat i direcció. I la sintaxi de la llista de parametres és la següent: in|out|inout nom’:’ expressió-de-tipus ‘=’ valor-per-omissió
- El valor de retorn té tipus i multiplicitat
- Opcionalment hi pot haver property strings: query indica que l’operació no modifica l’estat del sistema i sequential, guarded o concurrent es poden utilitzar per especificar la semàntica de concurrència.
- Les operacions poden tornar excepcions durant la seva execució

Herència: donades dues classes, una fa de superclasse i l’altra de subclasse. Segons es defineix primer la superclasse o les seves subclasses, tenim els següents tipus d’herència:
- Herència per especialització: es crea una classe més especialitzada (més restrictiva) a partir d’una classe definida abans.
- Herència per generalització: a partir de les subclasses es troba la superclasse. Una classe abstracta és una superclasse de la qual no es poden crear directament objectes, sinó que s’han de crear necessàriament de les seves subclasses.
Classes diferides: classes abstractes que tenen alguna operació abstracta. (en Java es declaren abstract)
Classes terminals: l’UML no té aquests conceptes, però de vegades els frameworks els utilitza per bloquejar els canvis que es podrien fer amb l’herència. A Java es permeten:
- classes terminals: no poden tenir subclasses
- mètodes terminals: no poden ser modificats en una subclasse
- atributs terminals: no se’ls pot canviar la visibilitat en una subclasse
Metaclasses: són classes, cada instància de les quals és una classe.
“Classes” parametritzades o plantilles: (o classes genèriques) descriptor de classe formalment igual a una classe llevat que algun terme de la seva definició sigui un paràmetre. (Amb Java cal simular-les amb la classe Object)
Classes d’utilitat: classes amb l’estereotip utility que inclouen rutines com operacions i les dades com a atributs.
Interfície: conté la declaració de les operacions sense la seva implementació, que hauran de ser implementades per una classe o un component.
REPRESENTACIÓ DELS OBJECTES
En un Objecte s’indiquen els valors dels atributs d’instància i opcionalment un nom a l’objecte, seguit de”:” i del nom de la classe, tot subratllat. Es poden ometre els tipus d’atributs i les operacions.

Instanciació: acció de crear una instància d’una classe (crida al mètode constructor)
RELACIONS ENTRE CLASSES
Els llenguatges de programació permeten dos tipus de relacions:
- Herència
- Client-Servidor
En una relació client-servidor: un objecte obj1(client) demana a un altre obj2(servidor), mitjançant un missatge, que executi una operació de les definides en la classe de l’obj2(servidor)

Cardinalitat: nombre màxim d’enllaços possibles que es podran donar en una relació.
Tipus de relacions:
- Relació d’associació
- Relació d’associació d’agregació (tot-part): objecte base i objecte inclòs a l’objecte base). Si desapareix l’objecte base, els objectes inclosos continuen existint.
- Relació d’associació de composició (tot-part): si l’objecte base deixa d’existir, els objectes inclosos també deixen d’existir.
- Relacions de dependència (semàntica): l’objecte del qual surt la fletxa és l’objecte dependent i l’objecte al qual arriba la fletxa és l’objecte independent.
- Relació de generalització (herència): hi ha una classe mare (superclasse) i l’altra o les altres són les classes filles (subclasses), que hereten els atributs i els mètodes i comportaments de la classe mare.
Associacions
Hi ha una associació entre classes quan una classe necessita una o unes altres per a la implementació de les serves operacions, cosa que s’acompleix per mitjà del pas de missatges entre aquestes.
Associacions binàries: tenen lloc entre dues classes. Si les dues classes són la mateixa tenim una associació reflexiva. Les relacions ternàries són les que hi participen tres classes i les n-àries, les que en tenen n.
Classe associativa: quan una associació té atributs o mètodes propis. Una classe associativa es representa com una classe penjada del dimbol de l’associació per mitjà d’un línia discontínua
Associacions qualificades:
Associacions alternatives:
Associacions derivades:
Agregacions i composicions
Agregació: associació binària en la qual un dels papers té el significat de ‘part’ i l’altra el de ‘tot’. Els components són la classe i els objectes corresponents al primer paper i la classe i els objectes agregats, els del segon paper. Les agregacions tenir diversos significats:
- Acoblament-peces
- Continent-contingut
- Col·lectiu-membres
En una Composició els objectes components no tenen vida pròpia, sinó que, quan es destrueix l’objecte compost del qual formen part, també es destrueixen. Un objecte component només pot formar part d’un objecte compost i no pot passar d’un objecte compost a un altre. Aquestes restriccions no existeixen en el cas d’agregacions en general. En una composició anomenarem la classe agregada, classe composta, i a l’objecte agregat, objecte compost.
Relacions de dependència
Dependència: un element (client) depèn per a la seva implementació o funcionament d’un altre element (subministrador). Es representa amb una fletxa de línia discontínua i punta oberta.
Estereotips estàndards:
- access, bind, import, instantiate, uses
- derive significa que un element s’obté d’un altre per mitjà d’un càlcul o algorisme
- friend dóna accés al client als elements de visibilitat private continguts en el subministrador
- refine el client procedeix històricament del subministrador, del qual és una versió nova o enriquida (per exemple, una classe descrita a
l’anàlisi a la qual es fan canvis en el disseny) - trace relaciona elements que corresponen des d’un punt de vista semàntic al mateix concepte, com per exemple, un element i la seva implementació
- call, create i send.
- extend i include, que existeixen només entre casos d’ús.
COMENTARIS I RESTRICCIONS
Els comentaris es posen dins d’un rectangle amb un vèrtex doblegat, enllaçat per una línia discontínua a l’element al qual es refereix.
Les restriccions (constraints) són condicions que ha de complir l’element del model al qual van associades. Es representen igual que els comentaris, però van entre claus {}, Els tipus de restriccions relatives a les operacions són:
- precondicions: condicions que s’han de complir abans d’executar l’operació.
- postcondicions: condicions que s’han de complir en acabar l’execució d’una operació
- invariants: condicions que s’han de complir en tot moment.
DIAGRAMA DE CLASSES
DEF: representa les classes i les relacions entre elles

DIAGRAMA D’OBJECTES
DEF: Només pot contenir instàncies i relacions entre objectes: enllaços i dependències que tinguin lloc entre instàncies.

DIAGRAMA DE PAQUETS
DEF: serveix per descriure l’estructura d’un model en termes de paquets interrelacionats. Els paquets permeten organitzar els elements del model en grups relacionats semànticament; un paquet no té significat per si mateix.

DIAGRAMA D’ESTRUCTURES COMPOSTES
DEF: Descriu objectes compostos amb la màxima precisió possible. Una estructura composta és un conjunt d’elements interconnectats que col·laboren en temps d’execució per aconseguir algun propòsit.

DIAGRAMA DE COMPONENTS
DEF: mostra els components que conformen el sistema i com es relacionen entre si. Un component és una peça del programari que conforma el sistema.

DIAGRAMA DE DESPLEGAMENT
DEF: descriu la distribució de les parts d’una aplicació i les seves interrelacions. La configuració del sistema de programari en temps d’execució, en termes de recursos de maquinari i dels components de programari, processos i objectes (en memòria o emmagatzematge en bases de dades, per exemple) que s’hi hostatgen.


MODEL DINÀMIC
Elements dels diagrames dinàmics
- Diagrama de casos d’ús
- Diagrama d’estats
- Diagrama d’activitats
- Diagrama d’interacció
- Diagrama de seqüències
- Diagrama de comunicacions
- Diagrama de visió general de la interacció
- Diagrama temporal
- Senyal: instància que un objecte transmet d’un objecte a un altre
- Missatge: comunicació entre instàncies
- síncron
- de resposta
- asíncron
- Esdeveniment: succés que pot tenir efectes damunt algun comportament
- Activitat i acció (activitat que no es pot descompondre)
DIAGRAMA D’ACTIVITATS

Altres elements:
- Decisió/fusió: es pot passar per una transició o per un altra
- Condició
- Fork: obligatori passar per les transicions
- Join

DIAGRAMA D’ESTAT
DEF: representa el cjt. d’estats pels quals passa un obj. durant la seva vida en una aplicació en resposta a esdeveniments, juntament amb les seves respostes i accions.


DIAGRAMA DE CASOS D’ÚS
DIAGRAMA D’INTERACCIÓ
DIAGRAMA DE SEQÜÈNCIA
DIAGRAMA DE COMUNICACIÓ
DIAGRAMA DE TEMPS
DIAGRAMA DE VISIÓ GENERAL DE LA INTERACCIÓ
Model d’implementació
Def: descriu l’estructura del programari en termes dels components de què consta i de llur ubicació
Recursos
Referències
- Falgueras, B. C. UML (I): el model estàtic.
- Falgueras, B. C. UML (II): el model dinàmic i d’implementació.