Метафора CMS/CMF (примеры)

syfisher

TDD infected!!
Метафора CMS/CMF (примеры)

Кратко объясню ситуацию.

Мне необходимо объяснить кратко всю суть недавно построенной CMF другим разработчикам. Для введения в курс дела можно конечно устроить подробный попакетный или поклассовый разбор. Однако могу сказать, что практика показывает, что такого рода объяснения не имеют большого успеха. Пока разработчик сам не покапается в коде, на реальных примерах и т.д. - сути он не уловит.

Посему мне вспомнилась одна такая фишка XP - метафора проекта. Правда, ее, кажется, необходимо использовать на этапе разработки системы, но, по-моему, и в качестве обучения она тоже ничего.

Итак, вопрос - кто-нибудь у себя внутри использует метафору для CMS/CMF систем, и если да, то поделитесь вашим вариантом. Думаю, что другим это может быть очень даже интересно. Возможно, что хорошо придуманная метафора избавит от многих проблем, которые возникнут в будущем. Например, будет сразу понятно, как какой уровень системы внедрять какие-либо дополнения.

Мой вариант: система представляет собой фабрику (Application) по производству каких-либо продуктов. На базе системы можно построить несколько фабрик (SpecificApplication). Каждая фабрика состоит из цехов (Service), каждый из которых выпускает какой-либо один продукт (Action). Клиент просит сделать ему продукт (Request). Приемочная (FiltersChain) определяет, какому цеху нужно сделать запрос (ServiceMapping) на производство какого-именно продукта (ActionMapping). Возможно, что данный продукт уже есть на складе (ActionResultCaching), или же его производство зарезервировано для особых клиентов (AccessChecking), тогда клиенту нужно в вежливой форме отказать. Для производства продукта на фабрике необходимо запустить какой-либо производственный процесс (Command). Чаще всего для производства продукта необходимо запустить целый сборочный конвейер (StateMachineCommand). Для того, чтобы конвейер правильно работал, его необходимо правильно настроить (StateMachineCommandsFactory), чтобы каждый отрезок конвейера (State) выдавал в результате своей работы (StateMachineStateComamnd) правильный субпродукт (CommandResult). Ну и так далее… Одной страницы хватает описать практически все аспекты.

Если у вас есть что-либо подобное – поделитесь…
 
Сверху