# Object Role Modeling

    Non deve essere confusa con Object-relational mapping
Object Role Modeling (ORM) nel campo dell'ingegneria del software costituisce un metodo per la modellazione concettuale e può essere utilizzato come strumento per l'analisi delle informazioni e delle regole.

## Panoramica

Object Role Modeling è un metodo "orientato ai fatti" per l'analisi dei sistemi a livello concettuale. La qualità di un'applicazione basata su database dipende in modo critico dal suo progetto (disegno). Per poter garantire la correttezza, la chiarezza, l'adattabilità e la produttività dei sistemi informativi, essi devono essere ben specificati prima di tutto a livello concettuale, utilizzando concetti ed un linguaggio facilmente comprensibile dalle persone. Il disegno (progetto) concettuale può includere prospettive orientate ai dati, ai processi ed al comportamento, e il DBMS reale utilizzato per implementare il disegno potrebbe essere basato su uno dei tanti modelli logici dei dati (relazionale, gerarchico, reticolare, object-oriented, ecc.).
Il progettista di database costruisce un modello formale dell'area applicativa o Universo del Discorso (UdD). Il modello richiede una buona comprensione dell'UdD e un mezzo per specificare tale comprensione in modo chiaro e inequivocabile. Object-Role Modeling (ORM) semplifica il processo di progettazione utilizzando il linguaggio naturale, così come diagrammi intuitivi, che possono essere popolati con esempi, esaminando le informazioni in termini di fatti semplici o elementari. Esprimendo il modello in termini di concetti naturali, come oggetti e ruoli, ORM fornisce un approccio concettuale alla modellazione. Il suo approccio "attribute-free" favorisce la stabilità semantica.

## Storia

Le origini di ORM possono essere ricondotte al campo della ricerca sulla modellazione semantica dei sistemi informativi in Europa durante gli anni settanta. Ci sono stati molti pionieri e questa breve sintesi non può citarli tutti. Un contributo preliminare si ebbe nel 1973 quando M. Senko scrisse circa la "strutturazione dei dati" sulla testata IBM Systems Journal. Nel 1974 J.R. Abrial contribuì con un articolo sulla "Semantica dei dati". Nel giugno 1975 venne pubblicata la tesi di dottorato di Eckhard Falkenberg e nel 1976 uno scritto dello stesso autore citò il termine "object-role model".
G.M. Nijssen fornì alcuni contributi fondamentali con l'introduzione della notazione "circle-box" per indicare i tipi di oggetti ed i ruoli, formulando la prima versione del procedimento di progettazione di uno schema concettuale. Robert Meersman estese quindi l'approccio con l'aggiunta dei sottotipi e con l'introduzione del primo vero linguaggio di interrogazione concettuale (conceptual query language).
La modellazione Object-role si è inoltre evoluta dal Natural language Information Analysis Method, una metodologia inizialmente sviluppata da Nijssen e il suo team di ricerca nei Paesi Bassi a metà degli anni settanta presso il Control Data Corporation Research Laboratory in Belgio e, successivamente negli anni ottanta, presso l'Università di Queensland, in Australia. L'acronimo Niam stava originariamente per "Nijssen's Information Analysis Methodology", ma fu successivamente generalizzato in "Natural language Information Analysis Methodology" e Binary Relationship Modeling dato che G.M. Nijssen era solo una delle tante persone coinvolte nello sviluppo del metodo.
Nel 1989 Terry Halpin completò la sua tesi di dottorato su ORM, fornendo la prima formalizzazione completa del metodo incorporando in esso diverse estensioni.
Sempre nel 1989, Halpin e Nijssen scrissero un libro intitolato Conceptual Schema and Relational Database Design e diversi altri documenti, fornendo la prima formalizzazione di ORM. Da allora Terry Halpin ha scritto sull'argomento sei libri e oltre 160 documenti tecnici.
Una variante recente di ORM è costituita da FCO-IM. Si distingue dall'ORM tradizionale in quanto si basa su una prospettiva rigorosamente orientata alla comunicazione. Piuttosto che modellare il dominio e i suoi concetti essenziali, essa modella sostanzialmente la grammatica utilizzata per parlare del dominio. Un altro recente sviluppo è l'impiego di ORM in combinazione con tipi di relazione standardizzati con ruoli associati unitamente ad un dizionario ed una tassonomia standard (leggibili dai computer) di concetti, come quelli contenuti nel dizionario Gellish English. La standardizzazione dei tipi di relazione (tipi di fatto), dei ruoli e dei concetti consente maggiori possibilità di integrazione e riutilizzo del modello.

### ORM2

ORM2 (ORM di seconda generazione) è una nuova incarnazione di Object-Role Modeling ma anche un nuovo strumento di modellazione per agevolare la nuova notazione. T. Halpin sta guidando lo sforzo iniziato dalla Neumont University e successivamente proseguito attraverso la ORM Foundation, una organizzazione no-profit dedicata alla promozione dell'approccio fact-oriented alla modellazione delle informazioni.
ORM2 sfrutta il lavoro svolto dal gruppo BSBR.
I principali obiettivi per la notazione grafica di ORM 2 sono:
* Visualizzazione più compatta dei modelli ORM senza comprometterne la chiarezza
* Internazionalizzazione migliorata (ad esempio, evitare simboli in lingua inglese)
* Cambiamenti di notazione accettabili per un elenco breve dei principali utilizzatori ORM
* Regole di disegno semplificate al fine di facilitare la creazione di un editor grafico
* Pieno supporto per le annotazioni testuali (ad esempio note per le regole testuali)
* Utilizzo esteso di "viste" per la visualizzazione o la soppressione dei dettagli
* Supporto per nuove funzionalità e caratteristiche (ad esempio, definizione dei percorsi di ruolo, aspetti di chiusura, modalità)
Il tool Norma (Natural ORM Architect) è un progetto open source che incorpora la sintassi ORM2.

## Argomenti sulla modellazione Oggetto-ruoli
### Notazione grafica

La ricca notazione grafica di ORM permette di catturare molte regole di business che normalmente non sono supportate come "primitive grafiche" in altre popolari notazioni di modellazione dei dati.
Esistono diversi strumenti software per la creazione di schemi ORM e per generare schemi di database relazionali. Tra di essi possiamo includere Microsoft Visio for Enterprise Architects, OORIANE, CaseTalk, Infagon e NORMA.
Nei primi anni 1990 fu sviluppato a Parigi uno strumento grafico di progettazione NIAM capace di generare script di creazione di database per Oracle, DB2 e DBQ. Originariamente chiamato Genesys, lo strumento è stato commercializzato con successo in Francia e poi anche in Canada. Esso potrebbe anche supportare la progettazione di diagrammi di tipo "ER" (entità-relazione). Lo strumento è stato adattato alle piattaforme SCO Unix, SunOS, DEC 3151's e Windows 3.0, e anche per i successivi sistemi operativi Microsoft utilizzando XVT per la portabilità grafica tra diversi sistemi operativi. Tale tool è stato quindi rinominato "OORIANE" ed è attualmente utilizzato in progetti di grandi data warehouse e SOA.

### La procedura di progettazione dello schema concettuale

Il ciclo di vita dei sistemi informativi comporta in genere varie fasi: studio di fattibilità, analisi dei requisiti, progettazione concettuale dei dati e dei trattamenti; progettazione logica, progettazione esterna; prototipizzazione; progettazione interna e implementazione; test e validazione; manutenzione. La procedura di progettazione dello schema concettuale ORM (CSDP) si concentra sull'analisi e sul disegno dei dati. I sette passi della procedura di progettazione dello schema concettuale sono i seguenti:
* trasformare esempi familiari delle informazioni in fatti elementari e applicare opportuni controlli di qualità;
* disegnare i tipi di fatto e applicare un controllo sulla popolazione;
* verificare la presenza di tipi di entità che dovrebbero essere combinati, e notare qualsiasi derivazione aritmetica;
* aggiungere vincoli di unicità e controllare l'arità dei tipi di fatto;
* aggiungere vincoli di obbligatorietà dei ruoli e controllare per le derivazioni logiche;
* aggiungere i valori e impostare comparazioni e vincoli dei sottotipi;
* aggiungere altri vincoli ed effettuare verifiche finali.

## Strumenti

La crescita di ORM ha seguito la disponibilità di una serie di strumenti in costante miglioramento.
I primi strumenti ORM, come IAST (Control Data) e RIDL* sono stati seguiti da InfoDesigner, InfoModeler e VisioModeler.
Quando Microsoft ha acquistato la Visio Corporation, Microsoft ha ampliato VisioModeler e ne ha fatto un componente di Microsoft Visual Studio. Questa è stata la prima implementazione ORM di Microsoft ed è stata pubblicata nella release "2003 Enterprise Architects" di Visual Studio come una componente dello strumento chiamato "Microsoft Visio for Enterprise Architects (VEA)".
Nello stesso anno, un vademecum "how to" intitolato "Database Modeling with Microsoft Visio for Enterprise Architects" è stato pubblicato da Morgan Kaufmann. Microsoft ha mantenuto la funzionalità ORM nella versione high-end di Visual Studio 2005 e il libro di Morgan Kaufmann rimane una guida-utente valida per entrambe le versioni.
Un altro tool ORM è di tipo open source ed è chiamato NORMA (Natural ORM Architect for Visual Studio).

### DogmaModeler

DogmaModeler è uno strumento gratuito di modellazione di ontologie basato sulla modellazione ORM. La filosofia di DogmaModeler è quella di consentire ai non esperti IT di modellare ontologie con un coinvolgimento minimo o nullo di ingegneri delle ontologie.
Questa sfida è affrontata in DogmaModeler attraverso ben definiti principi metodologici. La prima versione di DogmaModeler è stata sviluppata presso la Vrije Universiteit Brussel.

#### Lo stato open source di DogmaModeler

Il Progetto DogmaModeler non mostra alcun'attività dalla sua creazione nel 2006, e il codice sorgente per il progetto non è disponibile attraverso quel sito. L'ultima versione del programma, disponibile sul sito http://jarrar.info/Dogmamodeler, è datata 27 ottobre 2006.
Da allora il progetto sembra essere stato proseguito ed ampliato in numerosi altri strumenti presso il Semantics Technology and Applications Research Laboratory (VUB STARLab) della Vrije Universiteit Brussel. Una nota sul sito afferma che "Gli utenti che utilizzano unicamente DOGMAModeler per le loro ricerche possono contattare via e-mail l'autore per il download gratuito".

### VisioModeler

Il primo tool ORM noto come VisioModeler è liberamente disponibile presso la Microsoft Corporation come prodotto non supportato (download di 25 MB). Modelli sviluppati in VisioModeler possono essere esportati verso soluzioni ORM Microsoft attuali e future. Per scaricare gratuitamente VisioModeler occorre andare su https://download.microsoft.com/, ricercare per parole chiave inserendo nel box di ricerca la parola "VisioModeler", selezionare il sistema operativo (ad esempio, Windows XP; nota: VisioModeler NON funziona sotto Windows Vista), modificare l'impostazione "Show Results for" in "All Downloads" e premere il pulsante "Find It!" Ciò dovrebbe condurre a una pagina di download che include il titolo di "VisioModeler (Unsupported Product Edition)". Cliccando su quest'ultimo, si arriva al link per il download del file MSVM31.exe. Fare clic su questo link per eseguire il download.

### Visio for Enterprise Architects (VEA)

Microsoft ha incluso una potente soluzione di modellazione ORM e database logico nel suo prodotto Visio for Enterprise Architects (VEA). La release 2005 di VEA include anche alcuni aggiornamenti minori (ad esempio è stato incluso un driver per SQL Server 2005).

### CaseTalk

Uno strumento di modellazione chiamato CaseTalk, basato sul dialetto ORM conosciuto come Fully Communication Oriented Information Modeling (FCO-IM), è disponibile da Bommeljé Crompvoets en partners b.v., con sede a Utrecht, nei Paesi Bassi. Per saperne di più su questo strumento, visitare il sito web dedicato a CaseTalk.

### Infagon

Uno strumento ORM freeware noto come Infagon è disponibile presso Mattic software. Anche Infagon si basa sul dialetto FCO-IM. Per scaricare o ottenere maggiori informazioni su questo strumento, fare clic sulla home page Infagon

### Altri strumenti

* Doctool e CogNIAM (strumenti CogNIAM),
* ActiveFacts (strumento ORM 2),
* DogmaStudio (strumento per ontologie ORM),
* Orthogonal Toolbox (add-on XML free per la COM API di "database modeling" delle soluzioni ORM di Microsoft).

### NORMA

NORMA (Natural ORM Architect for Visual Studio) è un plugin gratuito e open-source per Visual Studio 2005 e Visual Studio 2008 di Microsoft. Questo plug-in Supporta ORM 2 (ORM di seconda generazione) e mappe i modelli ORM verso una varietà di target implementativi, compresi i principali motori database, il codice orientato agli oggetti e gli schemi XML.
L'ultimo libro di Terry Halpin, Information Modeling and Relational Databases, Second Edition "... usa la notazione di ORM 2 ... come supportato dallo strumento NORMA (Neumont ORM Architect)..." (pagina 10), e "(...)Al momento della scrittura, il Neumont ORM Architect (NORMA) tool fornisce il più completo supporto per la notazione ORM 2 discussa in questo libro" (Prefazione, XXV).
Egli afferma anche: "Un metodo di modellazione buono come ORM merita un buon strumento CASE. Negli ultimi dieci anni, staff di talento presso ServerWare, Asymetrix Corporation, InfoModelers Incorporated, Visio Corporation, Microsoft Corporation e Neumont University hanno lavorato per sviluppare lo stato dell'arte degli strumenti CASE a supporto dello specifico metodo ORM discusso in questo libro. Le seguenti persone di talento che lavorano attualmente come capi ingegneri del software sullo strumento NORMA meritano una menzione speciale: Curland Matt e Kevin Owen " (Prefazione, XXVI).

#### Lo stato del progetto NORMA

Il progetto NORMA distribuisce frequenti release ed è quasi pronto per comprendere l'intero ciclo di vita delle basi di dati.
NORMA supporta molteplici target di generazione, tra cui:
| Motori database | Microsoft SQL Server, Oracle, DB2, MySQL, PostgreSQL, ecc. |
| Linguaggi di programmazione | LINQ to SQL, PLiX (linguaggio di programmazione XML) e PHP |
| Altro | Schemi XML (XSD) |