Constraint-Solving zur Variantenkonfiguration von SAP

Immer komplexere Variantenkonfigurationen (VC) erfordern schnellere Algorithmen, um mit der Echtzeitfähigkeit von speicherbasierten Umgebungen wie SAP S4/HANA Schritt halten zu können. In einem Projekt für SAP nutzen wir moderne Constraint-Solving-Technologie in C++. Wir entwickeln wesentliche Teile der zugrundeliegenden Bibliothek, um den Anforderungen des SAP S4/HANA Variantenkonfigurators zu genügen und unterstützen SAP bei der Ausarbeitung von algorithmischen Lösungen und mit C++-Expertise.

Der in SAP S4/HANA integrierte Variantenkonfigurator ermöglicht das effiziente Variantenmanagement für die konfigurierten Produktlinien eines Unternehmens. Dabei werden die möglichen Produktvarianten anhand eines Konfigurationsmodells beschrieben und die für den jeweiligen Fall passende konkrete Produktausprägung ermittelt. Die Varianten werden über alle wesentlichen unternehmerischen Prozesse hinweg unterstützt.

Contraint-Solving im Backend

Um den gestiegenen Skalierbarkeits- und Performanzanforderungen gerecht zu werden, wird das VC-Backend auf eine neue C++ basierte Constraint-Solving-Technologie umgestellt. Diese ermöglicht das regelbasierte Einschränken von Variablenbelegungen. Für die Definition solcher Regeln wurden Schnittstellen entwickelt, um gültige Variablenbelegungen über Variantentabellen oder auch Boolsche Ausdrücke zu beschreiben. Des weiteren wurden Variablentypen für die Verarbeitung von Zeichenketten sowie hochgenauen Fließkommazahlen ergänzt.

 

Höchste Anforderungen an die Qualität

Der Variantenkonfigurator von SAP wird weltweit auch in kritischen produktiven Abläufen genutzt. Um die Skalierbarkeit und Robustheit der Lösungen sicherzustellen und die Qualität des Produktes zu wahren, legten wir insbesondere auf die gängigen Qualitätsstandards größten Wert.
Diese umfassen zum einen die Standards aus algorithmischer Sicht, wie 

  • die Optimierung von Speicherbedarf
  • Rechenaufwand und Laufzeit
  • Korrektheitsbeweise

als auch diese der Entwicklung

  • Test-getriebene Entwicklung
  • hundertprozentige Code-Überdeckung durch Tests
  • Sechs-Augen-Prinzip
  • kontinuierliche Multiplattform-Integration
  • randomisierte Tests.