Introduction
4.1 Introduction to the Strategy
The following table contrasts the quality goals of DokChess (→ Section 1.2) with matching architecture approaches and thus provides easy access to the solution.
Quality Goal |
Matching approaches in the solution |
Accessible example (Analysability) |
- architectural overview structured by arc42
- explicit, object-oriented domain model
- detailed documentation of public interfaces with Javadoc
|
Platform appealing to experiments (Changeability) |
- widely spread programming language Java → (a)
- Interfaces for core abstractions (for instance: position evaluation, game rules)
- immutable objects (position, move, … ) make implementation of many algorithms easier
- “plugging” of elements with dependency injection leads to interchangeability → (b)
- High test coverage as a safety net
|
Using existing frontends (Interoperability) |
- Use of the common communication protocol XBoard, → (c)
- Use of portable Java → (a)
|
Acceptable playing strength (Attractiveness) |
- Integration of chess opening book libraries → (d)
- implementation of minimax algorithm and a proper position evaluation → (e)
- Integration tests with chess problems for tactics and mate positions
|
Quick response to opponent’s moves (Efficiency) |
- Reactive extensions for concurrent calculation with newly found better moves as events → (f)
- Optimization of minimax by alpha-beta pruning → (e)
- Efficient domain model implementation
- Integration tests with time limits
|
Small letters in brackets, e.g. → (x), link individual approaches from the right hand of the table to the following architectural overview diagram.
The remaining section 4 introduces significant architectural aspects and refers to further information.
Fig.: DokChess Architectural Overview Diagram