Monday, October 15, 2007

Mind maps и анализ требований

Наверняка многие слышали про mind maps и даже использовали их в жизни. Однако, в IT-проектах mind maps используются не очень широко. Недавно попробовал применять их для несколько иной задачи, чем простой брейнсторминг - для анализа требований и управления фазой проекта, чем и спешу поделиться.

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

Наш проект как раз и является таким «запутанным» случаем. Клиент хочет сделать низкоуровневые изменения, которые отразятся на многих компонентах. При этом клиент уже сам не очень хорошо помнит, как именно эта система работает и из каких частей состоит. Работает, и хорошо :). В результате мы получаем достаточно высокоуровневые требования, в которых детально описано лишь то, что клиент «вспомнил» и то, что он хочет получить в результате. Приходится потом сидеть и самому анализировать, какие компоненты системы будут затронуты и в каком объеме. Количество вопросов к клиентам увеличивается, потому что мы зачастую не знаем, как они захотят изменить старое бизнес-правило, чтобы оно работало в новой обстановке. Вследствие этого каждый вечер проводятся обсуждения, идут тучи писем, в документе требований появляются новые и исчезают старые пункты. Источников данных – тьма, вопросов – тоже, как за этим всем следить самым оптимальным способом и при этом не забыть чего-то важного – непонятно. Не говоря уже о том, что по пути мы занимаемся брейнстормингом в команде, и его результаты тоже нужно где-то записывать.

И вот здесь-то на помощь приходят различные способы компактного и по-возможности визуального представления данных. Одним из наилучших, на мой взгляд, являются mind maps. Вкратце, это способ представления различных задач, идей и прочих сущностей в произвольном формате. Единственное ограничение – это все-таки своеобразный граф, поэтому циклические зависимости представить в нем сложно. Применять mind maps можно в абсолютно разных случаях, начиная от планирования поездки в отпуск и заканчивая брейнстормингом на проекте запуска спутника в космос. Основной их фичей является то, что автор может помещать на дуги абсолютно любые слова, целые фразы, картинки, числа, даты, лишь бы между ними сохранялись семантические связи. Оказывается, это удобно и для анализа требований :). Например, вот, что у меня получилось при анализе новых требований и постепенного их обсуждения:

Приложение, которым я пользовался (кстати, абсолютно бесплатное, т.к. я специально не рассматривал платные варианты), позволяет добавлять ряд картинок к текстам, что очень удобно. Например, карандашиками я обозначил пункты, которые нам нужно заимплементить/сделать, warning'ами – различные предупреждения, знаками вопроса – требования, которые могут изменится, а числами в кружочках – фазы, в которых та или иная фича должна быть сделана. Здесь уже каждый волен обозначать пункты как ЕМУ удобнее для восприятия и понимания.

Преимущества подобного представления информации:

  1. Подобную диаграмму всегда можно охватить «одним взглядом», в то время как 50-100-500-страничный документ – нет. Мозги не резиновые.
  2. На диаграмме можно отображать абсолютно любую информацию: идеи, сомнения, риски, даты, степень выполнения и т.д. Я не призываю не пользоваться MS Project :), просто он предназначен для другого типа задач. Например, у нас сейчас на проекте есть документ требований, mind map и project plan – сосуществуют очень даже сносно.
  3. Диаграмму можно изменить в любой момент времени, если что-то поменялось.
  4. Диаграмму можно обновлять из разных источников. Пришло письмо с каким-то комментарием, меняем диаграмму. Пообщались с клиентом – снова меняем.
  5. По диаграмме можно легко оценивать, сколько времени займет девелопмент, т.к. объем изменений и все взаимосвязи хорошо видны.
  6. По диаграмме можно легко составлять списки вопросов клиентам и трекать состояние обсуждаемых вопросов.
  7. Без сомнения, по диаграмме можно много еще чего, но до этого еще нужно добраться :)

Недостатки:

  1. Приходится делать дополнительную работу на составление диаграммы. Впрочем, это еще вопрос, сколько она времени сэкономит в будущем. Плюс в этот момент мы «укладываем» требования в нашей голове, что позволяет быстрее их запоминать.

В общем и целом, впечатления от использования mind maps очень положительные. Mind maps - в массы? :)

3 comments:

  1. А как насчёт того, что этот mind map разрастётся до невероятных размеров, и его уж никак не удасться "охватить взглядом"?

    Мне эта фича сильно напомнила UML, если честно. Тут ведь можно делать "вложения", т.е. цеплять на конкретные блоки свои "под-диаграммки"?

    ReplyDelete
  2. Безусловно, mind map может разрастись, как и любое другое визуальное представление :). В то же время лишь от автора зависит, насколько он разрастется.

    FreeMind - приложение, которым я пользовался - не позволяет делать "вложения", но зато позволяет "сворачивать" и "разворачивать" ветви в любой момент, что в принципе, тоже помогает. Вполне возможно, что другие приложения умеют делать "вложения", однако не уверен, что это будет правильно с точки зрения идеологии mind maps.

    Сравнивать mind maps с UML не совсем правильно. Все равно что сравнивать XML и HTML. Что лучше? Ничего, у них просто разные сферы применения, вот и все. UML - это стандарт, его диаграммы заточены под решение конкретных задач. Он заставляет тебя подстраиваться под определенные правила. Mind maps - это намного более гибкая структура, которая позволяет сохранять на бумаге/экране состояние твоих "мозгов" в конкретный момент времени :)

    ReplyDelete
  3. Если интересно, есть редактор на .NET WPF. Freeware.

    http://cayra.net/

    ReplyDelete