Как лучше реализовать задание порядка выполнения методов?
В Module* добавить публичный метод возвращающий правила. В process для каждого загруженного модуля вызывать такой метод, после чего формировать последовательность запуска. По сути, хотя Boss и не знает эти правила, в ходе вызова process он их по сути узнает. В итоге Boss таки знает последовательность, просто опосредованно.
Думаю, что нужно задавать приоритет методов внутри класса и приоритет классов внутри наследника, дальше перед циклическим выполнением - сортировать по этому приоритету.