Vertragsmuster sigeko

Es schreibt vor, dass Software-Designer formale, präzise und überprüfbare Schnittstellenspezifikationen für Softwarekomponenten definieren sollten, die die normale Definition abstrakter Datentypen um Vorbedingungen, Nachbedingungen und Invarianten erweitern. Diese Spezifikationen werden als „Verträge” bezeichnet, in Übereinstimmung mit einer konzeptionellen Metapher mit den Bedingungen und Pflichten von Geschäftsverträgen. Viele Programmiersprachen haben Möglichkeiten, solche Behauptungen zu machen. DbC hält diese Verträge jedoch für so wichtig für die Softwarekorrektheit, dass sie Teil des Entwurfsprozesses sein sollten. Tatsächlich plädiert DbC dafür, die Behauptungen zuerst zu schreiben. [Zitat erforderlich] Verträge können durch Codekommentare geschrieben werden, die von einer Testsammlung erzwungen werden, oder beides, auch wenn es keine spezielle Sprachunterstützung für Verträge gibt. Design by Contract hat seine Wurzeln in der Arbeit an formaler Verifizierung, formaler Spezifikation und Hoare-Logik. Die ursprünglichen Beiträge umfassen: Design by Contract definiert auch Kriterien für die Korrektheit eines Softwaremoduls: Der Begriff des Vertrags erstreckt sich bis auf die Verfahrensebene; Der Vertrag für jede Methode enthält in der Regel die folgenden Informationen:[Zitat erforderlich] In vielen Programmiersprachen werden Verträge mit Assert umgesetzt. Asserts werden standardmäßig im Release-Modus in C/C++ kompiliert und in C-[8] und Java ähnlich deaktiviert. Design by Contract kann auch die Wiederverwendung von Code erleichtern, da der Vertrag für jedes Codestück vollständig dokumentiert ist.

Die Verträge für ein Modul können als eine Form der Softwaredokumentation für das Verhalten dieses Moduls betrachtet werden. Design by Contract ersetzt keine regulären Teststrategien wie Komponententests, Integrationstests und Systemtests. Vielmehr ergänzt es externe Tests durch interne Selbsttests, die sowohl für isolierte Tests als auch im Produktionscode während einer Testphase aktiviert werden können. Ein Lieferantendatenpuffer kann z. B. 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.

Ten wpis został opublikowany w Bez kategorii . Zakładka permalink .