Präsentation: DokChess Beispiel für einen Architekturüberblick Stefan Zörner :: Stefan.Zoerner@de :: stefan@swadok.de Webseite DokChess: http://www.dokchess.de Softwarearchitekturen dokumentieren und kommunizieren: http://www.swadok.de 1
1 DokChess Ziele und Features DokChess ist eine voll funktionsfähige Schachengine Sie dient als einfach zugängliches und zugleich ungemein attraktives Fallbeispiel für Architekturentwurf, -bewertung und -dokumentation. Der verständliche Aufbau lädt zum Experimentieren und zum Erweitern der Engine ein Ziel ist nicht die höchstmögliche Spielstärke dennoch gelingen Partien, die Gelegenheitsspielern Freude bereiten. Wesentliche Features Vollständige Implementierung der FIDE-Schachregeln Unterstützt das Spiel gegen menschliche Gegner und andere Schachengines Beherrschung zentraler taktischer Ideen, beispielsweise Gabel und Spieß Integration mit modernen graphischen Schach-Frontends 2
Wichtige Einflussfaktoren 2 3
Bausteine zusammenstecken per DI Die einzelnen von Dokchess Bausteine sind durch Schnittstellen voneinander entkoppelt und werden per Dependency Injection (DI) zusammengesteckt. Dies erlaubt den leichten Austausch von Algorithmen. Unveränderliche Fachklassen Die einzelnen Subsysteme tauschen schachspezifische Daten über Fachklassen aus, die sämtlich unveränderlich (immutable) sind. Das gilt insbesondere für eine Spielsituation ( Stellung ). Stellung Figur Zug Feld «enumeration» Farbe «enumeration» FigurenArt 4
Kommunikation nach außen über XBoard Die Entscheidung für das textbasierte XBoard-Protokoll eröffnet die Verwendung leistungsfähiger, freier Schachfrontends auf unterschiedlichen Plattformen. stdin Frontend stdout Engine Chess Engine Communication Protocol ( Xboard/WinBoard ) http://home.hccnet.nl/h.g.muller/engine-intf.html 3 5
Fachlicher Kontext Gegner Schach wird zwischen zwei Gegnern gespielt, die abwechselnd ihre Figuren ziehen. Menschlicher Gegner DokChess übernimmt die Rolle eines der Gegner und tritt gegen einen menschlichen Gegner an. Dazu müssen sich die beiden austauschen, beispielsweise über ihre Züge oder über Remis-Angebote. Computergegner (Fremdsystem) Alternativ zu einem menschlichen Gegner kann DokChess auch gegen eine andere Engine antreten. Die Anforderungen bezüglich des Informationsaustausches sind dieselben. Eröffnungen (Fremdsystem) Zur Eröffnung, d.h. zur frühen Phase des Spiels, existiert umfangreiches Wissen in der Schachliteratur. Dieses Wissen ist in Form von Bibliotheken und Datenbanken zum Teil frei, zum Teil kommerziell verfügbar. Endspiele (Fremdsystem) Wenn nur noch sehr wenige Figuren auf dem Brett stehen (z.b. nur die beiden Könige und eine Dame), kann analog zu Eröffnungsbibliotheken auf Endspielbibliotheken zurückgegriffen werden. Diese beinhalten für jede mögliche Stellung mit dieser Figurenkonstellation die Aussage, ob das Spiel gewonnen, unentschieden oder verloren ist, sowie ggf. den nötigen nächsten Schritt zum Sieg. 6
4 DokChess, Bausteinsicht, Ebene 1 Copyright 2011 :: Stefan Zörner :: oose GmbH 7
Überblick Subsysteme XBoard-Protokoll Realisiert die Kommunikation mit einem Client mit Hilfe des XBoard-Protokolls. Spielregeln Beinhaltet die Schachregeln und kann z.b. zu einer Stellung alle gültigen Züge ermitteln. Engine Beinhaltet die Ermittlung des nächsten Zuges ausgehend von einer Spielsituation. Eröffnung Stellt Züge aus der Eröffnungsliteratur zu einer Spielsituation bereit. Bausteinsicht, Ebene 2 (Subsystem Engine ) 8
Verteilungssicht (auf Windows PC, mit Arena) 5 9
Walk through: Gegner zieht, Engine zieht Live-Demo: DokChess integriert in Arena 10
6 Fallbeispiel DokChess im Internet Architekturüberblick gegliedert nach arc42 Quelltexte, Links, etc. http://www.dokchess.de/ 11
Das Buch zum Film. Softwarearchitekturen dokumentieren und kommunzieren. Entwürfe, Entscheidungen und Lösungen nachvollziehbar und wirkungsvoll festhalten von Stefan Zörner Verlag: Hanser, Mai 2012 Sprache: Deutsch (ca. 280 Seiten) ISBN-13: 978-3446429246 Geleitwort von Gernot Starke Erfahren Sie, wie die Dokumentation der Architektur von der lästigen Pflicht zu einem integralen Kommunikations- und Arbeitsmittel wird. Lernen Sie architekturrelevante Einflussfaktoren und zentrale Entscheidungen festzuhalten. Erleben Sie am Beispiel einer Schach-Engine, wie eine nachvollziehbare Architektur entsteht. Vielen Dank!?? Ich freue mich auf Ihre Fragen! stefan@swadok.de 12