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 tipi di dati astratti e sulla metafora di un contratto legale.

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. Una specifica funzionale, o 'contratto', viene creato per ogni modulo nel sistema prima che sia codificato. L'esecuzione del programma è quindi vista come l'interazione fra i vari moduli vincolati da questi contratti.

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. Così, un contratto assume la seguente forma generale: "Se tu, il chiamante, predisponi certe precondizioni, allora io stabilirò certi altri risultati quando ti avrò terminato. Se tu violi le precondizioni, allora non ti prometto niente." L'implementazione di ogni modulo può allora essere scritta assumendo la correttezza dei moduli che usa (i suoi subappaltatori), purché soddisfi le loro precondizioni.

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 rispetta 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:

  • Input accettabili e inaccettabili
  • Valori resi, e il loro significato
  • Condizioni erronee o eccezionali che possono avvenire
  • Effetti collaterali
  • Precondizioni
  • Postcondizioni
  • 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. (Questo si pone in netto contrasto con la metodologia della programmazione difensiva.) Questo facilita molto il debugging, perché il comportamento inteso di ogni routine viene specificato chiaramente.

Portale Informatica

Il Portale Informatica è un punto di raccolta per le voci riguardanti l'informatica, lo studio dei fondamenti teorici dell'informazione e della computazione e delle tecniche pratiche per la loro implementazione e applicazione nei sistemi informatici. L'informatica è frequentemente descritta come lo studio sistematico dei processi algoritmici che descrivono e trasformano l'informazione. È il punto di incontro di almeno due discipline autonome: il progetto, la realizzazione e lo sviluppo di macchine rappresentatrici ed elaboratrici di numeri e i metodi di risoluzione algoritmica di problemi dati.

Storia dell'informatica

L'informatica ha radici molto antiche, in quanto sistemi per automatizzare il trattamento dei dati e delle operazioni aritmetiche erano noti già ai Babilonesi intorno al X secolo a.C., in India e in Cina forse addirittura prima. L'informatica in senso moderno, però, nasce soprattutto dal lavoro di precursori quali Pascal e Gottfried Leibniz, iniziatori come Babbage, Ada Lovelace, Zuse, Atanasoff, ancora Alan Turing, Stibitz e Howard Aiken, creatori dei primi progetti computazionali di vasto respiro come de Finetti, von Neumann e Wiener.


Voci in vetrina

Il phase-locked loop, comunemente noto con il suo acronimo PLL, è un circuito elettrico ampiamente utilizzato nell'elettronica per le telecomunicazioni. Esso permette di creare un segnale la cui fase ha una relazione fissa con quella di un segnale di riferimento. Il PLL è inoltre un classico esempio di applicazione all'elettronica del controllo in retroazione. A causa dell'uso comune dell'acronimo, in letteratura non esiste una traduzione italiana univoca del termine: è difatti possibile trovare le forme "anello ad aggancio di fase", "circuito ad aggancio di fase" oppure "maglia ad aggancio di fase".

Tale tipo di circuito si usa per diversi scopi quali:


continua...
Voce della settimana
Vuoi proporre una voce per questa settimana? Inseriscila qui

Calendario voce della settimana

Citazioni

(da Informatica su Wikiquote)

  • L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi. (Edsger Wybe Dijkstra)
  • Errare è umano, ma per incasinare davvero tutto ci vuole un computer. (Legge di Murphy- Quinta legge dell'inattendibilità)
  • I computer sono inutili, possono dare solo risposte. (Pablo Picasso)
  • Il calcolatore è straordinariamente veloce, accurato e stupido. L'uomo è incredibilmente lento, impreciso e creativo. L'insieme dei due costituisce una forza incalcolabile. (Albert Einstein)
  • La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta. (Isaac Asimov)
  • Non ho paura dei computer, ma della loro eventuale mancanza. (Isaac Asimov)
  • Il testing non può mai rivelare l'assenza di bug. (Edsger Wybe Dijkstra)
  • Computer: cretino ad alta velocità in dotazione, spesso, a cretini molto lenti. (Stefano Benni)
  • Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli - almeno potenzialmente - tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala.ra invenzione dell'uomo - con l'eccezione forse delle armi da fuoco e della tequila. (Mitch Ratcliffe)
  • Mai fidarsi di un computer che non è possibile gettare dalla finestra. (Steve Wozniak)
  • Ogni buon lavoro software nasce da un problema personale di uno sviluppatore. (Eric Steven Raymond)
  • I bravi programmatori sanno cosa scrivere, i migliori sanno cosa riscrivere (e riusare). (Eric Steven Raymond)
  • È meglio usare programmi di alta qualità senza costi di licenza, che costosi programmi proprietari di scarso valore. (Walter Bender, direttore del Media Lab del MIT)
  • Il computer non è una macchina intelligente che aiuta le persone stupide, anzi è una macchina stupida che funziona solo nelle mani delle persone intelligenti. (Umberto Eco)
Portali correlati
  Portale Telematica: accedi alle voci di Wikipedia che parlano di reti, telecomunicazioni e protocolli di rete
  Portale Apple: accedi alle voci di Wikipedia che trattano di Apple
  Portale Microsoft: accedi alle voci di Wikipedia che trattano di Microsoft
  Portale Google: accedi alle voci di Wikipedia che trattano di Google
  Portale Internet: accedi alle voci di Wikipedia che trattano di Internet
  Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero
  Portale Videogiochi: accedi alle voci di Wikipedia che trattano di Videogiochi
  Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di Sicurezza informatica

Altri progetti

Personaggi legati all'informatica

William Henry Gates III, meglio noto come Bill Gates (Seattle, 28 ottobre 1955), è un imprenditore e informatico statunitense.

È il fondatore ed ex-presidente della Microsoft. È il quarto uomo più ricco del mondo secondo la rivista Forbes. Il suo ultimo patrimonio stimato (2021) è di 138 miliardi di dollari. È preceduto nella classifica da Elon Musk – 274,7 miliardi di dollari, Bernard Arnault – 198,9 miliardi di dollari, e Jeff Bezos – 194,5 miliardi di dollari, e seguito da Larry Page – 124,5 miliardi di dollari e Mark Zuckerberg – 123,1 miliardi di dollari.

Nacque in una famiglia di origini inglesi, tedesche, irlandesi e scozzesi: il padre William H. Gates II era procuratore mentre la madre Mary Maxwell svolgeva la professione d'insegnante all'Università dello Stato di Washington e presidente della United Way International. In un primo tempo, entrambi i genitori avrebbero voluto che il piccolo Bill intraprendesse studi giuridici.

Nel 1968, l'anno in cui si iscrisse alla prestigiosa scuola privata Lakeside, Gates e i suoi compagni ebbero accesso per la prima volta ad un computer, un DEC PDP-11 di proprietà della Computer Center Corporation, di cui la scuola gli aveva affittato un certo numero di ore di utilizzo con lo scopo di scoprire e correggere i bugs. Gates, Paul Allen ed altri studenti (poi assunti nella Microsoft), divennero inseparabili dal computer. Cominciarono ad avere problemi con la scuola, arrivando in ritardo o mai con i compiti svolti, a marinare le ore per essere nel locale del computer e di conseguenza consumarono tutte le ore a disposizione della scuola in poche settimane.


Categorie