недавно тоже задавался этим вопросом и искал инфу в гугле, нашел несколько толковых советов, но щас уже не найду эти форума... хорошо, что записал всё в тетрадку, терь перепечатываю сюда:
Вначале нужно разработать функциональную ЦМС - что он должен уметь делать:
1) Работать с клиентами ЦМС сайта (администраторами сайта, редакторами страниц, зарегистрированными пользователями сайта и т.п.)
2) Авторизовывать клиентов по логину и паролю
3) Работать со структурой сайта типа дерева (отображать, редактировать, сохранять)
4) Работать с шаблонами страниц (отображать, редактировать, сохранять)
5) Работать с контентом страниц в соответствии с шаблонами (отображать, редактировать, сохранять)
6) Иметь возможность для безопасной загрузки файлов на сервер и привязки их к страницам
7) Вести статистику
и т. д.
Далее разработать структуру БД.
После этого писать скрипты, которые всё это делают, а также генерят страницы сайта в соответствии с информацией, которая хранится в БД.
---------------------------------------
Начинать с определения ролей пользователей, которые тебе нужны в системе: админ, преподаватели, студенты, гости и т.д.
Для каждой роли определяй, что пользователь с этой ролью должен "мочь", делать. Списком возможностей будет приблизительным списком меню для этой роли.
Потом рисуй базу данных. Именно рисуй. На листике. То что получилось на листике переноси в БД.
Потом начинай писать классы для ролей, начиная с самой сложной (у которой больше всего функций).