Skip to Main Content

Symfony

Symfony Logo
Symfony ist für Individualprogrammierung unser Werkzeug der Wahl. Es ermöglicht beinahe uneingeschränkte kundenspezifische Lösungen und wir haben damit gute Erfahrungen gemacht.

Case Study EVVA

Aufgabenstellung

Gesucht war die Konzeption und Umsetzung eines Online-Bestellsystems für Partner (B2B).

Da sich die Produkte von EVVA nicht als simple Produkte eines Produktkataloges abbilden lassen, sondern durch eine Vielzahl an Eigenschaften nach den Bedürfnissen des Kunden konfiguriert werden und es bestimmte Regeln und Ausnahmen je nach Art der Bestellung (Neubestellung, Nachbestellung, Partner aus Markt X, etc.) gibt, war hier eine individuelle Lösung gefragt.

Lösung

Nach der Erstanalyse wurde die Entscheidung gemeinsam mit dem Auftraggeber für Symfony als ausgereiftes Enterprise Framework für Web-Entwicklung schnell getroffen.

Die Entwicklung erfolgte nach dem "Domain Driven Design (DDD) Ansatz", dabei werden alle Anforderungen mittels „Event Storming“ erfasst. Beim „Event Storming“ werden geschäftsrelevante Ereignisse innerhalb der Fachdomäne des Kunden in gemeinsamen Brainstorming-Sessions erarbeitet und grafisch dokumentiert. Auf Basis dessen wird dann ermittelt, welche Schritte notwendig sind (welche Probleme die Software lösen muss), um die gewünschten Ereignisse zu erzeugen.

Als eines der wichtigsten Werkzeuge bei der Entwicklung haben sich „Behaviour driven development“ Tests herausgestellt. Das bedeutet, dass man ein Szenario, das die Software erfüllen soll, aus Kundensicht beschreibt (in deutscher Sprache, in Prosa) und diese Aufgabenstellung automatisiert gegen die entwickelte Software getestet wird. Diese Szenarien beschreiben Eingabedaten und das daraus resultierende gewünschte Ergebnis (entspricht sogenannten "End-to-End Tests").

Die Umsetzung von Domain Driven Design ist anspruchsvoll, aber für komplexere Software eine (oder „die“) Herangehensweise, um mit laufend veränderten Anforderungen zurechtzukommen, übersichtliche Software zu erhalten und jede Funktion mit einem Test abgedeckt ist.

Symfony hat hier mit seinen Möglichkeiten (Dependency Injection, etc.) sehr unterstützt und stand dem „Domain Model“ kaum im Wege.