Сразу скажем что принято выделять следующие типы движков:
Основное:
Остальные пример см. по ссылкам ниже.
Предположим, что вы изучаете существующий и/или пишите свой фреймворк/CMS, рассмотрим ниже те составные части/свойства, которые должны быть (или которые вы должны знать, если речь о существующей системе):