Object Constraint Language: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 1:
{{WIP|Moongateclimber}}
L'<b>Object Constraint Language</b> o '''OCL''' è un [[linguaggio dichiarativo]] [[linguaggio formale|formale]] inizialmenteche propostoestende come estensione delil linguaggio di modellazione [[Paradigma object-oriented|object-oriented]] [[Unified Modeling Language|UML]] consentendo la specifica di elementi di modello attraverso un sistema di [[asserzione|asserzioni]]. Nato e insviluppatosi seguitoindipendentemente da UML (come evoluzione del precedente [[2003Syntropy]]), integratoOCL comeè partestato delincluso, nel [[2003]], nel nuovo standard UML 2.0. Secondo le indicazioni di [[Object Management Group|OMG]], OCL può essere in effetti impiegato nel contesto di qualsiasi [[metamodello]] basato su [[Meta-Object Facility|MOF]]. Inoltre, ''incluso''OMG UMLha adottato OCL come un elemento chiave del nuovo standard per la trasformazione di modelli, [[QVT]].
 
In UML, in genere, OCL viene utilizzato per descrivere proprietà di ''istanze'' di ''classificatori''; l'esempio più comune di istanza di classificatore è un ''oggetto'' istanza di una ''classe''. Le asserzioni OCL possono descrivere una [[invariante|invarianti]] che legano i valori degli attributi di un oggetto, precondizioni e postcondizioni delle operazioni, valori iniziali di attributi, o regole di derivazione per gli attributi derivati. La versione 2.0 del linguaggio (che sono stati aggiunti nuovi elementi [[sintassi|sintattici]] e [[semantica|semantici]] per definire interrogazioni.
L'OCL è un linguaggio testuale attraverso il quale si possono esprimere ''vincoli'' (in [[lingua inglese|inglese]] ''constraint'') e ''interrogazioni'' (''query'') che arricchiscono un modello a oggetti con informazione non esprimibile con la notazione [[diagramma|diagrammatica]] prevista dal metamodello in uso. Le espressioni OCL possono essere utilizzate per esprimere, per esempio, [[invariante|invarianti]], [[precondizione|precondizioni]] e postcondizioni, [[guardia (informatica)|guardie]] e regole di derivazione. La valutazione delle espressioni OCL è sempre intesa come priva di [[effetto collaterale|effetti collaterali]].
 
 
==Descrizione generale==
I vincoli OCL sono in genere asserzioni che specificano, in modo formale, proprietà di determinati elementi di un modello. Il linguaggio include elementi del [[calcolo dei predicati del primo ordine]], attraverso i quali si possono esprimere informazioni non descrivibili in altro modo nei [[diagramma|diagrammi]] UML.
 
 
 
L'OCL è un linguaggio testuale attraverso il quale si possono esprimere ''vincoli'' (in [[lingua inglese|inglese]] ''constraint'') e ''interrogazioni'' (''query'') che arricchiscono un modello a oggetti con informazione non esprimibile con la notazione [[diagramma|diagrammatica]] prevista dal metamodello in uso. Le espressioni OCL possono essere utilizzate per esprimere, per esempio, [[invariante|invarianti]], [[precondizione|precondizioni]] e postcondizioni, [[guardia (informatica)|guardie]] e regole di derivazione. La valutazione delle espressioni OCL è sempre intesa come priva di [[effetto collaterale|effetti collaterali]].
 
OCL è oggi inteso da OMG come un elemento chiave del nuovo standard per la trasformazione di modelli noto come [[QVT]].
 
==Descrizione==
OCL deriva storicamente da [[Syntropy]], un metodo di [[analisi (ingegneria del software)|analisi]] e [[progetto (ingegneria del software)|progetto]] object-oriented di seconda generazione. La prima versione ampiamente diffusa, OCL 1.4, consentiva di esprimere solo vincoli; in OCL 2.0 sono stati aggiunti nuovi elementi [[sintassi|sintattici]] e [[semantica|semantici]] per definire interrogazioni.
 
===Applicazioni===