Vertragsmuster tragwerksplanung

Der Vertrag ist semantisch gleichbedeutend mit einem Hoare-Triple, das die Verpflichtungen formalisiert. Dies lässt sich anhand der “drei Fragen” zusammenfassen, die der Designer im Vertrag immer wieder beantworten muss: So kann ein Lieferantendatenpuffer erfordern, dass Daten im Puffer vorhanden sind, wenn ein Lösch-Feature aufgerufen wird. Anschließend garantiert der Lieferant dem Kunden, dass das Datenelement tatsächlich aus dem Puffer gelöscht wird, wenn ein Lösch-Feature seine Arbeit beendet. Andere Konstruktionsverträge sind Konzepte der Klasseninvariante. Die klasseninvariante garantiert (für die lokale Klasse), dass der Status der Klasse am Ende jeder Featureausführung innerhalb der angegebenen Toleranzen beibehalten wird. Verbraucherorientierte Verträge verringern nicht notwendigerweise die Kopplung zwischen Dienstleistungen. Lose gekoppelte Dienste sind relativ unabhängig voneinander, bleiben aber dennoch gekoppelt. Das Muster ist jedoch, einige dieser verbleibenden, “versteckten” Kupplungen auszugraben und zur Schau zu stellen, damit Anbieter und Verbraucher sie besser aushandeln und verwalten können. Wir können unsere Untersuchungen zu Vertrags- und Kopplungsproblemen beginnen, die unseren ProductSearch-Service verteufeln, indem wir uns mit dem Problem der Schemaversionierung befassen. Die WC3 Technical Architecture Group (TAG) hat eine Reihe von Versionsstrategien beschrieben, die uns helfen könnten, die Nachrichtenschemata unseres Dienstes so weiterzuentwickeln, dass unsere Kopplungsprobleme verringert werden. Diese Strategien reichen von der übermäßig liberalen, die vorschreibt, dass Dienste nicht zwischen verschiedenen Versionen eines Schemas unterscheiden dürfen und daher alle Änderungen tolerieren müssen, bis hin zum äußerst konservativen Urknall, der den Abbruch von Diensten erfordert, wenn sie eine unerwartete Version einer Nachricht erhalten.

Verträge können auf verschiedene Weise ausgedrückt und strukturiert werden. In ihrer einfachsten Form können Verbrauchererwartungen in einer Kalkulationstabelle oder einem ähnlichen Dokument erfasst und während der Entwurfs-, Entwicklungs- und Testphasen einer Anbieteranwendung implementiert werden. Indem wir ein wenig weiter gehen und Komponententests einführen, die jede Erwartung bestätigen, können wir sicherstellen, dass Verträge mit jedem Build in einer wiederholbaren, automatisierten Weise beschrieben und durchgesetzt werden. In komplexeren Implementierungen können Erwartungen als Schematron- oder WS-Policy-ähnliche Assertionen ausgedrückt werden, die zur Laufzeit in den Ein- und Ausgabepipelines eines Dienstendpunkts ausgewertet werden.

Posted on: August 13, 2020, by : greyson