Начиная с этого выпуска, рассылка становится более конкретной. Я начинаю разработку "Системы управления проектами"
и рассылке буду рассказывать, как идут дела.
Итак, что я собственно собираюсь сделать?
Каждый человек ежедневно выполняет кучу дел, чтобы ничего не забыть некоторые пользуются "Ежедневниками"
(они могут быть разные и бумажные, и электронные, это не важно). Однако большинство дел не заканчиваются за один день и
продолжаются неделями, а то и месяцами, для отслеживания состояния таких дел и планирования ресурсов люди пользуются
специальными средствами автоматизации, например, Microsoft Project Manager. Такого рода программу я и собираюсь сделать.
Итак, что система должна уметь делать:
Функции хранения:
Хранение списка возможных дел.
Хранение списка возможных ресурсов.
Хранение истории дел.
Функции учета:
Ведение реестра текущих дел.
Ведение реестра возможных ресурсов.
Аналитические функции:
Анализ затрат за выполнение типовых дел.
Функции прогнозирования:
На основе накопленного опыта прогнозирование вероятностей исхода нового начинания.
Вас не должно смущать весьма абстрактное описание, этому есть ряд причин.
Во-первых, принципиально характер дел постоянен, в общем случае каждый день я делаю примерно одно и то же, поэтому логично
все дела разбить на типы дел, и работать на уровне типов, в этом случае для заведения в системе нового дела не придется
изменять код. Тоже самое можно сказать о ресурсах, все возможные ресурсы так же можно разделить на типы и работать на уровне
типов.
Во-вторых, сейчас описываю общую функциональность, не погружаясь в детали. Сейчас меня интересует ЧТО я хочу сделать, и
только определившись с этим важным вопросом я задумаюсь над тем КАК я это сделаю. По мере продвижения работ список этих
функций будет уточняться и уточняться.
А теперь давайте определим основные понятия, с чем мы будем работать. Дело – последовательность элементарных действий, ведущая к достижению поставленной цели за заданный временной интервал. Действие – элементарный неделимый этап Дела. Ресурс – элемент, необходимый для выполнения действия.
Т.е. одно Дело состоит из множества Действий, для выполнения которых требуются Ресурсы.
Все возможные сущности системы (дела, действия, ресурсы,…) я обобщенно буду называть объектами.
С основными понятиями связана дополнительная информация двух видов:
Служебные данные - данные необходимые для работы системы, их я буду называть атрибутами.
Пользовательские данные – данные, заданные пользователем и отражающие суть объекта, их я буду называть свойствами.
Т.к. система проектируется на уровне типов, то появляются следующие понятия:
Тип дела – обобщенное описание дел, характеризующихся однотипными действиями.
Тип действия – обобщенное описание действий, характеризующихся однотипными свойствами, ресурсами и целями.
Тип ресурса – обобщенное описание ресурсов.
А где типы, там и экземпляры.
Экземпляр дела – конкретный пример дела.
Экземпляр действия – конкретный пример действия.
Экземпляр ресурса – конкретный пример ресурса.
Т.е. повторяется модель представления данных Класс – Экземпляр класса.
Например, Класс – "Собаки", Экземпляр класса – "пес Тузик".
Далее если явно не указывается, то Экземпляр объекта я буду называть просто объектом. Например, не "экземпляр дела",
а просто "дело".
Получается следующее, Тип объекта описывает, что может входить в состав объекта и что он может делать, а Экземпляр
говорит о том, что содержит и что делает конкретный экземпляр. Соответственно, атрибуты и свойства делятся на атрибуты и
свойства типов и атрибуты и свойства экземпляров.