Celem projektu było zastosowanie programowania ograniczeniowego do rozwiązywania problemów z zakresu harmonogramowania i optymalizacji. Przedstawiono po jednym zadaniu z każdej kategorii i utworzono aplikację, która je rozwiązuje.
W trakcie realizacji projektu korzystano ze środowiska programistycznego IntelliJ IDEA 14. Aplikacja napisana została w języku Java i wykorzystuje JDK w wersji 8u25. Jako wsparcie programowania ograniczeniowego posłużyła biblioteka JaCoP 4.1.0. W kilku miejscach użyto także biblioteki Google Guava, która oferuje szereg bardzo przydatnych funkcji.
Warstwa interfejsu użytkownika została zbudowana w oparciu o JavaFX. FX charakteryzuje się tym, że ułatwia projektowanie aplikacji w oparciu o wzorzec MVC (lub MVP), a także oferuje duże możliwości „dekorowania" GUI za pomocą stylów CSS. Jest to rozwiązanie nowsze niż popularny Swing.
Jako narzędzie do budowy projektu wykorzystano Gradle. Standardowa struktura aplikacji FX wygląda następująco:
• src/main/java/ - pakiety i pliki źródłowe .java,
• src/main/resources/fxml - pliki .fxml odpowiedzialne za GUI (generowane przez SceneBuilder),
• src/main /resoruces/images - grafiki,
• src/main /resources/styles - pliki CSS,
• build/ - różne pliki wynikowe generowane przez Gradle (m.in. Javadoc, .jar itp.).
Fragment drzewa projektu:
▼ Dsrc ▼ Emain
▼ O java
▼ El app
► E3 optimization
► El Schedule
9 o ControllerMain G o Main
▼ Cl resources
▼ El fxml
w mainWindow.fxml g? optimizationTab.fxml ra scheduleTab.fxml ► El images
▼ E styles
HS style.css
Oprócz zadań stricte programistycznych, dużą uwagą skupiono na organizacji pracy. W tym celu dogłębnie zapoznano się z rozproszonym systemem kontroli wersji Git. Więcej informacji w kolejnych rozdziałach.