Журнал LinuxFormat - перейти на главную

LXF125:TaskJuggler

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

TaskJuggler: План через код

Есть ли у вас план проекта? Алексей Джежора подскажет, как создать его и отслеживать ход выполнения.

Современное понимание ремесла управления проектами, будь то создание космического корабля, модернизация станка или строительство конуры для любимой собаки, немыслимо без применения специализированного программного обеспечения. И существующее свободное проектное ПО достигло такого уровня функциональности, что способно полностью вытеснить собой проприетарные продукты. Среди множества свободных программ (обзор и сравнение см. LXF116, а на самом деле их еще больше) по управлению проектами, своим нестандартным подходом выделяется TaskJuggler. На официальной странице (http://www.taskjuggler.org) можно найти исходный код для загрузки, много полезной информации, а также 200-страничное руководство пользователя в формате PDF на английском языке. Последняя стабильная версия 2.4.3 собрана в двоичные пакеты под многие дистрибутивы (Deb и RPM точно есть).

TaskJuggler ломает стереотип, сложившийся для программ по управлению проектами, и прежде всего потому, что план проекта со всеми зависимости буквально пишется во встроенном текстовом редакторе. При этом визуализирующие отчеты, получаемые посредством TaskJugglerUI, могут формироваться из нескольких файлов, создавать которые могут разные специалисты. Все это, на самом деле, очень удобно: экономится куча времени, нет необходимости щелкать мышью в бесконечном количестве диалогов, а отчеты хорошо оформлены и их, так сказать, не стыдно и подчиненным, и начальству, и заказчикам показать.

Первые шаги

Сегодня мы составим упрощенный план проекта создания автоматизированной информационно-измерительной системы технического учета электрической энергии (АИИС ТУЭ) приемо-сдаточного пункта. АИИС – это совокупность программно-аппаратных средств, которые измеряют какие-либо величины, результаты этих измерений обрабатывают, хранят и оправляют по назначению.

Интерфейс TaskJuggler интуитивно понятен и состоит из меню, панели инструментов, вкладки текстового редактора Editor и вкладки отчетов Reports. Для создания плана нового проекта нажмите Ctrl+N (или выберите пункт File > New, или просто щелкните по кнопке в форме листа бумаги на панели инструментов).

В возникшем окне укажите папку, где сохранится ваш файл, и имя файла. Проследите, чтобы в полном пути папки (включая каталоги вышестоящих уровней) и самом названии файла были только латинские символы, иначе TaskJuggler откажется работать. Файл нашего проекта назовем Avtomatizatsiya, расширение у него будет .tjp. Вам предложат три исходных шаблона для проекта: очень простой, посложнее и очень сложный. Воспользуемся простым, именуемым Blank Project. В текстовом редакторе появится:

project myProjectId “My Project” “1.0” 2009-10-13 - 2010-12-11
 task start “Project Start” {
    start 2009-10-13
 }

Интервал дат начала и конца, разумеется, будет зависеть от даты непосредственного создания плана проекта в TaskJuggler.

Создаем свое

Приступим к планированию: назовем наш проект, укажем формат даты, создадим суммарную задачу проекта. Заменим код, приведенный выше, на

project myProject “Создание АИИС ТУЭ ПСП” “1.0” 2009-12-01+4m {
  timeformat “%Y-%m-%d”
 }
task sum “Создание АИИС ТУЭ ПСП” {
  start 2009-12-01
 }

Так как в процессе планирования удобно периодически смотреть, что получается, то сразу создадим соответствующий отчет: таблицу с колонками «индекс иерархии», «наименование», «начало», «окончание», «длительность» и ассоциированную с этой таблицей диаграмму Гантта:

taskreport “GanttCart” {

 headline “Создание АИИС ТУЭ ПСП”
 columns hierarchindex, name, start, end, duration, chart
 timeformat “%a %d-%m-%Y”
 loadunit days
}

Нажмем F9 (или, если еще есть ностальгия по работе мышью, выберем пункт меню Tools > Generate All Reports, или кнопку на панели инструментов в форме часиков): откроется вкладка отчетов с таблицей из одной строки и пустой диаграммой Гантта. Обратите внимание на формат даты: в TaskJuggler он имеет вид Год-Месяц-Число-Час:Минута:Секунда-ЧасовойПояс. Обязательными к заданию являются год, месяц и число, а все остальное указывается при необходимости. В отчетах такой порядок отображения дат можно менять, а также добавлять «подробности», например, ДеньНедели Число-Месяц-Год. А вообще, TaskJuggler поддерживает более сорока типов календарных и временных характеристик, включая даже номер века.

Планируем

Теперь приступим к составлению плана. Для начала опишем сотрудников, которые будут исполнителями работ по проекту. В нашем случае это инженер Петр Петрович Иванов, специалист по снабжению Сидор Сидорович Петров и электромонтажник 5-го разряда Иван Иванович Сидоров. Описание поместим перед суммарной задачей проекта:

resource people “Люди” {
 resource ppl_PPI “П.П. Иванов”
 resource ppl_SSP “С.С. Петров”
 resource ppl_IIS “И.И. Сидоров”
}

Затем «внутри» суммарной задачи (в промежутке между строкой со start и строкой с символом ‘}’) пропишем последовательность работ, с зависимостями, назначениями и отслеживанием через процент выполнения. Начнем с получения аванса и поставки материалов:

task avans “Перечисление аванса” {
 start 2009-12-16
 milestone
}
task postavka “Поставка материалов” {
  responsible ppl_SSP
  task po_skaff “Поставка оборудования шкафов” {
  depends !!avans
  duration 8w
  complete 40
}
task po_electro “Поставка электроустановочных изделий и кабелей” {
 depends sum.avans {gaplength 2d}
 duration 3w
 }
}

Задача avans обозначена как веха – milestone: в предшествующей зависимости от нее находятся задачи по поставке материалов. Эта зависимость задается оператором depends. Ссылки на определяющую задачу могут обозначаться различными способами: символом ‘!’, если эта задача находится в пределах одного уровня подзадач, символами ‘!!’, если в пределах вышестоящего уровня подзадач, или может быть прописана глобальная ссылка, как в задаче po_electro. Через gaplength задается запаздывание начала задачи. Оператором complete определяется процент выполнения; если его не указывать, то TaskJuggler самостоятельно определит его как отношение между длительностью интервала времени от даты начала задачи к текущей дате и длительностью задачи в целом.

О назначениях ресурсов

За поставку материалов оператором responsible назначен ответственный, а оператором duration задана длительность выполнения задач. Если же представить себе, что С.С. Петрову придется самому ехать туда, где делают оборудование шкафов, и с этим оборудованием возвращаться обратно, а потом отправиться за кабелями и электроустановочными изделиями, то вместо длительности логично будет задать трудоемкость – effort, и оператором allocate назначить исполнителя (это тоже будет Сидор Сидорович). Длительность выполнения задач будет рассчитана, исходя из трудоемкости и загруженности назначенного(-ных) исполнителя(-лей). TaskJuggler распределит график выполнения так, чтобы не возникало конфликта назначенных ресурсов. Если назначать ресурсы некорректно, например, указать фиксированные пересекающиеся даты начала и конца выполнения задач (операторы start и end) с одними и теми же исполнителями, то в отчетах можно будет видеть визуализацию их перегрузки. Это также касается и материальных ресурсов. При этом TaskJuggler может работать с общекорпоративным списком ресурсов, что теоретически делает это приложение системой многопроектного планирования уровня среднего предприятия.

Завершим планирование нашего проекта, определив следующие задачи:

task sb_skaff “Сборка шкафов” {
  depends !postavka.po_skaff
  effort 2w
  allocate ppl_PPI, ppl_IIS
}
task otpr_mtr “Оправка оборудования на ПСП” {
  depends !postavka.po_electro, sum.sb_skaff
  duration 4d
  responsible ppl_SSP
}
task cmr_pnr “Строительно-монтажные и пуско-наладочные работы” {
  depends !otpr_mtr
  effort 3w
  allocate ppl_PPI, ppl_IIS
}

Все использованные конструкции уже должны быть вам знакомы.

Чтобы было красиво

Теперь, помимо уже созданного отчета с диаграммой Гантта, сформируем HTML-отчет – таблицу «График производства работ», с дополнительными колонками «ответственный» и «ресурсы»:

htmltaskreport “Cart.html” {
  headline “График производства работ”
  columns hierarchindex, name, start, end, duration, responsible,
  resources
  loadunit days
}

Нажмем F9 – и... вуаля! Остается только распечатать и нести на утверждение.

Вести с полей

При помощи TaskJuggler планировался и в настоящее время воплощается проект создания автоматических информационно-измерительных систем коммерческого и технического учета электрической энергии с элементами управления энергохозяйством (АИИС КУЭ, АИИС ТУЭ) на приемо-сдаточном пункте нефтепровода «Сковородино – граница КНР». Работы ведет ООО НПК «Спецэлектромаш» (г. Красноярск). Дело в том, что у руководителя этого проекта и, по случаю, автора этой статьи, на рабочем компьютере «навернулась» файловая система одной из проприетарных ОС. Было решено пойти на смелый эксперимент: установить Linux. Выбор пал на Runtu 3.0. Практически сразу встал вопрос о ПО для управления проектами. Первоначально были попытки применять схожие по функциональности с одной известной проприетарной программой средства, но все они обладали существенными недостатками: Planner и KPlato подпадали под неразрешимые зависимости, OpenProj ел вычислительные ресурсы компьютера как пончики и безнадежно «тормозил». TaskJuggler, во-первых, не обладал подобными недостатками, а во-вторых, оказался очень удобным. Итоговый план проекта рассчитан на период более года и содержит более пятидесяти задач с назначениями ответственных за их исполнение.

Персональные инструменты
купить
подписаться
Яндекс.Метрика