Бизнес-анализ от а до я: гид для начинающих

Tekst
Przeczytaj fragment
Oznacz jako przeczytane
Jak czytać książkę po zakupie
Nie masz czasu na czytanie?
Posłuchaj fragmentu
Бизнес-анализ от а до я: гид для начинающих
Бизнес-анализ от а до я: гид для начинающих
− 20%
Otrzymaj 20% rabat na e-booki i audiobooki
Kup zestaw za 18,72  14,98 
Бизнес-анализ от а до я: гид для начинающих
Бизнес-анализ от а до я: гид для начинающих
Audiobook
Czyta Авточтец ЛитРес
9,36 
Zsynchronizowane z tekstem
Szczegóły
Czcionka:Mniejsze АаWiększe Aa

Шаг 2 – отличный БА.

На этом этапе я продолжаю работать с требованиями, уделяя больше внимания различным аспектам управления требованиями и стремясь принять на себя больше ответственности и самостоятельности для полноценного документирования функций системы. Теперь всё это происходит уже не под столь пристальным вниманием моего ментора – ведущего бизнес-аналитика.

Через пару месяцев мой проектный БА оценил развитие моих навыков и способности, и уже стал доверять мне документирование требований и дизайнов целых функций компонента системы. Это было несказанно радостно – ощущение, что ты создаешь что-то целостное от начала до конца, которое я описывал ранее, только усилилось.

Что же такое функция? Возьмем пример из предыдущего этапа: у нас есть компонент системы под названием “система управления информацией о клиентах”. В этом компоненте существуют различные функции, такие как создание профиля клиента, редактирование профиля, просмотр и управление кредитной информацией о клиенте и многие другие. Каждую такую функцию можно далее разделить на множество подфункций или требований. Одно из требований, касающееся кредитной информации, мы уже рассмотрели на предыдущем шаге. Функция представляет собой определённый набор свойств и действий (как пользователя, так и системы), которые позволяют конечному пользователю выполнить полноценное и завершённое действие с определённым ожидаемым результатом. Как я упоминал ранее, например, функция "создать профиль клиента".

С течением времени я начал получать задачи по подготовке функций. Виды задач, активности и ответственность стали разнообразнее, что отражало мой продолжающийся профессиональный рост. Я ощущал, что уровень сложности моих задач повышается: теперь задача заключалась не просто в написании требований и их документировании. Теперь мне требовалось анализировать нужную функцию, декомпозировать её, определять и документировать необходимые требования и дизайн, корректно связывать все требования между собой в матрице требований, управлять статусом готовности и блокерами, а также подготавливать вопросы для заинтересованных сторон (stakeholders) со стороны клиента. Да, это был настоящий взрыв нового опыта! Как следствие, к задачам, связанным с функциями, добавились общие профессиональные задачи в связи с увеличившейся сложностью: проверка и поддержание (а при необходимости изменение) информационной модели/структуры требований и дизайна, поддержание их логичности, понимание работы с моделью данных, разработка спецификаций модели данных, понимание жизненного цикла разработки системы, а также развитие дополнительных и необходимых "мягких" навыков. Столько всего… наверное, я сразу «раскрыл карты» о навыках и активностях, которые буду дальше описывать, но так вот – никаких секретов! Единственное, я упомянул новое слово «стейкхолдер». Поясню: стейкхолдер – это человек, который ожидает и будет иметь какую-то выгоду от ИТ-продукта, который я создаю, или будет его использовать. В проектах компаний-поставщиков сервисов или продуктов, которые нанимают другие компании, основными стейкхолдерами всегда являются люди на стороне клиента, те, кто ожидает готовый продукт. Это может быть всего один человек, взаимодействующий с сервисной компанией, или множество людей на стороне клиента. Это люди разных уровней в организации клиента – от генерального директора до заместителя директора ИТ-департамента, экономического отдела или отдельной проектной команды, курирующей создание продукта. В большинстве случаев именно стейкхолдеры являются источниками входной информации о требованиях к продукту. Именно с ними БА выявляет требования к системе/продукту. Позже мы подробно рассмотрим БА-навык «управление стейкхолдерами».

С точки зрения процессов и активностей, у меня уменьшилось количество времени, которое я выделял ежедневно на обсуждения со своим ведущим БА, так как он стал более уверен в моем умении документировать требования и в моей профессиональности в целом. Иногда у меня даже не было ежедневных созвонов. Но вместо этого появились серьезные, хоть и нечастые, созвоны, где мы обсуждали мою подготовку документации по всей функции. Для описания активностей и навыков я возьму функцию, которой я занимался, – «Управление адресной информацией», которая является частью компонента «Система управления информацией о клиенте». Мне было поручено полностью подготовить необходимые дизайн-спецификации для разработки этой функции. Сначала мне нужно было прояснить бизнес-цели создания и понять, какие входные данные у меня есть. Единственным моим источником был мой ведущий БА, который работал и общался с командой клиента для выяснения любых вопросов. Я запланировал с ним звонок и начал готовиться к обсуждению. Заранее подготовил список вопросов, которые помогли бы мне определить границы задачи и прояснить неясные моменты. Я проверил существующие бизнес-требования, упоминавшие что-либо о адресной информации, и включил их в свой вопросный список, чтобы подтвердить, какие из них будут использоваться для создания функциональных требований. Я сделал черновую декомпозицию функции на набор предварительных функциональных требований.

Декомпозиция началась с базовой функциональности по созданию, редактированию, просмотру и удалению адреса. Затем я подумал, что поскольку система предназначена для бизнес-клиентов, они наверняка могут иметь несколько адресов. Поэтому я добавил требования по управлению списком адресов. Очевидно, потребуются требования к работе с полями/параметрами создаваемого адреса: какие поля доступны, каковы их свойства и типы. Например, некоторые поля – это простые текстовые поля, а другие представляют собой список, из которого можно выбрать только одно из предопределённых значений. Также я включил функциональность различения типов адресов – например, физический адрес и адрес для выставления счетов, при этом основные адреса могут отображаться также на главной странице профиля клиента. Плюс такого подхода к декомпозиции, прежде чем начать писать детальные требования и дизайн, заключается в том, что ты уже разделил одну большую задачу на несколько и можешь выбирать, с какой лучше начать. Когда начинаешь работу, ты уверен, что не будет пересечений в разных активностях, которые могут привести к необходимости постоянно переделывать уже готовые артефакты (требования, дизайн и т. д.). Теперь можно было и обсудить всё с моим БА.

На звонке мы определили, какие вопросы БА должен прояснить с клиентами, так как, например, были неясности в бизнес-требованиях, которые по своей природе не должны быть детализированы. Также я получил ценное замечание, о котором совсем не подумал – об интеграции моей функции с существующей в нашем продукте системой управления адресами. Поскольку адреса используются во множестве модулей/компонентов, у нас есть отдельный компонент, предназначенный для этой цели. Мы обсудили необходимость создания карты интеграционных связей между элементами, а также необходимость мне изучить нашу существующую систему управления адресами. Последним пунктом обсуждения стали первые требования из декомпозиции, которые были наиболее понятны и которые можно было начать документировать. В результате звонка появились задачи для каждого из нас, которые нужно выполнить в определённые сроки. БА попросил меня также прислать итоги нашего звонка в письме. Как всегда, любое обсуждение планируемых задач с коллегой оказалось очень полезным – это большой плюс работы в команде, даже если команда маленькая. В течение 30 минут после звонка я отправил митинг-ноутс (Meeting Notes) в письме, где включил информацию о том, что мы обсудили, кто и что должен сделать и когда. Хочу сделать акцент на этом фантастически полезном и ценном артефакте – «митинг-ноутс», который я использую в своей работе в ИТ уже 10 лет и везде, где это возможно. Почему фантастически? Потому что этот артефакт помогает мне структурировать планы мои, команды и клиента; минимизировать риски возможных неясностей во время совещаний; защитить от возникновения любых видов споров как внутри команды, так и с клиентом по поводу договоренностей, указанных в этих записях; определить ответственные стороны и сроки выполнения; и является самым надежным коммуникационным каналом для сохранения информации. Когда у каждого участника совещания есть, по сути, копия документа о договоренностях в его личной электронной почте, то очень сложно изменить эту информацию. Я лично всегда отправляю митинг-ноутс, даже когда меня никто об этом не просит. Это дает мне 100% уверенность, что информация донесена всем, даже если на самом совещании кто-то был не вовлечен по каким-либо причинам; такой человек может потом найти время и прочитать митинг-ноутс позже. И за свою карьеру у меня было множество случаев, когда этот артефакт спасал от масштабных проблем или споров на разных уровнях менеджмента между клиентами и моей компанией. Например, когда речь идет о финансах, и кто-то на стороне клиента упустил важный пункт, который был указан в митинг-ноутс, этот человек может пытаться убеждать на словах, что чего-то не было или что-то было неправильно понято. Однако, пересылка участнику митинг-ноутс письма шестимесячной давности, где он был в числе получателей и согласился со всем предложенным, решает проблему положительно почти всегда. Я приведу небольшой пример митинг-ноутс, который отослал, чтобы показать именно структуру митинг-ноутс письма – простую и очень эффективную.

Письмо, которое я отправил своему БА:

Тема письма: «Митинг нотсы от 10 июля: обсудить функцию управление адресной информацией»

Тело письма: «

Обсудили:

Требования к новой функции

Требования, которые можно брать в работу

Требования, которые нужно прояснить с клиентом (номера требований)

Экшн айтем (action items – пункты действий):

Прояснить бизнес требования с клиентом/// ведущий БА /// до конца недели (список требований прикреплен)

Изучить и включить интеграционный маппинг/// Миша /// следующие две недели.

 

Подготовить дизайн к требованиям А,Б,С, И так далее/// Миша /// эта неделя.

Дополнение: допиши если я что-то упустил.»

Вот такое короткое письмо, из которого каждый понял, что от кого и когда требуется. Очень рекомендую его использование в любых ситуациях и для любой аудитории. Естественно, уровень детализации и стиль написания зависят от типа целевой аудитории. Если это менеджерское совещание, то формат должен отображать только суть, простым и понятным языком. Если же это созвон с техническими командами и проектными менеджерами, то можно и нужно описать детально принятые решения с техническими ключевыми моментами и детальным планом действий. Если есть сомнения в правильности понимания каких-то пунктов, то перед отправкой митинг-ноутс очень рекомендую напрямую уточнить у нужного человека, что именно имелось в виду. Если доступа у вас нет или прояснение невозможно, потому что клиент сказал что-то, что вы поняли, но возможно не на 100% правильно, то в самих митинг-ноутс обязательно нужно указать или оставить примечание к неясному пункту: «Пожалуйста, поправьте или дополните этот пункт, если есть неточности», и можно также упомянуть конкретного человека.

Затем я занялся документированием уже финального варианта функциональных требований, которые были готовы к просмотру клиентом. Я определил, в какой документ включить блок требований, и какой формат нумерации использовать. Формат нумерации я уже упоминал ранее и обсудил полезность этого уникального номера требования, который впоследствии может использоваться при обсуждении с членами команды или клиентом. При просмотре требований он позволяет сделать удобные ссылки на конкретное требование, без необходимости цитировать его полностью. Например, требование имеет номер ФР-СИМ-СИД-02. Клиент при проверке требований может сделать замечание: «Требование ФР-СИМ-СИД-02 не понятно, следует добавить детали». В плане формата требований я старался следовать простому правилу – стараться уместить требование в одно предложение, написать его в максимально простой форме. У меня было черновое требование, которое звучало как: «Должна быть возможность создавать адрес для клиента, заполнять необходимые поля и редактировать их при необходимости». Я разбил этот черновик на следующие требования:

– «Система должна предоставлять возможность создать адрес для клиента»

– «Система должна предоставлять возможность редактировать адрес для клиента»

– «Система должна содержать следующие данные в адресе: тип адреса, страна, штат, город, улица, номер здания, номер офиса, индекс.»

Атомарность требований позволяет затем значительно упростить решение любых вопросов, например, с клиентом, когда появляются запросы или пожелания к дополнению или изменению требований. Приведу простой пример, с которым я сталкивался: клиент может просмотреть и согласиться с требованиями №2 и №3, но пояснить, что для №1 он хотел бы уточнить, из каких частей приложения можно будет инициировать создание адреса. В этом случае, возможно, потребуется изменение только одного требования, в то время как остальные два уже будут утверждены. Этот пример, конечно, условный и масштабируемый – у меня было 50, 100 и даже 300 таких требований, и их простота и самодостаточность обеспечивали эффективный процесс проверки и утверждения с клиентом. С другой стороны, я мог помечать часть требований как готовых к проверке, а другую часть – как требующих прояснений.

После подготовки всех функциональных требований я проверил, что все они имеют связи в матрице отслеживаемости требований. На тот момент я контролировал наличие связей между бизнес и функциональными требованиями. Я проверял, чтобы каждое функциональное требование соответствовало по крайней мере одному бизнес-требованию, то есть чтобы не было «бесполезных» функциональных требований, на которые будет потрачено время, но которые не нужны клиенту. Также я проверял, чтобы не было бизнес-требований, которые не указывают на какие-либо функциональные требования, т.е. чтобы я не упустил ничего, что хочет клиент. После того как все требования были написаны, я отправил их на проверку ведущему БА, который дал несколько комментариев. Я внес правки и, в итоге, функциональные требования были отправлены на просмотр и утверждение клиенту.

Утверждение требований

Вы, возможно, сейчас задаете мне вопрос: «Зачем их отправлять, если уже обсудили бизнес-требования и понятно, что нужно делать?» Тут всё просто – каждый проект имеет контекст, который позволяет определить критерии, по которым просмотр и утверждение требований требуется клиентом или нет. В моем случае было несколько критериев: 1) это был проект, использующий водопадную методологию разработки, когда сначала подготавливается абсолютно вся документация, прежде чем начать создавать продукт/систему разработчиками. Соответственно, очень важно с самого начала определить даже на функциональном уровне, что хочет клиент. 2) Проект имел конкретные сроки, в которые мы должны были создать продукт. Поэтому именно утверждение клиентом требований позволяло быть уверенным и застрахованным от рисков изменения требований при старте разработки, так как утвержденные клиентом требования уже не могли быть изменены.

А в целом это моя рекомендация и очень полезная практика – без привязки к критериям, всегда иметь процесс утверждения требований, который в дальнейшем спасет вас от рисков и проблем в середине проекта, когда клиент вдруг решит, что создается не та система, которую он хотел. У меня было в будущем достаточно ситуаций, когда моя настойчивость в утверждении требований спасала от финансовых потерь со стороны моей компании-поставщика продукта. Например, клиент подписывал требование, а уже во время разработки продукта через 6-8 месяцев внезапно приходил какой-то другой представитель клиента и говорил: «Нет, это так не должно работать – меняйте на вот такую логику». В ответ на это мы доставали подписанный документ его же компанией и сообщали, что любые изменения будут делаться только через запрос на изменение, который будет стоить денег. И тут хочу упомянуть еще один важный момент – когда вы пишете функциональное требование, в котором описано парой слов, что «можно указать номер дома», это может показаться не важной деталью системы. Но когда в середине проекта придет клиент и скажет: «Ой, забыл, допишите еще номер дома, блока или промышленной зоны», тогда вы оцените влияние этого изменения, и оно, возможно, будет стоить десятки тысяч долларов для клиента, потому что, чтобы добавить информацию о промышленной зоне, нужно будет изменить визуальный интерфейс приложения, модели хранения данных, интеграционный интерфейс и возможно даже сторонний модуль адресов. И тогда вы подумаете: «Ох, как хорошо, что я утвердил функциональные требования с клиентом!» И естественно, я не имею в виду вербальное утверждение (просто в разговоре с клиентом). Я говорю о документальном утверждении – через электронную почту, в электронной системе управления разработкой/задачами или подписании бумажного документа.

Пока я ждал утверждения или комментариев от БА по итогам обсуждения списка функциональных требований с клиентом, я сосредоточился на написании дизайна к требованиям. Дизайн выглядел примерно так же, как я уже описывал на первом этапе, поэтому не буду еще раз описывать, что я делал. Я старался постоянно улучшать качество дизайна. Но вот завершая первый же дизайн, я столкнулся с новой интересной задачей.

Как вы, наверное, помните, в примере дизайна функционального требования последним пунктом я описывал раздел "изменение данных". Когда я написал дизайн к своему первому функциональному требованию по адресной системе и дошел до этого раздела, то я задал себе вопрос: «А какие данные и где будут меняться?» И я понял, что у меня появилась новая задача, отличная от тех, что были, когда я просто помогал своему БА создавать дизайн функций в существующем компоненте. Отличие проявилось в том, что теперь я занимался созданием компонента (Адресная система) «с нуля», и соответственно никакой модели данных в данный момент не существовало вообще в системе и никто о ней не знал. Я понял, что это я тот человек, который ее должен создать. То есть буквально взять приложение для моделирования данных и начать ее рисовать, а затем перевести в общепринятый формат документа.

Моделирование требований

«Пойду» по порядку: что такое эта модель данных в общем и в контексте ИТ-системы? Как следует из этого словосочетания, это данные, которые замоделированы для определенной системы. На данных строится абсолютно любая сущность в нашем мире. Любые данные состоят всего из трёх типов сущностей: это объекты, их свойства и связи (типы связей) между объектами. Возьмем простейшую модель данных – обычная книга. В модель данных входят объекты (я пишу вот прямо сейчас и генерирую мысли-примеры из головы): лист книги, сама книга, обложка, клей для склейки обложки и листов, краска для нанесения текста, сам текст. У объектов есть свойства, берем, например, обложку и ее свойства: это – тип материала, цвет, толщина/жесткость, вес. И обязательно между объектами одной системы должны быть связи (типы связей) – текст обязательно связан с листом и обложкой и не может существовать без них. Этот тип связи простым языком называется «отец-ребенок», так как текст/ребенок не может существовать сам по себе как часть книги без листа или обложки/отца. Вот такая модель данных книги у нас получилась. Формат, в котором я это описал, также называется объектно-ориентированным моделированием (которое логично перетекает в объектно-ориентированное программирование).

Почему наличие или создание модели данных важно при подготовке такой вещи, как книга или любой системы? На примере книги я бы построил такую логическую цепочку, и всё выглядит довольно прозрачно:

1.Цель создания почти любой сущности в нашем мире – это её использование человеком.

2.Использование человеком означает использование функций предмета или системы.

3.Функции предмета или системы – это как раз та функциональность, которую мы также опишем для системы или для книги. Для книги главная функция – это «читать книгу».

4.Но чтобы читать что-то, нужно иметь этот предмет или систему физически, то есть должно быть описание и модель того, как будет выглядеть книга и из каких объектов она будет состоять.

5.К тому же, все части книги должны иметь правильные свойства. Представьте, если из нашего примера мы укажем свойство «вес» для объекта обложки равное 30 кг? Вряд ли такую книгу будет возможно читать!

6.Также все объекты должны быть связаны между собой правильными связями. Мы ведь не хотим, чтобы страницы были склеены между собой, а текст указан только на обложке, а не на листах книги.

Из этого примера, я думаю, становится видно, что невозможно планировать детальное описание функций чего-либо без создания модели данных. От модели данных зависит корректность создания функционального дизайна, дизайна пользовательского интерфейса, разработки кода и возможностей системы для конечного пользователя. От согласованности и логичности созданной модели данных в дальнейшем будет зависеть расширяемость системы и её адаптивность к изменениям. Именно с помощью создания модели данных можно корректно оценить интеграционные возможности между разными системами, ведь в любой интеграции основную роль играет правильная синхронизация информации между двумя системами. Информация равна данным.

Какие инструменты я использовал для создания модели данных? Я использовал профессиональную программу для моделирования/проектирования, Архитектор Корпорации (EA = Enterprise Architect), для создания модели. В настоящее время доступно множество более простых программ, о которых я расскажу позже. В EA я создавал всю модель, а затем экспортировал её в обычный документ Word, который можно было переслать кому нужно – БА, разработчикам или клиенту для ознакомления. Также функциональность EA позволяет автоматически генерировать этот документ, который является частью дизайна системы. Что интересно, EA позволяет выгружать созданную модель непосредственно в код, создавая необходимые объекты, связи и их свойства прямо в нужном месте в кодовой базе у разработчиков.

Вот как выглядел процесс создания модели в общих чертах: я пересмотрел функциональные требования и начал проектирование объектов адресной системы. Естественно, основным объектом был «адрес». От этого объекта, например, наследовались такие объекты, как «адрес офиса» и «юридический/биллинговый адрес». «Наследовались» здесь означает тип связи между объектами, при которой нижестоящий объект наследует все свойства вышестоящего объекта и дополняется своими уникальными свойствами.

Если объект «адрес» включал атрибуты, такие как «улица» и «номер дома», то я предполагал, что «адрес офиса» также будет иметь эти атрибуты. Для атрибутов я также определял свойства, например, тип атрибута (число, текст или список значений) и его обязательность для заполнения, то есть он не мог быть пустым.

 

В процессе проектирования модели я сверялся с требованиями и делал пометки в черновом функциональном дизайне. Например, если я описал заполнение какого-то поля как текстовое, а при создании модели понял, что это будет список значений. В итоге у меня был готов документ по модели данных, который я также отправил на проверку своему БА, как и функциональный дизайн, созданный на основе этой модели.

Дизайн модели данных я также проверял на логические связи с матрицей требований. Этот артефакт был так же важен для подписания с клиентом, как и функциональный дизайн: все необходимые функции должны быть указаны, а также все необходимые объекты, их связи и свойства. Некоторые изменения в модели могли быть очень дорогими и значительно сложнее, чем изменение какой-либо функции системы. В своей дальнейшей работе, особенно при создании систем с нуля, я почти всегда создаю модель данных – и даже если модель данных не является официально требуемым артефактом, я создаю её для себя, чтобы быть на сто процентов уверенным, что я ничего не упустил.

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


Примечание автора: названия в диаграмме даны на английском языке. Перевод: Book – книга ; Weight – вес ; Size – размер; Carton type – тип картона; Cover – обложка; Picture – изображение; Title – заголовок; Subtitle – подзаголовок; Pages – страницы ; Number of page -номер страницы.


Это только короткий пример, который визуализирует то, о чем я рассказывал несколько страниц назад. Я показал три основных объекта: книгу, обложку и страницу. Книга связана с объектами обложка и страница связью "родитель-ребенок", что означает, что эти нижележащие элементы всегда будут созданы именно под "родителем". Также объекты содержат базовые атрибуты, такие как вес или размер книги, и название обложки.

Вот так я и закончу описание первых двух шагов своего становления как БА. Да, было много разноплановых активностей, но как я всегда рекомендую и ожидаю от БА, самая главная и всегда востребованная черта любого начинающего БА – это его способность писать высококачественные требования и дизайны к ним. Именно эти артефакты прямолинейно связаны с нуждами команды разработчиков и от них зависит успех создаваемой системы. За прошедшие около 6 месяцев, что я проработал впервые в жизни как БА, я получил опыт и освоил навыки написания требований и дизайна к ним, создания модели данных, подготовки структуры требований, базовых навыков выявления требований, основ отслеживаемости и подходов к утверждению требований, основ методологии и жизненного цикла разработки, а также важные мягкие навыки, такие как командная работа, управление временем и вопросник.

А теперь, так же как я делал в предыдущей истории, я переключусь на технические детали и нюансы, связанные с БА работой, с точки зрения моего текущего профессионального опыта. Другими словами, что именно сейчас я рекомендую и вижу необходимым знать/уметь и развивать при старте БА карьеры.

To koniec darmowego fragmentu. Czy chcesz czytać dalej?