Django TODO: проектирование архитектуры системы

Fri 29 June 2012

Следующим этапом разработки системы является проектирование архитектуры.

Архитектура должна быть продуманным концептуальным целым. Главный тезис самой популярной книги по разработке ПО "Мифический человеко-месяц" гласит, что основной проблемой, характерной для крупных систем, является поддержание их концептуальной целостности. Хорошая архитектура должна соответствовать проблеме [1].

Разделение системы на подсистемы на уровне архитектуры, позволяет концентрироваться в каждый конкретный момент времени на меньшей части системы.

Обобщенная схема работы системы приведена на рисунке.

Работа пользователя с системой начинается с авторизации. После успешной аутентификации пользователь попадает на страницу с задачами, поставленными ему другими пользователями. Далее он может перейти в раздел проектов, либо в раздел "сотрудники".

Модель данных

Уровень доступа к данным. На этому уровне сосредоточена вся информация о данных: как получить к ним доступ, как осуществлять контроль, каково их поведение, каковы отношения между данными.

Модель "Задача"

Модель данных Задача содержит следующие атрибуты:

  • задача -- описание сути задачи. Текстовое поле, обязательное для заполнения;

  • исполнитель -- идентификатор сотрудника. Целочисленное поле, обязательное для заполнения;

  • статус -- целочисленное поле, обязательное для заполнения. Может принимать значения: UNCERTAIN (не определен), DONE (завершен), STOP (прерван), WAIT (в ожидании), WORK (в работе). Статусы WAIT и WORK вычисляются при выборке из базы данных на основе даты начала и статуса предыдущей задачи. Задача может быть завершена (DONE) или прервана (STOP) только из статуса WORK. Статус STOP нужен в случае, когда дальнейшее выполнение работы над задачей невозможно. Сигнализирует, что необходимо вмешательство руководителя проекта. Только руководитель может отредактировать прерванную задачу (например, изменить дедлайн задачи) и вновь запустить ее на выполнение (сменить статус на WORK). Статус задачи WAIT может быть в случае:

    • если она первая в цепочке и дата начала работы над цепочкой не наступила;
    • если статус предыдущей задачи не DONE.

    Статус задачи WORK может быть в случае:

    • если она первая в цепочке и наступила дата начала работы над цепочкой;
    • если статус предыдущей задачи DONE.
  • дедлайн -- крайняя дата завершения работы над задачей. Дедлайн задачи должен быть больше, чем дедлайн предыдущей задачи;

  • дата завершения -- дата завершения работы над задачей. Поле заполняется по завершению работы над задачей. Может не совпадать с дедлайном;

  • цепочка -- идентификатор цепи, к которой относится задача. Поле обязательно для заполнения;

  • порядковый номер -- целочисленное поле, больше или равно единице, обязательное для заполнения. Поле введено для сортировки задач в цепочке и простого способа получения предыдущей задачи;

  • архив -- флаг, по которому определяется актуальность задачи для ее исполнителя.

Модель данных Задача содержит вычисляемые атрибуты:

  • дата начала -- определяет дату начала работы над задачей. Для первой задачи равна дате начала работы над цепочкой. Для задачи со статусом WAIT равна дедлайну предыдущей задачи. Если дедлайн нарушен, дата начала задачи не прогнозируема. Для остальных статусов равна дате окончания предыдущей задачи;
  • срок до начала работы -- определяет количество дней, оставшихся до начала работы над задачей (статус WAIT);
  • срок до дедлайна -- определяет количество дней, оставшихся до дедлайна задачи;
  • просроченные дни -- определяет количество дней, на которые просрочена задача;
  • фактический срок -- определяет количество дней, затраченных на задачу.

Модель "Цепочка"

Модель данных Цепочка содержит следующие атрибуты:

  • название -- текстовое поле, обязательное для заполнения;
  • владелец -- идентификатор сотрудника. Целочисленное поле, обязательное для заполнения;
  • дата начала -- дата начала работы над цепочкой задач. Поле обязательно для заполнения;
  • приоритет -- приоритет цепочки (срочно, не срочно);
  • архив -- флаг, по которому определяется актуальность цепочки для ее владельца;

Модель данных Цепочка содержит вычисляемые атрибуты:

  • статус -- статус цепочки совпадает со статусом текущей задачи цепочки;
  • дедлайн -- дедлайн цепочки совпадает с дедлайном последней задачи;
  • срок до дедлайна -- определяет количество полных дней, оставшихся до дедлайна последней задачи;
  • просроченные дни -- определяет количество дней, на которые просрочена последняя задача;
  • фактический срок -- определяет количество дней, затраченных на цепочку.

Модель данных Сотрудник содержит текстовые атрибуты ФИО и должность, обязательные для заполнения.

[1]Макконелл С. Совершенный код. Мастер-класс / Пер. с англ. – М. : Издательство "Русская редакция", 2012. – 896 стр. : ил.

Category: Python Tagged: python django django-todo architecture

comments