Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Design by contract - Teknopedia
Design by contract - Teknopedia
Niente fonti!
Questa voce o sezione sull'argomento ingegneria del software non cita le fonti necessarie o quelle presenti sono insufficienti.

Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti.
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 tipi di dati astratti e sulla metafora di un contratto legale.

Descrizione

[modifica | modifica wikitesto]

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 rispetti 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.

Voci correlate

[modifica | modifica wikitesto]
  • Invariante (informatica)
  • Invariante di classe
  • Asserzione (informatica)
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Design_by_contract&oldid=93745213"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022