UML как альтернатива техническим заданиям

Вариант с техническим заданием быстро потерпел фиаско, потому что текстовое описание сложных логистических процессов, структуры данных компании, многочисленных связей между ними  – возводило трудность восприятия до предела, и в какой-то момент любой человек перестаёт понимать всю систему.

Технологии Agile, при которых итеративно можно бы было реализовать какой-то маленький, но работающий кусочек, тоже подходили плохо, потому что при недостаточном описании связей блока с другими часто получалось, что блок нужно переписывать с нуля. Количество зависимостей в системе было настолько велико, что выдернуть из неё отдельный блок  – невозможно, равно как и двигаться сверху вниз, от общего к частному (потому что общего как такового нет).


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

  • В нём было просто ориентироваться;

  • Можно было бы легко изменять “масштаб” описания блоков: сворачивать лишние и разворачивать нужные.


В качестве решения мы стали использовать UML-диаграммы с поддержкой ссылок объектов друг на друга, а также полнотекстовых описаний. Это нам позволило:

  • Использовать как графическое, так и текстовое описание одновременно (и каждое из них именно там, где нужно);

  • Объединять и структурно организовывать десятки диаграмм;

  • Видеть крупные блоки “сверху”, с основными связями, а также иметь возможность опуститься до базового уровня с полным описанием, структурой таблиц, детализацией связей и чуть ли не примерами кода.


Вот так, например, выглядит часть дерева диаграмм проекта:


И каждый пункт на ней  – диаграмма с многочисленными блоками.

А вот так реализован процесс поездки водителя от склада по маршруту:


Удобство состоит в том, что, нажав на знак “+” рядом с каким-либо объектом, мы сразу можем увидеть, на каких ещё диаграммах он встречается:


И поэтому можем разделять одни и те же элементы между разными диаграммами, не рисуя сложно воспринимаемую паутину из сотен и тысяч связей. Бывает, что элемент встречается на большом количестве диаграмм:


Это позволяет, например, быстро понять, в каких блоках проекта используется генерация CSV-файлов:


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


Это невероятно удобный способ описания блоков во время встреч с заказчиком. За пару-тройку часов обсуждения можно набросать небольшой текстовый документ с заметками, а потом перенести их на диаграммы, отмечая все возникшие зависимости. В будущем это позволит на этапе программирования не упустить что-то радикально важное.

Подробные текстовые описания по каждому элементу удобно прячутся под соответствующими пиктограммами:


И на этом ещё не всё, за некоторыми элементами могут скрываться целые дочерние диаграммы, подробно описывающие тот или иной процесс или сложную структуру:


Клик по связанное диаграмме откроет её саму:


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


Ещё одно достоинство выбранного представления  – возможность как-то выделять цветом на диаграммах любые проблемные места, где возникли вопросы. Впоследствии их можно будет задать заказчику прямо на встрече, оставив комментарии внутри этих же объектов (в их документации). Таким образом вся собранная информация будет в одном месте.


Плюсы и минусы такого подхода (по нашему опыту):

+ Наглядность. Упрощение восприятия и ориентировки в проекте;

+ Экономия времени на этапе передачи знаний (в том числе на следующие этапы);

+ Полнота. Отображение и выявление большинства связей, которые могли бы остаться незамеченными при текстовом описании;

+ Удобство обсуждений и сбора информации с представителями заказчика;


Требуется знание языка UML и нотации BPMN (как минимум у того/тех, кто создаёт и читает диаграммы), а также интерфейса и всех функций используемого ПО;

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

6 Июн 2018
Вернуться к списку
Заказать внедрение