Design by contract: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
 
(14 versioni intermedie di 10 utenti non mostrate)
Riga 1:
{{F|ingegneria del software|febbraio 2013}}
[[File:Design by contract.svg|miniatura|destra|Uno schema che rappresenta le informazioni delle specifiche funzionali o del contratto]]
'''Design by contract''' (in sigla: '''DBC''' ) o '''progettazione per contratto''' è una metodologia per progettare il [[software]]. Prescrive che i progettisti di software debbano definire specifiche precise e verificabili delle interfacce dei componenti software, basandosi sulla teoria dei [[tipo di dato astratto|tipi di dati astratti]] e sulla metafora di un [[contratto]] legale.
 
Riga 7 ⟶ 9:
 
Molti linguaggi forniscono la possibilità di fare asserzioni come queste.
Tuttavia, il DBC è innovativo nel riconoscere che questi contratti sono così cruciali per la correttezza del software da dover far parte del processo di progettazione. In effetti, se si vogliono usare le asserzioni come garanzia del fatto che l'implementazione svolta rispettarispetti tutte le specifiche funzionali descritte in fase di analisi, tali asserzioni dovrebbero essere scritte prima del codice.
 
Il concetto di contratto si estende verso il basso fino al livello dei metodi/routine; il contratto per ogni metodo conterrà normalmente le seguenti informazioni:
Riga 15 ⟶ 17:
* Condizioni erronee o eccezionali che possono avvenire
* Effetti collaterali
* [[Precondizione|Precondizioni]]
* [[Postcondizione|Postcondizioni]]
* [[Invariante (informatica)|Invarianti]]
* (Raramente) Garanzie di prestazioni, cioè sul tempo e lo spazio utilizzati
 
Riga 23 ⟶ 25:
 
== Voci correlate ==
*[[asserzioneInvariante (informatica)|asserzione]]
 
*[[Invariante (informatica)|invariantedi classe]]
*[[invarianteAsserzione di classe(informatica)]]
*[[asserzione (informatica)|asserzione]]
 
{{Portale|informatica}}
 
[[Categoria:MetodologieMetodi di sviluppo software]]
[[Categoria:Progettazione del software]]
 
[[da:Kontraktbaseret programmering]]
[[de:Design by contract]]
[[en:Design by contract]]
[[eo:Perkontrakta programado]]
[[es:Diseño por contrato]]
[[fi:Sopimuspohjainen ohjelmointi]]
[[fr:Programmation par contrat]]
[[ja:契約プログラミング]]
[[pl:Programowanie kontraktowe]]
[[pt:Programação por contrato]]
[[ru:Контрактное программирование]]
[[sk:Design by contract]]
[[zh:契约式设计]]