SlideShare a Scribd company logo
1 of 22
Sviluppare software 
robusto e performante 
e... dormire sonni tranquilli
Nel tempo si sono affermati diversi modelli di 
sviluppo software: 
Il modello procedurale
Il modello procedurale 
I programmi utilizzano sottoprogrammi (sub-rutine e 
funzioni) . 
La sequenza delle chiamate alle sub-rutine può 
essere modificata solo modificando il programma 
principale.
Il modello “service oriented” (soa)
Il modello “service oriented” (soa) 
I programmi forniscono il servizio elementare richiesto dal 
processo. 
L'ordine di chiamata dei servizi può essere modificato 
senza toccare il singolo servizio (basta modificare il 
processo )
 I nostri clienti ci chiedono di orientare lo 
sviluppo degli applicativi verso una “Services 
Oriented Architecture”. 
Questo implica che noi dobbiamo iniziare a 
concepire lo sviluppo del software in termini 
di moduli a se stanti che forniscono servizi il 
più possibile atomici. 
Ogni modulo potrà far parte di uno o più 
processi aziendali e potrà essere 
riutilizzabile.
Gli analisti funzionali attraverso un processo di 
decomposizione individueranno le funzioni atomiche da 
sviluppare.
Come debbono essere disegnate le funzioni 
elementari per essere riutilizzabili ? 
 Cose giuste 
- Definire con precisione 
cosa fa la funzione 
(scopo) . 
- Definire con precisione i 
parametri di ingresso della 
funzione (non basta 
indicare il data-type, ma 
indicare il significato 
semantico dei dati in 
ingresso 
- Definire con precisione 
l'output 
 Cose sbagliate 
- Non definire con 
precisione cosa fa la 
funzione (scopi molteplici 
in base ad esempio alla 
presenza o meno di certi 
parametri) 
- Parametri di ingresso 
molteplici ed opzionali (non 
è definito chiaramente il 
significato semantico dei 
dati) 
- Output non definito
Il design by contract
 L'idea centrale di Design by Contract è una metafora 
su come elementi di un sistema software debbano 
collaborare tra loro, sulla base di reciproci obblighi e 
reciproci benefici. 
 La metafora viene dalla vita , in cui un "cliente" e un 
"fornitore" si accordano con un "contratto" che 
stabilisce : 
- Il fornitore deve fornire un certo prodotto 
(obbligo) e ha il diritto di aspettarsi che il 
cliente abbia pagato il prezzo (beneficio). 
- Il cliente deve pagare il prezzo(obbligo) per 
avere diritto ad ottenere il prodotto
 I moduli software hanno tra di loro una 
relazione cliente – fornitore . 
 Questa relazione può essere formalizzata 
come un contratto tra cliente e fornitore . 
 Formalizzare e far rispettare i contratti 
rafforza l'affidabilità del software .
Benefici del Contract by design 
 Fiducia 
- Precondizioni permettono al modulo di fidarsi dei 
dati ricevuti in input 
- Postcondizioni permettono al cliente di fidarsi dei 
dati ricevuti in output 
 Correttezza 
- I contratti espliciti richiedono attenta riflessione 
 Dati attendibili + algoritmi corretti = codice affidabile 
 Sicurezza 
- Il preservare ciò che deve rimanere invariato 
minimizza il rischio di regressioni
Come funziona il Contract by design ? 
Immagine da Design by contract" di Fabuio da Wikipedia -
Gli elementi del Contratto 
Il contratto per ogni metodo conterrà 
normalmente le seguenti informazioni: 
 Input accettabili e inaccettabili 
 Valori resi, e il loro significato 
 Condizioni erronee o eccezionali che possono 
avvenire 
 Effetti collaterali 
 Precondizioni 
Postcondizioni
Gli elementi del Contratto 
 Precondizioni 
- Tutto ciò che deve essere vero quando il modulo viene chiamato 
- Obblighi del chiamante e benefici attesi dal modulo 
 Post-Condizioni 
- Ciò che deve essere vero dopo l'esecuzione del modulo 
- Obblighi del modulo e risultati attesi dal chiamante 
 Condizioni erronee od eccezionali 
- Definizione scenari alternativi dovuti ad errori
Gli elementi del Contratto 
 Input accettabili ed inaccettabili 
- Vincoli che devono rispettare le procedure chiamanti 
 Valori resi 
- Ciò che deve essere restituito alla procedura chiamante 
 Garanzie di prestazioni 
- Tempi di esecuzione e spazio occupato (ad esempio dimensione 
massima output e tempi di risposta )
Un 
esempio 
di 
modulo
Il processo di definizione del 
contratto 
Creazione dello schema SIPOC 
- uno schema SIPOC (talvolta indicato come 
COPIS) è uno strumento che permette di 
sintetizzare gli input e gli output di uno o più 
processi aziendali (software) in forma tabellare 
Supplier Input Process Output Customer
Il processo di definizione del 
contratto 
Compilazione dei form che descrivono gli 
“use cases” (vedi esempio nella pagina 
successiva ) oppure seguire la traccia di “ 
use cases template” scaricabile dal sito 
http://www.technosolutions.com/Files/Use 
_Case_Template.doc.
Bibliografia 
 software by Design : Shaping Technology and The Workplace: 
 Technology Harold Salzman Director, Work and Organizations Program University of Louisville Center 
for Urban and Economic Research, Stephen R. Rosenthal Professor of Operations Management and 
Director of the Manufacturing Roundtable Boston University School of Management - 1993 - Anteprima 
 Design by Contract, by Example 
 Richard Mitchell, Jim McKim - 2002 - 
 Using Aspect-Oriented Programming for Trustworthy Software ... 
 Vladimir O. Safonov - 2008 - 
 Studies of Software Design: ICSE'93 Workshop, Baltimore, ... 
 David Alex Lamb - 1996 - 
 The Secret Path to Contract Programming Riches: An Expert ... 
 Michael Nigohosian - 2004 - Anteprima - Altre edizioni
Bibliografia 
 Software by Design : Shaping Technology and 
The Workplace: 
 Technology Harold Salzman Director, Work and 
Organizations Program University of Louisville 
Center for Urban and Economic Research, 
Stephen R. Rosenthal Professor of Operations 
Management and Director of the Manufacturing 
Roundtable Boston University School of 
Management - 1993 - Anteprima 
 Design by Contract, by Example 
Richard Mitchell, Jim McKim - 2002 -

More Related Content

Similar to Contract by programming

Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...Emerasoft, solutions to collaborate
 
Hermes System & Service Design
Hermes System  & Service Design Hermes System  & Service Design
Hermes System & Service Design Marco Calamoneri
 
Software development nel mondo industriale
Software development nel mondo industrialeSoftware development nel mondo industriale
Software development nel mondo industrialeguesta554cd
 
Previsione della domanda e gestione scorte aggiornata gennaio 2015
Previsione della domanda e gestione scorte aggiornata gennaio 2015Previsione della domanda e gestione scorte aggiornata gennaio 2015
Previsione della domanda e gestione scorte aggiornata gennaio 2015logisticaefficiente
 
PMexpo 2022 | La valutazione di congruità dei progetti ICT del PNRR
PMexpo 2022 | La valutazione di congruità dei progetti ICT del PNRRPMexpo 2022 | La valutazione di congruità dei progetti ICT del PNRR
PMexpo 2022 | La valutazione di congruità dei progetti ICT del PNRRPMexpo
 
Market e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni AndroidMarket e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni AndroidAndrea Pola
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)Sabino Labarile
 
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]Marco Brambilla
 
SoftInstigate - Modelli di ingaggio nello sviluppo software
SoftInstigate - Modelli di ingaggio nello sviluppo softwareSoftInstigate - Modelli di ingaggio nello sviluppo software
SoftInstigate - Modelli di ingaggio nello sviluppo softwareSoftInstigate
 
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...Emanuele Della Valle
 
Benefici e ritorno di investimento dell' experience design
Benefici e ritorno di investimento dell' experience designBenefici e ritorno di investimento dell' experience design
Benefici e ritorno di investimento dell' experience designLuca Mascaro
 
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
02_AICQ_QOL_N.1-2009_ModelloSERVQUALercolonese
 
Smau milano 2010 stefano butti
Smau milano 2010 stefano buttiSmau milano 2010 stefano butti
Smau milano 2010 stefano buttiSMAU
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveEmanuele Della Valle
 
AUGMENTED REALITY EXPERT
AUGMENTED REALITY EXPERTAUGMENTED REALITY EXPERT
AUGMENTED REALITY EXPERTMirko Compagno
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2Bkino2k
 
Project Management Corso Base Saggio
Project Management Corso Base SaggioProject Management Corso Base Saggio
Project Management Corso Base SaggioFR Projects
 
Hermes - System & Service design
Hermes - System & Service designHermes - System & Service design
Hermes - System & Service designPontiradio PR
 
DotNetCampania 4U Salerno - Architettura di Applicazioni Enterprise
DotNetCampania 4U Salerno - Architettura di Applicazioni EnterpriseDotNetCampania 4U Salerno - Architettura di Applicazioni Enterprise
DotNetCampania 4U Salerno - Architettura di Applicazioni EnterpriseMichele Aponte
 

Similar to Contract by programming (20)

Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
Emerasoft Day 2012 - TRS "Uso del metodo Cosmic e di Polarion per la gestione...
 
Hermes System & Service Design
Hermes System  & Service Design Hermes System  & Service Design
Hermes System & Service Design
 
Software development nel mondo industriale
Software development nel mondo industrialeSoftware development nel mondo industriale
Software development nel mondo industriale
 
Previsione della domanda e gestione scorte aggiornata gennaio 2015
Previsione della domanda e gestione scorte aggiornata gennaio 2015Previsione della domanda e gestione scorte aggiornata gennaio 2015
Previsione della domanda e gestione scorte aggiornata gennaio 2015
 
PMexpo 2022 | La valutazione di congruità dei progetti ICT del PNRR
PMexpo 2022 | La valutazione di congruità dei progetti ICT del PNRRPMexpo 2022 | La valutazione di congruità dei progetti ICT del PNRR
PMexpo 2022 | La valutazione di congruità dei progetti ICT del PNRR
 
Market e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni AndroidMarket e Tools: Utility per la personalizzazione di applicazioni Android
Market e Tools: Utility per la personalizzazione di applicazioni Android
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)
 
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
 
SoftInstigate - Modelli di ingaggio nello sviluppo software
SoftInstigate - Modelli di ingaggio nello sviluppo softwareSoftInstigate - Modelli di ingaggio nello sviluppo software
SoftInstigate - Modelli di ingaggio nello sviluppo software
 
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
 
Benefici e ritorno di investimento dell' experience design
Benefici e ritorno di investimento dell' experience designBenefici e ritorno di investimento dell' experience design
Benefici e ritorno di investimento dell' experience design
 
Sydav PDF 3D
Sydav PDF 3DSydav PDF 3D
Sydav PDF 3D
 
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
02_AICQ_QOL_N.1-2009_ModelloSERVQUAL
 
Smau milano 2010 stefano butti
Smau milano 2010 stefano buttiSmau milano 2010 stefano butti
Smau milano 2010 stefano butti
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettive
 
AUGMENTED REALITY EXPERT
AUGMENTED REALITY EXPERTAUGMENTED REALITY EXPERT
AUGMENTED REALITY EXPERT
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
 
Project Management Corso Base Saggio
Project Management Corso Base SaggioProject Management Corso Base Saggio
Project Management Corso Base Saggio
 
Hermes - System & Service design
Hermes - System & Service designHermes - System & Service design
Hermes - System & Service design
 
DotNetCampania 4U Salerno - Architettura di Applicazioni Enterprise
DotNetCampania 4U Salerno - Architettura di Applicazioni EnterpriseDotNetCampania 4U Salerno - Architettura di Applicazioni Enterprise
DotNetCampania 4U Salerno - Architettura di Applicazioni Enterprise
 

Contract by programming

  • 1. Sviluppare software robusto e performante e... dormire sonni tranquilli
  • 2. Nel tempo si sono affermati diversi modelli di sviluppo software: Il modello procedurale
  • 3. Il modello procedurale I programmi utilizzano sottoprogrammi (sub-rutine e funzioni) . La sequenza delle chiamate alle sub-rutine può essere modificata solo modificando il programma principale.
  • 4. Il modello “service oriented” (soa)
  • 5. Il modello “service oriented” (soa) I programmi forniscono il servizio elementare richiesto dal processo. L'ordine di chiamata dei servizi può essere modificato senza toccare il singolo servizio (basta modificare il processo )
  • 6.  I nostri clienti ci chiedono di orientare lo sviluppo degli applicativi verso una “Services Oriented Architecture”. Questo implica che noi dobbiamo iniziare a concepire lo sviluppo del software in termini di moduli a se stanti che forniscono servizi il più possibile atomici. Ogni modulo potrà far parte di uno o più processi aziendali e potrà essere riutilizzabile.
  • 7. Gli analisti funzionali attraverso un processo di decomposizione individueranno le funzioni atomiche da sviluppare.
  • 8. Come debbono essere disegnate le funzioni elementari per essere riutilizzabili ?  Cose giuste - Definire con precisione cosa fa la funzione (scopo) . - Definire con precisione i parametri di ingresso della funzione (non basta indicare il data-type, ma indicare il significato semantico dei dati in ingresso - Definire con precisione l'output  Cose sbagliate - Non definire con precisione cosa fa la funzione (scopi molteplici in base ad esempio alla presenza o meno di certi parametri) - Parametri di ingresso molteplici ed opzionali (non è definito chiaramente il significato semantico dei dati) - Output non definito
  • 9. Il design by contract
  • 10.  L'idea centrale di Design by Contract è una metafora su come elementi di un sistema software debbano collaborare tra loro, sulla base di reciproci obblighi e reciproci benefici.  La metafora viene dalla vita , in cui un "cliente" e un "fornitore" si accordano con un "contratto" che stabilisce : - Il fornitore deve fornire un certo prodotto (obbligo) e ha il diritto di aspettarsi che il cliente abbia pagato il prezzo (beneficio). - Il cliente deve pagare il prezzo(obbligo) per avere diritto ad ottenere il prodotto
  • 11.  I moduli software hanno tra di loro una relazione cliente – fornitore .  Questa relazione può essere formalizzata come un contratto tra cliente e fornitore .  Formalizzare e far rispettare i contratti rafforza l'affidabilità del software .
  • 12. Benefici del Contract by design  Fiducia - Precondizioni permettono al modulo di fidarsi dei dati ricevuti in input - Postcondizioni permettono al cliente di fidarsi dei dati ricevuti in output  Correttezza - I contratti espliciti richiedono attenta riflessione  Dati attendibili + algoritmi corretti = codice affidabile  Sicurezza - Il preservare ciò che deve rimanere invariato minimizza il rischio di regressioni
  • 13. Come funziona il Contract by design ? Immagine da Design by contract" di Fabuio da Wikipedia -
  • 14. Gli elementi del Contratto Il contratto per ogni metodo conterrà normalmente le seguenti informazioni:  Input accettabili e inaccettabili  Valori resi, e il loro significato  Condizioni erronee o eccezionali che possono avvenire  Effetti collaterali  Precondizioni Postcondizioni
  • 15. Gli elementi del Contratto  Precondizioni - Tutto ciò che deve essere vero quando il modulo viene chiamato - Obblighi del chiamante e benefici attesi dal modulo  Post-Condizioni - Ciò che deve essere vero dopo l'esecuzione del modulo - Obblighi del modulo e risultati attesi dal chiamante  Condizioni erronee od eccezionali - Definizione scenari alternativi dovuti ad errori
  • 16. Gli elementi del Contratto  Input accettabili ed inaccettabili - Vincoli che devono rispettare le procedure chiamanti  Valori resi - Ciò che deve essere restituito alla procedura chiamante  Garanzie di prestazioni - Tempi di esecuzione e spazio occupato (ad esempio dimensione massima output e tempi di risposta )
  • 17. Un esempio di modulo
  • 18. Il processo di definizione del contratto Creazione dello schema SIPOC - uno schema SIPOC (talvolta indicato come COPIS) è uno strumento che permette di sintetizzare gli input e gli output di uno o più processi aziendali (software) in forma tabellare Supplier Input Process Output Customer
  • 19. Il processo di definizione del contratto Compilazione dei form che descrivono gli “use cases” (vedi esempio nella pagina successiva ) oppure seguire la traccia di “ use cases template” scaricabile dal sito http://www.technosolutions.com/Files/Use _Case_Template.doc.
  • 20.
  • 21. Bibliografia  software by Design : Shaping Technology and The Workplace:  Technology Harold Salzman Director, Work and Organizations Program University of Louisville Center for Urban and Economic Research, Stephen R. Rosenthal Professor of Operations Management and Director of the Manufacturing Roundtable Boston University School of Management - 1993 - Anteprima  Design by Contract, by Example  Richard Mitchell, Jim McKim - 2002 -  Using Aspect-Oriented Programming for Trustworthy Software ...  Vladimir O. Safonov - 2008 -  Studies of Software Design: ICSE'93 Workshop, Baltimore, ...  David Alex Lamb - 1996 -  The Secret Path to Contract Programming Riches: An Expert ...  Michael Nigohosian - 2004 - Anteprima - Altre edizioni
  • 22. Bibliografia  Software by Design : Shaping Technology and The Workplace:  Technology Harold Salzman Director, Work and Organizations Program University of Louisville Center for Urban and Economic Research, Stephen R. Rosenthal Professor of Operations Management and Director of the Manufacturing Roundtable Boston University School of Management - 1993 - Anteprima  Design by Contract, by Example Richard Mitchell, Jim McKim - 2002 -