Как мы унифицируем аналитическую деятельность в CUSTIS
В нашем корпоративном блоге на портале «Хабрахабр» появился новый пост: Ольга Цыганова, наш ведущий системный аналитик, поделилась опытом унификации деятельности аналитиков в CUSTIS. Как изменить неповоротливую систему устаревших аналитических практик? Что позволяет снизить трудозатраты аналитиков и рационально использовать их артефакты? Об этом — в статье «Как мы унифицируем аналитическую деятельность в CUSTIS» на сайте издания.
Мы писали в блоге о технологиях в привычном айтишному миру понимании — о наших лучших практиках в разработке информационных систем. Сегодняшний пост посвящен технологиям другого толка — управленческим: мы поговорим об унификации аналитической деятельности в CUSTIS. Эта история о том, как изменить огромную и стабильную систему сложившихся с годами практик и направить ее навстречу проектам развития.
Когда наша компания занималась в основном заказной разработкой и создавала уникальные продукты, над проектом для каждого клиента трудилась одна команда на всем жизненном цикле системы.
Такой подход хорошо отвечал потребностям заказчиков, поскольку аналитик:
- занимался только одним проектом и глубоко разбирался в деятельности конкретного заказчика;
- был прекрасно сработан с архитекторами, разработчиками и тестировщиками в своей проектной команде;
- применял для написания постановок привычные инструменты, например Wiki и Bugzilla.
Эта модель стала неэффективной, когда мы начали переходить к созданию тиражируемых решений и работать одновременно над большим количеством проектов. Нам потребовалось быстро ротировать аналитиков между проектами и повторно использовать их артефакты, а из-за того, что один описывал действия пользователя в системе Visio, а другой — в Archi, возникали дублирование описаний и неразбериха с нотациями.
Мы поставили перед собой задачу выбрать и внедрить для всех проектных команд одну методику или набор методик, которые будут отвечать новым бизнес-задачам. В посте мы расскажем, как разрабатываем эту методическую основу.
Содержание
Начинаем работу
Мы начали с того, что выделили три трека, в рамках которых будем проводить унификацию:
- Методический трек. Создаем методическую основу для проведения работ на разных проектах. По итогам испытаний и внедрения вносим в результаты этого трека корректировки.
- Испытания. Проверяем разработанные методы на реальных проектах. Собрав качественные и количественные показатели, возвращаемся к методическому треку и дорабатываем методики.
- Внедрение. Принимаем успешно апробированные наработки и делаем их обязательными для всех аналитиков. Это этап, когда методика становится официальной практикой для всей компании.
Затем мы проанализировали аналитическую деятельность в разных проектных командах и определили, что необходимо унифицировать:
- типы проектов в компании;
- концепты аналитической деятельности (метауровень);
- инструменты работы аналитика;
- роли, которые участвуют в аналитической деятельности;
- описание работы людей, выступающих в этих ролях:
- входной артефакт;
- выходной артефакт;
- технология создания выходного артефакта;
- шаблоны артефактов аналитической деятельности;
- перечень обязательных и необязательных аналитических артефактов для различных типов проектов;
- методику обучения аналитиков.
В следующих разделах подробнее расскажем о результатах методического трека работ.
Определяем типы проектов
Мы выделили четыре типа проектов в компании, на которых нам важно уметь перемещать аналитиков:
- Доработка существующих систем — корректировки, выделяемые в отдельные проекты. Трудозатраты: от 200 до 1500 человеко-часов. Длительность: до полугода. К таким проектам относится, например, разработка нескольких визуальных форм с отчетами, алгоритмов их заполнения, нескольких таблиц базы данных, фильтрации, выгрузки данных из отчетов в xlsx, pdf.
- Новый проект (автоматизация «с нуля») — разработка автоматизированных систем, когда у клиента нет «предыдущего» решения либо нужно полностью заменить существующую систему. Трудозатраты: от 1500 до 10 000 человеко-часов. Длительность: от полугода до года.
- Анализ request for information (RFI), предпроект, ведение бизнес-тем — бизнес-анализ процессов заказчиков. Реализация таких проектов может привести к запуску проектов автоматизации с нуля либо доработок существующих систем.
- Реинжиниринг существующих систем — полная переработка имеющейся системы.
Далее мы приступили к выделению тех понятий, в которых аналитики будут описывать создаваемые системы.
Описываем концепты аналитической деятельности
На UML-диаграмме (см. ниже) показаны концепты аналитической деятельности, которые мы выделили. Используя их, аналитики создают описание IT-системы и общаются.
Схема состоит из следующих элементов:
- голубые прямоугольники — концепты;
- пунктирные прямоугольники — типы диаграмм;
- прямоугольники со сплошным контуром — папки в шаблоне проекта в Enterprise Architect, где содержатся диаграммы.
Подробно остановимся на основных концептах.
- Процесс — бизнес-процесс заказчика. Он может включать как автоматизируемые, так и не автоматизируемые функции в рамках разрабатываемой системы.
- Описывается в нотации BPMN. Объекты на такой диаграмме могут быть типа Business Process — для диаграммы верхнего уровня и Activity — для диаграммы, описывающей процесс до элементарных операций.
- Описание должно быть шире, чем автоматизируемый процесс, чтобы при чтении диаграммы был понятен контекст.
- Роль — роль пользователя в системе или организационная единица.
- Роль, исполняющая процесс или операцию, визуализируется на BPMN-диаграмме с помощью Pool и Lane, а на диаграмме Use Case — с помощью Actor.
- Операции — операции, выполняемые в рамках локального процесса (локальные операции), или используемые в других процессах (глобальные).
- Создаются на BPMN-диаграммах элементом Activity.
- Автоматизируемая операция — элементарная операция, неделимая в рамках разрабатываемой системы.
- На BPMN-диаграммах обозначается элементом типа Activity. Для него нужно устанавливать тип выполнения операции Manual, Script, User. Manual означает, что операция выполняется пользователем в информационной системе, Script — операция выполняется внутри системы, User — пользователи выполняют действия вручную. При описании бизнес-процессов для функций первых двух типов необходимо создавать требования для их выполнения.
- Информационный ландшафт — все системы и подсистемы, которые задействованы в рамках бизнес-процесса, и передаваемые между ними данные.
- При описании используется диаграмма потоков данных.
- Объект данных — класс объектов реального мира.
- Создается на диаграммах классов в нотации UML.
- Автоматизируемая задача — задача, сформулированная заказчиком либо аналитиком.
- Отображается элементом Feature. Он присутствует на BPMN- и Use Case-диаграммах. На BPMN-диаграммах он связывается с операциями, на Use Case —с элементами типа Use Case. Таким образом получается связь между бизнес-моделью и автоматизируемыми задачами.
- Функция — описание поведения системы, когда она взаимодействует с кем-то или чем-то. Описание может совпадать с тем, как сформулирована автоматизируемая задача, или обобщать несколько задач.
- Отображается на Use Case-диаграммах элементами типа Use Case. Они состоят из шагов — атомарных неделимых действий. К функциям привязываются элементы типа Requirement.
- Требование — условие, которое должно быть удовлетворено.
- Отображается элементом Requirement. Может присутствовать на диаграммах трех типов: BPMN, Use Case, диаграммах требований.
- На диаграмме требований можно создавать иерархию требований, задавать в объектах название и описание. Для приоритизации требований устанавливается модальность: может, должен, обязан.
- Таблица — таблица базы данных.
- На ER-диаграммах отображаются не только таблицы, но и связи между ними. Несколько таблиц могут быть связаны с несколькими классами реализации.
- Класс — классы объектов реализации, которые создает разработчик при проектировании.
- Классы реализации отображаются на диаграмме классов в нотации UML.
- GUI — описание пользовательского интерфейса.
- Создается на диаграмме типа Dialog Wireframe Diagram. Обязательные элементы диаграммы: Use Case и макет экранной формы, факультативные: компонент, класс, таблица.
- Компонент — это часть системы, выполняющая какую-то функцию.
- Компонентную диаграмму создают на этапе проектирования системы архитекторы или разработчики, чтобы отразить ее состав.
Чтобы использовать на практике концепты, нужно выбрать единый для всех инструмент моделирования. О нем — в следующем разделе.
Выбираем аналитические инструменты
О достоинствах и недостатках инструментов, обеспечивающих аналитическую деятельность, можно спорить бесконечно. Например, кому-то нравится развивать мелкую моторику на примере вот таких решений для моделирования бизнес-процессов.
Наша компания много лет использовала гибкие методики разработки DDD (Domain Driven Design) [7] и инструменты Wiki [6]. Мы опирались на этот опыт и искали новые рыночные методики и инструменты аналитической деятельности.
Мы выписали возможные кейсы использования инструмента, опробовали их на нескольких проектах [9], пообщались с коллегами из других компаний и в итоге остановили выбор на Enterprise Architect.
Для нас были критичными такие параметры, как:
- поддержка нотации BPMN и UML, ArchiMate 3.0;
- ведение версионности проектов и диаграмм;
- функции экспорта и импорта моделей;
- выгрузки документации на основе диаграмм без привлечения разработчиков для создания шаблонов выгрузок документов;
- возможность коллективно работать с диаграммами;
- низкая стоимость и гибкая лицензионная политика;
- наличие действующего сообщества пользователей и разработчиков.
То, что мы предпочли этот инструмент, совсем не значит, что он подойдет и вам. При выборе своего инструмента постарайтесь собрать все ограничения и требования к нему, рассмотреть как можно больше сценариев того, как его используют ваши коллеги, и определить, насколько хорошо аналитики, разработчики, тестировщики и инженеры знают стандарты и нотации. Тогда в краткосрочной перспективе вам не придется переходить на новый инструмент.
Чтобы аналитик каждый раз не перечислял артефакты, которые нужно создать, мы разработали шаблон проекта в Enterprise Architect. Следующий раздел про него.
Разрабатываем шаблон проекта в Enterprise Architect
Когда мы создавали шаблон проекта, мы руководствовались потребностями разработчиков, тестировщиков, инженеров и заказчиков, а также распространенными в IT-отрасли стандартами и нотациями.
Существует несколько вариантов описаний требований. Узнать о них подробнее вы можете из материалов, указанных в списке литературы в конце статьи [1–4]. Мы постарались взять только варианты, необходимые для решения наших задач, и оставили те артефакты, которые используют в работе два и более человек в проекте с учетом жизненного цикла разработки системы.
В шаблоне проекта мы зафиксировали структуру папок и диаграмм в них, а также технологию наполнения диаграмм для различных видов проектов. Еще мы приводили не только перечень нотаций, но и их необходимые модификации, например, для выгрузки документации по ГОСТ, маппинга объектов одного уровня описания с другим.
Набор артефактов в шаблоне меняется в зависимости от типа проекта.
Желающие могут пройти по ссылкам ниже и посмотреть, что это за артефакты. В описании папок и диаграмм есть пояснения.
- Доработка существующих систем.
- Новый проект (автоматизация «с нуля»).
- Анализ request for information (RFI), предпроект, ведение бизнес-тем.
- Реинжиниринг существующих систем.
Заключение
Еще раз напомню, для чего все мы здесь сегодня собрались.
Представленный методический трек — часть большой работы по унификации аналитической деятельности в компании CUSTIS. На момент написания статьи мы уже испытали методику на некоторых типах проектов.
На проектах типа RFI мы увидели несомненную пользу данной методики: она позволила повторно использовать функциональную и компонентную декомпозицию работ, а также методику оценки трудозатрат.
Впервые работая по предложенной схеме, мы создавали функции, компоненты системы и другие необходимые элементы и оценивали трудозатраты. При получении аналогичных RFI мы копировали уже созданные диаграммы и при необходимости делали небольшие корректировки, например изменяли состав функций и (или) компонент. Таким образом, нам удалось повторно использовать созданные артефакты и минимизировать время на оценку трудозатрат по аналогичным RFI.
На проектах по доработке существующих и разработке новых систем время создания аналитических артефактов «по-новому» оказалось меньше времени их разработки «по-старому» на 25–40%.
Мы сравнивали время, затраченное на разработку артефакта в новой методике, и экспертную оценку временных затрат каждого из работающих в проекте аналитиков на разработку артефакта «по-старому». Аналитик, впервые работавший по новым правилам, тратил больше времени на освоение методики, лучших практик и примеров, консультировался с более опытными коллегами, но после двух-трех итераций время на разработку диаграмм существенно уменьшалось.
Это продемонстрировано на диаграмме:
Мы не ставили перед собой цель уменьшить трудозатраты на разработку артефактов — нам было важно, чтобы это время не увеличилось критично и методика прижилась в компании. Тем отраднее было видеть, что затраты ресурсов стали снижаться, а люди разделяли ценности наших изменений.
Актуальной для нас остается задача обеспечить перемещение аналитиков внутри компании по подразделениям, которые работают с заказчиками из разных предметных областей. Мы поделимся успехами этой части, когда наберем достаточно наглядных примеров, на основе которых с уверенностью можно сказать, что трек внедрения начал приносить первые существенные результаты.
В следующих статьях мы также расскажем о том, как проверяем методологию: на какие параметры смотрим, чтобы понять, подходит ли выбранный метод к нашей работе — и поделимся опытом внедрения работы «по-новому» в действующих проектах.
Полезная литература
- К. Вигерс. Разработка требований к программному обеспечению. 2004.
- А. Левенчук. Системноинженерное мышление. 2015.
- I. Jacobson, I. Spence, K. Bittner. Use-Case 2.0: The Guide to Succeeding with Use Cases.
- An Introduction to the ArchiMate 2 Modeling Language.
- ArchiMate 3.0 Specification.
- М. Цепков. Модель системы — архитектура для Agile-разработки (презентация с выступления на Agile Days, 4–5 марта 2011).
- М. Цепков. Domain Driven Design: модель вместо требования (презентация с выступления на ЛАФ, 25–26 июня 2011).
- М. Цепков. Как выбрать для проекта практики проектирования и работы с требованиями (презентация с выступления на Analyst Days, 21–22 апреля 2017).
- П. Музыка. Практика применения Enterprise Architect и T4-шаблонов для разработки системы на Microsoft SQL Server (презентация с выступления на Desktop UI & Business Applications, 11 апреля 2015).