У одной задачи всегда есть несколько вариантов решения. Как их рассмотреть? Как оценить плюсы и минусы каждого из вариантов? Как отследить влияние каждого из вариантов на финансовые, временные и трудовые ресурсы? Значит, было бы очень неплохо иметь возможность "переключаться" между вариантами и анализировать их.
Постараюсь кратко описать свои мысли по реализации функционала "вариантов".
Ввести новый тип елемента в проекте - "вариант". Его предназначение только в одном - собирательный элемент, условие "или" (case) в проекте. Основным полем для него будет состояние, которое может принимать значения "Активен" и "Неактивен". Вариант, как узел может быть дочерним для любого другого типа элемента. Если, например, у "работы" есть дочерний "вариант", то для этой же работы дочерними могут быть только другие "варианты", и только один из них будет "Активен".
В проекте есть обязательные элементы. Своей структурой проект напоминет электрическую схему с разными соединениями (паралельными и последовательными). Варианты - переключатель который включает в схеме ту или иную часть цепи.
Построение "зависимостей вариантов". Бывают взаимоисключающие и взаимозависимые блоки. Буквально прозвучит это так: "если мы сделаем так-то, то в будущем нам придется сделать вот это и вот это". И наоборот - "если мы сделаем так вот, то будущем не сможем выбрать вот эти варианты". Зависимости необходимо будет использовать, так как есть обязательные блоки, после "прохождения" которого, варианты выбранные до этого блока влияют на возможности выбора последующих блоков.
Как это будет работать? Как электрическая схема. По очереди мы будем активировать разные варианты, после чего будут пересчитываться различные составляющие проекта: финансы, время, другие ресурсы. Это даст нам возможность выбрать опмимальный план действий. Также мы получаем запасные варианты действий (чуточку риск менеджмента.
Ожидаю коментариев и критики вышеописнного подхода.
Источник: http://community.terrasoft.ru