title: Package Diagram
text: # Package Diagram
  
  Un package nell'Unified Modeling Language è usato "per raggruppare elementi e fornire un namespace per gli elementi raggruppati". Un package può contenere altri package, fornendo così un'organizzazione gerarchica dei package.
  
  Praticamente tutti gli elementi UML possono essere raggruppati in package. Così classi, oggetti, use case, componenti, nodi, istanze di nodi, ecc. possono essere tutti organizzati come package, consentendo così una maneggevole organizzazione delle miriadi di elementi che un modello UML comporta.
  
  ## Utilizzo
  
  Quando si organizzano modelli funzionali (use case, workflow, ecc.) si usano i package per modellare la struttura modulare del sistema da applicare nel mondo reale. Quando si organizza il codice sorgente, si usano i package per rappresentare i differenti strati di un codice sorgente. Per esempio:
  
  * logica di presentazione
  * controller layer
  * data access layer
  * integration layer
  * business services layer
  
  La gestione dei Layers è legata al pattern architetturale che ne prende il nome.
  
  Quando si organizzano modelli component, si usano i package per raggruppare i componenti in base alla proprietà (possesso) e/o alle possibilità di riuso. Per esempio:
  
  * commercial-off-the-shelf products
  * componenti framework Open source
  * componenti framework "custom-built"
  * componenti applicazione "custom-built"
  
  Quando si organizzano modelli deployment, si usano i package per rappresentare i differenti tipi di ambienti di distribuzione (ambienti deplyment) che si modelleranno. Per esempio:
  
  * ambiente di produzione
  * ambiente di pre-produzione
  * ambiente di test d'integrazione
  * ambiente di test di sistema
  * ambienti di sviluppo
  