Zėŋōfōbìå

20 gennaio 2009

Contract Checking

Filed under: C#, DbC, informatica — Tag:, — Zeno @ 18:03

Guardando il webcast di PDC2008 relativo al Contract Checking and Automated Test Generatione with Pex mi sono chiariti una serie di aspetti relativi al DbC. Intanto pare proprio che la libreria Code Contract Library di cui parlavo nell’articolo Design By Contract verrà inclusa nella versione 4 di .NET 4.0 come core component. Poi viene spiegato che una ragione per usare questa tecnica è che fornendo maggiori informazioni sulla “semantica” del programma (vedi gli axioms del C++0x) si può aiutare il compilatore a fare scelte performanti, ma anche  generare in automatico dei test case. In particolare viene proposto Pex.

L’uso dei Contract serve quindi per:

  • run time checking
  • static checking
  • documentation generation

Il webcast specifica bene il significato di alcuni “contract”:

Requires

  • Ciò che deve essere vero all’entrata di un metodo

Ensures:

  • Ciò che deve essere vero all’uscita del metodo
  • Può specificare un comportamento quando viene lanciata un’eccezione

Invariants:

  • Ciò che deve essere vero per tutti i metodi della classe (inclusi i tipi derivati)

Interessante il fatto che impostando un contratto su un metodo virtuale della classe, anche gli override lo ereditano.

Come per gli Assert del C, la release non viene appesantita dai contracts.

Annunci

1 commento »

  1. Probabilmente i contract sono praticamente delle classi ereditate ma senza emissione di codice in fase “release”. Probabilmente usano l’approccio del “se a tempo di compilazione e di debug garantisci il rispetto di una regola, poi è inutile scriverla e ricontrollarla nei binari” :D

    Commento di jp — 22 gennaio 2009 @ 10:21


RSS feed for comments on this post. TrackBack URI

Rispondi

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com.

%d blogger hanno fatto clic su Mi Piace per questo: