Diagrama de paquets

De la Viquipèdia, l'enciclopèdia lliure
Diagrama de Paquets

Un diagrama de paquets és una representació gràfica que agrupa un conjunt de paquets i mostra les dependències entre aquests. Els diagrames de paquets serveixen per facilitar la gestió de models dins d'un sistema complex. Cada paquet del diagrama està format per un nom, l'element pare, la documentació, les abstraccions, la fulla, l'arrel i els fills.

Definició[modifica]

Un paquet és un mecanisme utilitzat per agrupar elements de UML, facilitant d'aquesta manera la gestió dels models en un sistema complex. Els paquets poden ser simples estructures conceptuals o poden estar reflectits a la implementació.

Els paquets permeten dividir un model per agrupar i encapsular els seus elements en unitats lògiques individuals. Poden tenir una interfície i una implementació d'aquesta. També poden estar niats els uns dins els altres, i un paquet pot dependre d'altres paquets. Podem utilitzar-los per plantejar l'arquitectura del sistema a nivell general.

Elements d'un diagrama de paquets[modifica]

Paquet[modifica]

Un paquet s'utilitza per agrupar elements, a més de proporcionar un denominador (namespace) pel conjunt dels elements agrupats. Un paquet pot contenir altres paquets.

Propietats d'un paquet:

Nom Nom del paquet
Element pare Element que conté el paquet
Documentació Descriu el paquet.
Abstracció Si és abstracte, el paquet no té una declaració completa i, en general, no pot ser instanciat. La intenció de fer un paquet abstracte és que pugui ser utilitzat per altres paquets.
Fulla Indica si és possible especialitzar més el paquet. Si el valor és cert, el paquet no es pot especialitzar més.
Arrel Indica si el paquet té o no antecessors. Si el valor és cert, el paquet no té cap antecessor (element pare).
Fills Els fills del paquet

Subsistema[modifica]

Un subsistema és una unitat de descomposició jeràrquica per a grans sistemes. Un subsistema té elements de realització i elements d'especificació. Els elements de realització defineixen els continguts reals del subsistema. Consisteixen en classes, així com les relacions entre elles, o bé contenen una jerarquia de subsistemes, amb classes i fulles. Els elements d'especificació, en canvi, defineixen la visió externa del subsistema. Aquests descriuen els serveis oferts pel subsistema, el comportament d'aquest i la seva interfície, però sense revelar-ne l'estructura interna.

Propietats d'un subsistema:

Nom Nom del subsistema
Element pare Element que conté el subsistema
Abstracció Si és cert, el sistema no proporciona una declaració completa i, en general, no pot ser instanciat. La intenció de fer un subsistema abstracte és que pugui ser utilitzat per altres subsistemes.
Documentació Descriu el subsistema.
Fulla Indica si és possible especialitzar més el subsistema. Si el valor és cert, el subsistema no es pot especialitzar més.
Arrel Indica si el subsistema té o no antecessors. Si el valor és cert, el subsistema no té cap antecessor (element pare).
Operacions Una operació és una característica de comportament d'un subsistema que especifica el nom, el tipus, els paràmetres i les restriccions per invocar un comportament associat. Un subsistema pot tenir diverses operacions.
Fills Els fills del subsistema

Model[modifica]

Un model és un paquet UML especialitzat que descriu un sistema des d'un punt de vista determinat. Els models es poden utilitzar per crear diagrames de models. Un model es pot dibuixar utilitzant el símbol d'un paquet normal però amb un petit triangle a la part superior dreta del rectangle. Els sistemes descrits per un model poden estar formats per diversos paquets, amb possibles relacions entre ells.

Dependència[modifica]

Una dependència és una relació que significa que un element (paquet) o un conjunt d'elements (subsistema) necessita altres elements per a la seva especificació o implementació. Això significa que la semàntica completa dels elements dependents és semànticament o estructural dependent de la definició dels elements dels quals depenen.

Propietats d'una dependència:

Nom Nom de la dependència
Proveïdor Element o conjunt d'elements que proporciona una semàntica i/o estructura de la qual depèn l'element o conjunt d'elements de l'altra banda de la relació de dependència. En algunes relacions de dependència en el context d'un disseny de classes orientat a objectes (OO), la intenció és que l'element més abstracte tingui aquest rol.
Documentació Descriu la dependència.
Client Element o conjunt d'elements dependent del proveïdor

Generalització[modifica]

Una generalització és una relació taxonòmica entre dos classificadors, un de més general i un de més específic. Cada instància del classificador específic és també una instància del classificador general. Per tant, el classificador específic hereta les característiques del classificador més general.

Propietats d'una generalització:

Nom Nom de la generalització
General Classificador general a la relació de generalització
Específic Classificador específic a la relació de generalització
Documentació Descriu la generalització.
Substituïble Indica si el classificador específic pot ser utilitzat en qualsevol cas en què puguem fer servir el classificador general. Si és cert, les traces d'execució del classificador específic seran un subconjunt de les traces d'execució del classificador general.

Importació[modifica]

Una importació és una relació dirigida d'un element (paquet, model, subsistema...) proveïdor a un element client. Aquesta relació defineix que els membres del proveïdor són importats per part de l'element client. Tant la part proveïdora com la part client poden ser també conjunts d'elements.

Propietats d'una importació:

Nom Nom de la importació
Proveïdor Element o conjunt d'elements que proporciona uns elements dels quals depèn el paquet o conjunt de paquets de l'altra banda de la relació d'importació. En algunes relacions d'importació en el context d'un disseny de classes orientat a objectes (OO), la intenció és que el paquet més abstracte tingui aquest rol.
Visibilitat Especifica la visibilitat dels elements importats, és a dir, si els elements importats seran visibles per als paquets que, al seu torn, importin elements d'aquest paquet. Si la importació és pública (importació), els elements importats seran visibles fora del paquet, mentre que si la importació és privada (accés) no ho seran. Quan parlem d'una importació tindrem per defecte la visibilitat pública.
Documentació Descriu la importació.
Client Element o conjunt d'elements que importa membres del proveïdor

Accés[modifica]

La relació d'accés consisteix en una relació d'importació en què la visibilitat és privada. Per exemple, si un paquet A té una relació d'accés cap a un paquet B i un paquet C té una relació d'accés o importació cap al paquet A, el paquet C podrà importar o accedir als elements propis del paquet A, però no als elements del paquet B als quals el paquet A hagi accedit.

Propietats d'una importació:

Nom Nom de la importació
Proveïdor Element o conjunt d'elements que proporciona uns elements dels quals depèn el paquet o conjunt de paquets de l'altra banda de la relació d'accés. En algunes relacions d'accés en el context d'un disseny de classes orientat a objectes (OO), la intenció és que el paquet més abstracte tingui aquest rol.
Visibilitat Especifica la visibilitat dels elements importats, és a dir, si els elements importats seran visibles per als paquets que, al seu torn, importin elements d'aquest paquet. Quan parlem d'un accés la visibilitat sempre serà privada.
Documentació Descriu la importació.
Client Element o conjunt d'elements que importa membres del proveïdor

Combinació[modifica]

Una combinació (merge) de paquets és una relació dirigida entre dos paquets que indica que es vol combinar els continguts dels dos paquets. És molt semblant a la generalització en el sentit que l'element font afegeix conceptualment les característiques de l'element objectiu a les seves pròpies característiques, de manera que l'element resultant combina les característiques d'ambdós.

Aquest mecanisme s'hauria d'utilitzar quan els elements definits a paquets diferents tenen el mateix nom i pretenen representar el mateix concepte. Sovint s'utilitza aquesta relació per obtenir diferents definicions d'un concepte donat a partir d'una definició base. El concepte base es va estenent a partir de diversos increments, cada un definit en un paquet diferent. D'aquesta manera, podem obtenir una definició particular per a un objectiu concret simplement seleccionant quins increments combinarem.

Propietats d'una combinació:

Nom Nom de la combinació
Proveïdor Element o conjunt d'elements que proporciona uns elements dels quals depèn el paquet o conjunt de paquets de l'altra banda de la relació de combinació. En algunes relacions d'importació en el context d'un disseny de classes orientat a objectes (OO), la intenció és que el paquet més abstracte tingui aquest rol.
Documentació Descriu la combinació.
Client Element o conjunt d'elements que importa membres del proveïdor

Realització[modifica]

La realització és una relació d'abstracció especialitzada entre dos conjunts d'elements model, un que representa una especificació (proveïdor) i un altre que representa una implementació del primer (client). La realització es pot utilitzar per modelar gradualment optimitzacions, transformacions, patrons, síntesis de models, etc.

Propietats d'una realització:

Nom Nom de la realització
Proveïdor Element o conjunt d'elements que proporciona uns elements dels quals depèn el paquet o conjunt de paquets de l'altra banda de la relació de realització. En algunes relacions d'importació en el context d'un disseny de classes orientat a objectes (OO), la intenció és que el paquet més abstracte tingui aquest rol.
Documentació Descriu la realització.
Client Element o conjunt d'elements que importa membres del proveïdor
Esquematització Composició d'una expressió que defineix la relació d'abstracció entre el proveïdor i el client. En alguns casos, com ara la derivació, és generalment formal i unidireccional, però en d'altres sol ser informal i bidireccional. L'expressió d'esquematització (mapping) és opcional i es podria ometre si la relació concreta entre els dos elements no està especificada.

Restricció[modifica]

Una condició o restricció té com a objectiu declarar alguna de les semàntiques d'un element.

Propietats d'una restricció:

Nom Nom de la restricció
Expressió La condició que, en ser avaluada, ha de ser certa per tal que la restricció es compleixi.
Documentació Descriu la restricció.

Comentari[modifica]

Un comentari permet afegir diverses observacions als elements. No té cap importància semàntica, però pot contenir informació útil per al modelador.

Propietats d'un comentari:

Nom Nom del comentari
Documentació Especifica una cadena de caràcters (string) que conté el comentari.

Exemple[modifica]

Exemple de diagrama de paquets de la universitat.

Posem per exemple una aplicació per tal de gestionar les matrícules i els seminaris impartits per una universitat, on els actors serien els estudiants, els professors que imparteixen els seminaris, i els administradors financers que tramiten les inscripcions i els pagaments. Tot i que el diagrama de paquets no és necessari, ja que només es tracta d'un esquema conceptual, simplifica molt el sistema, dividit en paquets que actuen com subsistemes. Es pot dividir el sistema de la universitat en 3 paquets: un per a la gestió financera, un per a gestionar les inscripcions dels alumnes, i un altre per a la gestió dels seminaris que s'imparteixen. Alhora, el paquet de la gestió financera es pot dividir en 2 subpaquets: un referent a les matrícules íntegres, i un altre per a gestionar el sistema de beques.

D'aquesta manera, s'ha pogut crear un diagrama molt senzill, simplificat mitjançant paquets que es poden implementar per separat, per tal de tractar el problema en parts més senzilles, i on cada actor només està connectat amb la secció del sistema amb la qual interactua. La incorporació de subpaquets dins de paquets més generals fa que es puguin crear molts nivells d'encapsulament, fent possible així la simplificació de qualsevol sistema.

Enllaços externs[modifica]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Diagrama de paquets