Основная задача, которую решает техника - определение взаимосвязи между целями и проблемами/задачами бизнеса для создания концепции программного продукта.
BOM - это модель RML (Requirements Modeling Language - язык моделирования требований). RML представляет собой набор диаграмм, используемых для моделирования программного обеспечения с точки зрения бизнес-анализа или управления продуктами. В отличие от UML или SysML, ориентированных на создание сложных моделей проектирования систем, RML ориентирован на цели и задачи проекта.
BOM помогает сформировать общее видение того, почему мы создаем такое решение и какую пользу это решение принесет.
Почему это актуально?
-
Заказчики редко сообщают нам свои цели, но ожидают их достижения.
-
Заказчики часто приходят с запросом на создание какой-то функции, но редко объясняют для чего она нужна.
-
Создавая решение, опираясь на проблемы и функции, мы рискуем создать то, что в конечном итоге не будет использоваться или не поможет в достижении цели заказчика.
Для наглядности рассмотрим на примере от каких трудностей нас может избавить BOM.
Мы получили ряд вводных от заказчика и знаем, что нужно автоматизировать некий процесс, потому что сейчас он выполняется вручную, медленно и с ошибками. Заказчик поделился своими идеями по поводу необходимых функций и мы тоже предложили полезную на наш взгляд функцию.
В целом мы могли бы привязать проблемы и функции к цели “Автоматизировать процесс Х”, но давайте посмотрим к чему это может привести.
У нас получилась автоматизация с набором функций, но непонятно, как эти функции помогут решать проблему медленного выполнения процесса и наличия в нем ошибок. А еще мы не знаем что такое “быстро”, не знаем на каком этапе возникают ошибки и какого рода.
Как устроена BOM
Первое, на что стоит обратить внимание - цель. Автоматизация сама по себе не может быть целью бизнеса. Автоматизировать процесс - это решение, которое приняли, чтобы достигнуть цели бизнеса. А саму цель нам нужно выяснить в ходе общения с заказчиком.
Для достижения целей бизнеса потребуется решить проблемы/задачи, которые не дают достигнуть цели сейчас. Чтобы визуализировать связи между целями, проблемами и решениями в BOM заложена следующая структура:
Для достижения целей может потребоваться несколько “решений”.
Но может произойти и так, что выбранные варианты решения не приведут нас к поставленной цели. Чтобы минимизировать этот риск мы можем задать вопрос: если мы реализуем выбранные решения, мы достигнем цели?
Если уверенности нет, то мы можем добавить еще один уровень целей и проблем, на котором мы сможем более детально проработать ранее обозначенную проблему и поставить более конкретную цель.
Для достижения цели может потребоваться решить несколько проблем, а для решения проблемы может требоваться достичь нескольких целей. В этом случае мы можем добавить новую ветку или несколько. При этом одно решение может участвовать в достижении нескольких целей.
BOM наоборот
Если заказчик приходит с готовым решением, то мы можем использовать BOM для синхронизации видения того, каких целей хочет достичь заказчик и какие проблемы решить. Для этого мы можем начать с конца и пойти от обозначенных функций к целям и проблемам.
Тогда у нас может получиться следующее
Понимая проблему, из-за которой к нам обратились, мы можем:
-
Понять какие функции и для чего нужно реализовать.
-
Выявить наличие функций, которые не решают ни одну из проблем и решить что с ними делать дальше вместе с заказчиком.
-
Планировать обсуждения, разработку, тестирование и демонстрацию функций, группируя их по решаемой проблеме и достигаемой цели.
В результате применения техники мы получаем цельную и связную концепцию решения.
BOM может показать что угодно: что есть проблема, не связанная с целью, что есть функция, не связанная с проблемой, что решение проблемы не помогает в достижении цели и т.д.
BOM - это просто инструмент под конкретную задачу, не лучше и не хуже других. Он помогает снизить риски недопонимания между заказчиком и командой, которая создает решение. Как следствие, заказчик видит, что команде не безразличен результат и его проблему готовы решить.
Появляется общее видение, легче работать с изменениями в требованиях и планировать развитие созданного решения. А это хорошая возможность построить долгосрочные отношения с заказчиком и получить новых клиентов благодаря его рекомендациям.