Design by contract: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: Aggiungo: eo:Perkontrakta programado |
|||
(22 versioni intermedie di 15 utenti non mostrate) | |||
Riga 1:
{{F|ingegneria del software|febbraio 2013}}
'''Design by contract''' or '''DBC''' (in italiano, ''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.▼
[[File:Design by contract.svg|miniatura|destra|Uno schema che rappresenta le informazioni delle specifiche funzionali o del contratto]]
▲'''Design by contract'''
==Descrizione==
L'idea centrale del DBC è che le entità software hanno degli obblighi nei confronti di altre entità in base a regole formalizzate fra di essi.
In generale, le routine hanno ''precondizioni'' esplicite che il chiamante deve soddisfare prima di chiamare la routine, e postcondizioni esplicite che descrivono le condizioni che la routine garantirà essere vere nel momento in cui la routine finisce.
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.
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 14 ⟶ 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
Usando la metodologia DBC, in caso di codice scritto a malo modo, il codice stesso del programma presumibilmente non verificherà le condizioni del contratto; la codifica in tal caso fallirà, avendo la verifica del contratto come rete di sicurezza.
== Voci correlate ==
{{Portale|informatica}}▼
*[[Invariante (informatica)]]
*[[Invariante di classe]]
*[[Asserzione (informatica)]]
▲{{Portale|informatica}}
[[Categoria:Metodologie di sviluppo]]▼
[[Categoria:Progettazione del software]]
|