You are on page 1of 171

TEMA 4

UML (UNIFIED MODELING LANGUAGE)

1. Introducci,
2. Vistadecasosd's,
3. Vistalgica,
4. Vistadecomponents,
5. Vistadedesplegament,
6. Dissenydebasesdedades
ambUML.

1
4.1
Introducci

Definici. Elprocsdaplicardiferentstcniquesiprincipis
ambelpropsitdedefinirundispositiu,unprocsoun
sistemaambsuficientsnivellsdedetallcomperpermetre
lasevarealitzacifsica.
EstsituatenelnuclitcnicdelprocsdE.S.Isaplica
independentmentdelparadigmadedesenvolupament
utilitzat.
Domini del Problema => Domini de la Soluci
Objectiu. Produirunmodelorepresentacidelsistema
quepuguiserutilitzat,enunafaseposterior,afi
dimplementarlo.
2
4.1
UML.Introducci
UML:UnifiedModelingLanguage.
Llenguatgevisualdemodelatorientataobjecte.
UnificacidelsmtodesdemodelatOOdeBooch,
JacobsoniRumbaughapartirde1995.
UML1.1aprovatperlasevaestandarditzaciperlOMG
(ObjectManagementGroup)lany1997.

3
4.1
EvolucidUML

UML 1.3
OMG Acceptance, Nov 1997
Final submission to OMG, Sep 97 UML 1.1
public First submission to OMG, Jan 97
feedback
UML partners UML 1.0

Web - June 96 UML 0.9

OOPSLA 95 Unified Method 0.8

Other methods Booch method OMT OOSE

4
4.1
ObjectiuseneldissenydeUML

Modelar sistemes, des del concepte fins als elements


executables, utilitzant tcniques orientades a objecte.
Cobrirtotselsaspectesrelacionatsamblamidainherentals
sistemescomplexosicrtics.
Crearunllenguatgedemodelatutilitzabletantperles
personescomperlesmquines.
Trobarunequilibrientreexpressivitatisimplicitat.

5
4.1
UML ielmodelat

UML s un llenguatge per visualitzar, especificar,


construir i documentar els elements dun sistema
que involucra una gran quantitat de software, des
duna perspectiva OO.

UMLsunanotaci,nosunprocs
SestandefinintmoltsprocessosperUML.
RationalhaideatRUP,procsunificat.

6
4.1
UtilitatdeUML

Permetespecificartoteslesdecisionsdelanlisi,dissenyi
implementaci,construintmodelsprecisos,noambigusi
complerts.
UMLpotconnectarseallenguatgesdeprogramaci:
Enginyeriadirecteiinversa
Permetdocumentartotselselementsdeunprocsde
desenvolupament(requeriments,arquitectura,proves,
versions,)

7
4.1
ModelConceptualdeUML

Blocsbsicsdeconstrucci:vocabulari
Elements
Estructurals,Comportament,Agrupaci,Anotaci
Relacions
Diagrames
Reglespercombinarblocs:establirqusunmodelben
format(reglessintctiquesisemntiques:noms,
visibilitat,integritat,etc.).
Mecanismescomuns:notaciquepermetfixarunestil
dintreelmodel.sunanotacivlidaperalsdiferents
elementsdelsdiferentsdiagrames.

8
4.1
Blocsdeconstrucci:Elements
Elements
Parts esttiques: representen coses que sn conceptuals o Estructurals,
de Comportament,
materials Agrupaci.
Anotaci
Project <<Interface>>
Names : String IGestorFluxe
Desc : String
StartDate : Date ObrirConexio() IGestorFluxe
SetName(Name : String)
GetName() : String Interficie: Comportament visible, serveis classe o
SetDesc(Desc : String) component
GetDesc() : String
SetStartDate(StartDate : Date)
GetStartDate() : Date <<ActiveX>>
Cal endari
Clase Atendre Comanda
Component: part fsica i
reemplaable dun sistema Cas ds: conjunt de
seqncia daccions que
<<Actor>>
Sistema
un sistema executa
Pentium III
HP
Cl ient Plotter

Actor ...
Node: recurs 9
computacional
4.1
Blocsdeconstrucci:Elements
Elements
Parts dinmiques: representen comportament en el temps i Estructurals,
de Comportament,
lespai Agrupaci.
Anotaci

Avs

Interaccions: missatges
intercanviats entre objectes
per un propsit determinat

Esperant
(inicial)
Senyal

(final)

Estat: estadis pels que


passa un objecte en
resposta a events

10
4.1
Blocsdeconstrucci:Elements
Elements
Estructurals,
de Comportament,
Agrupaci.
Parts dagrupaci: parts organitzatives dels models Anotaci

GU Is Paquet
(existeix
conceptualment)

Parts danotaci: parts explicatives dels models


A l a i mp lem entaci
d'aques ta cla se s'ha
de recordar q ue ...
Nota

11
4.1
Blocsdeconstrucci:Relacions
Relacions
de Dependncia,
Relaci semntica, si (nom de la dependncia) dAssociaci,
de Generalitzaci,
modifiquem lelement Realitzaci

independent pot afectar al


dependent. Dependncia

Relaci estructural, +patr Contracta +empleat


connexions entre 0..1 n

elements.

composici
agregaci
Associaci

12
4.1
Blocsdeconstrucci:Relacions
Relacions
de Dependncia,
Relaci generalitzaci / dAssociaci,

especialitzaci

de Generalitzaci,
Realitzaci
Generalitzaci

Relaci semntica entre


classificadors on
especifica un contracte Realitzaci
que un altre classificador
garantir

13
4.1
Blocsdeconstrucci:Diagrames
Diagrames de Casos dUs: mostren un conjunt de casos dus, actors i les seves
relacions
Diagrames de Classes: mostren un conjunt de classes, interficies i
collaboracions, aix com les seves relacions
Diagrames dObjectes: mostren un conjunt de objectes i les seves relacions
Diagrames dInteracci
Diagrames Seqncia: mostra ordenaci temporal dels missatges
Diagrames Collaboraci: mostren la organitzaci estructural dels objectes
que envien i reben missatges
Diagrames dEstats: mostra una maquina destats
Diagrames dActivitats: tipus de diagrama de estats que mostra els fluxos de
control
Diagrames de Components: mostra lorganitzaci i la dependncia entre un
conjunt de components
Diagrames de Desplegament: mostra la configuraci dels nodes de
processament
No s una llista tancada 14
4.1
Mecanismescomuns
Mecanismes comuns
Especificacions,
Especificacions

Guarniments
Divisions comuns.
LanotacienUMLtunadoblecomponent: Mecanismens de
extensivitat
Unapartgrficaquepermetvisualitzarunsistemaounaprojecci
daquest.
Unapartsemnticaqueenspermetespecificarelsdetallsdecada
elementdelsistema
Aixpermetconstruirunmodeldeformaincrementaldibuixant
diagramesidesprsafegirdetalls

Guarniments
Lanotacigrficabsicadecadaelementpotincloure
guarnimentstextualsogrficsperposardemanifestalgunes
propietatsdelespecificaci.
Persona
nombre
direccion
telefono
15
4.1
Mecanismescomuns
Mecanismes comuns
DivisionsComuns:AlmodelarelssistemesOO, Especificacions,
Guarniments
aquestspodendividirseenunparelldeformes Divisions comuns.
Mecanismens de
Dicotomiaclasse/objecte(UMLrepresentatantclassescom extensivitat

objectes)
Elena
Persona

nombre Elena :
direccion Persona
telefono
: Persona
(persona annima)

Dicotomiainterfcie/implementaci
IOrtografia
assistent
Ortografico.dll

Implementaci concreta Declaraci dun contracte 16


4.1
Mecanismescomuns
Mecanismes comuns
Mecanismesdextensivitat Especificacions,
Guarniments
Estereotips Divisions comuns.
Mecanismens de
EstenenelvocabularideUML,permetenafegirnousblocsde extensivitat

construcci.
Valorsetiquetats
Estenenlespropietatsdunblocdeconstrucci,afegintinformaci
Restriccions
Estenenlasemnticadunbloc,afegintreglesomodificantles
existents. valor etiquetat
estereotip
ColaEventos {version 3.2; autor: hal

<<Exception>> aadir()
quitar()
Overflow vaciar()

{ordenado}

17
restricci
4.1
Arquitectura
LUML permet modelar diferents vistes o visions dun problema i la seva soluci,
depenent del que ens interessi representar en cada ocasi. A cada vista li correspon un
o ms diagrames. State
State
Use Case Diagrams
Diagrames de
Use Case Diagrams State
Diagrams
Diagrames de Classes State
Use Case Diagrams Diagrams
Diagrames
Use Case Casos ds Diagrams
Diagrams
Diagrames de dObjectes
Diagrams
Seqncia

Scenario State
Scenario State
Diagrams
Diagrames de Diagrams
Diagrames de
Diagrams Diagrams
Col.laboraci Components
Model

Scenario Component
Scenario Component
Diagrams
Diagrames de
Diagrams
Diagrames Diagrams
Diagrams Desplegament
dEstats Diagrames
dActivitat
Per qu cal vistes ?
s impossible comprendre completament un sistema complex des dun nic punt
de vista, i dun sol cop.
Fer els diferents diagrames comporta fer-se les preguntes adequades i prendre
decisions sobre quina i com ser la soluci.
18
4.1
Vistessegonselsrolsdelprojecte
Visi d'usuari Comportament del sistema des del punt de vista de lusuari:
qu, no com. Usuaris, analistes, dissenyadors, provadors.

Visi estructural Disseny de classes per implementar els requisits funcionals


i no funcionals. Dissenyadors, programadors, provadors.

Aspectes dinmics del SW en execuci: flux de missatges


Visi de comportament
entre objectes, flux de control en una funci, canvis destat.
Dissenyadors, programadors, provadors.

Visi dimplementaci Organitzaci del SW a lentorn de desenvolupament.


Directors de projectes, gestors de la qualitat del SW,
dissenyadors, programadors, provadors,etc.

Visi dimplantaci Correspondncia entre del SW i HW lliurats. Dissenyadors,


enginyers de sistemes.

19
4.1
Hola,Mon!

class CHolaMonDlg : public CDialog{


public void OnPaint(); {
CPaintDC dc(this);
dc.TextOut(10, 10, "Hola, Mon ");
}
}
HolaMonDlg
dc.TextOut
("Hola, mon)
OnPaint()

20
4.1
Hola,Mon!

HolaMonApp
CDialog CWinApp

HolaMonDlg

OnPaint () CPaintDC

21
4.1
Hola,Mon!

CObject CObject

CCmdTarget CCmdTarget

CWnd CWinThread

CDialog CWinApp

HolaMonDlg HolaMonApp

22
4.1
Hola,Mon!

MFC

HolaMonDlg
Afxwin

Afx

23
4.1
Hola,Mon!

theApp: dlg:
CHelloApp CHolaMonDlg dc: CPaintDC

InitInstance

Onpaint
24
4.1
Hola,Mon!
HolaMon.cpp
HolaMon.exe

HolaMon.hlp

25
4.1
Models,VistesiDiagrames
MODEL REQS. (CU) MODEL ANLISI i DISSENY

Diag. Casos s Vista Lgica

Realitzaci
Cas Us CU
Part dinmica:
Especificaci CU
Diag. Seqncia
Diag. Activitats Diag. Collaboraci
Part esttica: Diag. Estats
Vista Casos ds
Diag Classes

Diag. Components. Vista Components

Diag. Desplegament Vista Desplegament

26
4.1
ModelsiDiagrames
Model estructural.
Diagrama de classes.

Visi esttica Diagrama dobjectes.


Model de casos ds.
Diagrama de casos ds.
Model de comportament. Visi lgica
Diagrames dinteracci:
Diagrama de seqncia.
Visi dinmica
Diagrama de collaboraci.

Diagrama destats.
Diagrama dactivitats.
Model arquitectnic.
Diagrama de components.
Visi fsica
Diagrama de desplegament.
4.2
Modelatdecasosds.Perqucasosds?

Ofereixenunmitjsistemticiintutiupercapturarels
requerimentsfuncionals,centratseenelvalorafegitper
lusuari.

Dirigeixentotelprocsdedesenvolupamentatsquela
majoriadactivitats(planificaci,anlisi,disseny,validaci,
test,..)esrealitzenapartirdelscasosds.

Mecanismeimportantperasuportartraabilitatentre
models.

28
4.2
DiagramesdeCasosds

actor cas ds

Compres
Client

associaci

29
4.2
Casosds
Uncasds especificaelcomportamentdesitjatdelsistema.
Representenelsrequerimentsfuncionals delsistema.
Descriuenqufaelsistema,nocomhofa.

Definicions alternatives:

Descriu un conjunt dinteraccions entre actors externs i el sistema en consideraci


orientades a satisfer un objectiu dun actor.
[D. Bredemeyer]

s una collecci de possibles seqncies dinteraccions entre el sistema en


discussi i els seus actors externs, relacionat amb un objectiu particular.
[A. Cockburn]

s una descripci dun conjunt de seqncies daccions, incloent variants, que


executa un sistema per a produir un resultat observable de valor per a un actor
[UML]
30
4.2
Casosds

Emissor Centraleta Receptor


Emissor
preparat
To
Marca_nmero
Efectuar_trucada
To_sonant Timbre_sonant
Telfon_agafat
Para_to Para_timbre

ESCENARI: seqncia especfica daccions CAS DUS: requeriment


que ilustra el comportament del cas ds. funcional.

31
4.2
Propietatsdelscasosds

Sniniciatsperunactorambunobjectiu previsties
completenambxitquanelsistemaelsatisf.
Podenincloureseqncies alternativesquecondueixena
lxitifracs enlaconsecucidelobjectiu.
Elsistemaesconsideracomunacaixanegrailes
interaccionsespercebendesdefora.
Elconjuntcompletdecasosdsespecificatotesles
possiblesformesdusarelsistema,sadir,el
comportamentrequerit.

32
4.2
Obtencidecasosds

1)Identificarelsusuarisdelsistema.
2)Trobartotselsrolsquejuguenelsusuarisiquesn
rellevantsalsistema.
3)Percadarolidentificartoteslesformes(objectius)
dinteractuarambelsistema.
4)Crearuncasdspercadaobjectiu.
5)Estructurarelscasosds.
6)Revisarivalidaramblusuari.

33
4.2
Descripciduncasds

Descriureelfluxdevents
Textestructuratinformal
Textestructuratformal(preipostcondicions)
Pseudocodi
Notacionsgrfiques:Diagramesdactivitats
Hadeserllegibleicomprensibleperaunusuariinexpert.
Hadindicarse:iniciifinal,actors,objectesque
intervenen,fluxprincipaliexcepcionals.

34
4.2
Diagramadecasosds

associaci

actor <<include>>
Comprovar clau
Automatrcula
<<include>> generalitzaci
Validar usuari
Alumne

Entrar notes
Comprovar targeta

Professor <<include>> relaci


Consultes Horaris dinclusi

cas ds
Administrador Manteniment

context del sistema requeriments del sistema

35
4.2
Descripciduncasds:Exempledeplantilla
Cadacasdstunaespecificaciassociadaenlaqueesdescriuel
fluxdelsevents(diferentsalternativesdexecucioescenaris).
Potferseentextestructurat(plantilla),pseudocodi,diagrama
dactivitats,etc.
CAS DS: nom del requeriment funcional o cas ds
Versi Num. Versi Data 07/03/2016
Autors Autor del document
Descripci Descripci informal dels objectius del cas ds
Actors Actors que intervenen
Precondici Condicions que han de complir-se perqu es pugui realitzar el cas ds
Flux principal Flux principal devents del cas ds
Subfluxos Diferents alternatives dins del flux principal
Fluxos alternatius Variacions en els fluxos principals o casos dexcepci
Postcondici Postcondici del cas ds
Requeriments no funcionals Llista de restriccions relacionades amb aquest requeriment funcional
Prioritat {urgent, normal, no prioritari}
Comentaris Comentaris addicionals

36
4.2
Descripciduncasds:exemple
CAS DS: Validar Usuari
Versi 1.0 Data 07/03/2016
Autors ES1
Descripci Aquest cas ds descriu com els usuaris accedeixen al sistema de gesti
acadmica. Segons quin usuari sigui (alumne, professor o PAS), tindr
uns privilegis en el sistema i podr accedir a uns casos ds.
Actors Alumne, Professor, PAS.
Precondici
Flux principal 1. El sistema valida el codi dusuari i password introduts.
2. El sistema mostra el men principal segons el perfil dusuari.
Subfluxos
Fluxos alternatius Nom dusuari / password incorrectes

Si la identificaci dusuari s incorrecta, es mostra un missatge derror


demanant a lusuari que torni a entrar les dades o cancelli loperaci. En
aquest ltim cas, el cas ds acaba.
Postcondici
Requeriments no funcionals
Prioritat Normal
Comentaris

37
4.2
Descripciduncasds:exemple
Usuari

Escriure nom usuari i


password

[ No ]
Dades correcte

[ Si ]

38
4.2
Actors

Un actor representa un conjunt coherent de rols que juguen


els usuaris dels casos ds a linteractuar amb el sistema.

Rolsjugatsperpersones,dispositius,oaltressistemes.
Noformenpartdelsistema.

Un usuari pot jugar diferents rols.


En la realitzaci dun cas ds poden intervenir diferents actors.
Un actor pot intervenir en diversos casos ds.
Identificar casos ds mitjanant actors i events externs.
Un actor necessita el caso ds i/o participa en ell. Actor

39
4.2
Associacions

Trestipusderelacions:
Generalitzaci: UnCUheretaelcomportamentisignificat
delaltre
Inclusi: UnCUbaseincorporaexplcitamentel
comportamentdunaltreenalgunpuntdelaseva
seqncia.
Extensi: UnCUbaseincorporaimplcitamentel
comportamentdunaltreCUenelllocespecificat
indirectamentperaquestaltreCU.UnCUcompletala
funcionalitatdunaltreCU.

40
4.2
Exemple
Relaci dextensi

extend Fer Comanda


Fer Comanda Urgent
(establir
prioritat)

include
Comprovar Clau
Relaci
dinclusi
Validar Usuari
Generalitzaci

include
Seguir Comanda Examinar Retina

41
4.2
Relacidinclusi

Permetfactoritzaruncomportamentenuncasdsapart
ievitarrepetirunmateixfluxendiferentscasosds.
ExemplecasdsSeguirComanda:
Obteniriverificarelnmerodecomanda.Include (Validar
usuari).Examinarlestatdecadapartdelacomandaiprepararun
informeperalusuari.

42
4.2
Relacidextensi

Elcasdsbaseinclouunasriedepuntsdextensi..
Serveixperamodelar
lapartopcionaldelsistema
Unsubfluxquenomssexecutasotacertescondicions
Diversosfluxosqueespodeninserirenunpunt.
ExemplecasdsFerComandaUrgent:
Extend (FerComanda).Recollirelsitemsdelacomanda.(establir
prioritat).Enviarcomandaperaserprocessada.

43
4.2
EscenarisiCasosds
Escenari: seqnciaespecficadaccionsquedescriuun
comportament,sadir,uncasdsenexecuci.
Unescenarisunainstncia duncasds(delamateixa
maneraqueunobjectesunainstnciadunaclasse).
EfectedexpansidelsCUalsescenaris: Fluxosprincipals
vs.fluxosalternatius.Uncasdsdescriuunconjuntde
seqncies,oncadaseqncia(escenari)representaun
fluxatravsdetoteslesvariants.
Especificaciambdiagramesdeseqncia.

Cas ds Escenaris
Contractar persona duna altra empresa.
ContractarEmpleat
Transferir dun departament a un altre.
Contractar un estranger.
44
4.2
CasosdsiCollaboracions

Ambuncasdsesdescriuelcomportamentesperatdel
sistema,pernosespecificacomsimplementa.
Uncasdssimplementaatravsdunacollaboraci:
Societatdeclassesialtreselementsquecollaboraranperrealitzar
elcomportamentexpressatenuncasds
Unacollaboracitunapartesttica(diagramesde
classes)iunapartdinmica(diagramesdeseqncia).

Lobjectiu de larquitectura del sistema s trobar el conjunt


mnim de collaboracions ben estructurades, que satisfan el
comportament especificat en tots els casos ds del sistema

45
4.2
CasosdsiCollaboracions

cas ds

Collaboraci
Fer Comanda

Gesti Comandes
realitzaci

46
4.2
EscenaridelcasdsFerCompra
: : Interfaz Compra : CarroCompra : Producto
Cliente

iniciarCompra()
nuevoCarroCompra(cliente)

seleccProducto(cantidad)
obtenerDescripcionDe(prod)
cargarProd(cliente,prod,cantidad)

confirmarCompra()
confirmarCompraDe(cliente)
decremStock(cantidad)

Realizar para cada


producto incluido en
el carro de compra

47
4.2
Exempledediagramadecasosds

Realitzar transacci amb targeta

Client
Comer

Processar factura client

Client Individual
Client Corporatiu Ajustar transaccions
Entitat financera

48
Gestionar comptes clients
4.2
Exempledediagramadecasosds

Reservar Llibre Prstec revista

Professor

Prstec Llibre Tornar revista

Soci

Tornar Llibre Actualitzar catleg


Bibliotecari

Extedre prstec 49
Consultar
Soci
4.2
Exempledediagramadecasosds

Omplir comanda Analitzar viabilitat

Client Cap Tcnic

Cursar comanda
Ordenar Fabricacio

Notificar acceptaci comanda Planificar Produccio Cap Producci

Comercial

Notificar rebuig comanda

50
4.2
Casosds(UML)ihistriesdusuari(SCRUM)

UnahistoriadusuarienSCRUMssinnimdecaracterstica delsoftwarea
construir,proudetalladaperqusajustiaunaiteraci(periodesdelSprint).
Uncasdsproporcionaunavisicontextualdelsoftwareaconstruir.
Enlaconstruccidesistemesdegranescala,elscasosdssnunaeinapera
explorarlesinteraccionsentreelsusuaris,elssistemesielssubsistemesdela
soluci.D'altrabanda,latcnicadecasosd'sajudaaidentificartotsels
escenarisalternatiusenlesrealitzacionsdelscasosds.
Elscasosd'sespodenutilitzarperentendreonsprobablequeestrobin
noveshistries.
Uncasdsspertantunaunitatfuncionaldelsoftware,ielsdiferents
escenaris (fluxosprincipalsialternatius)podengenerardiferentshistries
queesresolenenelsdiferentssprints.
Elsactors,comaperfilsdusuari,ajudenadefinirelsstakeholders que
eventualmentespodenconvidaralsSCRUMmeetings.

51
4.2
ExempledeCasosdsiHistries:ProjectBacklog
PROJECTBACKLOG

Gesti Gesti Rec. Gesti Gesti


Acadmica Humans Comunicaci Econmica

Com a Com a Com a


Com a <ALUMNE> <PAS_PERSONAL> <PAS_COMUNIC> <VR_ECONOMIA>
he de poder fer he de poder fer he de poder fer he de poder fer
<automatrcula> <generar nomines <publicar notcies <seguiment del
mensuals> web> pressupost>

Com a Com a Com a


Com a
<PROFESSOR> <VICEGERENT> <COM_MGR>
<PAS_ECONOMIA>
he de poder fer he de poder fer he de poder fer
he de poder fer
<entrar notes> <simulacions <enviar noticies a
<emissi factures>
increm. salarials> xarxes socials>

Com a Com a
Com a <PAS> Com a
<PROFESSOR> <PAS_ECONOMIA>
he de poder fer <PAS_PERSONAL>
he de poder fer he de poder fer
<entrar pla docent> he de poder fer Fer
<omplir pagina web <extracte comptab.
<alta treballador>
personal> analtica> matrcula

Com a <PAS>
he de poder fer
<reservar aula>

Com a

<PROFESSOR>
he de poder fer
<entrar guia
docent> 52
4.2
CasosdsiHistries:Exemple
<<extend>>
Entrar notes

Validar usuari Consultar llista classe

Prof essor Veure horaris


Consultar exp edient

<<include>>
<<include>>

Fer matricula Gestor BD assignatures


Alumne

UsuariEnregis trat
Banc

Tancar matric ulaci

Mantenir inf o assignatura


PAS

EntrarPlaDocent
Mantenir inf o prof essor

53
Generar guia estudiant Mantenir inf o alumne
4.2
Especificarelsfluxosdelsevents
CAS DS: Fer matricula
Versi 1.0 Data Octubre 2001
Autors ES1
Descripci Abans de comenar el curs, els alumnes podran matricular-se de les
assignatures a fer en el quatrimestre. A ms, durant el periode de
matriculaci, els alumnes podran modificar la seva matrcula afegint nous
cursos o donant-se de baixa daltres.
Actors Alumne
Precondici Abans del requeriment, lalumne ha dhaver-se identificat amb el seu codi
i password.
Flux principal El cas ds comena quan lalumne selecciona lopci opcions matrcula
del men principal. El sistema demana a lalumne que seleccioni
lactivitat desitjada: nova matrcula, modificar matrcula, esborrar
matrcula.

54
4.2
Especificarelsfluxosdelsevents:subfluxos

Novamatrcula
1. Lalumneseleccionalopcinovamatrcula.
2. Elsistemamostraunformularimatrculaenblanc.
3. Elsistemamostraelconjuntdassignaturesdelesqualslalumnees
potmatricularenelproperquatrimestre.
4. Lalumneseleccionalesassignaturesquedesitgifinsalnmero
mximdecrditsestablerts.Tambespermetseleccionardues
assignaturesalternativesensegonaopcipersiadarrerahoranoes
potefectuarlamatrculadelesprimeres.Unavegadafetalaselecci,
lalumnepremacceptarmatrcula.
5. Elsubfluxafegirassignaturaamatrculasactivapercada
assignaturatriada.
Elsistemaenregistralamatrcula.

55
4.2
Especificarelsfluxosdelsevents:subfluxos

ModificarMatrcula
1. Lalumneseleccionalopci"modificarmatrcula".
2. Elsistemabuscaimostralactualmatrculadelalumne.Sinonhiha,
esmostraunmissatgeisactivaelfluxfermatrcula.
3. Elsistemamostraelconjuntdassignaturesdelesqualslalumnees
potmatricularenelproperquatrimestre.
4. Lalumnepotmodificarlamatrculaeliminantoafegintassignatures.
Lesassignaturesaafegirespodenseleccionardelallistamostrada.
Lesassignaturesaeliminarseseleccionendelamatrculaactual.Una
vegadafetalaselecci,lalumnepremacceptarmatrcula.
5. Elsubfluxafegirassignaturaamatrculasactivapercada
assignaturatriada.
6. Elsistemaenregistralamatrcula.

56
4.2
Especificarelsfluxosdelsevents:subfluxos

EsborrarMatrcula
1. Lalumneseleccionalopciesborrarmatrcula.
2. Elsistemabuscaimostralactualmatrculadelalumne.
Sinonhiha,esmostraunmissatgeiesfinalitzaelcas
ds.
3. Lalumneseleccionaelbotesborrar.
4. Elsistemamostraundilegdemanantconfirmar
lesborrat.
5. Lalumneconfirmalesborrat.
6. Elsistemaeliminalamatrcula.

57
4.2
Especificarelsfluxosdelsevents:subfluxos

DesarMatrcula
En qualsevol moment lalumne pot gravar la matrcula amb
lopci desar sense que aquesta senvi. La matrcula actual
es grava, per lalumne no safegeix a cap assignatura com a
matriculat. Aquesta opci permet interrompre
temporalment lopci de matriculaci sense perdre les
dades.
Afegir assignatura a matrcula
El sistema verifica que lalumne t aprovats els prerequisits i
que lassignatura est oberta. Lalumne afegeix lalumne a la
llista dalumnes matriculats de lassignatura. Lassignatura es
marca com a acceptada en la matrcula.
58
4.2
Especificarelsfluxosdelsevents:fluxosalternatius

Prerequisitsnoaprovatsocursple
Si el subflux afegir assignatura a matrcula el sistema
considera que no es compleixen les restriccions (els prerequisits
no estan aprovats o lassignatura ja est plena) es mostra un
missatge derror. Lalumne pot seleccionar un altre grup de la
mateixa assignatura, una altra assignatura o cancellar
loperaci. El cas ds es reprn.
Matrculanotrobada
Si en els subfluxos modificar matrcula o esborrar matrcula
no es troba la matrcula, es mostra un missatge derror.
Lalumne accepta el missatge i el cas ds es reprn.

59
4.2
Especificarelsfluxosdelsevents:fluxosalternatius

Catlegdassignaturesinaccessible
Si desprs de diversos intents el sistema no aconsegueix
comunicarse amb el servidor que cont la informaci de les
assignatures disponibles, es mostra un missatge derror a
lalumne. Lalumne accepta el missatge i el cas ds acaba.
Perodedematrculatancat
Si quan lalumne selecciona opcions matrcula, ja sha tancat
el periode de matriculaci per al quatrimestre actual, es mostra
un missatge derror i el cas ds sacaba. Lalumne ja no es
podr matricular.

60
4.2 SubfluxosdeCasosdspodengenerarnoves
histriesenelsSprintsdeSCRUM
Com a <ALUMNE>
he de poder fer
SPRINTn
<automatrcula> Implementaci BACKLOG
front-end
Disseny Model
de Dades
(classes i BD)
Implementaci
BD
Com a <ALUMNE>
he de poder fer
<nova matrcula> SPRINTn+1
...
BACKLOG
Com a <ALUMNE> Tasca t
he de poder fer
<modificar
matrcula> Tasca t+1

Tasca
Com a <ALUMNE>
t+m
he de poder fer
<esborrar
matrcula> Tasca ...

Com a <ALUMNE> Tasca ...


he de poder fer
<desar matrcula>

Com a <ALUMNE>
he de poder fer
<afegir assignatura 61
a matrcula>
4.2
Diagramesdactivitats
Undiagramadactivitatssessencialmentundiagramade
fluxdaccionsquemostralactivitatqueesdevalllargdel
temps.
Undiagramadactivitatssuncasespecialdediagrama
destatsenquelsestatssnestatsdactivitatiles
transicionsesdisparenperlacabamentdelesactivitats
enlestatdorigen.
Unaactivitatprodueixalgunaacciqueprodueixalgun
canvienelsistemaoretornaunvalor.
Inclouen:
Estatsactivitat
Transicions
Puntsdedecisi
Barresdesincronitzaci 62
4.2
Estatsactivitat

Unestatactivitatnosatmic,escompondaltresestats
acciiactivitat.
Elsestatactivitatteduradaisexecutendinsdunestatde
lobjecte.
Lesactivitatsespodeninterrrompreentotmoment,
momentenquesdesencadenaloperacidesortidade
lestat.
Alentrarsexecutaactivitat,alacabarelfluxdecontrol
passaalasegentactivitat.
Processar Comanda

63
4.2
Diagramesdactivitats:notaci

estat inicial

transicions Activitat 1

Activitat 2

Punt de decisi [condici certa]


Activitat 3.1
[condici falsa]

Activitat 3.2

estat final
64
4.2
Barresdesincronitzaci
Permeten representar activitats que sexecuten en parallel, aix com
punts duni en el flux de control, s a dir, activitats que shan de
completar abans que el procs continu.

Activitat 1 divisi

Activitat 3

Activitat 2
Activitat 4 Activitat 5

uni

65
Activitat 6
4.2
Carrers(swimlanes)
Sutilitzen per dividir un diagrama dactivitats. Permeten mostrar
quina persona o organitzaci s la responsable de les activitats
contingudes al carrer.
Objecte1 Objecte2

Carrer 1 Activitat 1
Carrer 2
Activitat 2

Activitat 3

[no] Avaluar condici

[si]

Activitat 4 Activitat 5

66
4.2
Diagramesdactivitatsvs.diagramesdestats
Un diagrama dactivitats expressa fluxos de processament, mentre que un
diagrama destats indica els diferents estats en qu es troba un objecte. En
un diagrama dactivitats es pot expressar canvis destat en objectes que no
intervenen directament en el diagrama.

Soci Videoclub

p:Pellcula
flux Llogar pellcula [llogada]
dobjecte Diag. Estats Pellcula
estat Disponible

p:Pellcula Llogar P ellcula


[disponible] Tornar pellcula
Tornar P ellc ula

Llogada
objecte
67
4.2
Diagramadactivitats:exemple

Sollicitar Producte

Processar Comanda
Extreure Articles

Enviar Comanda

Rebre Producte Facturar al Client

Pagar Factura 68
Tancar Comanda
4.2
Diagramadactivitats:exemple(ambcarrers)
Client Vendes Magatzem

Sollicitar Producte

Processar Comanda
Extreure Articles

Enviar Comanda

Rebre Producte Facturar al Client

Pagar Factura 69
Tancar Comanda
4.2
Diagramadactivitats:exemple(ambobjectes)
Client Vendes Magatzem

Sollicitar Producte

Processar Comanda
Extreure Articles

o: Comanda
Enviar Comanda
[en progrs]

Rebre Producte Facturar al Client


o: Comanda
b: Factura [completada]
[impagada]
b: Factura Pagar Factura 70
[pagada] Tancar Comanda
4.2
Diagramesdactivitat:Exemple2
Passatger Venedor Airline

Demanar bitllet
Verificar
existncia vol

Donar detalls vol

Informar alternatives
i preus
Seleccionar vol

Solicit pagmnt Reservar places

Confirmar
Pagar bitllet plaa reservada

Emetre bitllet

71
4.2
Diagramesdactivitat:Exemple3
: Cliente : Comercial : JefeTecnico : JefeProduccion

:Catalogo
p:Pedido
Rellenar Pedido [propuesto]

:Plantilla de
Produccion
p:Pedido
Cursar pedido
[en_evaluacion]

Analizar viabilidad

p:Pedido
[evaluado]
:Producto
Especial
Notificar rechazo [ NO ] Viable ?
de pedido
[ SI ]
Fin KO
:Plantilla de
p:Pedido Produccion
[rechazado]

:Orden de
Trabajo
Notificar aceptacion Ordenar fabricacion
[pendiente]
de pedido

Planificar produccion
p:Pedido
[aceptado]

Fin OK
72
4.3
Diagramesd'Interacci

Modelenelsaspectesdinmicsdelsistema
Dostipus:DiagramesdeSeqnciaiCollaboraci
DiagramesdeSeqncia:
Destaquenlordenacitemporaldelsmissatges
DiagramesdeCollaboraci:
Destaquenlorganitzaciestructuraldelsobjectesparticipants.
Equivalnciasemntica
Modelenelfluxdecontrolquecaracteritzael
comportamentdunsistema:
casosds
collaboracions
operacions
73
4.3
DiagramesdeSeqncia

Representenescenaris.
Inclouen:
Objectes:representenpapersqueelsobjectespodenjugarenla
interacci(representatambrectangles)
Lniadevida:represental'existnciadunobjecteenunperode
detemps(representatamblniadiscontinua)
FocusdecontroloActivacions:representaeltempsdurantelqual
unobjecterealitzaunaoperaci(representatambrectangle
sobrelalniadevida)
Missatges:representenlacomunicacientreobjectes
(representatambunafletxahoritzontalietiquetada)
Informacidecontrol:condicionsimarquesditeraci
(representacitextual)

74
4.3
DiagramadeSeqncia:Notaci
Objecte
c1:Classe1 c3:Classe3

<<create>> :Classe2
Control (iteraci)
Missatge1() * Missatge2()

Control (condici)
[x>3] Missatge3
Temps
return
Destrucci

<<destroy>>
Lnia de vida
Focus de
control

75
4.3
Diagramadeseqncia:Exemple
s un diagrama dinteracci que destaca lordenaci temporal dels missatges.
s : Interlocutor : Centraleta c : Conversa r : Interlocutor

1: DespenjarAuricular
objecte
2: donarToTrucada

* 3: MarcarDigit missatge

Informaci de control 4: EnrutarTrucada

5: Crear 6: Trucar Focus de


control
7: DespenjarAuricular
8: Connectar(s,r)
9: Connectar(r)
temps 10: Connectar(s)

lnia de vida

Els interlocutors r i s
poden intercanviar
informaci desprs
de connectar-se
76
4.3
DiagramesdeCollaboraci
tilsalafaseexploratoriaperidentificarobjectes
Mostreninteraccionsorganitzadesentreobjectesordenatsapartirdela
topologiaquemostralenviamentdelsseusmissatges.
Inclouen:
Objectes:representenpapersqueelsobjectespodenjugarenlainteracci
(representatambrectangles)
Enllaosentreobjectes:representenconnexionsestructuralsentreobjectes
(representatmitjanantlniacontinua).Espodenutilitzarestereotipsper
indicarsilobjectequerepelmissatgesunatribut,unparmetredun
missatgeanterior,sisunobjectelocaloglobal
Missatges:representenlacomunicacientreobjectes(representatambuna
fletxahoritzontalietiquetada)UMLpermetdiversosnivellsdesubindexosper
indicaraniuamentdoperacions
Informacidecontrol:condicionsimarquesditeraci(representacitextual)
Lestructuraestticavedonadapelsenllaosiladinmicapelsmissatges.

77
4.3
DiagramadeCollaboraci:Notaci
Objecte
: Clas s e1 Missatge
2. M is s atge4( )

Enlla 1. M iss atge1(Clas se4)


: Clas s e3

G
0bj2 : Class e2
- at 1 : Cl ass e4 Control (iteraci)
3. *[i:= 1..] M iss atge5( )
obj4-1 : P
Cl ass e4
1.1. M is atge2()

: Class e5
1.2 . M is satg e3()

Estereotipus en enllaos
Instncia mltiple
P Parmetre F
obj4-2 :
Class e 4
F Atribut

L Objecte Local

G Objecte Global 78
4.3
DiagramadeCollaboraci:Exemple
s un diagrama dinteracci que destaca lorganitzaci estructural dels objectes que
envien i reben missatges.
r : EncarregatMatrcules
2: AfegirEstudiant

1: <<create>>

3: Matricular : Universitat

3.1: ObtenirPlaEstudis

3.4 : <<Esdev>>
s : Estudiant s : Estudiant
Matriculat=Fals Matriculat=Cert

3.3 : Afegir

c2 : Curs

3.2 : Afegir

c1 : Curs

79
4.3
DiagramesdeSeqnciavs.DiagramesdeCollaboraci

Equivalnciasemntica.
Sihihamoltcomportamentcondicional,utilitzardiferents
escenaris.
Diagramesdeseqnciamostrenmillorlordreenqu
sexecutenelsmissatges.
Diagramesdecollaboracimostrenclaramentels
objectesambelsquinteractuaundeterminatobjecte.

80
4.3
DiagramadInteracci:Descripcidescenaris
CAS DS: Realitzar Comanda
Versi 1.0 Data 02/11/2001
Autors ES1
Descripci Aquest cas ds descriu com un comercial prepara una comanda
Actors Comercial
Precondici
Flux principal 1. Usuari identifica el client que ha enviat una comanda
2. Lusuari entra lnies de comanda, amb el seu codi darticle, tipus de presentaci i quantitat
3. El sistema comprova cada lnia de comanda per validar situaci de larticle en catleg i el nmero ditems
en estoc.
4. El sistema assigna items a la comanda
Subfluxos
Fluxos alternatius Article no vigent en catleg
El sistema informa que larticle no est vigent i mostra articles alternatius activant el CU Seleccionar article
No hi ha suficients items en estoc / Items sota mnims
El sistema genera una compra daquest item activant el CU Generar Comanda
Postcondici
Requeriments no
funcionals
Prioritat Normal
Comentaris

81
4.3
DiagramesdeSeqncia:Descripcidescenaris
CAS DS: Realitzar Comanda
Versi 1.0 Data 02/11/2001
Autors ES1
Descripci Aquest cas ds descriu com un comercial prepara una comanda
Actors Comercial
Precondici
Flux principal 1. Usuari identifica el client que ha enviat una comanda
2. Lusuari entra lnies de comanda, amb el seu codi darticle, tipus de presentaci i quantitat
3. El sistema comprova cada lnia de comanda per validar situaci de larticle en catleg i el nmero ditems
en estoc.
4. El sistema assigna items a la comanda
Subfluxos
Fluxos alternatius Article no vigent en catleg
El sistema informa que larticle no est vigent i mostra articles alternatius activant el CU Seleccionar article

No hi ha suficients items en estoc / Items sota mnims


El sistema genera una compra daquest item activant el CU Generar Comanda
Postcondici
Requeriments no
funcionals
Prioritat Normal
Comentaris

: Int erfE ntradaCom anda : Item


: Com ercial

1: Identific arClient()
2: < <create> >
: Coman da

3: E ntrarLiniaCom anda()
4: * < <create> >
:
LiniaCom anda

5: HiHaStock= Com provarS tock ()

6: [HiHaS tock] A ss ignarItem ()


7: S otaM inim s = Com pro varMini m()

E s prepara la lnia 8: [ S ota M inim s] < <create>>


: Com pra
de com anda
9: re turn

82
4.3
DiagramesdeCollaboraci:Descripcidescenaris
1: IdentificarClient()
3: EntrarLiniaComanda() 2: <<create>>
: InterfEntradaComanda : Comanda

: Comercial

4: * <<create>>
7: SotaMinims = ComprovarMinim()

5: HiHaStock=ComprovarStock()
6: [HiHaStock] AssignarItem()
: : Item
LiniaComanda
9: return

CAS DS: Realitzar Comanda


Versi 1.0 Data 02/11/2001
Autors ES1
Descripci
Actors
Aquest cas ds descriu com un comercial prepara una comanda
Comercial 8: [SotaMinims] <<create>>
Precondici
Flux principal 1. Usuari identifica el client que ha enviat una comanda
2. Lusuari entra lnies de comanda, amb el seu codi darticle, tipus de presentaci i quantitat
3. El sistema comprova cada lnia de comanda per validar situaci de larticle en catleg i el nmero ditems
en estoc.
4. El sistema assigna items a la comanda
Subfluxos
Fluxos alternatius Article no vigent en catleg
El sistema informa que larticle no est vigent i mostra articles alternatius activant el CU Seleccionar article

No hi ha suficients items en estoc / Items sota mnims : Compra


El sistema genera una compra daquest item activant el CU Generar Comanda
Postcondici
Requeriments no
funcionals
Prioritat Normal
Comentaris

83
4.3
CasosdsiEscenaris:Exemple
CAS DS: Buscar Comanda
Versi 1.0 Data 02/11/2001
Autors ES1
Descripci Aquest cas ds descriu com un usuari busca informaci sobre lestat duna comanda realitzada
Actors Usuari
Precondici
Flux principal 1. Se inicia al seleccionar la opci Buscar Comanda.
2. El sistema presenta la finestra Buscar Comanda.
3. Lusuari introdueix un ID duna comanda
4. Lusuari executa la recerca
5. El sistema realitza una recerca a la BD de comandes.
6. El sistema visualitza dades comanda.
Subfluxos
Fluxos alternatius ID no trobat
El sistema informa que lidentificador no ha estat trobat
Postcondici
Requeriments no
funcionals
Prioritat Normal
Comentaris

84
4.3
CasosdsiEscenaris:Exemple

Interficie Gesti :Interficie Buscar


: Usuari : Base Dades
Comandes Comanda

opcioBuscarComanda()
visualitzar ()

setIDComanda (ID)

buscarComanda ()
p:=getComanda (ID)

visualitzarComanda (p)

85
4.3
DiagramadeSeqncia:Exemple

: LLibre : Fitxa soci : Fitxa llibre : Prstec


: Soci : Encarregat

Agafar llibre

Sollicitar prstec

Verificar situaci soci

Situaci soci ok

Verificar situaci llibre

Situaci llibre ok

Introduir prstec

Autoritzar prstec

86
4.3
DiagramadeCollaboraci:Exemple
1: Agafar llibre : Llibre

: Soci 2: Sollicitar prstec : Fitxa soci

3: Verificar situaci soci

8: Autoritzar prstec
4: Situaci soci ok

: Encarregat
6: Situaci llibre ok
: Prstec
7: Introduir prstec

5: Verificar situaci llibre

: Fitxa llibre

87
4.3
DiagramadeTransicidEstats

Modelaelcomportamentdinmicdunobjecte,tilsper
objectesambcomportamentsignificatiu.
Sutilitzenpermostrarelsestatsenqueenspodem
trobarunobjectedurantelseutempsdevida,elsevents
quecausenlatransicidunestataunaltreilesaccions
queresultenduncanvidestats.
Inclouen:
Estats
Transicions
Notaciestesa

88
4.3
DiagramadeTransicidEstats:Estat

Unestatidentificaunperodedetemps(noinstantani)enlavidade
lobjectedurantelqualestesperantalgunaoperaci,tuncert
comportamentcaractersticopotrebrecerttipusd'estmuls
Notaci:Rectanglearrodonit,quepottenirtrescompartiments:nom,
valorcaractersticdelsatributsiunperlesaccionsqueesrealitzenal
entrar,sortirialestarhi(entry,exitodo,respectivament).
Podencrearunajerarquia
Dosestatsespecials(Inici,Fi)

Motor On Motor Off

89
4.3
DiagramadeTransicidEstats:Transici

Unatransicirepresentauncanviestats,aquestcanvideestatpotanar
acompanyatdalgunaacci.Lasaccionss'associenalastransicionsies
consideraquesucceeixendeformarpidaisenseinterrupci.
Unatransicipottenirassociadaunaaccii/ounaguarda,ams,una
transicipotdispararunevent.
Laacciserelcomportamentques'obtquansucceeixlatransici.
Leventserelmissatgequeseenviaaunaltreobjectedelsistema.
Laguardasunaexpressiboolenasobreelsvalorsdelsatributsque
faquelatransicisolsesprodueixisilacondicis'avaluaatrue.
Existeixenduesmaneresderealitzarlestransicions.Unatransici
automticaquansacabal'activitatdelestatorigen(nohihaunevent
associatamblatransici).Unatransicinoautomticaquanexisteixun
eventquepotpertnyeraunaltreobjecteo,finsitot,estarforadel
sistema.

90
4.3
DiagramadeTransicidEstats:Notaci

Estat
on Transici

Llum On
Acci
on/ctr := ctr + 1
Event
off
Estat Inicial off
Llum Off

91
4.3
Estat dEntradaiSortida

Notaci:Rectanglearrodonit,quepottenirtres
compartiments:nom,valorcaractersticdelsatributsiun
perlesaccionsqueesrealitzenalentrar,sortirialestarhi
(entry,exitodo,respectivament).

Llum On
e2
entry/Llum.on();
exit/Llum.off();

e1

92
4.3
OrdredelesAccions:Cassimple

Accionsdesortidasnunprefixalesaccionsdetransici
Accionsdentradasnunpostfixalesaccionsdetransici

LlumOn LlumOff
off/printf(a off);
entry/Llum.on(); entry/Llum.off();
exit/printf(sortir); exit/printf(sortir);

Resultat de la seqncia dacci off/printf(no necessari);


printf(sortir);
printf(a off);
Llum.off(); printf(sortir);
printf(no necessari);
Llum.off(); 93
4.3
TransicionsInternes

AutoTransicisensepassarperentryiexit.
sunatransiciqueromanenelmateixestat.Eventque
nocausacanvidestat.Perexempleenunainterficie
F1/displayhelp

Transicio interna
causada per levent off
LlumOff

entry/Llum.off();
exit/printf(sortir);

off/null;

94
4.3
EstatFer(Do)Activitats

Bifurcaunthreadconcurrentquesexecutafinsque:
Laccisacabao
Essurtdelestatmitjanantunatransicidesortida

do activitat
Error

entry/printf(error!)

do/while (true) alarma.sirena();

95
4.3
Transicions:Guarda

Laguardasunaexpressiboolenasobreelsvalorsdels
atributsquefaquelatransicisolsesprodueixisilacondici
s'avaluaatrue.
Descripcievent[Condiciguarda]/Missatgelaltreobjecte;
Accionsaddicionalsqueseexecuten
Oferta [valor < 100] /refusar

Oferta[valor >= 200] /vendre


Venen Content

Oferta[(valor >= 100) & (valor < 200)] / vendre

Descontent
96
4.3
JerarquitzacideDiagrames

Peratacardemaneragraduallacomplexitat,certsestats
espodendescompondreennousdiagrames

LlumOff
flash/ LlumFlashing
entry/Llum.off()
LlumOn

off/ entry/ Llum.on()

1sec/
1sec/
on/ on/
LlumOff
on/
LlumOn entry/ Llum.off()
entry/ Llum.on()

97
4.3
Diag.estatsperexpressarelcomportamentdunobjecte
Soci Biblioteca
Nmero : int
Nom : char[50]
Nmero prstecs : int = 0
Alta()
Baixa()
Prestar(CodiLlibre : int, Data : date)
Retornar(CodiLlibre : int, Data : date)
Prestar
Initialize
Object Retornar[ Nmero prstecs = 1 ]
Amb prstecs
Nmero prstecs > 1
Wait for
Event
Prestar
Retornar[ Nmero prstecs = 1 ]
Handle
Event
Sense prstecs
Nmero prstecs = 0

Alta Baixa
Terminate
Object
98
4.3
Diagramadestats
llegir( c )[ c/='<' ] / return FALS llegir( c )[ c/='>' ] / etiqueta.afegir(c); return FALS
event

llegir( c )[ c=='<' ]
Esperant ObtenintEtiqueta

condici
transici
estat
llegir( c )[ c=='>' ]
acci

llegir( c )[ c/=';' ] / cos.afegir(c); return FALS


estat
inicial
estat
final ObtenintCos
llegir( c )[ c==';' ] / return CERT

Parser de seqncies:
Missatge : < cadena > cadena ;
99
4.3
Diagramadestats.Enginyeriadirecta
Codi en Java generat per un procs denginyeria directa:
Class Parser { Initialize
public Object
boolean llegir(char c) {
switch (estat) {
case Esperant: Wait for
if (c==<) { Event
estat = ObtenintEtiqueta;
etiqueta = new StringBuffer();
cos = new StringBuffer();
} Handle
break; Event
case ObtenintEtiqueta:
if (c==>) {
estat = ObtenintCos; StringBuffer obtenirEtiqueta() {
else return etiqueta;
etiqueta.afegir(c); }
break; Terminate
StringBuffer obtenirCos() {
case ObtenintCos: Object
return cos;
if (c==;) { }
estat = Esperant; private
else final static int Esperant = 0;
cos.afegir(c); final static int ObtenintEtiqueta = 1;
return CERT; final static int ObtenintCos = 2;
} int estat = Esperant;
return FALS; StringBuffer etiqueta, cos;
} }
} 100
4.3
Exemple
CAS DS: Realitzar Comanda
Versi 1.0 Data 04/11/2001
Autors ES1
Descripci Aquest cas ds descriu com un comercial prepara una comanda
Actors Comercial
Precondici
Flux principal 1. Usuari identifica el client que ha enviat una comanda
2. Lusuari entra lnies de comanda, amb el seu codi darticle, tipus de presentaci i quantitat
3. El sistema comprova cada lnia de comanda per validar situaci de larticle en catleg i el nmero ditems
en estoc.
4. El sistema assigna items a la comanda
Subfluxos
Fluxos alternatius Article no vigent en catleg
El sistema informa que larticle no est vigent i mostra articles alternatius activant el CU Seleccionar article

No hi ha suficients items en estoc / Items sota mnims


El sistema genera una compra daquest item activant el CU Generar Comanda
Postcondici
Requeriments no
funcionals
Prioritat Normal
Comentaris

Comanda
Data
Num
Seleccionar()
Comprovar
Servir() 101
4.3
Exemple
Quan una transici no te associat cap event,
significa que la transici es realitza tan aviat com Encara que
[/seleccionar primer item lactivitat associada amb lestat acaba finalitzi
lactivitat, la
[No tots els item comprovats]/ [Tots els item comprovats && comanda es
seleccionar item segent Comprovar Servir
Tots els items disponibles] mantindr en
Do/Comprovacio Do/Inici aquest estat fins
item entrega que arribi
levent que
desencadena la
transici
[Tots els item comprovats &&
Comanda entregada
Alguns no els items disponibles]

Item rebut
[ots els items disponibles]
Esperant
Items

Item rebut
[Alguns no els items disponibles]

No hi ha activitat per aquest estat,per tant


comanda esta a lespera dun event 102
4.3
Modelatestructural

Esdescriuenelstipusdobjectesdunsistemailes
relacionsesttiques quehihaentreells.
Sexpresamitjanantelsdiagramesdeclasse.
Normalmentcontenen:
Classes
Interficies
Relacionsdedependncia,realitzaci,generalitzaciiassociaci
(agregaci,composici)
Tambpodeninclourepaquetsicollaboracions.

103
4.3
DiagramesdeClasses

Classe: descripcidungrupdobjectesambpropietats
comunes(atributs),comportamentcom(operacions),
relacionscomunesambaltresobjectesisemntica
comuna.
Elsdiagramesdeclassessutilitzenpermodelar:
Vocabularidelsistema: identificarclassesperabstraccions
relevantsdeldominidelproblema.
Collaboracions(partesttica): identificarclassesiinterfciesla
interaccidelsqualsprodueixelcomportamentdesitjat.Un
diagramadecollaboracirepresentaunainstnciadeldiagrama
declassesperaunescenariconcret.
Esquemalgicdebasesdedades.

104
4.3
Classes
Nom Classe multiplicitat

Figura 1..n

origen : P unt = (0,0)


atributs
m oure(p : P unt = (0,0))
canviarM ida(s : E scala) signatura
visibilitat: dibuixar() comentaris
+ pblic invalidarRegio()
operacions
# protegit
- privat
Responsabilitats:
- Gesti de les tat de la figura
Classe abstracta:
- Gesti de les transform acions
classe sense
bs iques de la figura
instncies.
Figura

rotar() <<exception>>
tras lladar() ForaR ang
Classe
escalar() estereotipada
105
4.3
Visibilitatdelesclasses,atributsooperacions
public: elsmembresdunaclassesnaccessiblespertotsels
clients.
protegit: elsmembresdunaclassesnaccessiblesnoms
perlessubclasses,amiguesilamateixaclasse.
privat: elsmembresdunaclassesnaccessiblesnomsper
lesclassesamiguesilamateixaclasse.
implementaci: laclassesaccessibleperlaimplementaci
delpaquetquecontlaclasse. V is ibilitat
public
privat
protegit

Notaci im plem entac io

public()
privat()
protegit()
im plem ent ac i()
106
4.3
Classesdanlisi
Lesclassesdelmodeldanlisisnclassesestereotipadesquerepresenten
unmodelconceptualinicialperalselementsdelsistemaquetenen
responsabilitatsicomportament.Hihatrestipusdeclassesdanlisi:
Comunicaci. Gestionenlainteraccientreelsistemaielseuentorn.
Sutilizenpermodelarlesinterfciesdelsistema.
Control. Coordinenelseventsnecessarisperrealitzarelcomportament
especificatenuncasds.
Entitat. Modeleninformaciielseucomportament.Representenentitats
delmnrealoentitatsinternesnecessariesperexecutarlestasquesdel
sistema.Snindependentsdecomlentornescomunicaambelsistemai
sovinttambindependentsdelaplicaci(transportablesaaltres
aplicacions).

Form ulariM atricula GestorM atriculacio A ssignatura

Comunicaci Control Entitat


107
4.3
Atributs
[visibilitat] nom [: tipus] [= valor_inicial ] [{propietats}]
[ ]

{derived} {readOnly}
+ = pblica static
# = protegida
- = privada

C lient
N om : String
D ataAlta : D ate = 01-gen-2000
D arrerC odiAs s ignat : Integer
C odiC lient : Integer = D arrerC odiAs s ignat

108
4.3
Operacions
[visibilitat] nom [(llista_params)] [: tipus_retorn] [{propietats}]

+ = pblica
# = protegida {isQuery}, {sequential}, {concurrent}
- = privada

Co mpt eCorrent
Ti tul ar
S aldo
Codi

Reintegram ent(valor : Currency )


Ingres(valor : Currency = 10) : B oolean
Ultim esOperacions()
S aldo() : C urre ncy
Transferencia(valor : Currency, com pteDesti : Com pteCorrent) : B oolean

109
4.3
Classesparametritzades
Classe Parametritzada
T

Con junt
num Elem ents

Insereix(T)
E lim ina(T)
B us c a() : T
bind <Empleat>

Instanciacions ConjuntE m pleats

Conjunt<E m pleat>

110
4.3
Diagramesdeclasses:relacions

Dependncia
Generalitzaci
Associaci
Agregaci
Composici

111
4.3
Dependncia
Un canvi en lespecificaci dun element afecta laltre

PlaDelCurs
Curs
Window
afegir(c : Curs)
position eliminar(c : Curs)
parent
children
size Clock

open()
close() Node Llista
move()
resize()
<<friend>>

112
4.3
Estereotipusperadependncies

bind: entreunaclassegenricaiunainstanciaci
friend: dependnciadeclasseamiga
refine: relaciderefinamiento
use: relacids
import: unpaquetimportaelselementsdunaltre.
extend: peracasosds
include: peracasosds

113
4.3
Generalitzaci
Representalarelaciseruntipusde.sunarelacientreclasseson
laclasseespecialitzadacomparteixlestructurai/oelcomportament
delaclassemsgeneral.
Defineixunajerarquiadabstraccionsonlasubclasse(classe
derivada)hereta lespropietatsdunaomssuperclasses.

Compte Window

CompteTermini CompteCorrent TextWindow BoxDialog

114
4.3
Restriccionssemntiquesentrelessubclasses
Hernciasimple/hernciamltiple:
Hernciasimple: unanovaclassenomsderivadunaclasse.
Hernciamltiple: unasubclassepotderivardemsdunaclasse.
Hernciasolapada/hernciadisjunta:
Hernciasolapada: unanovaclassepotderivardemsduna
subclasse.
Hernciadisjunta: unanovaclassenopotsersubclassedems
dunasubclasse.
Hernciacompleta/hernciaparcial:
Hernciacompleta: esdefineixunaparticienqutotsels
objectespossiblesestanrepresentatsperalgunasubclasse.
Hernciaparcial: hihaobjectesnorepresentatsperlessubclasses.
Classificacidinmica:
unobjectepotcanviardeclassedinslajerarquiadesubclasses.
115
4.3
Hernciasimple/hernciamltiple
UsuariUniversitat
Herncia simple

Professor Alumne PAS

Objecte volant Animal


Herncia mltiple

Avi Helicpter Ocell Llop Cavall

116
4.3
Hernciasolapada/hernciadisjunta
V ehic le
Herncia solapada

Im pulsat Im puls at Terres tre M ar


V ent M otor

Herncia disjunta

A rbre

Cam i V eler

Roure Pi Taronger

117
4.3
Hernciacompleta/hernciaparcial

P ersona

Hom e Dona M etge A TS

P ac ient
Herncia completa
Herncia parcial

118
4.3
Classificacidinmica

P ersona E m presa

Di rector G eneral Director Tcnic Com ercial

119
4.3
Associaci
Associaci. Relaci estructural que especifica que els objectes dun element estan
connectats als objectes dun altre. Es pot navegar des dun objecte duna classe a un
de laltra.
Agregaci. s una associaci tot-part o de continent-contingut.

agregaci
nom
(composici)
agregaci
t assignatA (continncia)
Universitat Departament
1..1 1..* 1..*
1..* 1..*

multiplicitat
membre
rol

Associaci director 1..*


* assiteix 1..* ensenya
(es pot indicar 0..1 Professor
Estudiant Curs
el sentit e la
navegaci) * * * 1..*

120
4.3
Associaci
Modelaunaconnexisemnticaentreclasses.sunarelaciestructural
queespecificaqueelsobjectesdunaclasseestanconnectatsals
objectesdunaltre.Espotnavegardesdunobjectedunaclasseaunde
laltra.
Nom associaci

Professor Universitat
Treballa per

Associaci Nom paper (role)


Classe
Professor Universitat

Empleat Empresa

121
4.3
Agregaci
Unaformaespecialdassociaciquemodelaunarelacitot
partodecontinentcontingutentreunagregat(eltot)i
lessevesparts.
Llista Element

Tot Part

Agregaci
Continent Contingut
Grup Alumne

122
4.3
Composici

Unaformadagregaciambunpropietarifortitempsdevida
coincidents.Lespartsnopodensobreviurealtot(agregaci).
Lespartspodencrearsedesprsdelagregataqupertanyen,per
unavegadacreadesviuenimorenamblagregat.
Lapartsolamentpotformarpartdunagregat.
Lagregatgestionalacreaciidestruccidelesparts.
Lespartsespodeneliminarabansdeliminarlagregat.

Catleg Producte

Tot Part

Agregaci
123
4.3
AgregaciiComposici:Exemple

POLGON Composici
Agregaci
1 1

{ordered} 3..* Disseny


Punt Color
Textura
POLGON

Punts[3..*]: coord
Color: Integer
Textura: Integer

124
4.3
Associaci:MultiplicitatiNavegaci

Multiplicitat. Lamultiplicitatdefineixquantsobjectes
participenenunarelaci.
ElnmerodinstnciesdunaclasserelacionadesambUNA
instnciadelaltraclasse.
Sespecifiquenambunrangencadafinaldelassociaci.
Navegaci. Lesassociacionsiagregacionssn
bidireccionalsperdefecte,perdevegadessdesitjable
restringirlanavegaciaunadirecci.
Silanavegacisrestringida,safegeixunalniaambfletxaper
indicarladireccidelanavegaci,aixvoldir,desdequin
objecteespotaccediralaltre.

125
4.3
Associaci:MultiplicitatiNavegaci.Exemple

Multiplicitat (un catleg cont


entre 1 i n productes i un producte
est contingut en un catleg).

Catleg Producte
1 1..*

Navegaci (des del catleg podrem


accedir als productes per des dels
productes no podrem accedir al catleg).

126
4.3
Associacions:Implementaci
Client Com anda
1 0..*

1..*

LiniaCo classComanda{
m anda
Client _client;
Set[liniaComanda]_liniesComanda;

public:
getClient();
getLiniesComanda();
}

127
4.3
Visibilitatenlesassociacions(rols)

public: accessiblepertotselsclients.
protegit: accessiblenomsperclassesderivadesisiles
classesdelassociacisnamigues.
privat: accessiblenomsperlamateixaclasseisiles
classesdelassociacisnamigues.

GrupUsuaris Usuari +propietari -clau Clau


* * 1..1 *

Pblica: +propietari
Protegida: #propietari
Privada: -propietari

128
4.3
Associaciqualificada
Denotaunatributollistadatributsenelsqualselvalordelsatributs
seleccionenunnicobjecterelacionatounconjuntdobjectes
relacionatsdinsdetotelconjuntdobjectesrelacionatssegons
aquestarelaci.
Estractadunndexperrecrreraquestaassociaci(espodria
entendrecomsielselementsesguardessinenunataula).

Banc classe qualificada TaulerEscacs


n compte columna
qualificador
fila
* 1

0..1 multiplicitat desprs de la qualificaci 1


Persona classe dest Casella

(banc, n compte) -> o 1 persona (TaulerEscacs, columna, fila) -> 1 casella


persona -> molts (banc, n compte) casella -> 1 (TaulerEscacs, columna, fila)

129
4.3
Associacionsqualificades:Exemples
LniaComanda
Comanda 0..1
Producte
liniaComanda Unitats: Integer
PreuTotal: Integer
ClassComanda{
privateTable _liniesComanda;
publicLiniaComandagetLiniaComanda(Producte unProducte);
publicvoidaddLiniaComanda(Integerquantitat,Producte elProducte);

}

dept
1 professor Professor
Departament
Num. despatx
1..*
0..1

dirigeix director
1
130
4.3
ClassesAssociaci
Unaclasseassociaciafegeixunarestriccin:Nomspotexistiruna
instnciadelassociacientrequalsevolparelldobjectes
participants
Unaclasseassociacirepresentapropietatsquedepenendelsdos
objectesimplicatsenlassociaci.
contractant treballador
Empresa Empleat
* 1..*

Crrec
+superior
nom
sou
0..1

1..*
+subordinat
131
4.3
Associacionsnaries

Associacinentretresomsclasses:Cadainstnciade
lassociacisunantupladevalorsdecadascunadeles
respectivesclasses.

Any
temporada * Registre

* gols_a_favor
Equip
equip gols_en-contra
partits_guanyats
* porter
Jugador

132
4.3
Associacionsderivades
Estudiant rep Assignatura

/ensenya imparteix
Professor

Associaci derivada
+components /operacions
Compte Operacio
* *

CompteSet CompteCorrent

0..1 1..1

rol operacions derivat


de
components.operacions
133
4.3
Restriccionsentreassociacions

Persona.departament=
Persona.dirigent.departament

+dirigent +dirigit

0..1 0..* 1 0..1


Persona +director Departament
0..1
1..*
1 {subconjunt}
0..* +membre
Compte
{or}
1..*
0..1
Empresa

134
4.3
DiagramesdeClasse:Realitzaci
Una classe que s realitzaci duna altra indica que la primera
garanteix la implementaci de lespecificaci de la segona.
<<Interface>>
IPila
Pila
push()
pop()
top()

Pila

IPila
Interface: representa la visi externa de les Realitzaci: representa la
funcionalitats de lobjecte que sexporten. implementaci dall
s una collecci doperacions que especifica la interfcie.
sutilitza per especificar un servei duna
classe o una component. 135
4.3
Mduls(paquets)
sunelementorganitzatiu
Podencontenirelementsdequalsevoltipus,incloentaltrespaquets.
Unelementsexclusiuaunpaquet.
Elspaquetshandemantenirlamximacohesi(unanicatasca)iel
mnimacoblament(pocainterdependnciaentremduls).
Totipoderconteniraltrespaquets,calevitarunexcsdenniuament.

Mdul Mdul Nom


+ Producte Elements
+ CarroCompra continguts
+ Comer

136
4.3
Importaci/Exportacidepaquets
Igualmentquelesclasses,elspaquetspodenexportarunapart
pblicaquesimportadapelpaquetcontenidor.Aixperment
gestionardiferentsnivellsdabstracci.
Laimportacinostransitiva.
Elspaquetscontingutsenaltrespaquetsveuentotallqueelpaquet
contenidorimporta.

Servidor Client

+ BaseDeDades + FormulariComanda
+ ServeiDeRegistre + FormulariDeSeguiment
import - Comanda

import

GUI GestioComandes

+ Finestra
import + ReglesComandes
+ Formulari + GUI:Finestra
# GestorEvents
137
4.3
GeneralitzacidePaquets

GUI
+ Finestra
+ Formulari
# GestorEvents

WindowsGUI
+ GUI:Finestra MacGUI
+ Formulari
# GUI:GestorEvents
+ VBForm

138
4.3
Diagramadeclasses:Exemple
Comanda
info Client
pagamentAvanat? : Bool
nom
numero : String
adrea
preu : Currency * 1..1
tipus()
lliurar()
tancar()
1..1
Empresa Personal
Nom tarjetaCredit
if Comanda.client.tipus=pobre tipus
then Comanda.PagamenAvanat? creditLimit
= TRUE
+linia items facturar()
* avisar()
LiniaComanda * { tipus()="pobre"}
quantitat : Integer
preu : Currency
+repr vendes 0..1
Completada : Bool
Empleat
*
1..1 Producte
139
4.3
Diagramadeclasses:Exemple
b as ada en
P lantillaFabric ac io OrdreTreball
1. .* 0..*
1 0. .*

te genera

1 1
P roduc te Coma nda Client
1. .* 0..* 1..* 1

P rodE s pec i al P rodCatalogat Cataleg


1..* 1

140
4.3
Diagramadobjectes
Representaunconjuntdobjectesirelacionsenunmomentconcret.
sunafotografiadelsistemaenunmomentdexecuci.Instncia
deldiagramadeclasses.
Representaunavisiestticadelsistema.Complementatamb
diagramesdecollaboraci. e:Empresa

d1 : Departament d2 : Departament

Nom = Vendes enlla Nom = I+D

d3 : Departament valor de
objecte latribut
Nom = Vendes a BCN objecte
annim

p : Persona
: Informaci de contacte
Nom = J. Puig
ID = 4362 Adrea = c/ Mallorca, 120
crrec = Pres. vendes 141
4.4
Diagramadecomponents
Unacomponentsunapartfsicaireemplaabledun
sistemaquerealitzaunconjuntdinterfciesiproporciona
larealitzacidaquestes.
Modelaartefactescomara:executables,biblioteques,
taules,fitxers,documents,etc.
Representalempaquetamentfsicdelementslgicscom
araclasses,interfcies,etc.
Tipusdecomponents:
Desplegament.Componentsnecessriesperformarelsistema
executable(DLL,EXE,etc..).
Productedetreball.Productesquequedenalfinaldelprocsde
desenvolupament(codifont,fitxersdedades,etc..).
Execuci.Componentsqueescreencomaconseqnciadun
sistemaenexecuci(objecteCOMinstanciatdunadll).
142
4.4
Diagramadecomponents.Notaci
component
<<EXE>>
GestioComandes

CatalegsAPI interfcie

realitaci (exportaci).
GestiCatalegs.dll pot ser
<<DLL>> reemplaat per una altra
GestioCatalegs llibreria que proporcioni la
interficie CatalegsAPI.

dependncia
component
(Base de Dades)

BDProductes
143
4.4
Diagramadecomponents.Exemple
animator.hlp animator.exe dlog.dll
(versi = 5.0.1)

API

animator.ini render.dll wrfrme.dll

importaci
component interfcie
exportaci

raytrce.dll shapes.tbl

144
4.5
Diagramadedesplegament

Dimensilgicadunsistema:classes,interfcies,
collaboracions,interaccionsimquinesdestats.
Dimensifsicadunsistema:
Components:empaquetamentsfsicsdelselementslgics.
Nodes:
Elementsfsicsqueexisteixenentempsdexecuciirepresentenun
recurscomputacionalquepottenirmemriaicapacitatde
processament.
Hardwaresobreelqualesdesplegueniexecutenlescomponents.
Arcs:connexionsfsiquesentrenodes.
Elsdiagramesdedesplegamentmostrenlaconfiguraci
delsnodesqueparticipenenlexecuciideles
componentsqueresideixenalsnodes.

145
4.5
Diagramadedesplegament.Notaci

terminal servidor unitat RAID


10-T Ethernet

RS-232

consola
node

connexi

146
4.5
Diagramadedesplegament.Exemple
Modem

<<processador>> <<processador>> internet


servidor cache servidor cache

<<xarxa>> xarxa local

<<processador>> <<processador>> <<processador>> <<processador>>


servidor servidor servidor servidor
principal

147
4.6
DissenydeBasesdeDadesambUML
En UML el disseny de les BD es fa utilitzant el diagrama de classes per
amb un estereotip (notaci) especfic per a BD.

enginyeria Model de enginyeria


directa Model directa
dades Base
dobjectes
Aplicaci diagrama de
diagrama
enginyeria dentitat - enginyeria Dades
de classes
inversa relaci inversa

EMPLEAT EMPLEAT
NUMEMPLEAT : Integer NUMEMPLEAT : SMALLINT
NOM : String NOM : CHAR(20)
TELEFON : S tring TELEFON : CHAR(10)
SOU : MONEDA SOU : MONEDA
BONUS : MONEDA BONUS : MONEDA
CATEGORIA : Integer CATE GORIA : SMALLINT

<<PK >> P K_EMPLEAT7()


classe persistent
taula
4.6
ModelsiDiagrames
Model estructural.
Diagrama de classes.

Visi esttica Diagrama dobjectes.


Model de casos ds.
Diagrama de casos ds.
Model de comportament. Visi lgica
Diagrames dinteracci:
Diagrama de seqncia.
Visi dinmica
Diagrama de collaboraci.

Diagrama destats.
Diagrama dactivitats.
Model arquitectnic.
Diagrama de components.
Visi fsica
Diagrama de desplegament.
4.6
Diagramadeclasses.Relacions
Dependncia. Un canvi en lespecificaci dun element pot afectar laltre. Un
objecte s una variable local o parmetre dun mtode de laltre.

Mdem

Port
+ inicialitza (p : Port)

Generalitzaci. Relaci de ser un tipus de.

Figura

Rectangle Cercle

Quadrat
4.6
Diagramadeclasses.Relacions
Associaci. Relaci estructural que especifica que els objectes dun element estan
connectats als objectes dun altre. Es pot navegar des dun objecte duna classe a un
de laltra.
Agregaci. s una associaci tot-part o de continent-contingut.

agregaci
nom
(composici)
agregaci
t assignatA (continncia)
Universitat Departament
1..1 1..* 1..*
1..* 1..*

multiplicitat
membre
rol

Associaci director 1..*


* assiteix 1..* ensenya
(es pot indicar 0..1 Professor
Estudiant Curs
el sentit e la
navegaci) * * * 1..*
4.6
ElementsdunDiagramadeModeldeDades

Elementsdiferentsalanotaciclssicadediagramadeclasses:

Taula: grupdelementsdinformacireferentsalamateixaentitat.
Columna: Unacomponentdunataulaquecontunatribut.
Clauprimria: claucandidataescollidaperidentificardemaneranica
lesfilesdelataula.
Clauexterna(forana): columnaoconjuntdecolumnesquereferencien
(mapegen)laclauprimriadunaaltrataula.
Relaciidentificable: relacientreduestaulesonlataulafillahade
coexistiramblataulamare.
Relacinoidentificable: relacientreduestaulesoncadataulapot
existirindependentmentdelaltra.
Vista: taulavirtualque,desdelpuntdevistadelusuari,sigualque
qualsevoltaulaperquenotexistnciaperellamateixa.
Procedimentdemmagatzematge(storing procedure): procediment
independentqueexecutaalgunaaccisobrelaBD.
Domini: conjuntdevalorsvlidsperunatributocolumna.
4.6
ResumNotaci

Taula

Vista
DEPARTAMENT
Domini ADREA : CHAR(100)
NOMDEP : CHAR(30)
PK NUMDEP : SMALLINT
Clau primria PK FK CODICAPDEP : SMALLINT
NUMEMPLEATS : SMALLINT

Clau externa FK

Clau primria/externa P
F K

Relaci identificable 1..* 1

0..* 1
Relaci noidentificable
4.6
Taulesiatributs

Unataula suncontenidordinformaciformatpercolumnesper
emmagatzemariorganitzarlesdadesdelsistema.
Esrepresentamitjanantunaclasseperestereotipadacoma
<<table>>
Unatribut(columna)potserclauono.Sisclau,potser:
Clauprimria:Columnaogrupdecolumnesqueidentificademanera
nicalasevataulaolafiladinsdelataula.
Clauexterna:Columnaquesclauprimriaenlataulamare
(referenciada)imigraalataulafilla(referenciant)identificantlarelaci.
Combinacideclauprimriaiexterna:Clauprimriaqueams
identificalarelaciparticipantcomaclauexterna.
Relacionsiclausexternes:
Unarelaciidentificable entretaulesfaquelaclauexternasiguipartde
laclauprimriaenlataulareferenciant.
Unarelacinoidentificable faquelaclauexternanosiguiclauprimria
enlataulareferenciant.
4.6
Taulesioperacions(restriccions)

Unarestricci sunareglaquelimitaelvalorolesaccionsdelcamp
especificat.Espodenassignaraunacolumnapergeneralmentestan
contingudesalaprpiataula.
Key constraint:Defineixlesclausprimriesiexternesipotestarformada
perunaodiversescolumnes.
Check constraint:Unareglasobreunacolumnaotaulaquepotconsistir
enclculs,conjuntsvlidsdevalors,orangsdevalors.
Unique constraint:Indicaquelesdadesdunacolumnaoconjuntde
columneshandeserniques.
Untrigger sunaacciquesexecutaquanesdevunevent (passa
algunacosasobrelataula).Dostipus:
Trigger detaula:Unaoperacidetaulaque,perexemple,diualaBD
accionsaferdesprsdexecutarunasentnciaSQLsobrelataula.
Trigger derelaci:Perassegurarintegritatreferencial.
Unndex sunmecanismedapuntadorsutilitzatperlocalitzarfiles
delataulademanerarpida.
4.6
Taules,atributsioperacions:exemple

CLIENT
DNI : CHAR(10)
NOM : CHAR(20)
ADREA : CHAR(100) EMPLEAT
TELEFON : CHAR(20) NUMEMPLE AT : SMALLINT
NUMEMPLEAT : SMALLINT +ven a NOM : CHAR(20)
+compra a
EMAIL : SMALLINT TELEFON : CHA R(10)
0..* <<Non-Identifying>> 1 SOU : MONEDA
<<PK>> PK_CIENT3() BONUS : MONEDA
<<FK>> FK_CLIENT14() CATEGORIA : SMALLINT
<<Check>> CODIPOSTAL()
<<Trigger>> COMPACTAR() <<PK>> PK_EMPLEAT7()
<<Check>> CODIPOSTAL()
<<Index>> NOMCLIENT() comprova CP
<<Unique>> EMAIL_UNIC() valid dins domini
d'adrea

compacta taula
desprs d'esborrar
(event) un registre
4.6
Relacions

Relacionsidentificables.
Relacientreduestaulesonlataulafillahadecoexistiramblataula
mare.
Esrepresentaamblestereotip<<Identifying>> olarelacide
composici.
Relacionsnoidentificables.
Relacientreduestaulesoncadataulapotexistirindependentmentde
laltra.
Esrepresentaamblestereotip<<Non-identifying>> olarelaci
dassociaci.
Unarelaciimplicaunaclauexterna alataulafillarespectelaclau
primriadelataulamare.
Silarelacisidentificable,laclauexternadelataulareferenciant
participatambdelaclauprimriadaquesta.
4.6
Relacions.Exemple

DEPARTAMENT
NUMDEP : SMALLINT
NUMDEP : SMALLINT
NOMDEP : CHAR(1)
ADREA : CHAR(1)

<<PK>> PK_DEPARTAMENT0()

1 1
<<Identifying>>
<<Identifying>>

1..* 0.. *

PROFESSOR PROJECTE
NIU : SMALLINT IDPROJECTE : SMALLINT
DNI : CHA R(10) TITOL : CHAR(50)
NOM : CHAR(50) DESCRIPCIO : CHAR(400)
ADRE A : CHAR(100) <<Non-Identifying>> PRESSUPOST : DECIMAL(9, 2)
TELPRIVAT : CHAR(10) DATAINICI : DATE
TELEFON : CHAR(10) +dirigeix +sDirigit
DATAFI : DATE
EMAIL : CHAR(20) ENTITATFINAN : CHAR(20)
0..1 0.. *
CATEGORIA : CHAR(10) NUMDEP : SMALLINT
DESP ATX : SMALLINT PROFESSOR_NUMDEP : SMALLINT
NUMDEP : SMALLINT NIU : SMALLINT

<<PK>> PK_PROFESSOR1() <<PK>> PK_PROJECTE2()


<<Unique>> TC_PROFESSOR1() <<FK>> FK_PROJECTE1()
<<Unique>> TC_PROFESSOR0() <<FK>> FK_PROJECTE3()
<<FK>> FK_PROFES SOR0()
4.6
Cardinalitatdelesrelacions(I)

sunrangnumric definitsobrelarelaciqueindicael
nmerodocurrnciesdelarelaci.
Cardinalitatcostattaulamare:1(valorsnulsnopermesosaclau
externa),0..1(Nulpermsaclauexterna)
Cardinalitatcostattaulafilla:1,0..*,1..*,0..n,1..n,etc.
Relacionsdemoltsamolts eneldiagramadeclasses
shandedividir,enelDER,mitjananttaulesassociaci
(intersecci).Aquestestaulespodenemmagatzemar
informacilligadadirectamentalarelaci.
4.6
Cardinalitatdelesrelacions(II)
Diagrama de classes Diagrama dentitat - relaci
DEPARTAMENT
NUMDEP : SMALLINT
DEPARTAMENT NUMDEP : SMALLINT
NOMDEP : CHAR(1)
NUMDEP : Integer ADREA : CHAR(1)
NOMDEP : String
<<PK>> PK_DEPARTAMENT0()
ADREA : String
1 1
<<Identifying>>
<<Identifying>>
1 1
1..* 0..*

PROFESSOR PROJECTE
1..* NIU : SMALLINT
PROFESSOR 0..* DNI : CHAR(10)
IDPROJECTE : SMALLINT
TITOL : CHAR(50)
NIU : Integer PROJECTE NOM : CHAR(50)
ADREA : CHAR(100) <<Non-Identifying>>
DESCRIPCIO : CHAR(400)
PRESSUPOST : DECIMAL(9, 2)
DNI : String IDPROJECTE : Integer TELPRIVAT : CHAR(10)
DATAINICI : DATE
TELEFON : CHAR(10) +dirigeix +sDirigit
NOM : S tring TITOL : String DATAFI : DATE
EMAIL : CHAR(20)
0..* ENTITATFINAN : CHAR(20)
ADRE A : S tring DESCRIPCIO : String CATEGORIA : CHAR(10)
0..1
NUMDEP : SMALLINT
TELPRIVAT : S tring PRESSUPOST : Double DESPATX : SMALLINT
PROFESSOR_NUMDEP : SMALLINT
TELEFON : String 0..1 0.. * DATAINICI : Date
NUMDEP : SMALLINT
NIU : SMALLINT

EMAIL : String DATAFI : Date <<PK>> PK_PROFESSOR1()


<<PK>> PK_PROJECTE2()
<<Unique>> TC_PROFESSOR1()
CATEGORIA : String ENTITATFINAN : String <<Unique>> TC_PROFESSOR0()
<<FK>> FK_PROJECTE1()
<<FK>> FK_PROJECTE3()
DESP ATX : Integer <<FK>> FK_PROFESSOR0()
1
1
0..*
0..* <<Identifying>> <<Identifying>>

0..*
+participa +membres 0..*

PARTIC-PROJECTE

Relaci de molts a molts NUMDEP : SMALLINT


NIU : SMALLINT
PROJECTE_NUMDEP : SMALLINT
IDPROJECTE : SMALLINT

<<PK>> PK_13()
<<FK>> FK_14()
<<FK>> FK_15()
<<Index>> TC_110()
<<Index>> TC_111()

Taula associaci
4.6
Vistes
Unavista otaulavirtual esdefineixcomunacomponentdelabasededades
quefuncionacomunataulaperquenotexistnciaperellamateixa.
Espotderivardunaomstaulesovistesmitjanantlestereotip<<Derived>>.

PROFESSOR PROJECTE
NIU : SMALLINT IDPROJECTE : S MAL LINT
DNI : CHAR(10 )
TITOL : CHAR(50)
NO M : CHAR(5 0)
DESCRI PCIO : CHAR(400)
ADREA : CHAR(100)
PRESSUPOST : DECIM AL(9 , 2)
TELP RI VAT : CHAR(10) DATAINICI : DAT E
TELE FON : CHAR(10) DATAFI : DATE
EM AI L : CHAR(20)
ENTITA TFINAN : CHAR(20)
CATEGORIA : CHA R(10 )
NUMDE P : SMALLINT
DESPATX : SMA LLINT
PROFESSOR_ NUMDEP : SMA LLINT
NUMDE P : SM ALLI NT
NIU : SMALLINT
<<PK >> P K_PROFES SOR1()
<<PK>> P K_PROJECTE2()
<<Unique>> TC_ PRO FESSOR1()
<<FK>> FK_ PRO JECTE 1()
<<Unique>> TC_ PRO FESSOR0()
<<FK>> FK_ PRO JECTE 3()
<<FK>> FK_ PRO FESSOR0()

<<Derive>> << Deri ve>>

PROFESSOR PROJECTE

INFO_PROJECTE
IDPROJECTE : PROJECTE.IDPROJECTE
TITOL : PROJECTE.TITOL
DESCRIPCIO : PROJECTE.DESCRIPCIO
PRESSUPOST : PROJECTE.PRESSUPOST
DATAINICI : PROJECTE.DATAINICI
DATAFI : PROJECTE.DATAFI
ENTITATFINAN : PROJECTE.ENTITATFINAN
NUMDEP : PROJECTE.NUMDEP
PROFESSOR_NUMDEP : PROJECTE.PROFESSOR_NUMDEP
NIU : PROJECTE.NIU
COL_22 : PROFESSOR.NIU
DNI : PROFESSOR.DNI
NOM : PROFESSOR.NOM
ADREA : PROFESSOR.ADREA
TELPRIVAT : PROFESSOR.TELPRIVAT
TELEFON : PROFESSOR.TELEFON

161
EMAIL : PROFESSOR.EMAIL
CATEGORIA : PROFESSOR.CATEGORIA
DESPATX : PROFESSOR.DESPATX
COL_23 : PROFESSOR.NUMDEP
4.6
CorrespondnciaentrediagramadeclassesiDER
Diagrama classes Diagr entitat - relaci Resultats
Associaci o agregaci Relaci no identificable Cada associaci o agregaci es transforma en una relaci no
identificable entre les taules apropiades.

Classe associaci Taula intersecci Cada classe associaci es transforma en una taula
intersecci amb columnes addicionals (no claus primries o
externes) que emmagatzemen els atributs de la relaci.

Atribut Columna Els atributs de les classes es transformen en columnes


conservant el mateix nom. Els tipus dels atributs es
transformen en els tipus o dominis adequats del SGBD.

Classe Taula Les classes persistents es transformen en taules dins de


lesquema del model de base de dades.

Component No transformat
Composici Relaci identificable Cada composici es transforma en una relaci identificable
entre les taules apropiades.

Generalitzaci (herncia) Taula separada Cada subclasse es transforma en una taula separada. La
classe base es transforma en una taula mare amb una relaci
identificable (1..*) a cada taula de subclasse.

Multiplicitat Cardinalitat Sutilitza la mateixa notaci i interpretaci en la multiplicitat


(classes) i cardinalitat (taules)

Operaci No transformat
Paquet (mdul) Esquema
Associaci qualificada Taula intersecci Cada associaci qualificada es transforma en una taula
intersecci amb una clau primria addicional.
4.6
Diagramadeclasses.Exemple
PROVEIDOR
PRODUCTE
IDPROV : Integer 0. .* 0..* IDPROD : Integer
NOM : String
NOM : String
ADREA : String
PREU : MONEDA
TELEFON : String

0..*
SUBMINIST RAME NT
LINIA_COMANDA
QUANTITAT : Integer QU AN TITAT : Inte ger

0. .*
COMANDA
NUMCOMANDA : Integer
DATA : Date

0. .*

1
CLIENT EMPLEAT
DNI : String NUMEMPLEAT : Integer
NOM : String 0. .* 1 NOM : String
ADREA : String TELEFON : String
TELEFON : String SOU : MONEDA
EMAIL : Integer BONUS : MONEDA
CATEGORIA : Integer

CLIENT_FID
DATAALTA : Date
PUNTS : Integer
ANIVERSARI : Date 163
4.6
Diagramadentitatrelaci.Exemple
LINIA_COMANDA
PROVEIDOR PR ODUCTE <<Identifying>> IDPROD : SMALLINT
IDPROV : SMALLINT IDPROD : SMALLINT DNI : CHAR(10)
NOM : CHAR(20) NOM : CHAR(20) NUMCOMANDA : SMALLINT
ADREA : CHAR(100) PREU : MONEDA 1 0..* QUANTITAT : SMALLINT
TELEFON : CHAR(20)
<<PK>> PK_PRODUCTE0() <<PK>> PK_LINIA_COMANDA6()
<<PK>> PK_PROVEIDOR1() <<FK>> FK_LINIA_COMANDA10()
1 1
<<FK>> FK_LINIA_COMANDA12()
<<Identifying>> 0..*
<<Identifying>>

0..* 0..* <<Identifying>>


1

SUBMIN ISTRAMENT
COMA ND A
IDPROD : SMALLINT
IDPROV : SMALLINT NUMCOMANDA : SMALLINT
QUANTITAT : SMALLINT DATA : DATE
DNI : CHAR(10)
<<PK>> PK_SUBMINISTRAMENT2()
<<FK>> FK_SUBMINISTRAMENT1() <<PK>> PK_COMANDA5()
<<FK>> FK_SUBMINISTRAMENT2() <<FK>> FK_COMANDA11()
0..*
<<Identifying>>
1

MONEDA CLIENT
(from Dominis) DNI : CHAR(10)
MONEDA : DECIMAL(9, 2) NOM : CHAR(20)
ADREA : CHAR(100)
EMPLEAT
CLIENT_FID
TELEFON : CHAR(20) NUMEMPLEAT : SMALLINT
DATAALTA : DAT E
PU NTS : INTEGER
<<Identifying>> NUMEMPLEAT : SMALLINT
+compra a +v en a NOM : CHAR(20)
EMAIL : SMALLINT TELEFON : CHAR(10)
AN IVERSARI : D ATE
0..1 1 0..* <<Non-Identifying>>
1 SOU : MONEDA
DNI : CHAR (10)
<<PK>> PK_CIENT3() BONUS : MONEDA
<<FK>> FK_CLIENT14() CATEGORIA : SMALLINT
<<PK>> PK_CLIENT_FID16()
<<Check>> CODIPOSTAL()
<<FK>> FK_CLIENT_FID21() <<PK>> PK_EMPLEAT7()
<<Trigger>> COMPACTAR()
<<Check>> CODIPOSTAL() comprov a CP
<<Index>> NOMCLIENT() v alid dins domini
<<Unique>> EMAIL_UNIC() d'adrea
compacta taula
desprs d'esborrar 164
(ev ent) un registre
4.6
GeneracicodiSQL
CREATE TABLE PRODUCTE ( CREATE TABLE CLIENT_FID (
IDPROD SMALLINT NOT NULL, DATAALTA DATE NOT NULL,
NOM CHAR ( 20 ) NOT NULL, PUNTS INTEGER NOT NULL,
PREU DECIMAL ( 9, 2 ) NOT NULL, ANIVERSARI DATE NOT NULL,
CONSTRAINT PK_PRODUCTE0 PRIMARY KEY (IDPROD) DNI CHAR ( 10 ) NOT NULL,
); CONSTRAINT PK_CLIENT_FID16 PRIMARY KEY (DNI)
CREATE TABLE PROVEIDOR ( );
IDPROV SMALLINT NOT NULL, CREATE TABLE LINIA_COMANDA (
NOM CHAR ( 20 ) NOT NULL, IDPROD SMALLINT NOT NULL,
ADREA CHAR ( 100 ) NOT NULL, DNI CHAR ( 10 ) NOT NULL,
TELEFON CHAR ( 20 ) NOT NULL, NUMCOMANDA SMALLINT NOT NULL,
CONSTRAINT PK_PROVEIDOR1 PRIMARY KEY (IDPROV) QUANTITAT SMALLINT NOT NULL,
); CONSTRAINT PK_LINIA_COMANDA6 PRIMARY KEY (DNI, NUMCOMANDA,
CREATE TABLE CLIENT ( IDPROD)
DNI CHAR ( 10 ) NOT NULL, );
NOM CHAR ( 20 ) NOT NULL, CREATE TABLE COMANDA (
ADREA CHAR ( 100 ) NOT NULL, NUMCOMANDA SMALLINT NOT NULL,
TELEFON CHAR ( 20 ) NOT NULL, DATA DATE NOT NULL,
NUMEMPLEAT SMALLINT NOT NULL, DNI CHAR ( 10 ) NOT NULL,
EMAIL SMALLINT NOT NULL, CONSTRAINT PK_COMANDA5 PRIMARY KEY (DNI, NUMCOMANDA)
CONSTRAINT PK_CIENT3 PRIMARY KEY (DNI), );
CONSTRAINT EMAIL_UNIC UNIQUE (EMAIL), CREATE TABLE SUBMINISTRAMENT (
CONSTRAINT CODIPOSTAL CHECK () IDPROD SMALLINT NOT NULL,
); IDPROV SMALLINT NOT NULL,
CREATE TABLE EMPLEAT ( QUANTITAT SMALLINT NOT NULL,
NUMEMPLEAT SMALLINT NOT NULL, CONSTRAINT PK_SUBMINISTRAMENT2 PRIMARY KEY (IDPROV, IDPROD)
NOM CHAR ( 20 ) NOT NULL, );
TELEFON CHAR ( 10 ) NOT NULL,
SOU DECIMAL ( 9, 2 ) NOT NULL,
BONUS DECIMAL ( 9, 2 ) NOT NULL,
CATEGORIA SMALLINT NOT NULL,
CONSTRAINT PK_EMPLEAT7 PRIMARY KEY (NUMEMPLEAT)
); 165
4.6
GeneracicodiSQL
CREATE INDEX NOMCLIENT ON CLIENT (NOM);

ALTER TABLE CLIENT ADD CONSTRAINT FK_CLIENT14 FOREIGN KEY (NUMEMPLEAT) REFERENCES EMPLEAT (NUMEMPLEAT) ON
DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE CLIENT_FID ADD CONSTRAINT FK_CLIENT_FID21 FOREIGN KEY (DNI) REFERENCES CLIENT (DNI) ON DELETE NO
ACTION ON UPDATE NO ACTION;

ALTER TABLE LINIA_COMANDA ADD CONSTRAINT FK_LINIA_COMANDA10 FOREIGN KEY (IDPROD) REFERENCES PRODUCTE
(IDPROD) ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE LINIA_COMANDA ADD CONSTRAINT FK_LINIA_COMANDA12 FOREIGN KEY (DNI, NUMCOMANDA) REFERENCES
COMANDA (DNI, NUMCOMANDA) ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE COMANDA ADD CONSTRAINT FK_COMANDA11 FOREIGN KEY (DNI) REFERENCES CLIENT (DNI) ON DELETE NO
ACTION ON UPDATE NO ACTION;

ALTER TABLE SUBMINISTRAMENT ADD CONSTRAINT FK_SUBMINISTRAMENT1 FOREIGN KEY (IDPROD) REFERENCES PRODUCTE
(IDPROD) ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE SUBMINISTRAMENT ADD CONSTRAINT FK_SUBMINISTRAMENT2 FOREIGN KEY (IDPROV) REFERENCES
PROVEIDOR (IDPROV) ON DELETE NO ACTION ON UPDATE NO ACTION;

166
4.6
Aspectesdetraduccialmodelrelacional

Taulesintersecci(classesassociaci)
Jerarquiadespecialitzacientreclasses

167
4.6
Taulesintersecci(classesassociaci)
Unataulaintersecciapareixquan:
Esvolemmagatzemaratributsquesemnticamentestanassociatsalarelaci.
Duestaulesestanrelacionadesambunarelacidemoltsamolts.
Traduccialmodelrelacional.Lataulainterseccit:
laclauprimriadecadaentitatparticipant
elsatributsdescriptiusdelarelaci.

PROFESSOR
NIU : SMALLINT
DNI : CHAR(10) DEPARTAMENT
NOM : CHAR(50) TREBALLA EN
NUMDEP : SMALLINT
ADREA : CHAR(100) NIU : SMALLINT
<<Identifying>> <<Identifying>> NUMDEP : SMALLINT
TELPRIVAT : CHAR(10) 1 1 NUMDEP : SMALLINT 0.. * 1
NOMDEP : CHAR(1)
TELEFON : CHAR(10) DESDE : DATE
ADREA : CHAR(1)
EMAIL : CHAR(20)
CATEGORIA : CHAR(10)
DESPATX : SMALLINT

CREATE TABLE TreballaEn(NIU: SMALLINT,


NUMDEP: SMALLINT,
DESDE: DATE,
PRIMARY KEY (NIU,NUMDEP),
FOREIGN KEY (NIU) REFERENCES PROFESSOR,
FOREIGN KEY (NUMDEP) REFERENCES DEPARTAMENT);
168
4.6
Jerarquiadespecialitzacientreclasses
Traduccidunajerarquiadespecialitzacientreclassesamodeldedades:
1aopci:Crearunarelaciperalageneralitzaciiunaperacada
especialitzaci.LesrelacionsdelesespecialitzacionshandecontenirlaCPdela
generalitzaci.Shademantenirlaintegritatreferencialpercascada.

EMPLEAT
EMPLEAT DNI : CHAR(2 0)
NOM : CHAR(20)
DNI : String PARK ING : S MALLINT
NOM : S tring
<<PK>> PK_EMPLE AT9()
PARKING : Integer 1
1

<<Identifying>>
<<Identifying>>

0..1
0..1

EMPHORES EMPFIX EMPHORES


EMPFIX
Ho res treb all ad es : I NT EGE R
Hores treballades : Integer IdContracte : Integer Co st ho ra : INTEG ER
I dCon tra cte : INTEG ER
DNI : CHAR(2 0)
Cost hora : Integer DNI : CHAR(20)

<<PK >> PK_ EMP FIX1 3()


<< PK >> P K_ EMP HORES 12()
<<FK>> FK_EMPFIX14()
<< FK >> FK_ EMP HO RES 13 ()

169
4.6
Jerarquiadespecialitzacientreclasses
Traduccidunajerarquiadespecialitzacientreclassesamodeldedades:
2aopci:Crearunarelaciperaperacadaespecialitzaci.Lainformacidela
generalitzacisafegeixatotes.

EMPLEAT
DNI : String
NOM : S tring
PARKING : Integer EMPHORES
EMPFIX
DNI : CHAR(20)
DNI : CHAR(20)
NOM : CHAR(20)
NOM : CHAR(20)
PARKING : SMALLINT
PARKING : SMALLINT
Hores treballades : INTEGER
IdContracte : INTEGER
Cost hora : INTEGER

<<PK>> PK_EMPHORES14() <<PK>> PK_EMPFIX15()

EMPHORES EMPFIX
Hores treballades : Integer IdContracte : Integer
Cost hora : Integer

170
4.6
Jerarquiadespecialitzacientreclasses
CREATE TABLE Empleat ( DNI: CHAR(11),
Nom: CHAR(20), Opci 1
Parking: INTEGER,
PRIMARY KEY (DNI));
CREATE TABLE EmpHores ( hores_treballades: REAL,
cost_hora: REAL,
DNI: CHAR(11),
PRIMARY KEY (DNI),
FOREIGN KEY (DNI) REFERENCES Empleat
ON DELETE CASCADE);
CREATE TABLE EmpFixe ( IdContracte:CHAR(10),
DNI: CHAR(11),
PRIMARY KEY (DNI),
FOREIGN KEY (DNI) REFERENCES Empleat
ON DELETE CASCADE);

CREATE TABLE EmpHores (DNI: CHAR(11),


Opci 2 Nom: CHAR(20),
Parking: INTEGER,
hores_treballades: REAL,
cost_hora: REAL,
PRIMARY KEY (DNI));
CREATE TABLE EmpFixe ( DNI: CHAR(11),
Nom: CHAR(20),
Parking: INTEGER,
IdContracte:CHAR(10),
PRIMARY KEY (DNI));
171

You might also like