Chapter 17. Development

17.1. Methodology Overview

The diagram below explains the overall structure of the OptaPlanner source code:
The development philosophy includes:
  • Reuse: The examples are reused as integration tests, stress tests and demo's. The documentation images are reused as slides.
  • Consistent terminology: Each example has a class App (executable class), Dao (Data Access Object) and Panel (swing UI).
  • Consistent structure: Each example has the same packages: domain, persistence, app, solver and swingui.
  • Real world usefulness: Every feature is used in an example. Most examples are real world use cases with real world constraints, often with real world data.
  • Automated testing: There are unit tests, integration tests and stress tests. The test coverage is high.
  • Fail fast with an understandable error message: Invalid states are checked as early as possible.