SlideShare a Scribd company logo
1 of 15
Pl/sql 
E ... 
Design by Contract
Design by Contract 
In pl/sql Design by Contract = formalizzazione 
delle interfacce dei moduli elementari. 
 Il soddisfacimento delle precondizioni è 
responsabilità del modulo chiamante 
 Il soddisfacimento delle postcondizioni è un 
obbligo del modulo chiamato 
 Gli invarianti sono preservati dal sistema
Design by Contract 
 Il soddisfacimento delle precondizioni è 
responsabilità del modulo chiamante 
- I parametri di input debbono soddisfare le 
pre-condizioni sia dal punto di vista 
formale (data-type) che da un punto di 
vista semantico ( il significato del dato in 
input è quello che il modulo chiamato si 
aspetta ).
Design by Contract 
 Il soddisfacimento delle postcondizioni è un 
obbligo del modulo chiamato 
- I parametri di output ed i valori di ritorno 
dei moduli debbono obbedire alle post-condizioni 
sia da un punto di vista formale 
(data-type) che da un punto di vista 
semantico (significato del dato) e sono 
implementati dagli algoritmi eseguiti dal 
modulo
Design by Contract 
 Gli invarianti sono preservati dal sistema 
- La gestione delle eccezioni modifica lo 
stato del sistema (da stato normale a 
stato di errore) e quindi provoca una 
modifica degli invarianti
Pl/sql e Design by Contract 
RAFFORZARE MEDIANTE CODICE I 
VINCOLI DEL CONTRATTO 
- Asserzioni 
- Controllo output 
- Gestione degli errori
Asserzione 
Le chiamate al modulo hanno obblighi contrattuali 
L'asserzione delle precondizioni all'ingresso del modulo 
rafforza il contratto 
Il rafforzamento delle probabilità che tutti i contratti 
siano rispettati aumenta l'affidabilità del codice 
L'asserzione: 
- Testa una condizione booleana e si lamenta in caso 
di violazione 
- E' sempre eseguita dal modulo e testa il rispetto 
da parte del modulo chiamante delle pre-condizioni
Asserzione
Asserzione 
e 
programmazione difesiva 
L'asserzione delle precondizioni all'ingresso del 
modulo non rende evidente all'esterno l'errore. 
E' la routine di gestione degli errori che decide 
cosa fare.
Asserzione 
e 
performance 
 Le procedure di asserzione creano un maggior 
carico 
- Il codice da implementare è minimo ma esiste 
 Il meccanismo delle asserzioni non può essere 
rimosso
Spegnere l'Asserzione 
 Si può lasciare il codice commentando le 
chiamate alle procedure di asserzione 
- Le procedure di asserzione sono parte integrante 
delle specifiche 
 Si può usare la compilazione condizionale 
 Eliminare le chiamate solo a fronte di 
segnalazioni sulle performance
Controllo output 
 Dopo l'esecuzione del modulo occorre 
controllare l'output prima di restituire il 
controllo del processo al modulo chiamante 
- Mediante le asserzioni controllo semantico sul dato 
restituito
Gestione degli errori 
Cos'è una eccezione ? 
 Accade qualcosa di indesiderabile o inaspettato 
Chiamiamo questo eccezione 
 Il processo passa dall'esecuzione del blocco normale 
all'esecuzione del blocco di eccezioni 
 Se il blocco delle eccezioni non riesce a trattare 
l'eccezione l'eccezione viene passata al modulo 
chiamante
Classificazione eccezioni 
 Previste,recuperabili, falsi allarmi 
 Bisogna preservare il normale flusso del programma usando i 
sub-blocks 
 Previste ma irrecuperabili 
 Ad esempio violazione degli obblighi contrattuali 
 Correzione dei moduli per obbedire alle norme dei contratti 
 Segnalate al chiamante in modo da permettergli una gestione 
 Impreviste ingestibili 
 Gestite da when others e loggate in tabella 
 Impreviste gestibili
Le A.P.I. di Oracle 
per segnalare gli errori 
Descrizione Come recuperare l'informazione 
Codice dell'errore Variabile sqlcode 
Messaggio di errore Variabile sqlerrm (massimo 512 byte) 
Oppure 
DBMS_UTILITY.FORMAT_ERROR_STACK 
Individuare la linea di codice dove è stata 
sollevata l'eccezione 
DBMS_UTILITY.FORMAT_ERROR_BACKTRAC 
E 
Come ho fatto ad arrivare al punto in cui si è 
verificata l'eccezione ? 
DBMS_UTILITY.FORMAT_CALL_STACK

More Related Content

Similar to Pl sql contract_desing

IMPROVE 4.0
IMPROVE 4.0IMPROVE 4.0
IMPROVE 4.0nextsrl
 
Prototipazione di una piattaforma di controllo degli accessi fisici cross ven...
Prototipazione di una piattaforma di controllo degli accessi fisici cross ven...Prototipazione di una piattaforma di controllo degli accessi fisici cross ven...
Prototipazione di una piattaforma di controllo degli accessi fisici cross ven...MassimoPalmisano
 
SMART WATER 4 novembre
SMART WATER 4 novembreSMART WATER 4 novembre
SMART WATER 4 novembrecanaleenergia
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Gian Maria Ricci
 
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...Donato Clun
 
Presentazione L Care pbk
Presentazione L Care pbkPresentazione L Care pbk
Presentazione L Care pbktacerrito
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfFlorence Consulting
 
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...Tommaso Torti
 
L'analisi FMECA applicata alla gestione dei ricambi
L'analisi FMECA applicata alla gestione dei ricambiL'analisi FMECA applicata alla gestione dei ricambi
L'analisi FMECA applicata alla gestione dei ricambiEmanuela Corradini
 
MANAGEMENT DELLA QUALITA'
MANAGEMENT DELLA QUALITA'MANAGEMENT DELLA QUALITA'
MANAGEMENT DELLA QUALITA'GiuliaForconi
 
Te industria 4.0 presentazione dettagliata 21-09-2017
Te industria 4.0 presentazione dettagliata 21-09-2017Te industria 4.0 presentazione dettagliata 21-09-2017
Te industria 4.0 presentazione dettagliata 21-09-2017Emanuele V. Canetti
 
Presentazione tesi
Presentazione tesiPresentazione tesi
Presentazione tesisuccer110
 
Il modulo dell'efficienza: L'OEE
Il modulo dell'efficienza: L'OEEIl modulo dell'efficienza: L'OEE
Il modulo dell'efficienza: L'OEEnextsrl
 
Semi-Active Replication Protocol
Semi-Active Replication ProtocolSemi-Active Replication Protocol
Semi-Active Replication ProtocolPaolo Maresca
 

Similar to Pl sql contract_desing (20)

IMPROVE 4.0
IMPROVE 4.0IMPROVE 4.0
IMPROVE 4.0
 
PALUZZANO TESI
PALUZZANO TESIPALUZZANO TESI
PALUZZANO TESI
 
036 ws1307 burgo
036 ws1307 burgo036 ws1307 burgo
036 ws1307 burgo
 
Prototipazione di una piattaforma di controllo degli accessi fisici cross ven...
Prototipazione di una piattaforma di controllo degli accessi fisici cross ven...Prototipazione di una piattaforma di controllo degli accessi fisici cross ven...
Prototipazione di una piattaforma di controllo degli accessi fisici cross ven...
 
SMART WATER 4 novembre
SMART WATER 4 novembreSMART WATER 4 novembre
SMART WATER 4 novembre
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
3DD 1e Reconfig
3DD 1e Reconfig3DD 1e Reconfig
3DD 1e Reconfig
 
Tips and tricks
Tips and tricksTips and tricks
Tips and tricks
 
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo ...
 
Presentazione L Care pbk
Presentazione L Care pbkPresentazione L Care pbk
Presentazione L Care pbk
 
Simav_Camere_bianche_Rev2
Simav_Camere_bianche_Rev2Simav_Camere_bianche_Rev2
Simav_Camere_bianche_Rev2
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdf
 
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
 
L'analisi FMECA applicata alla gestione dei ricambi
L'analisi FMECA applicata alla gestione dei ricambiL'analisi FMECA applicata alla gestione dei ricambi
L'analisi FMECA applicata alla gestione dei ricambi
 
MANAGEMENT DELLA QUALITA'
MANAGEMENT DELLA QUALITA'MANAGEMENT DELLA QUALITA'
MANAGEMENT DELLA QUALITA'
 
Te industria 4.0 presentazione dettagliata 21-09-2017
Te industria 4.0 presentazione dettagliata 21-09-2017Te industria 4.0 presentazione dettagliata 21-09-2017
Te industria 4.0 presentazione dettagliata 21-09-2017
 
Presentazione tesi
Presentazione tesiPresentazione tesi
Presentazione tesi
 
Il modulo dell'efficienza: L'OEE
Il modulo dell'efficienza: L'OEEIl modulo dell'efficienza: L'OEE
Il modulo dell'efficienza: L'OEE
 
Semi-Active Replication Protocol
Semi-Active Replication ProtocolSemi-Active Replication Protocol
Semi-Active Replication Protocol
 
Il plc
Il plcIl plc
Il plc
 

Pl sql contract_desing

  • 1. Pl/sql E ... Design by Contract
  • 2. Design by Contract In pl/sql Design by Contract = formalizzazione delle interfacce dei moduli elementari.  Il soddisfacimento delle precondizioni è responsabilità del modulo chiamante  Il soddisfacimento delle postcondizioni è un obbligo del modulo chiamato  Gli invarianti sono preservati dal sistema
  • 3. Design by Contract  Il soddisfacimento delle precondizioni è responsabilità del modulo chiamante - I parametri di input debbono soddisfare le pre-condizioni sia dal punto di vista formale (data-type) che da un punto di vista semantico ( il significato del dato in input è quello che il modulo chiamato si aspetta ).
  • 4. Design by Contract  Il soddisfacimento delle postcondizioni è un obbligo del modulo chiamato - I parametri di output ed i valori di ritorno dei moduli debbono obbedire alle post-condizioni sia da un punto di vista formale (data-type) che da un punto di vista semantico (significato del dato) e sono implementati dagli algoritmi eseguiti dal modulo
  • 5. Design by Contract  Gli invarianti sono preservati dal sistema - La gestione delle eccezioni modifica lo stato del sistema (da stato normale a stato di errore) e quindi provoca una modifica degli invarianti
  • 6. Pl/sql e Design by Contract RAFFORZARE MEDIANTE CODICE I VINCOLI DEL CONTRATTO - Asserzioni - Controllo output - Gestione degli errori
  • 7. Asserzione Le chiamate al modulo hanno obblighi contrattuali L'asserzione delle precondizioni all'ingresso del modulo rafforza il contratto Il rafforzamento delle probabilità che tutti i contratti siano rispettati aumenta l'affidabilità del codice L'asserzione: - Testa una condizione booleana e si lamenta in caso di violazione - E' sempre eseguita dal modulo e testa il rispetto da parte del modulo chiamante delle pre-condizioni
  • 9. Asserzione e programmazione difesiva L'asserzione delle precondizioni all'ingresso del modulo non rende evidente all'esterno l'errore. E' la routine di gestione degli errori che decide cosa fare.
  • 10. Asserzione e performance  Le procedure di asserzione creano un maggior carico - Il codice da implementare è minimo ma esiste  Il meccanismo delle asserzioni non può essere rimosso
  • 11. Spegnere l'Asserzione  Si può lasciare il codice commentando le chiamate alle procedure di asserzione - Le procedure di asserzione sono parte integrante delle specifiche  Si può usare la compilazione condizionale  Eliminare le chiamate solo a fronte di segnalazioni sulle performance
  • 12. Controllo output  Dopo l'esecuzione del modulo occorre controllare l'output prima di restituire il controllo del processo al modulo chiamante - Mediante le asserzioni controllo semantico sul dato restituito
  • 13. Gestione degli errori Cos'è una eccezione ?  Accade qualcosa di indesiderabile o inaspettato Chiamiamo questo eccezione  Il processo passa dall'esecuzione del blocco normale all'esecuzione del blocco di eccezioni  Se il blocco delle eccezioni non riesce a trattare l'eccezione l'eccezione viene passata al modulo chiamante
  • 14. Classificazione eccezioni  Previste,recuperabili, falsi allarmi  Bisogna preservare il normale flusso del programma usando i sub-blocks  Previste ma irrecuperabili  Ad esempio violazione degli obblighi contrattuali  Correzione dei moduli per obbedire alle norme dei contratti  Segnalate al chiamante in modo da permettergli una gestione  Impreviste ingestibili  Gestite da when others e loggate in tabella  Impreviste gestibili
  • 15. Le A.P.I. di Oracle per segnalare gli errori Descrizione Come recuperare l'informazione Codice dell'errore Variabile sqlcode Messaggio di errore Variabile sqlerrm (massimo 512 byte) Oppure DBMS_UTILITY.FORMAT_ERROR_STACK Individuare la linea di codice dove è stata sollevata l'eccezione DBMS_UTILITY.FORMAT_ERROR_BACKTRAC E Come ho fatto ad arrivare al punto in cui si è verificata l'eccezione ? DBMS_UTILITY.FORMAT_CALL_STACK