Docente: Giuseppe Scollo
Università di Catania, sede di Comiso (RG)
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Studi in Informatica applicata, AA 2006-7
origini ed evoluzione:
linguaggio per espressioni su modelli UML a oggetti:
vincolo:
espressioni:
OCL è inteso favorire l'uso di modelli per l'automazione dello sviluppo del software, nella concezione della Model Driven Architecture (MDA), ovvero di uno sviluppo basato su modelli e loro trasformazioni
le trasformazioni da PIM a PSM sono intese avvalersi di strumenti basati su definizioni standard delle trasformazioni fra i linguaggi in gioco:
tratta da: (Warmer & Kleppe, 2003), Cap. 1
in analogia con i livelli di maturità del processo produttivo (CMM):
UML + OCL → modelli precisi → maturità di livello
≥
4
un esempio dei limiti espressivi dei soli diagrammi UML:
tradotto da: (Warmer & Kleppe, 2003), Cap. 1
problema: voli a numero di passeggeri illimitato ?
soluzione con OCL:
context Volo inv: passeggeri->size() <= vettore.posti
un altro esempio dei limiti espressivi dei soli diagrammi UML:
tradotto da: (Warmer & Kleppe, 2003), Cap. 1
nel diagramma, pur se si mostrano i tipi degli attributi e i parametri delle operazioni:
valore, redditoAnnuo, capitale, rataMensile : Denaro dataInizio, dataFine : Data codiceFiscale : string ipoteca(somma: int, garanzia: Casa) : void
molti vincoli ovvi restano tuttavia non specificati ...
per la precisione, c'è da aggiungere fra l'altro che:
con precisione, in OCL:
context Mutuo inv garanzia.proprietario = contraente
context Mutuo inv dataInizio < dataFine
context Acquirente inv Acquirente::allInstances()->isUnique(codiceFiscale)
context Acquirente::ipoteca(somma:Denaro, garanzia:Casa) pre self.mutui.rataMensile->sum() * 12 <= self.redditoAnnuo * 0.30
context Acquirente::ipoteca(somma:Denaro, garanzia:Casa) pre garanzia.valore >= garanzia.mutui.capitale->sum()
caratteristiche del linguaggio e loro motivazioni:
espressione sia di vincoli che di interrogazioni
notazione non matematica (ma semantica matematica)
tipizzazione forte
linguaggio dichiarativo
un insieme coerente e consistente di elementi del modello con caratteristiche (features) e vincoli
unitarietà del modello:
la dichiarazione del contesto di un'espressione OCL
self
,
è la generica istanza del tipo contestuale,
ovvero del contesto, o del suo contenitore quando il contesto non è un tipo,
ad es. è un'operazione
alcuni suggerimenti di metodo:
cominciare con la stesura di diagrammi di classi
data una collezione coerente di diagrammi, individuare le necessità di ulteriore specifica, tipicamente:
derive