Home arrow Blog arrow Design by Contract    Search  

 

Design by Contract Print
Was ist eigentlich DBC?

Zitat Wiki:

Design By Contract (englisch Entwurf gemäß Vertrag) oder kurz DBC ist ein Konzept aus dem Bereich der Softwareentwicklung. Ziel ist das reibungslose Zusammenspiel einzelner Programmmodule durch die Definition formaler "Verträge" zur Verwendung von Schnittstellen, die über deren statische Definition hinausgehen. Entwickelt und eingeführt wurde es von Bertrand Meyer mit der Entwicklung der Programmiersprache Eiffel.

Link: Wiki Design by Contract

Es gibt für viele Programmiersprachen implementierung über Präcompiler-Ansätze oder über Annotations um DBC zur Verfügung zustellen.

Da ich natürlich ein Java Fan bin habe ich mal das Tool Oval getestet. Dieses setzt auf AcpectJ und Annotations und macht einen sehr guten Eindruck. Wenn Ihr also in eurem Java Projekt DBC nutzen möchtet kann ich euch Oval empfehelen. Was auch sehr cool ist an Oval das die Vor- und Nach- bedingungen mit Groovy oder JavaScript formuliert werden können.

Durch das AJDT Plug-in kann AcpectJ ganz cool in Eclipse genutzt werden und somit auch Oval recht einfach in Eclipse genutzt werden.

Es gibt noch eine Menge an andern DBC Tool z.B. JML ... Wenn Ihr Lust habt könnt ihr die ja mal testen über Feedback freue ich mich natürlich

Hier der Link zur Oval Page: http://oval.sourceforge.net/

Hier der Link zu AscpectJ: http://www.eclipse.org/aspectj/

Hier ein Link zu AJDT: http://www.eclipse.org/ajdt/

Hier noch etwas Code mit DBC:


@net.sf.oval.guard.Guarded
public class MeineKlasse {

private int balance = 1000;

private String name;

private List liste = new ArrayList();

@Post(expr = "_this.balance>_old", old = "_this.balance", lang = "groovy")
public void debit(int amount) {
this.balance += amount;
}

@Pre (expr="!(_this.liste.contains(item))", lang="groovy")
@Post(expr="_this.liste.contains(item)", lang="groovy")
public void addItem(String item){
liste.add(item);
}

public void setName(@NotNull String name) {
this.name = name;
}

}
 

 


Pro-Pix Menu
Home
Blog
Tutorials
Links