|
|
(не показана 1 промежуточная версия 1 участника) |
Строка 3: |
Строка 3: |
| == Аннотация == | | == Аннотация == |
| | | |
− | Сбор требований — или, как говорят в контексте agile-разработки, сбор пользовательских историй (''user stories''), весьма важный и сложный аспект разработки ПО. | + | Сбор требований — или, как говорят в контексте agile-разработки, сбор пользовательских историй (''user stories''), весьма важный и сложный аспект разработки ПО. |
| + | |
| Здесь нет никаких стандартных процессов или нотаций, только понимание, что важнейшие факторы эффективности этой фазы — это коммуникация и всевозможные практики уменьшения формализма и облегчения процесса. | | Здесь нет никаких стандартных процессов или нотаций, только понимание, что важнейшие факторы эффективности этой фазы — это коммуникация и всевозможные практики уменьшения формализма и облегчения процесса. |
| В этой статье ''Kenji Hiranabe'' предлагает использовать майндмапы, чтобы сфокусироваться на этих основных факторах при исследовании пользовательских требований, чтобы затем формализировать полученную модель на UML. | | В этой статье ''Kenji Hiranabe'' предлагает использовать майндмапы, чтобы сфокусироваться на этих основных факторах при исследовании пользовательских требований, чтобы затем формализировать полученную модель на UML. |
| + | |
| + | <small> |
| + | Автор — Kenji Hiranabe, занимает должность CEO в компании Change Vision, Inc., работает консультантов в области разработки ПО, перевел на японский множество Agile-книг, включая «Lean Software Development», «Agile Project Management». Также он автор программы [http://jude.change-vision.com/ Jude], комбинированного редактора для UML и майндмапов. Ведет [http://jude-users.com/en/modules/weblog/index.php?user_id=5 блог]. |
| + | </small> |
| | | |
| == Что такое майндмап? == | | == Что такое майндмап? == |
Строка 11: |
Строка 16: |
| Согласно основопологающей книге «The Mind Map Book» от автора методики, Тони Бьюзана (''Tony Buzan''): | | Согласно основопологающей книге «The Mind Map Book» от автора методики, Тони Бьюзана (''Tony Buzan''): |
| : Майндмапы (''mindmaps'', они же «интеллектуальные карты», «карты памяти», «ментальные карты») — это графическая техника ведения заметок и визуализации идей, используя лучисто-ветвистую (''радиантную'') структуру. При этом из центрального рисунка растут ветви, помеченные ключевыми словами, соответствующие ''Ключевым Упорядочивающим Идеям'', далее рекурсивно ветвятся поддеревья и т.п. | | : Майндмапы (''mindmaps'', они же «интеллектуальные карты», «карты памяти», «ментальные карты») — это графическая техника ведения заметок и визуализации идей, используя лучисто-ветвистую (''радиантную'') структуру. При этом из центрального рисунка растут ветви, помеченные ключевыми словами, соответствующие ''Ключевым Упорядочивающим Идеям'', далее рекурсивно ветвятся поддеревья и т.п. |
| + | |
| + | ---- |
| | | |
| В майндмапах нужно использовать цвета, картинки и схемы, потому что человеческий мозг гораздо лучше приспособлен для распознавания шаблонов и образов, чем чисел и слов. | | В майндмапах нужно использовать цвета, картинки и схемы, потому что человеческий мозг гораздо лучше приспособлен для распознавания шаблонов и образов, чем чисел и слов. |
| | | |
| Роджер Сперри (''Roger Sperry''), нобелевский лауреат в области физиологии, обнаружил, что кора головного мозга подразделяется на два полушария, между которыми ассиметрично распределены функции интеллекта. | | Роджер Сперри (''Roger Sperry''), нобелевский лауреат в области физиологии, обнаружил, что кора головного мозга подразделяется на два полушария, между которыми ассиметрично распределены функции интеллекта. |
− | Его исследования показывают, что правая сторона доминирует в восприятии ритма, цветов и размеров, пространственном ориентировании, целостном восприятии (гештальте), воображении и мечтах; | + | Его исследования показывают, что правая сторона доминирует в восприятии ритма, цветов и размеров, пространственном ориентировании, целостном восприятии (''гештальте''), воображении и мечтах; |
− | в то время как левая сторона сильна в логике и анализе, операциях над словами, числами и последовательностями/списками. | + | в то время как левая сторона сильна в логике и анализе, операциях над словами, числами и последовательностями/списками. |
| + | |
| + | Благодаря использованию обоих (и левого и правого) полушарий, майндмапы реализуют больший потенциал человеческой памяти, чем обычные, линейные записи. |
| | | |
− | Благодаря использованию обоих (и левого и правого) полушарий, майндмапы реализуют больший потенциал человеческой памяти, чем обычные, линейные записи.
| |
| Настолько эффективны майндмапы благодаря следующим свойствам: | | Настолько эффективны майндмапы благодаря следующим свойствам: |
| ;Ориентированность на ключевые слова (''Keyword Orientation''): Основным структурным элементом майндмапов являются не целые предложения, а ключевые слова. | | ;Ориентированность на ключевые слова (''Keyword Orientation''): Основным структурным элементом майндмапов являются не целые предложения, а ключевые слова. |
| ;Свободные синтаксис и семантика (''Loose Syntax and Semantics''): Наличие произвольной ассоциации — достаточная причина для связи между ключевыми словами. | | ;Свободные синтаксис и семантика (''Loose Syntax and Semantics''): Наличие произвольной ассоциации — достаточная причина для связи между ключевыми словами. |
| ;Удобство — легко использовать и быстро рисуются: Можно использовать майндмапы даже в реальном времени, для параллельного стенографирования разного рода собраний. | | ;Удобство — легко использовать и быстро рисуются: Можно использовать майндмапы даже в реальном времени, для параллельного стенографирования разного рода собраний. |
− | ;Высокоуровневый обзор: Майндмап целиком легко окинуть взглядом. | + | ;Высокоуровневый обзор: Майндмап целиком легко окинуть взглядом. |
| ;«Вспомнить все»: Майндмап пробуждает воспоминания о полном контексте ситуации, фиксируемой в момент его создания. | | ;«Вспомнить все»: Майндмап пробуждает воспоминания о полном контексте ситуации, фиксируемой в момент его создания. |
| ;Частичная структурированность (''Semistructured''): Майндмап может иметь некий заданный шаблон, но он также может расти в любых других направлениях (по требованию), например, чтобы оперативно фиксировать результаты устных переговоров в слабоструктурированном общении. | | ;Частичная структурированность (''Semistructured''): Майндмап может иметь некий заданный шаблон, но он также может расти в любых других направлениях (по требованию), например, чтобы оперативно фиксировать результаты устных переговоров в слабоструктурированном общении. |
| | | |
− | {{note}} Слабоструктурированные данные (''Semistructured data'') — это данные с иерархической структурой, но без заранее определенной схемы. Слабоструктурированные интервью — это когда набор вопросов заранее неизвестен. | + | {{note}} ''Слабоструктурированные'' данные (''Semistructured data'') — это данные с иерархической структурой, но без заранее определенной схемы. ''Слабоструктурированные'' интервью — это когда набор вопросов заранее неизвестен. |
| | | |
| [[Image:An example mind map used to plan a project Christmas party.jpg|center|framed|Пример майндмапа «Планирование Рождества»]] | | [[Image:An example mind map used to plan a project Christmas party.jpg|center|framed|Пример майндмапа «Планирование Рождества»]] |
Строка 64: |
Строка 72: |
| === Исследование пользовательских требований с помощью майндмапов === | | === Исследование пользовательских требований с помощью майндмапов === |
| | | |
− | Пользовательская история — это по сути фрагмент пользовательского требования. | + | Пользовательская история — это по сути фрагмент пользовательского требования. |
| + | |
| А я предлагаю использовать майндмапы пользовательских требований, чтобы целостно ухватить не только осколки, но и все пользовательские требования целиком. | | А я предлагаю использовать майндмапы пользовательских требований, чтобы целостно ухватить не только осколки, но и все пользовательские требования целиком. |
| | | |
− | С одной стороны майндмап не хуже в «напоминании», чем карта истории, | + | С одной стороны майндмап не хуже в «напоминании», чем карта истории, |
| + | |
| с другой — он явно более удобен для высокоуровнего обзора всей ситуации. | | с другой — он явно более удобен для высокоуровнего обзора всей ситуации. |
| Также майндмап — гибкий контейнер данных, подходящий для конспектирования слабоструктурированных интервью. | | Также майндмап — гибкий контейнер данных, подходящий для конспектирования слабоструктурированных интервью. |
Строка 73: |
Строка 83: |
| когда беседа пойдет в неожиданном направлении — может легко добавить и новую ветвь, чтобы сконцентрироваться на темах, серьезно заинтересовавших опрашиваемого. | | когда беседа пойдет в неожиданном направлении — может легко добавить и новую ветвь, чтобы сконцентрироваться на темах, серьезно заинтересовавших опрашиваемого. |
| | | |
− | [[Image:User-wish mind map template.png|center|frame|Шаблон майндмапа для пользовательских требований]] | + | [[Image:User-wish mind map template.png|center|frame|Шаблон майндмапа для пользовательских требований]] |
| + | |
| + | Этот рисунок показывает заготовленный шаблон, для фиксации пользовательских требований. |
| | | |
− | Этот рисунок показывает заготовленный шаблон, для фиксации пользовательских требований.
| + | Т.е. заранее подготовлены следующие вопросы: |
− | Т.е. заранее подгтовлены следующие вопросы: | + | |
| | | |
| ;Кто и почему заинтересован в этой системе? (''Who will be happy because of this system and why?''): Я всегда задаю сначала именно этот вопрос, чтобы выяснить всех вовлеченных лиц и их интересы, текущие проблемы, ситуационный контекст, имеющиеся ожидания. Это одновременно и ключевые факторы успеха и источники риска, стоящие за требованиями к системе. | | ;Кто и почему заинтересован в этой системе? (''Who will be happy because of this system and why?''): Я всегда задаю сначала именно этот вопрос, чтобы выяснить всех вовлеченных лиц и их интересы, текущие проблемы, ситуационный контекст, имеющиеся ожидания. Это одновременно и ключевые факторы успеха и источники риска, стоящие за требованиями к системе. |
Строка 87: |
Строка 98: |
| А последняя ветвь, «Homework», фиксирует уже не вопрос, а все то, в чем не удалось разобраться в проведенных переговорах. | | А последняя ветвь, «Homework», фиксирует уже не вопрос, а все то, в чем не удалось разобраться в проведенных переговорах. |
| | | |
− | Например, я использовал этот формат для сбора требований по городской библиотечной системе — опрашивая библиотекаря я параллельно записывал такой майндмап. Более того, я присоединил мой ноутбук к дополнительному проектору и оперативно правил этот майндмап одновременно с собеседованием. А элементы в ветке «Homework», по сути, определяют план следующей встречи. | + | Например, я использовал этот формат для сбора требований по городской библиотечной системе — опрашивая библиотекаря я параллельно строил подобный майндмап. Более того, я присоединил мой ноутбук к дополнительному проектору и оперативно правил этот майндмап одновременно с собеседованием. А элементы в ветке «Homework», по сути, определяют план следующей встречи. |
| + | |
| Удобство фиксации таких «непредсказуемых» тем и демонстрирует гибкость майндмапов по ведению слабоструктурированных данных. | | Удобство фиксации таких «непредсказуемых» тем и демонстрирует гибкость майндмапов по ведению слабоструктурированных данных. |
| | | |
Строка 96: |
Строка 108: |
| * Создать гибкую модель из моделей сценариев использования и модель сущностей предметной области. Для того и другого майндмап пользовательских требований будет прекрасной исходной точкой. | | * Создать гибкую модель из моделей сценариев использования и модель сущностей предметной области. Для того и другого майндмап пользовательских требований будет прекрасной исходной точкой. |
| | | |
− | При создании майндмапа пользовательских требований, я добавляю иконки субъектов (''actors''), сценариев и классов, более того, все эти иконки заранее «заготовлены» в шаблонных ветках майндмап-анкеты. | + | При создании майндмапа пользовательских требований, я добавляю иконки субъектов (''actors''), сценариев и классов, более того, все эти иконки заранее «заготовлены» в шаблонных ветках майндмап-анкеты. |
− | | + | |
| | | |
| [[Image:Conversion from a user-wish mind map to domain models.png|center|frame|Переход от майндмапа пользователя к модели предметной области]] | | [[Image:Conversion from a user-wish mind map to domain models.png|center|frame|Переход от майндмапа пользователя к модели предметной области]] |
Строка 104: |
Строка 115: |
| * Cбор требований, когда происходит быстрое выявление обмен туманными идеями и ключевыми высокоуровневыми концепциями. Этот этап можно характеризовать как экстенсивный (divergent), что требует и соответствующего мышления («не упустить ничего») и подходящих инструментов лаконичного конспектирования (т.е. майндмапов). | | * Cбор требований, когда происходит быстрое выявление обмен туманными идеями и ключевыми высокоуровневыми концепциями. Этот этап можно характеризовать как экстенсивный (divergent), что требует и соответствующего мышления («не упустить ничего») и подходящих инструментов лаконичного конспектирования (т.е. майндмапов). |
| * Моделирование на UML, в котором моделируется предметная область и сценарии собранные на первом этапе. И мышление на этом этапе будет другим — интенсивным/конвергентным (convergent). | | * Моделирование на UML, в котором моделируется предметная область и сценарии собранные на первом этапе. И мышление на этом этапе будет другим — интенсивным/конвергентным (convergent). |
− |
| |
| | | |
| [[Image:Converted Domain Models in Usecases and Class diagrams.png|center|frame|Модель предметной области, преобразованная в диаграммы классов и пользовательских сценариев]] | | [[Image:Converted Domain Models in Usecases and Class diagrams.png|center|frame|Модель предметной области, преобразованная в диаграммы классов и пользовательских сценариев]] |
| | | |
| == Заключение == | | == Заключение == |
− | Шаблонные майндмапы представляют прекрасный слабоструктурированный формат для расспросов, включая как структуру обязательных важных вопросов, так и удобство захвата неожиданных тем. Это также помогает исключить ошибки общения и ухватить «мягкую» высокоуровневую структуру пользовательских требований. Также майндмапы помогают вспомнить полный контекст требований на момент их записи. | + | Шаблонные майндмапы представляют прекрасный слабоструктурированный формат для расспросов, включая как структуру обязательных важных вопросов, так и удобство захвата неожиданных тем. Это также помогает исключить ошибки общения и ухватить «мягкую» высокоуровневую структуру пользовательских пожеланий и требований. Также майндмапы помогают вспомнить полный контекст требований на момент их записи. |
− | Ну, а после сбора идей на майндмапе, уже можно «сеять» ключевые слова — элементы майндмапа, чтобы «вырастить» соответствующие элементы UML-моделей. | + | Ну, а после сбора идей на майндмапе, уже можно «сеять» ключевые слова — элементы майндмапа, чтобы «вырастить» соответствующие элементы UML-моделей. |
− | Тут уже можно использовать строгий синтаксис UML, чтобы построить семантически богатую модель предметной области и использовать ее для проектирования приложения. | + | |
| + | Тут уже можно использовать строгий синтаксис UML, чтобы построить семантически «богатую» модель предметной области и использовать уже ее для проектирования приложения. |
| + | |
| + | В Agile-разработке программного обеспечения считается, что одним из ключевых факторов успеха проекта — это коммуникация между всеми его участниками. |
| + | |
| + | Конечно, существует множество способов передачи и обмена информацией, но ни строгие формальные документы, ни обычные устные переговоры не являются адекватным решением. |
| + | |
| + | Ничто так не эффективно, как правильный набор лаконичных схем и графов, схватывающих самую суть исследуемой ситуации. |
| | | |
− | В Agile-разработке программного обеспечения считается, что одним из ключевых факторов успеха проекта — это коммуникация между всеми его участниками.
| |
− | Конечно, существует множество способов передачи и обмена информацией, но ни строгие формальные документы, ни обычные устные переговоры не являются адекватным решением.
| |
− | Ничто так не эффективно, как правильный набор лаконичных схем и графов, схватывающих самую суть исследуемой ситуации.
| |
| И тут майндмапы и UML-диаграммы работают весьма хорошо, но каждый в своей собственной области: | | И тут майндмапы и UML-диаграммы работают весьма хорошо, но каждый в своей собственной области: |
− | * Майндмапы весьма хороши для сбора туманных и неструктурированных пользовательских тербований и затем частичного их структурирования. | + | * Майндмапы весьма хороши для сбора туманных и неструктурированных пользовательских требований и затем частичного их структурирования. |
| * UML диаграммы удобно порождать из «стабилизировавшихся» майндмапов, для детальной проработки и дальнейшего стандартного использования в цикле разработке ПО. | | * UML диаграммы удобно порождать из «стабилизировавшихся» майндмапов, для детальной проработки и дальнейшего стандартного использования в цикле разработке ПО. |
| | | |
Строка 125: |
Строка 139: |
| === Основы === | | === Основы === |
| | | |
− | ;Tony Buzan «The Mind Map Book»: Собственно «библия» майндмаппинга. | + | ;Tony Buzan «The Mind Map Book»: Собственно «библия» майндмаппинга. Существует русский перевод — «Супермышление», по этой книге есть [http://team.custis.ru/2009/08/mindmaps.html русскоязычный видеосеминар]. |
− | ;Craig Larman «Agile and Iterative Development»: Краткое введение в майндмаппинг как agile-практику для быстрой работы с требованиями. | + | ;Craig Larman «Agile and Iterative Development»: Краткое введение в майндмаппинг как agile-практику для быстрой работы с требованиями. |
| ;Alistair Cockburn «Agile Software Development»: В частности, там рассказывается об упомянутом в статье подходе «Keep/Problem/Try» к проведению. | | ;Alistair Cockburn «Agile Software Development»: В частности, там рассказывается об упомянутом в статье подходе «Keep/Problem/Try» к проведению. |
| ;Scott Ambler «Agile Modeling»: Собственно родоначальник понятия «Agile Modeling». | | ;Scott Ambler «Agile Modeling»: Собственно родоначальник понятия «Agile Modeling». |
| ;Mike Cohn «User Stories Applied»: Обоснование, что Agile-сбор требований требует сдвига парадигмы от написания к общению. | | ;Mike Cohn «User Stories Applied»: Обоснование, что Agile-сбор требований требует сдвига парадигмы от написания к общению. |
− | ;James and Suzanne Robertson «Mastering the Requirements Process»: Кратко обсуждает идею использования майндмапов в процессе сбора требований. | + | ;James and Suzanne Robertson «Mastering the Requirements Process»: Кратко обсуждает идею использования майндмапов в процессе сбора требований. |
| + | |
| ;Esther Derby and Diana Larsen «Agile Retrospectives»: Источник третьего рисунка-майндмапа. | | ;Esther Derby and Diana Larsen «Agile Retrospectives»: Источник третьего рисунка-майндмапа. |
| | | |
Строка 138: |
Строка 153: |
| * [http://www.eric-blue.com/blog/2006/12/mindmapping_and_the_software_d.html Mind mapping and the software development life cycle]: Подборка ссылок по майндмаппингу в процессе разработки ПО. | | * [http://www.eric-blue.com/blog/2006/12/mindmapping_and_the_software_d.html Mind mapping and the software development life cycle]: Подборка ссылок по майндмаппингу в процессе разработки ПО. |
| * [http://roots.dnd.no/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=164 Utilizing Mind Maps for Essential Use Case Specification]: Сходства между майндмапами и сценариями. | | * [http://roots.dnd.no/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=164 Utilizing Mind Maps for Essential Use Case Specification]: Сходства между майндмапами и сценариями. |
− |
| |
| | | |
| {{replicate-from-custiswiki-to-lib}} | | {{replicate-from-custiswiki-to-lib}} |
Сбор требований — или, как говорят в контексте agile-разработки, сбор пользовательских историй (user stories), весьма важный и сложный аспект разработки ПО.
Здесь нет никаких стандартных процессов или нотаций, только понимание, что важнейшие факторы эффективности этой фазы — это коммуникация и всевозможные практики уменьшения формализма и облегчения процесса.
В этой статье Kenji Hiranabe предлагает использовать майндмапы, чтобы сфокусироваться на этих основных факторах при исследовании пользовательских требований, чтобы затем формализировать полученную модель на UML.
Согласно основопологающей книге «The Mind Map Book» от автора методики, Тони Бьюзана (Tony Buzan):
В майндмапах нужно использовать цвета, картинки и схемы, потому что человеческий мозг гораздо лучше приспособлен для распознавания шаблонов и образов, чем чисел и слов.
Благодаря использованию обоих (и левого и правого) полушарий, майндмапы реализуют больший потенциал человеческой памяти, чем обычные, линейные записи.
Например, использование майндмапов весьма уместно и эффективно в следующих ситуациях или даже фазах разработки ПО:
.
Пользовательская история — это по сути фрагмент пользовательского требования.
А я предлагаю использовать майндмапы пользовательских требований, чтобы целостно ухватить не только осколки, но и все пользовательские требования целиком.
с другой — он явно более удобен для высокоуровнего обзора всей ситуации.
Также майндмап — гибкий контейнер данных, подходящий для конспектирования слабоструктурированных интервью.
Т.е. интервьювер может использовать заготовленные шаблоны для начала опроса, но
когда беседа пойдет в неожиданном направлении — может легко добавить и новую ветвь, чтобы сконцентрироваться на темах, серьезно заинтересовавших опрашиваемого.
Этот рисунок показывает заготовленный шаблон, для фиксации пользовательских требований.
Т.е. заранее подготовлены следующие вопросы:
Ответ на этот вопрос определяет пользователей системы, и потенциальных субъектов в сценариях использования (use case actors).
А последняя ветвь, «Homework», фиксирует уже не вопрос, а все то, в чем не удалось разобраться в проведенных переговорах.
Например, я использовал этот формат для сбора требований по городской библиотечной системе — опрашивая библиотекаря я параллельно строил подобный майндмап. Более того, я присоединил мой ноутбук к дополнительному проектору и оперативно правил этот майндмап одновременно с собеседованием. А элементы в ветке «Homework», по сути, определяют план следующей встречи.
Удобство фиксации таких «непредсказуемых» тем и демонстрирует гибкость майндмапов по ведению слабоструктурированных данных.
После исследования цельной картины пользовательских требований, можно продолжать двумя способами:
При создании майндмапа пользовательских требований, я добавляю иконки субъектов (actors), сценариев и классов, более того, все эти иконки заранее «заготовлены» в шаблонных ветках майндмап-анкеты.
Использование майндмапов в сочетании с UML означает разделение требований на две модели:
Шаблонные майндмапы представляют прекрасный слабоструктурированный формат для расспросов, включая как структуру обязательных важных вопросов, так и удобство захвата неожиданных тем. Это также помогает исключить ошибки общения и ухватить «мягкую» высокоуровневую структуру пользовательских пожеланий и требований. Также майндмапы помогают вспомнить полный контекст требований на момент их записи.
Ну, а после сбора идей на майндмапе, уже можно «сеять» ключевые слова — элементы майндмапа, чтобы «вырастить» соответствующие элементы UML-моделей.
Тут уже можно использовать строгий синтаксис UML, чтобы построить семантически «богатую» модель предметной области и использовать уже ее для проектирования приложения.
В Agile-разработке программного обеспечения считается, что одним из ключевых факторов успеха проекта — это коммуникация между всеми его участниками.
Конечно, существует множество способов передачи и обмена информацией, но ни строгие формальные документы, ни обычные устные переговоры не являются адекватным решением.
Ничто так не эффективно, как правильный набор лаконичных схем и графов, схватывающих самую суть исследуемой ситуации.
И тут майндмапы и UML-диаграммы работают весьма хорошо, но каждый в своей собственной области: