Источник
1. Вместо предисловия
1.1. Про начало
Давным-давно, в далёкой-далёкой галактике… Не, не то. Давным-давно, кажется, в прошлую пятницу мы решили, что, пожалуй, хватит ворда, бумаги, отдельных задач jira и т.п. – пора использовать что-то более подходящее. Стало неудобно, так как всё путалось в кросс-ссылках, в разных способах поддерживать историчность и нескольких подходах. Так начался наш путь к использованию Enterprise Architect (EA). Почему хватит? Причин очень много. У каждого из участников процесса она своя. Основная причина – абсолютная власть.
Дарт Сидиус проводит анализ влияния. Синим цветом показаны зависимости (кадр из фильма “Звёздные войны: Эпизод 3 – Месть Ситхов”)
Абсолютная власть в том смысле, что нам очень хотелось
Совершенно справедливый вопрос — “Почему вы выбрали именно Enterprise Architect, а не любой другой инструмент?” На момент, когда процесс начался, в нашем активе были jira, confluence, MS office, SP, Sybase Power Designer (сейчас это SAP Power Desiner) и Sparx Enterprise Architect. Собственно, вопрос решили личные предпочтения и навыки EA на тот момент (это были 2011-2012 годы), а также люди, которые были первопроходцами и отдали сердца и умы Enterprise Architect. Возможно, это было ошибкой.
1.2. Немного капитанства
Основные этапы жизни проекта по созданию информационной системы (да и в целом, наверно, почти любого проекта с точностью до определения каждого этапа) вполне очевидны – как по ГОСТ, так и просто исходя из здравого смысла. Это:
- концепция,
- эскиз,
- техническое задание (сбор и выявление требований),
- техническое проектирование (разработка архитектуры),
- рабочее проектирование (разработка и дизайн),
- внедрение,
- эксплуатация и сопровождение.
Примечание: номера здесь для наглядности – этапы могут быть совмещены, не иметь чётких границ, уходить в итерации и т.п.
Для концепций мы пока не применяем Enterprise Architect, так как обычно нужно все делать быстро, срочно, очень красиво. Так что это word, visio c различными расширениями или иные рисовалки (где ну вообще красота). Эскиз, к сожалению, заказчика не интересует, хотя мы бы и рады готовить его в EA. Два последние пункта – это или про ошибки (они решаются (во всяком случае у нас) иными средствами и инструментами) или про доработки, и тогда это всё заворачивается в пункты 3-5.
Поэтому поговорим про такие этапы, как техническое задание (сбор и выявление требований), техническое проектирование (разработка архитектуры), рабочее проектирование (разработка и дизайн).
1.3. Для тех, кому не терпится попробовать результат (спойлер)
Диаграмма компонентов (в данном случае каждый компонент – это один модуль развёртывания), связей между ними, базовых протоколов.
Диаграмма развёртывания общего программного обеспечения по узлам, с указанием основных связей
2. Про рецептуру
2.1. Ингредиенты
Вот основное, что вам нужно.
- Дискомфорт – если вам комфортно в вашем текущем процессе создания информационной системы, если всё устраивает, значит или у вас уже есть EA (может, что-то подобное), или вам он не нужен, и у вас и так всё отлично.
- Метамодель системы – понимание и описание того, как и в каких понятиях система будет описана.
- Формальный язык – естественный язык не очень хорошо подходит для того, чтобы точно и компактно передать смысл сообщения (на наш взгляд). И тут приходит на помощь формальный язык. Мы использовали UML.
- Знания Enterprise Architect – хотя бы минимальные, но чем больше у вас желаний вроде версионирования, разграничения доступа, работы в одном проекте и т.п., тем глубже погружение – вплоть до разработки своих модулей к EA (у нас их пока нет).
Не помешает:
- Терпение и гибкость. Несгибаемая жёсткость — не наш девиз. Внедрение нового подхода, какие-то серьёзные изменения в старом – это тяжело (особенно в первый раз). Будет много вопросов, ошибки, инертность, откровенное сопротивление, поэтому нужно терпеть и приходить к компромиссам и учитывать это в вашем персональном рецепте. Например, мы теперь совершенно спокойно относимся к исключительным ситуациям, когда EA становится просто инструментом, чтобы документировать и хранить уже сделанное. Дальше мы остановимся на этом на примере работы с требованиями.
- Здоровая лень и вкусный кофе. Лень в том смысле, что лень делать много рутины, которую можно автоматизировать. Это правильно, на наш взгляд. Так, например, мы окончательно обленились писать документы – создаём их из EA. Правда, в ряде случаев это документы по ГОСТ, и тогда мы это делаем в два этапа – сначала «мясо» из EA, а потом скриптами VBA наши доблестные технические писатели превращают это в ГОСТ. Ну а кофе – без него, конечно, можно, но куда без него? Мы очень любим сорт java.
Ах да, чуть не забыл – еще нужна дружная и заражённая энтузиазмом команда. Без этого никуда. У нас как раз такая.
2.1.1. Про дискомфорт
Для нас этим были:
- Разные инструменты – хотим один.
- Отсутствие централизации в описаниях системы (хочется перестать вести себя как белка, которая где-то спрятала орех и забыла где) – одно хранилище для всего.
- У нас нет
абсолютной властивозможности провести быстрый анализ влияния – хотим знать, что развалится, если мы разделим компонент на два или что заденет изменение сценария работы системы и т.п. - Надоело писать документы – хочется, чтобы «щёлк» и документ был.
2.1.2. Про метамодель
На наш взгляд, осознанно или подсознательно практически любая команда людей, вовлечённая в процесс создания чего-либо, может про это рассказать: что она создаёт, из чего это состоит, как работает и т.д. Может быть, не очень красиво или связно, может, с «дырами» в изложении. Но, тем не менее, может. Так и в случае с созданием информационной системы. На верхнем уровне мы наверняка все представляем, что есть требования – функциональные и какие-то ещё, важные и не очень, чёткие и размытые, есть что-то, что показывает базовые принципы воплощения этих требований – какие блоки в системе, какие основные технологии использованы, что систему окружает, как всё это между собой связано. Есть детализация и требований, и принципов реализации, описание структур данных и т.п. Все эти основные части и правила связи между ними мы и назвали «метамоделью».
Наша метамодель. Красавица!
В нашем рецепте метамодель достаточно фигуриста – наметим её контуры и дальше рассмотрим каждую часть чуть детальнее:
- требования,
- структура информационной системы,
- постановки,
- дизайн.
2.1.3. Про язык
Не можем похвастаться долгими муками выбора, так как мы практически сразу выбрали UML как наиболее распространённый вариант. Ну и «понеслась». Наверняка можно бы использовать различные связки различных языков и нотаций и, наверно, мы к этому придём, выбрав для каждой из частей метамодели свой, но пока мы счастливо избавлены и от мук выбора, и от скрещивания нотаций и языков.
2.1.4. Про знания Enterprise Architect
В самом начале знаний не было. В смысле, конечно, были, но фрагментарные, о том, как работать одному или как формировать простые документы. В общем, глядя назад, поражаешься нашим
2.2. Готовка
Итак, у нас есть дискомфорт, метамодель, формальный язык, знания Enterprise Architect, дружная команда, лень, кофе, терпение и гибкость.
Теперь нужно взять EA, создать в нём проект, создать структуру согласно нашей метамодели и начать вносить элементы и связи.
Пробуем – смотрим на результат, оцениваем – понравилось, применяем дальше. Не понравилось – корректируем метамодель, обновляем элементы, связи и так пока не приготовим.
Как понять, что не понравилось? Вам не нравится, вам ещё больше неудобно, вы не ощущаете пользы. Как-то очень банально и неопределённо, да? Вы совершенно правы, дорогие читатели. Но каких-то очень чётких и строгих критериев для общего случая предложить сложно, да и, наверно, не нужно. Но мы, конечно, поделимся нашим опытом.
2.2.1. Про проект (который в EA)
Проект в Enterprise Architect состоит из набора корневых пакетов.
В свою очередь, каждый корневой пакет может содержать другие пакеты. А каждый обычный пакет – элементы (здесь под элементами подразумеваются элементы EA) и диаграммы.
Корневые каталоги могут быть размещены локально – в EAP файле, а могут – централизованно в базе данных. Кроме этого каждый пакет может быть сохранён в виде xml в репозиторий системы контроля версий.
С хранением проекта в БД мы не справились. Сначала это было классно – изменения отражались у всех, но спустя какое-то время у нас начались ошибки, какие-то непонятные ситуации с исчезновением элементов и т.п. В итоге мы плюнули это лечить и на время забыли. Но систему контроля версий мы потянули и прикрутили SVN.
Проект в Enterprise Architect
В самом примитивном варианте вы можете создать основные части вашей метамодели как корневые пакеты или пакеты первого уровня и получить структуру для хранения элементов модели и связей между ними. В нашем примере чуть сложнее, так как какие-то из этих частей размазаны по пакетам первого уровня. Но в целом принцип прослеживается. Кроме этого, «прикрутив» SVN мы получили возможность работы с ветками и релизами и разграничение доступа по принципу «один пакет – один владелец».
2.2.2. Про требования
Требование (как элемент EA) выглядит вот так:
Пример требования про обеспечение электронного взаимодействия
Так выглядит преобладающее большинство элементов EA для UML (так что видел один – видел и остальные).
Метамодель, в части требований, у нас достаточно скучная – ниже как раз эта часть более крупным планом.
В целом сказать чего-то особенного нечего – создаём требование, формулируем его и, при необходимости, связываем с другими требованиями. Но есть одно «но» – у нас требования в стадии активного выявления и сбора не прижились в EA. И мы шлёпаем их по старинке – напрямую в word.
Неоднократно задумывались, почему так происходит. На текущий момент мы пришли к следующим выводам.
- Заказчики у нас любят (и для нас это немного странно) word и excel. Ну, понятно, презентации (да ещё и красивые). Ничего другого не хотят видеть.
- Мы не научились быстро и удобно для себя работать с EA в части требований, когда их нужно формировать и согласовывать очень быстро. Но мы думаем, что у нас в итоге получится, работаем над этим, и есть надежда, что следующий вал требований уйдёт именно в EA.
Как только мы согласовали все наши требования, мы их тут же загрузили в EA в соответствующую часть метамодели. И вот все изменения требований проходят только через EA.
2.2.3. Про структуру
Когда базовые требования были собраны, мы начали набрасывать проектные решения – структуру ИС, технологии, связи между компонентами, отдельные технические решения согласно вот этой части метамодели:
Это происходило так. Создавалась диаграмма для несуществующего пока решения. Благодаря этому мы накапливали в проекте Enterprise Architect элементы, описывающие систему и при формировании решений, в которых эти элементы были задействованы, мы просто повторно их использовали, перетаскивая на нужные диаграммы. В этом случае как раз и начинают работать связи, необходимые для анализа влияния.
Для описания структуры мы использовали четыре типа диаграмм – вариантов использования, компонентов, развёртывания и классов (для описания логической модели данных). Плюс к этому в ряде случаев в ход шли возможности EA по использованию внешних объектов – рисунков, файлов, rich-text документов.
Вот как, например, выглядит описания одного физического компонента (эквивалента модуля развёртывания) на диаграмме, в проекте EA и его связи, и ничего сложного.
2.2.4. Про постановки
После того, как базовые решения выработаны, можно приступать к дизайну и разработке программного кода, но для последнего нужны «постановки на разработку».
Постановка включает в себя описание того, как детально должна работать ИС в части какой-то функции или сценария работы, какие компоненты и методы в это вовлечены, какие сущности логической модели данных использованы.
На всякий случай – здесь и далее под функцией системы (описанной как пиктограмма варианта использования) подразумевается некий сложный процесс работы системы, например, обработка заявления на открытие накопительного счёта от пользователя может скрывать «развесистый» процесс взаимодействия нескольких системы или же частей одной системы.
На данном этапе функция системы – центр. Вокруг центра строятся следующие работы.
- Спецификация сценария работы функции.
- Алгоритмы, используемые в сценарии.
- Архитектурные требования – ограничение, которые необходимо соблюсти при реализации или алгоритмизации того или иного шага.
- Детализация и уточнения логической модели данных.
- Формирование физической модели данных.
- Формирование «бизнес-интерфейсов» для компонентов – набора операций, значимых с точки зрения предметной области, которые потом необходимо реализовать. Здесь надо отметить, что методы, показанные в метамодели пиктограммой варианта использования, избыточны – мы таким образом связываем шаги спецификации сценария работы функции и соответствующий интерфейс.
- Уточнение связей между элементами.
После этих работ мы использовали эту информацию для дизайна и разработки кода и его тестирования.
Сам процесс передачи организован через jira – создаётся задача, в ней указано место в проекте EA, где находится постановка, а также ветка SVN.
Постановка выглядит так:
2.2.5. Про дизайн
Дизайн включает описание базовых классов, программных интерфейсов, пакетов (в терминах java) и их связей с со структурой системы.
Помимо этого в дизайне у нас есть порядок взаимодействия компонентов и классов, показывающих реализацию функций системы.
Эту часть рецепта мы пока держим в секрете.
3. Вместо заключения
Пройдя несколько сумбурно описанные шаги нашего рецепта, мы получили наше блюдо – проект в EA.
Кому-то наш рецепт покажется странным, нелепым. Кто-то почерпнёт для себя новое. Кто-то начнёт готовить и будет рад результату, а кто-то нет.
И это нормально – ведь это только наш рецепт, для нашей IT-кухни.
Мы
Комментарии (15)
Aslamov Автор
10.04.2018 13:26+2Спасибо за комментарии – учту на будущее.
Теперь к ответам и ремаркам:
Про презентации и заказчиков: Да, согласны, заказчики не любят сложные презентации. Мы такие и не делаем. Но когда речь идёт про обоснование трудозатрат и сроков, показать матрицу зависимостей бывает полезно, это помогает показать масштаб потенциальных изменений. Собственно, вопрос «Почему не за один день?" (утрирую, конечно), уже ставится не ребром, и возникает более конструктивное обсуждение. Заказчик становится причастным к деталям и причинно-следственных связям, что всем полезно, на наш взгляд.
Про инструменты: В своей работе мы используем разного рода инструменты — зависит от специфики проекта, масштаба, команды и т.п. EA больше про то, чтобы сложить в одном месте большинство артефактов жизненного цикла системы — требования, архитектуру, дизайн, постановки и т.п. Если говорить про закрытие договора, то зачастую результаты работ явно описаны – как правило, это набор документов + ПО. Документы (часть документов – проектные решения, спецификации, ТЗ – мы можем выгрузить из EA) должны быть проверены соответствующими специалистами заказчика. ПО должно быть проверено в ходе ряда испытаний. То есть ЕА мы используем как источник части отчётных документов.
- Про задачи: Задачи мы ставим через jira. В задаче (кроме обычного описания, версий и прочего) указывается путь (просто как текст) в проект EA к постановке (2.2.4. Про постановки) или её части (если задача для конкретного разработчика более мелкая, чем постановка). Интеграции из jira в EA, к сожалению, у нас нет: нельзя кликнуть на путь и открыть проект или его часть.
PMVyatkin
10.04.2018 13:57Спасибо за оперативный ответ!
1. Ага, ну для ПМа проекта со стороны заказчика — самое то — показать как компоненты системы связаны между собой, за каким из компонентов что стоит и сколько это может стоить — тут клево, что и внутренний инструмент, и внешний, менять по 100 раз не надо. И на пресейл, условно, можно взять для предметного разговора и торгов. Для проджектбордов — увы, приходится браться за Visio, упрощать.
2. Умно. У нас тоже зоопарк — план в MS Project, далее идет некая функциональная карта (Visio), которую можно показать на кикоффе, далее план бьется в задачи Jira, те бьются на пакеты работ. Результат каждой задачи — кусок фунционала или документ, условно есть итерации в рамках которых может быть решена одна или несколько задач.
В итоге — задачи, итерации и ФК связаны проджект планом — ты видишь какая итерация, какие куски должны быть готовы, что сейчас по ним делается.
Отчет соответственно делаешь основываясь на плане из проджекта — оформляется примерно так — помечаешь сделанные работы как сделанные, просроченные — красные, будущие — синие, по каждой просроченной работе даешь объяснение. Что в этом хорошего — то, что из проджекта работы попадают и в зарплатную систему, куда все списывают время по проектным задачам, и в итоге видишь каждую задачу не только как часы, но и как расходы (в зарплатной системе же ставки есть) — это очень полезно для подсчета и прогнозирования бюджета. Вопрос — если не секрет, а вы как считаете бюждеты — из Jira данные в Payroll-систему идут? Или выгрузки загрузки руками ПМов?
slookin
10.04.2018 14:37Рассматривали более продвинутые (чем SVN и shared DB) методы совместной работы в Sparx EA? EA Cloud, EA PRO Cloud Server / Express / WebEA.
Aslamov Автор
10.04.2018 15:38Только на уровне «почитать», в практическом плане не рассматривали – все потребности закрыты текущей схемой работы. Возможно, в будущем, в качестве эксперимента попробуем применить.
Stas911
10.04.2018 16:59А чем это более продвинуто, чем, скажем, shared DB? Там разве какой-то дополнительный функционал доступен?
slookin
10.04.2018 17:03ну shared DB совсем плохо работает через интернет.
Опять же Web интерфес, тем кому только посмотреть. Да еще помелочам есть плюсы (для примера, OSLC)
Aslamov Автор
10.04.2018 15:48Отвечу кратко, потому что эта тема достойна отдельной заметки. Мы ведём учёт трудозатрат по проектам. Уровень гранулярности, правила списания трудозатрат от проекта и инструменты учёта от проекта к проекту могут различаться. В итоге они все «сливаются» в одну систему учёта, фиксированную для проекта. Наверняка, это происходит автоматически (сам никогда не интересовался, но, поскольку мы в принципе стараемся избегать ручных операций в своей работе, я вряд ли ошибусь). Имея трудозатраты и ставки, мы можем получить всё остальное – текущие расходы, сопоставления плана и факта, учесть при необходимости в бухгалтерских расчётах.
hooper
10.04.2018 16:48+1Добрый день. Хорошо, что подняли тему. Когда разбирался и внедрял EA, в рунете мало информации нашел.
На мой взгляд Вы не полностью используете функционал ЕА. Ведь это не только функционпльный интерфейс. По сути это набор данных, который можно использовать повсеместно. Файл проекта ЕА — это обычная база MS Access (да и MSSQL как я понял Вы пробовали). Есть возможность интеграции с другими системами.
Вы не используете диаграммы классов? Привлекаете ли Вы разработчиков к ведению документации или используете только для PM?Aslamov Автор
10.04.2018 17:52Спасибо за комментарий.
Диаграммы классов мы используем – они на картинке с метамоделью в её правой части. Просто отображены без атрибутов и методов.
Вопрос наполнения репозитория согласно метамодели – вопрос конкретного проекта.
Но, как правило, тот, кто реализует постановки (а не ставит их или проектирует каркас приложения – базовые классы, интерфейсы, правила взаимодействия – словом, формирует дизайн ПО), не изменяет наполнения репозитория и соответствующие диаграммы.
Встречный вопрос: какие из функций EA мы, на ваш взгляд, недоиспользовали?
PMVyatkin
Добрый день! За статью спасибо, инструмент интересный, можно перенять опыт использования на проекты.
Диаграмму развертывания и компонентов надо было все таки обезличить, добавить/удалить несколько элементов и выложить в нормальном разрешении.
Метамодель клевая, было бы здорово если бы поделились драфтом.
Про презентации и заказчиков — у нас еще не любят сильно сложные презентации, большую модель смотреть не станут — поэтому упрощаем обычно, выносим основную инфу и запрашиваем решения, такие вещи максимум прикладываем бэкапом к презентации.
Вопросы — а как вы ставите по этому задачи разработчикам/тестерам/etc? Есть ли экспорт в Jira/Redmine?
Используете ли вы MS Project для планирования? Я думал что вы на этапе предпроектного обследования (или пресейла) составляете план проекта, который вставляете в договор — далее по нему работы надо переработать в EA? Как заказчику показываете, что план в договоре подразумевает именно то, что разработано в EA?
Aslamov Автор
Обновили диаграммы — теперь картина ясная.
PMVyatkin
Отлично, спасибо! Забрал себе как пример того, как сделать хорошо )