Donnerstag, 3. März 2011

Ziel des Blogs

Ein großes Problem in der kommerziellen Softwareentwicklung ist es, genau das zu entwickeln, was der Auftraggeber verlangt. Dieses Problem besteht, da der Auftraggeber und der Entwickler unterschiedliche Sprachen sprechen. Der Auftraggeber beschreibt das Problem, welches von der Software gelöst werden soll, in seiner Fachsprache. Der Entwickler entwickelt die Software anschließend in einer technischen Sprache wie z.B. Java. Dadurch entsteht Interpretationsspielraum was dazu führen kann, dass der Entwickler an den Anforderungen des Auftraggebers vorbei entwickelt.

Um dieses Problem zu lösen soll ein System entwickelt werden, welches es ermöglicht Akzeptanztests für die Software in der Fachsprache der Domain zu entwickeln. Als Grundlage dafür soll eine Domain-specific language (DSL) dienen. Mithilfe von sprachlichen Mitteln dieser DSL soll es möglich sein, Fachbegriffe der Domäne zu definieren. Diese Definitionen sollen die Brücke zwischen der technischen und fachlichen Welt schlagen. Dadurch soll die Definition der eigentlichen Akzeptanztests mit möglichst wenig technischen Boilerpalte Code auskommen und so möglichst verständlich sein. Der Auftraggeber soll in die Lage versetzt werden, anhand der Akzeptanztests zu erkennen, ob die Software das macht was sie soll. Es soll möglich sein, dass der Auftraggeber sogar selbst Akzeptanztests schreiben kann. Der Entwickler bekommt eine detaillierte Definition der Fachbegriffe. Somit schrumpft der Interpretationsspielraum.
Um das Problemgebiet einzugrenzen, soll dieses System zunächst zur Erstellung von Akzeptanztests für datenbankbasierte Anwendungen entwickelt werden.

Einen ähnlichen Ansatz hat bereits Sebastian Teichgräber gewählt. Seine Arbeit ist ebenfalls in einem Blog dokumentiert. Er verwendete dazu eine externe DSL auf Basis der Eclipse Modeling Foundation. Die Anpassung der DSL an eine spezielle Domain erwies sich bei diesem Ansatz als relativ komplex, da dies zur Compilezeit erfolgen muss und nicht zur Laufzeit erfolgen kann. Um dieses Problem zu umgehen werde ich eine interne DSL auf Basis von Groovy oder Clojure verwendet.
Dieser Blog soll den Verlauf meiner Arbeiten an diesem System dokumentieren.

Keine Kommentare:

Kommentar veröffentlichen