Anàlisi UML

Índex
- Introducció
- Objectius
- 1.Anàlisi orientada a objectes amb UML
- 1.1.Anàlisi orientada a objectes
- 1.2.El llenguatge UML
- 1.2.1.Motivació del llenguatge UML
- 1.2.2.Origen del llenguatge UML
- 1.2.3.Tipus de diagrames UML
- 1.3.Exemple
- 2.Model de casos d'ús
- 2.1.El diagrama de casos d'ús
- 2.1.1.Actors
- 2.1.2.La frontera del sistema
- 2.1.3.Els casos d'ús
- 2.1.4.Relacions entre casos d'ús i actors
- 2.1.5.Relacions entre casos d'ús: inclusió
- 2.1.6.Relacions entre casos d'ús: extensió
- 2.2.El diagrama d'activitats
- 2.2.1.Lògica condicional
- 2.2.2.Paral·lelització
- 2.2.3.Organització: carrils
- 2.2.4.Altres elements de notació
- 2.3.El model resultant
- 2.1.El diagrama de casos d'ús
- 3.Modelització de la interfície
- 4.Model del domini
- 4.1.Convencions en els diagrames UML
- 4.2.Classes
- 4.2.1.Notació UML
- 4.2.2.Tècniques de modelització
- 4.3.Atributs
- 4.3.1.Notació UML
- 4.3.2.Tècniques de modelització
- 4.4.Associacions
- 4.4.1.Notació UML
- 4.4.2.Tècniques de modelització
- 4.5.Herència
- 4.5.1.Notació UML
- 4.5.2.Tècniques de modelització
- 4.6.Informació derivada i regles d'integritat
- 4.6.1.Regles d'integritat
- 4.6.2.Informació derivada
- 4.7.Classes i atributs: elements avançats
- 4.7.1.Tipus de dades
- 4.7.2.Atributs: notació UML avançada
- 4.8.Associacions: elements avançats
- 4.9.El model resultant
- Resum
- Activitats
- Exercicis d'autoavaluació
- Solucionari
- Glossari
- Bibliografia
Introducció
Objectius
-
Saber fer servir l'orientació a objectes per a fer anàlisi de programari per a sistemes d'informació.
-
Saber fer servir la notació UML per a documentar models d'anàlisi orientats a objectes.
-
Saber fer servir els casos d'ús per a fer anàlisi funcional de programari per a sistemes d'informació.
-
Saber fer servir els diagrames d'activitats per a documentar detalladament els casos d'ús complexos com a processos.
-
Saber modelitzar la interfície gràfica d'usuari del programari mitjançant casos d'ús concrets, esbossos de les pantalles i mapes navegacionals.
-
Saber fer modelització del domini mitjançant diagrames de classes UML.
1.Anàlisi orientada a objectes amb UML
1.1.Anàlisi orientada a objectes
1.2.El llenguatge UML
1.2.1.Motivació del llenguatge UML
-
Com a llenguatge per a fer un croquis. Es tracta de fer un ús informal (normalment dibuixant a mà alçada) per tal d'explicar o explorar algun aspecte en concret d'un sistema informàtic. La clau aquí és la selectivitat: només tenim en compte els detalls que són rellevants per a la discussió que estem duent a terme en aquest moment i obviem la resta. D'aquesta manera, aconseguim maximitzar la relació entre l'esforç dedicat a la creació dels models i la utilitat obtinguda en canvi.
-
Com a llenguatge per a fer un plànol. Construir models més detallats que ens permetin documentar el sistema amb prou detall per a facilitar-ne la implementació (fins i tot amb generació automàtica de codi) o per a capturar de manera visual els detalls sobre l'estructura i comportament d'un sistema existent (enginyeria inversa). La idea és poder aconseguir que un dissenyador creï els plànols del sistema i que, més endavant, els programadors només hagin d'escriure el codi, però no prendre decisions sobre com ha de ser el sistema per desenvolupar.
-
Com a llenguatge de programació. Aquest seria el cas de les eines MDA. Es tracta de crear models tan detallats del sistema que el codi que es pugui generar de manera automatitzada no hagi de ser modificat (ni tan sols llegit) pels desenvolupadors. Aquest és un camp en què, actualment, s'estan fent molts esforços de recerca.
-
Perspectiva conceptual. El model representa una descripció dels conceptes del domini que estem estudiant.
-
Perspectiva de programari. El model representa el sistema informàtic i, per tant, hi ha una correspondència directa entre els elements del model i les parts del sistema.
1.2.2.Origen del llenguatge UML
1.2.3.Tipus de diagrames UML













1.3.Exemple
2.Model de casos d'ús
2.1.El diagrama de casos d'ús

2.1.1.Actors
2.1.2.La frontera del sistema
2.1.3.Els casos d'ús
2.1.4.Relacions entre casos d'ús i actors
2.1.5.Relacions entre casos d'ús: inclusió


2.1.6.Relacions entre casos d'ús: extensió

2.2.El diagrama d'activitats


2.2.1.Lògica condicional



2.2.2.Paral·lelització

2.2.3.Organització: carrils

2.2.4.Altres elements de notació
2.3.El model resultant



3.Modelització de la interfície
-
De quina manera el sistema presenta la informació als usuaris (mitjançant una interfície gràfica, un sistema de veu, etc.).
-
Com navega l'usuari a través de la informació que li mostra el sistema per tal d'aconseguir els seus objectius.
-
Com es relaciona el comportament indicat al model de casos d'ús amb la interfície d'usuari.
3.1.Casos d'ús concrets
-
Especialista en interacció. La seva finalitat és aconseguir que els usuaris del sistema aconsegueixin complir els seus objectius. Per a fer-ho, estudia les diferents tasques per a aconseguir un objectiu concret (per exemple, què cal fer per a matricular un alumne a la universitat) i la manera en què es duen a terme.
-
Especialista en usabilitat. Aplica el mètode científic a l'estudi i l'observació de la manera en què els usuaris fan servir el sistema per tal de fer que l'ús sigui còmode i intuïtiu.
-
Arquitecte d'informació. S'encarrega d'organitzar la informació de manera que sigui fàcil de trobar i d'utilitzar. Per exemple, és l'encarregat d'assegurar-se que els estudiants poden accedir ràpidament al fòrum de la seva aula i que no han de navegar per un munt de pantalles abans d'arribar-hi.

3.2.Models de les pantalles

-
Quina informació es mostra.
-
La distribució de la informació a la pantalla.
-
Quines accions pot prendre l'usuari a partir de la informació mostrada.
-
Quin és el procés que segueix l'usuari per a completar el cas d'ús.
3.2.1.Diagrama d'estat de les pantalles (mapa navegacional)

-
seleccionarCarpeta(nomCarpeta) a Llista de Missatges
-
seleccionarMissatge(posicioMissatge) a Mostrar Missatge
-
seleccionarCarpeta(nomCarpeta) a Llista de Missatges
3.3.Contractes de les operacions del sistema
-
La signatura. Ens diu el nom de l'operació, la informació que rep d'aquell que la crida (els paràmetres d'entrada) i la informació que es retorna a qui ha cridat l'operació (els paràmetres de sortida o el resultat).
-
Les precondicions. Les obligacions que ha de complir aquell qui crida l'operació per tal que el sistema executi correctament l'operació. En el cas que aquestes precondicions no es compleixin, suposarem que el sistema rebutja l'esdeveniment i que no es produeix cap canvi.
-
Les postcondicions. Les obligacions a què es compromet el sistema quan s'invoca l'operació. Són condicions que el sistema es compromet que siguin certes un cop executada l'operació.
-
El nom de l'operació (obtenirNombreMissatgesCarpeta).
-
La informació que aporta l'usuari (nomCarpeta de tipus String, és a dir, un text).
-
La informació que retornarà el sistema (en aquest cas, un nombre enter).
-
Les obligacions de l'usuari (donar un nom de carpeta que existeixi).
-
Les obligacions del sistema (calcular el nombre de missatges de la carpeta i retornar-lo).
4.Model del domini
4.1.Convencions en els diagrames UML
-
Farem servir noms en minúscules en general. Per a les classes, les associacions i els tipus dels atributs, la primera lletra estarà en majúscula, com si es tractés d'un nom propi.
-
No farem servir noms que continguin espais, sinó que separarem les paraules posant en majúscula la primera lletra de cada paraula.
-
No farem servir caràcters fora del rang d'ASCII, com ara els signes de puntuació, els accents, la ç, etc.
4.2.Classes
4.2.1.Notació UML

4.2.2.Tècniques de modelització
Identificació de classes del domini






-
Participants, llocs i coses. Classes que representen persones o organitzacions del domini (participants), llocs i coses. Els magatzems de què disposa una empresa, els productes que ven o les persones que hi treballen o que hi compren materials, per exemple, pertanyen a aquesta categoria.

-
Rols. Classes que representen els rols que poden tenir les persones o organitzacions en les activitats que es desenvolupen en el domini analitzat. Els rols de comprador o venedor que poden tenir les persones en molts negocis són un bon exemple.
-
Moments o intervals. Classes que representen moments en el temps o intervals de temps, com ara un lloguer, una venda, etc. Tot sovint, aquests moments o intervals tenen un conjunt de parts.
-
Descripcions. Classes que representen la típica descripció de tipus catàleg d'una certa "cosa", típicament, un producte. Així, per exemple, distingim un cotxe concret, que té la seva matrícula i número de bastidor, del model de cotxe, que és una descripció de tipus catàleg associada a aquell cotxe concret.
-
Transaccions, línies de transacció i productes o serveis: les transaccions, típicament de negoci. Un exemple clàssic són les vendes d'un supermercat. Cada venda té un conjunt de línies de venda en què cada línia té un producte venut, un nombre d'unitats i un preu total de línia.
-
Esdeveniments importants, sovint en una data o lloc que és rellevant, com per exemple un vol o un passi d'una pel·lícula.
-
Catàlegs i descripcions de coses: les descripcions, en el mateix sentit que en parla Coad, es poden agrupar en catàlegs.
-
Contenidors físics o lògics i els elements que contenen, com ara magatzems i els productes que hi desem o un tauler d'escacs i les caselles que conté.
-
Sistemes externs amb els quals interactuarà el sistema que estem analitzant.
-
Enregistraments de treballs, contractes, afers legals, etc., com ara els rebuts.

-
Instruments financers com un xec, efectiu, etc.
-
Agendes, manuals, documents, etc.
Nomenclatura de les classes
-
Fer servir la terminologia que fan servir les persones i experts del domini que s'està modelitzant, igual que un cartògraf fa servir la toponímia local al lloc que està cartografiant.

-
Excloure aspectes irrellevants del domini que estem analitzant igual que els cartògrafs fan una abstracció de la realitat i només representen aquells trets del terreny que interessen en un mapa.

-
No afegir res que no sigui realment al domini que analitzem.
Errada freqüent: classes de domini, no de programari
4.3.Atributs
4.3.1.Notació UML
-
"0..1" per a indicar que un atribut és univaluat però opcional.
-
"1" per a indicar que un atribut és univaluat i obligatori. Aquesta opció és la que considerarem per defecte i, per tant, no indicarem aquesta multiplicitat de manera explícita.
-
"*" per a atributs multivaluats ("1..*" si com a mínim han de tenir un valor). Una manera equivalent és indicar "0..*", però com que "*" és més curt, farem servir aquesta segona manera.
-
Altres multiplicitats, com per exemple "3..5" (entre 3 i 5 valors).
4.3.2.Tècniques de modelització
Identificació d'atributs
-
Nombres: sovint ens convé saber si es tracta de nombres naturals (enters positius, que anomenarem Nat), enters (Int), o nombres no enters en general (Real).
-
Textos: Strings (cadenes de caràcters sense format) i textos amb format.
-
Booleans: cert o fals, sí o no.
-
Informació temporal: com ara Data (1 de gener de 1980), Hora (12.43), Moment (1 de gener de 1980 a les 12.43), Durada (63 minuts)
-
Quantitats: com ara Import (per exemple 23 €), Longitud (com ara 23,5 m), Temperatura (15°), Massa, etc.
-
Altres valors sense entitat pròpia: Color (com ara el color RGB 70,0,130), Coordenades (com ara 41°23'N 2°11'E), CodiPostal, NumeroTelefon, etc.








Atributs opcionals i atributs multivaluats


4.4.Associacions
4.4.1.Notació UML

4.4.2.Tècniques de modelització
Noms d'associació i de rols



Identificació d'associacions






-
Els participants, coses o llocs poden tenir associada una descripció
-
Cada participant, però també les coses o llocs, pot tenir associats qualsevol nombre de rols, en què cada instància de rol correspon a un únic participant.

-
Els moments o intervals poden tenir associats diversos rols corresponents als participants, llocs i coses que hi intervenen (sota un rol determinat, com ara comprador o venedor).
-
Les transaccions poden tenir associades altres transaccions, com ara l'associació entre una venda i el seu pagament.
-
Algunes transaccions tenen associades línies de transacció, com ara les línies de venda d'una venda d'un supermercat.
-
Les transaccions o línies de transacció poden tenir associat un producte o descripció de producte, com ara l'associació entre la línia de venda del supermercat i la descripció del producte venut.
-
Les transaccions poden tenir associats participants per mitjà dels seus rols.
-
Algunes classes representen objectes que estan compostos lògica o físicament per objectes d'una altra classe, com els seients d'una sala de cinema o els pisos d'un edifici.
-
Ens pot interessar la relació de contenidor-contingut entre instàncies, com és el cas d'un cotxe i la plaça d'aparcament on està aparcat.

-
Si tenim productes però també descripcions de producte, tindrem una associació entre aquests, com la que hi pot haver entre una edició d'una assignatura i la seva assignatura, que ja hem identificat prèviament.
Classes associatives




Associacions o atributs de tipus de classes del domini

-
La classe Grup, a més de la propietat numero de tipus Nat, té una propietat responsable de tipus Professor amb multiplicitat 1.
-
La classe Professor, a més de la propietat dataContractacio de tipus Data, té una propietat grups de tipus Grup amb multiplicitat *.


Errada freqüent: ús de "claus foranes"

Errada freqüent: Classes d'associació amb atributs erronis

4.5.Herència
4.5.1.Notació UML



4.5.2.Tècniques de modelització
Identificació de l'herència: generalització i especialització
-
La subclasse candidata té atributs addicionals d'interès (que no tenen totes les instàncies de la classe examinada).
-
La subclasse candidata té associacions addicionals d'interès (que no tenen totes les instàncies de la classe examinada).
-
La subclasse candidata es comporta de manera diferent en un sentit rellevant. Pot ser que es faci servir o s'hi operi de manera diferent o bé que representi una persona, animal o sistema que té un comportament propi diferent.

-
Les subclasses potencials representen variacions d'un mateix concepte.
-
Les subclasses potencials tenen un o més atributs en comú que es poden expressar com a atributs de la nova superclasse.
-
Les subclasses potencials tenen una o més associacions en comú que es poden representar com a associacions de la nova superclasse.



Errada freqüent: Herències falses


Distinció entre classes abstractes i classes concretes

Modelització de l'estat dels objectes



Modelització del rol d'objectes i persones



4.6.Informació derivada i regles d'integritat
4.6.1.Regles d'integritat

Claus de les classes del domini
-
Persona: dni
-
Assignatura: nom
-
Campus: nom
-
Semestre: any + num
-
Edifici: campus + nom
-
Aula: edifici + nom
-
Horari: semestre

-
FranjaHoraria: horari + dia + hora
-
ClasseProgramada: franjaHoraria + aula, franjaHoraria + grup
-
Edicio: semestre + assignatura
-
Grup: edicio + numero
-
Tauler: grup
-
Forum: grup
-
Activitat: edicio + titol
-
Professor: persona
-
Alumne: persona

-
Missatge: carpeta + posició a carpeta
Altres restriccions d'integritat
-
Per a tota activitat, la data d'entrega ha de ser una data dins el semestre de l'edició a la qual està associada l'activitat.
-
Les carpetes formen una jerarquia vàlida de mares-subcarpetes (no es poden formar cicles tals que una carpeta té com a mare una filla, o una filla de la seva filla, etc.).
-
No hi pot haver més d'una carpeta sense mare amb el mateix nom dins la mateixa bústia
-
No hi pot haver més d'una carpeta amb la mateixa carpeta mare i el mateix nom.
4.6.2.Informació derivada

4.7.Classes i atributs: elements avançats
4.7.1.Tipus de dades


Enumeracions


4.7.2.Atributs: notació UML avançada
-
visibilitat. Un sol caràcter que indica la visibilitat de l'atribut i que pot ser "+" per a visibilitat pública, "-" per a privada, "#" per a protegida i "~" per a visibilitat de paquet. Normalment, durant l'anàlisi, no indicarem cap visibilitat als atributs dels nostres models.
-
valor-per-defecte. El valor per defecte que pren l'atribut quan es crea un objecte en cas que no s'indiqui un valor inicial per a aquest.
-
propietats. Permet indicar propietats addicionals a l'atribut. Un exemple de propietat és {readOnly}, que indica que un atribut no pot ser modificat un cop s'ha creat l'objecte o {ordered}, que, per a un atribut multivaluat, indica que l'ordre dels valors és rellevant i que, per exemple, no és el mateix tenir els valors [933455667, 654433221] que els valors [654433221, 933455667].
4.8.Associacions: elements avançats
4.8.1.Composició
-
Si destruïm una instància composta, tots els seus components també són destruïts.
-
No hi pot haver instàncies de la classe component que no formin part d'una i només una instància composta.
-
No podem agafar una instància component i canviar-la de compost

4.8.2.Associacions amb repeticions o amb ordre



4.8.3.Notació UML avançada
-
Visibilitat dels extrems d'associació. Un sol caràcter davant del nom de rol, que indica la visibilitat de l'extrem d'associació, i que pot ser "+" per a visibilitat pública, "-" per a privada, "#" per a protegida i "~" per a visibilitat de paquet.
-
Propietats. Com en el cas dels atributs, permeten indicar propietats addicionals dels extrems d'associació com les ja vistes readonly (que també és aplicable als extrems d'associació), non-unique o ordered.
-
Navegabilitat. De vegades volem que una associació només sigui navegable en un dels seus sentits, és a dir, que només una de les classes tingui una propietat lligada a l'associació. En el cas de l'exemple hem indicat que l'associació és navegable de Grup cap a Professor –i, per tant, la classe Grup té una propietat professor– però que no ho és de Professor a Grup –i, per tant, la classe Professor no té cap propietat anomenada grups.

4.8.4.Associacions ternàries (i N-àries en què N > 2)


4.9.El model resultant

-
Persona: dni
-
Assignatura: nom
-
Campus: nom
-
Semestre: any + numSemestre
-
Edifici: campus + nom
-
Aula: edifici + nom
-
Horari: semestre
-
FranjaHoraria: horari + dia + hora
-
Classe: franjaHoraria + aula, franjaHoraria + grup
-
Edicio: semestre + assignatura
-
Grup: edicio + numero
-
Tauler: grup
-
Forum: grup
-
Activitat: edicio + titol
-
Professor: persona
-
Alumne: persona
-
Missatge: carpeta + posició a carpeta::missatges
-
Per a tota activitat, la data d'entrega ha de ser una data de l'any del semestre del curs al qual està associada l'activitat.
-
Les carpetes formen una jerarquia vàlida de mares-subcarpetes (no es poden formar cicles tals que una carpeta té com a mare una filla, o una filla de la seva filla, etc.).
-
No hi pot haver més d'una carpeta sense mare amb el mateix nom dins la mateixa bústia
-
No hi pot haver més d'una carpeta amb la mateixa carpeta mare i el mateix nom.
-
Carpeta::numMissatges és el nombre de missatges associats a la carpeta
-
Persona::bustiesVisibles és el conjunt format pel tauler i el fòrum (per a aquells que en tinguin) de tots els grups als quals la persona està associada com a professor o com a alumne.
Resum
Activitats
-
Escriviu una especificació concreta i detallada d'aquest cas d'ús
-
Feu el diagrama d'activitats d'aquest cas d'ús.
-
Proposeu un model d'interfície gràfica d'usuari que inclogui esbossos de les pantalles i mapa navegacional.
-
Feu el diagrama de classes del model del domini
-
Indiqueu la informació derivada i regles d'integritat addicionals que calguin.
-
Feu el diagrama de classes del model del domini.
-
Indiqueu la informació derivada i les regles d'integritat addicionals que calguin.


-
Bustia: adreca, Etiqueta:nom
-
Els missatges que no són una resposta, i només aquests, han de ser origen d'una conversa.
-
Per a una conversa llegida és fals si i només si llegit és fals per a tots els missatges que formen la conversa.
-
Una conversa està formada pel seu missatge origen i per les respostes a qualsevol dels missatges que forma part de la conversa.
-
Un missatge només pot ser resposta d'un altre que estigui a la mateixa bústia.
-
Pot ser que un missatge ni tingui destinataris (perA) ni vagi amb còpia a ningú (copiaA)?
-
Pot ser que un missatge no tingui cos?
-
Què passa si esborrem una bústia?
-
I si esborrem una etiqueta?
-
Com podríem representar la primera restricció d'integritat de manera gràfica en UML?
-
La multiplicitat del rol d'associació formadaPer és 1..*. Per què no és *?
-
Quines diferències hi hauria si en lloc de modelitzar l'etiqueta com una classe l'haguéssim modelitzada com un atribut etiqueta:String de la classe Conversa?


-
Usuari: nomUsuari, Compte: usuari + numero, Moviment: ordre dins el compte
-
L'usuari d'un compte de crèdit ha de ser el mateix que l'usuari del compte de càrrec associat.
-
El saldo d'un compte es calcula com saldoInicial + suma de tots els imports de tots els moviments associats al compte
Exercicis d'autoavaluació
Solucionari
Solucionari
-
Cas d'ús: lliurar una activitatL'estudiant demana lliurar una activitat. El sistema li mostra una llista amb les assignatures que està cursant, de les quals l'estudiant n'escull una. A continuació el sistema mostra una llista d'activitats de l'assignatura seleccionada i l'usuari en selecciona una iadjunta l'arxiude l'entrega. El sistema enregistra l'entrega, incloent-hi la data i hora en què s'ha fet.
-
Cas d'ús: lliurar una versió nova d'una activitatAquest cas d'ús estén el cas d'úsLliurar una activitatquan l'estudiant va a adjuntar l'arxiu d'entrega i resulta que ja havia fet l'entrega prèviament. El sistema demana confirmació i l'usuari confirma que vol lliurar una nova versió iadjunta un nou arxiu. El sistema enregistra la nova versió i la nova data i hora d'entrega.
-
Cas d'ús: adjuntar arxiuL'usuari vol adjuntar un arxiu i el sistema li mostra un navegador del seu espai de carpetes, situat, inicialment, a la seva carpeta d'usuari. L'usuari navega per l'espai de carpetes fins que troba l'arxiu que vol adjuntar, el selecciona i ho confirma. El sistema desa l'arxiu adjuntat.

-
Cas d'ús: lliurar una activitat. L'estudiant demana lliurar una activitat. El sistema li mostra una llista amb les assignatures que està cursant, de les quals l'estudiant n'escull una. A continuació el sistema mostra una llista d'activitats de l'assignatura seleccionada i l'usuari en selecciona una i adjunta l'arxiu de l'entrega. El sistema enregistra l'entrega, incloent-hi la data i hora en què s'ha fet. Si l'estudiant ja havia fet l'entrega, l'estudiant pot lliurar una versió nova d'una activitat.
-
Cas d'ús: lliurar una versió nova d'una activitat. El sistema demana confirmació i l'usuari confirma que vol lliurar una nova versió i adjunta un nou arxiu. El sistema enregistra la nova versió i la nova data i hora d'entrega.






-
Claus: Projecte: nom, Persona: nom, Iteracio: projecte + nom, HistoriaUsuari: projecte + títol, EntradaBurndown: iteració + data.
-
La data d'inici d'una iteració ha de ser anterior a la data de retrospectiva.
-
La data de totes les entrades de burndown d'una iteració ha de ser entre les dates d'inici i de retrospectiva d'aquesta.
-
Les històries d'usuari associades a una iteració han de pertànyer al projecte al qual pertany la iteració.
-
La velocitatReal d'una iteració és la suma de les estimacions de les històries d'usuari finalitzades associades a aquella iteració.
-
S'ha considerat que hi ha diverses associacions que són composicions. Així, un projecte estarà compost del seu conjunt d'històries d'usuari i del seu conjunt d'iteracions. Aquestes, al seu torn, estaran compostes d'un conjunt d'entrades de burndown. Per tant, entre altres coses, podem afirmar que si esborrem un projecte també n'esborrarem les històries d'usuari, les iteracions i les entrades de burndown.
-
S'ha fet servir {ordered} per a indicar que la llista d'històries d'usuari d'un projecte està ordenada i que l'ordre importa. Igualment per a la llista d'històries d'usuari d'una iteració.

-
Claus: Botiga: nom, Marca: nom, Model: marca + nom, Variant: model + nom + talla
-
No hi pot haver més d'un preu del mateix model a la mateixa botiga amb períodes de validesa que s'encavalquin.
-
S'ha modelitzat el preu amb descompte com una subclasse. Per la seva simplicitat, però, s'hauria pogut indicar, senzillament, el percentatge de descompte com un atribut opcional de preu.
-
Els tipus de dades Email, Adreca, Percentatge i Import no s'han modelitzat amb més detall, o bé perquè eren prou clars (Email, Percentatge i Import) o bé perquè a l'enunciat no en tenim més informació (Adreca).
-
D'entrada, al model mostrat no s'ha indicat cap tipus de restriccions d'integritat addicionals, ni tan sols les de clau. Caldria una nota addicional que informés sobre aquestes restriccions.
-
La classe ValoracioFormador té un atribut de tipus Formador. Aquest, en tot cas, hauria de ser una associació.
-
La classe Imparticio té un atribut codiCurs de tipus String que sembla una mena de clau forana cap a Curs. Caldria indicar que una Imparticio té associat un Curs mitjançant una associació com a tal i no a un atribut que contingui el codi del curs associat.
-
El model presentat té una classe EmpresaFormacio que no és necessària. La presència d'aquesta classe sembla indicar que les empreses de formació i el seu nom són rellevants per al nostre sistema informàtic. Però essent, com és, per a una única empresa de formació, conèixer-ne el nom i tenir la possibilitat de tenir més d'una empresa de formació no és rellevant.
-
La classe associativa Observacions no té gaire sentit. Si, en respondre, un assistent afegeix observacions a la resposta, aquestes serien un atribut de la classe Resposta. No té sentit modelitzar-les com un atribut d'una classe associativa, sobretot perquè la multiplicitat al costat de Pregunta és 1 i, per tant, cada instància de Resposta tindrà una única instància d'Observacions associada.
-
La classe Pregunta s'ha indicat com a abstracta, quan en realitat només té una subclasse. Tret que totes les preguntes siguin, efectivament, de formador, la classe Pregunta ha de ser concreta. Igual passa amb la classe Resposta.
-
La classe Persona no s'ha indicat com a abstracta, tot i que sembla que totes hagin de ser clients, assistents o formadors. Si, efectivament, no hi pot haver persones rellevants al problema que no pertanyin a alguna de les 3 subclasses, aleshores s'hauria d'indicar que la classe Persona és abstracta (posant-ne el nom en cursiva).
-
La classe Client no sembla una subclasse de Persona correctament modelitzada. Si un client té un NIF i una data de constitució és perquè deu ser una empresa o algun altre tipus d'organització. Per tant, no té sentit que diguem que és una subclasse de Persona.
-
La classe Formador té una associació amb la classe Sessió que indica les sessions en les quals participa cada formador. També té una associació amb la classe Imparticio que deu indicar els formadors d'una impartició d'un curs. Aquestes dues associacions haurien d'estar relacionades: o bé els professors d'una impartició haurien de ser derivats a partir dels professors de cada una de les sessions o bé hi hauria d'haver una restricció d'integritat que ens indiqui que tots els professors associats a una sessió també ho han d'estar a la impartició corresponent.
-
De manera semblant al cas anterior, una ValoracioFormador té associada una PreguntaFormador i, com tota Valoracio, també una Pregunta. L'associació amb PreguntaFormador sobra (i cal indicar mitjançant una restricció d'integritat textual que la pregunta associada a una ValoracioFormador serà una PreguntaFormador).
-
Segons el model de què disposem, sí.
-
No. Per al cos no s'ha indicat cap multiplicitat i, per tant, assumim que la multiplicitat és 1; és a dir, que és un atribut obligatori i univaluat.
-
Que totes les etiquetes i missatges de la bústia també s'esborraran, ja que una bústia està composta per etiquetes i per missatges. En esborrar aquells missatges que siguin origen d'una conversa, també s'esborraran les converses.
-
Res, ja que una etiqueta no és un objecte compost. Depenent del cas d'ús i de com es defineixi, probablement senzillament es desassociarà l'etiqueta de les converses on estigués associada i de la bústia on es va crear, i s'esborrarà.
-
Podríem haver fet servir l'especialització per a distingir entre els missatges que són resposta (i, per tant, tenen 1 a la multiplicitat de responA) i els que no són resposta (i, per tant, són origen d'1 i només una conversa):
-
Perquè segons la definició d'aquesta associació derivada, tota conversa està formada pel seu missatge origen i per les respostes a qualsevol missatge de la conversa. Per tant, com a mínim hi haurà el missatge que n'és l'origen.
-
D'entrada l'atribut hauria de ser multiavaluat: etiqueta:String[*]. A més, no tindríem les etiquetes com a entitats; així, per exemple, estaríem donant a entendre que no té sentit gestionar les etiquetes: crear-les, enumerar-les, etc. Dues converses podrien tenir una mateixa etiqueta només "per coincidència".
-
A les pantalles figura l'adreça de correu electrònic de l'usuari. Caldria afegir-la com a atribut de la classe Usuari.
-
A les pantalles, cada compte, a més del número, té un nom. Caldria, doncs, afegir l'atribut nom:String a la classe Compte.
-
A les pantalles, les targetes tenen, a més del saldo, un límit. Caldria afegir-lo com a atribut de la classe TargetaCredit.
-
Els préstecs de les pantalles poden ser hipoteques, però poden ser d'altres tipus. Segurament la classe PrestecHipotecari del model del domini s'hauria d'anomenar Prestec, ja que no solament representa préstecs hipotecaris. Si més endavant es veiés que hi ha motius per a especialitzar més, es podrien tenir subclasses de préstec.
-
Els préstecs tenen, a més del saldo, una quota, que falta com a atribut de la classe Prestec mencionada abans.
-
Els moviments de les pantalles tenen dues dates: una d'operació i una de valor. Per tant, en lloc de l'atribut data, la classe Moviment hauria de tenir els atributs dataOperacio i dataValor. Tot i que les pantalles enumeren un saldo després de cada moviment i que aquest es podria representar al model del domini, aquest saldo es pot derivar i, per tant, no es pot considerar incorrecte el fet que no aparegui explícitament com a atribut de la classe Moviment.
-
Hi ha molta informació al model del domini que no apareix a les pantalles. Segurament no és incorrecta, però s'hauria de verificar amb la resta de pantalles. És el cas, per exemple, de la majoria dels atributs de la classe Usuari, de diversos atributs de Compte, del compte de càrrec dels crèdits, etc.
Glossari
- bifurcació f
- Element gràfic del diagrama d'activitats d'UML representat com una línia horitzontal gruixuda amb un flux d'entrada i múltiples fluxos de sortida. Quan s'hi arriba, tots els fluxos de sortida es produeixen de manera paral·lela.
- cardinalitat (d'un atribut) f
- Nombre de valors que una determinada instància té en un atribut.
- cardinalitat (d'una associació) f
- Nombre d'instàncies que una determinada instància té associades per mitjà d'una associació concreta.
- carril m
- Element gràfic del diagrama d'activitats d'UML que permet organitzar les activitats segons quin actor del procés les du a terme.
- cas d'ús concret m
- Cas d'ús que descriu la interacció entre actors i sistema tenint en compte la tecnologia i la implementació. Poden contenir, per exemple, detalls sobre com l'actor fa servir la interfície oferta pel sistema.
- cas d'ús essencial m
- Cas d'ús que descriu la interacció entre actors i sistema de manera independent de la tecnologia i de la implementació.
- clau (d'una classe de domini) f
- Atribut o conjunt d'atributs que identifica les instàncies de la classe de manera única, de tal manera que no hi pot haver més d'una instància amb els mateixos valors en aquell o aquells atributs.
- composició f
- Associació amb un fort sentit tot-part, de tal manera que si destruïm una instància composta tots els seus components també es destrueixen, no hi pot haver instàncies de la classe component que no formin part d'una i només una instància composta i, finalment, una instància component no pot canviar d'un compost a un altre.
- contracte (d'una operació) m
- Documentació detallada d'una operació que inclou la seva signatura i les precondicions i postcondicions.
- decisió f
- Element gràfic del diagrama d'activitats UML representat com un rombe i que representa una presa de decisió.
- diagrama d'activitats m
- Diagrama estàndard d'UML utilitzat per a representar processos.
- diagrama d'estats m
- Diagrama estàndard d'UML utilitzat per a modelitzar estats i transicions entre aquests.
- diagrama d'estructura composta m
- Diagrama estàndard d'UML utilitzat per a modelitzar l'estructura interna en temps d'execució d'una classe o component.
- diagrama d'objectes m
- Diagrama estàndard d'UML utilitzat per a representar objectes.
- diagrama de casos d'ús m
- Diagrama estàndard d'UML utilitzat per a modelitzar els casos d'ús del sistema, els actors i les relacions entre aquests.
- diagrama de classes m
- Diagrama estàndard d'UML utilitzat per a modelitzar les classes d'objectes i les seves relacions.
- diagrama de col·laboració m
- Nom del diagrama de comunicació a la versió 1 d'UML.
- diagrama de components m
- Diagrama estàndard d'UML utilitzat per a modelitzar els components que formen part d'un sistema.
- diagrama de comunicació m
- Diagrama estàndard d'UML utilitzat per a modelitzar la interacció entre diversos objectes fent èmfasi en l'aspecte estructural.
- diagrama de desplegament m
- Diagrama estàndard d'UML utilitzat per a modelitzar la distribució física dels diferents artefactes de programari en temps d'execució.
- diagrama de paquets m
- Diagrama estàndard d'UML utilitzat per a representar els paquets i les dependències entre aquests.
- diagrama de seqüència m
- Diagrama estàndard d'UML utilitzat per a modelitzar la interacció entre diversos objectes fent èmfasi en la seqüència temporal.
- diagrama de temps m
- Diagrama estàndard d'UML utilitzat per a modelitzar el comportament dels objectes al llarg del temps fent èmfasi en les restriccions temporals.
- diagrama de visió general d'interacció m
- Diagrama estàndard d'UML que combina els diagrames d'activitats i els de seqüències.
- enumeració f
- Tipus de dades en què el conjunt de valors és una llista finita de valors que s'enumera en la definició del tipus de dades.
- fusió f
- Element gràfic del diagrama d'activitats d'UML representat com un rombe amb diversos fluxos d'entrada i només un de sortida. El flux de sortida es produeix quan s'arriba per algun dels fluxos d'entrada.
- herència dinàmica f
- Herència en què una instància d'una classe, al llarg de la seva vida, pot canviar d'una classe de l'herència a una altra.
- herència overlapping f
- Herència en què una mateixa instància de la superclasse pot pertànyer a més d'una subclasse alhora.
- mapa navegacional m
- Model que documenta els fluxos entre pantalles de la interfície gràfica d'usuari. Es representa mitjançant un diagrama d'estats UML en què cada pantalla és un estat i cada transició representa la transició entre pantalles produïda per un esdeveniment, típicament un gest de l'usuari.
- multiplicitat f
- Restricció que indica quines cardinalitats són vàlides per a un atribut o associació.
- navegabilitat f
- Propietat d'una associació binària que fa que només estigui definida en un sentit i que, per tant, només defineixi una propietat en una de les dues classes que hi participen. L'altra classe continuarà ignorant de l'existència de l'associació.
- object constraint language m
- Llenguatge formal estàndard de restriccions: llenguatge estàndard d'UML per a l'expressió
de restriccions que es pot fer servir, entre d'altres coses, per a escriure precondicions
i postcondicions dels contractes de les operacions.
Sigla OCL - Object Management Group m
- Consorci americà sense ànim de lucre, creat el 1989, que té per objectiu l'estandardització
i promoció de la modelització orientada a objectes.
Sigla OMG - postcondició (d'una operació) f
- Obligació a què es compromet el sistema quan s'invoca una operació en forma de condició que es compromet que sigui certa un cop executada l'operació.
- precondició (d'una operació) f
- Condició que s'ha de satisfer necessàriament en el moment d'invocar l'operació. Si la condició no és certa, el sistema rebutja la petició i l'operació no s'executa.
- propietat (d'una classe) f
- Nom genèric per a referir-se a atributs i a extrems d'associació de la classe.
- punt d'extensió m
- Punt concret en la seqüència de passos d'un escenari (principal o extensió) d'un cas d'ús al qual es dóna un nom per tal que els casos d'ús que l'estenen puguin definir aquell punt com a punt on entra en joc l'extensió. En desús.
- signatura (d'una operació) f
- Nom i informació sobre les dades que rep (paràmetres d'entrada) i la informació que retorna.
- tipus de dades m
- Conjunt de valors per als quals la identitat única no té sentit, sinó que es comparen per valor.
- unió f
- Element gràfic del diagrama d'activitats d'UML representat com una línia horitzontal gruixuda amb múltiples fluxos d'entrada i un flux de sortida. El flux de sortida només es produeix quan han arribat tots els fluxos d'entrada.