Coś na rozruszanie szarych komórek - potrzebuję porad i sugestii co do architektury programu.
Otóż chciałbym napisać program, którego zadaniem byłoby testowanie różnych metod osobistej organizacji, takich jak GTD, tablica Eisenhowera, Must-Should-Want, Kanban, Action Method itd. oraz niektórych własnych. Wyobraźmy sobie, gdyby byłoby możliwe dowiedzenie się, jakie wyniki daje dany system organizacji osobistej w zestawieniu z innymi - przy codziennym, konsekwentnym stosowaniu np. przez 50 lat życia. W praktyce nie zbadamy tego w inny sposób, jak tylko dzięki symulacji komputerowej. Oczywiście symulacja taka musi być nieco ułomna, skoro oparta będzie na uproszczonym modelu rzeczywistości. Mimo to jednak jej wyniki powinny być dla nas interesujące i znamienne. I może uda się zaobserwować i wychwycić to, co w innym wypadku trzeba byłoby testować w rozległych badaniach statystycznych na dużej grupie osób. Badania takie musiałyby być prowadzone przez wiele lat, nie wspominając o ich kosztach.

Główne założenia programu są proste :

  1. Użytkownik programu podaje pewne dane wejściowe np. liczbę zadań, czas, który ma do zagospodarowania i pewnie kilkadziesiąt innych indywidualizujących go. Podaje także liczbę wirtualnych dni, które badanie ma obejmować.

  2. Następnie program generuje zadania w oparciu o liczby pseudolosowe i dane podane przez użytkownika. Jak to w życiu bywa, zadania mają złożoną charakterystykę : zajmują określoną ilość czasu, są ważne lub mniej ważne, bywają skomplikowane lub proste, są przydatne albo nieprzydatne, wymagają dużo lub niewiele energii. To też jest ważny punkt programu.

  3. Ostatecznie program wykonuje swoje iteracje, po czym wypluwa raport, zestawiając wyniki uzyskane przy stosowaniu różnych systemów organizacji. Wyrzuca liczbę przepracowanych godzin, wykonanych zadań, różne średnie, mediany, dane procentowe, może nawet jakieś wykresy - mniejsza o szczegóły.

Koniec.

Proszę o sugestie dotyczące sposobu zaprojektowania tego programu, jego architektury. Dopuszczam zastosowanie różnych paradygmatów programowania. Nie pytam o sprawy takie jak GUI czy narzędzia graficzne. Mam na myśli ,,jądro" programu, mechanizm dokonujący symulacji.
Sam mam też kilka pomysłów jak skonstruować ten program na gruncie Javy. W jednym z nich, zadania wyobrażam sobie jako obiekty z licznymi polami (np. czas potrzebny na wykonanie, priorytet, przydatność), natomiast systemy organizacji jako metody (statyczne), które zawierają plątaninę pętli i instrukcji warunkowych odzwierciedlającą reguły danego systemu.

Jestem także ciekaw uwag odnoszących się do samego meritum pomysłu.
Rezultaty mojej pracy udostępnię.

Dziękuję z góry za pomoc.