Test Driven Development (TDD) ist ein Kernelement des agilen Software Engineerings. Erst eine hohe Testabdeckung ermöglicht ein sicheres und effizientes Refactoring und damit die Änderbarkeit des Software Systems, ohne Qualitätseinbußen bei sich verändernden Anforderungen in Kauf nehmen zu müssen.

Softwareverträge (Contracts) wiederum sind ein elementarer Bestandteil der Objektorientierten Programmierung (OOP), werden jedoch nur von wenigen Programmiersprachen tatsächlich unterstützt.

Was ist TDD with Contracts?

Wie funktioniert es?

Welche Vorteile bietet es gegenüber dem klassischen TDD?

Welche Nachteile müssen in Kauf genommen werden?

Und welche Erfahrungen konnten bislang mit TDD with Contracts gesammelt werden?

Dr. Lars Alvincz und Hagen Buchwald gehen in ihrem Vortrag mit eingebetteter Entwicklungs-Demonstration im Stile von TDD with Contracts diesen Fragen nach und zeigen auf, dass das systematische Nutzen von Softwareverträgen in der testgetriebenen Entwicklung einen Leitfaden darstellt, um systematisch und hocheffizient Softwaremodule hoher Qualität zu erstellen.

Agenda

  1. Was ist TDD?
  2. Was sind Contracts?
  3. Was ist TDD with Contracts?
  4. Demo: Wie funktioniert TDD with Contracts?
  5. Vor- und Nachteile gegenüber klassischem TDD
  6. Ein erster Erfahrungsbericht

Lars Alvincz andrena objects ag, Deutschland

Lars Alvincz hat im Bereich Compilerbau und Maschinelles Lernen promoviert. Seit 2010 ist er als agiler Softwareentwickler tätig. Neben seiner Entwicklungstätigkeit gehört auch Testautomatisierung zu seinen Kernthemen.

Hagen Buchwald andrena objects ag, Deutschland

Hagen Buchwald studierte an der Universität Karlsruhe und ist seit 1994 in der IT-Industrie tätig. Der Diplom-Wirtschaftsingenieur ist seit 2011 Vorstand der andrena objects ag, deren Kernkompetenz es ist, die Fähigkeit zur agilen Software-Entwicklung in Unternehmen einzuführen, deren Innovations- und damit Wettbewerbsfähigkeit auf softwarebasierten Innovationen beruht. Dieser Unternehmensentwicklungsansatz hat seinen Ausgangspunkt in der Übertragung der Stärken des deutschen Ingenieursdenkens auf das Software Engineering, um eine ausgewogene Balance von Kundennutzen, Produktivität und Qualität auf Unternehmensebene zu ermöglichen.