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

Полная версия

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

Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
7 из 7

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

Вы, возможно, сейчас задаете мне вопрос: «Зачем их отправлять, если уже обсудили бизнес-требования и понятно, что нужно делать?» Тут всё просто – каждый проект имеет контекст, который позволяет определить критерии, по которым просмотр и утверждение требований требуется клиентом или нет. В моем случае было несколько критериев: 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 месяцев, что я проработал впервые в жизни как БА, я получил опыт и освоил навыки написания требований и дизайна к ним, создания модели данных, подготовки структуры требований, базовых навыков выявления требований, основ отслеживаемости и подходов к утверждению требований, основ методологии и жизненного цикла разработки, а также важные мягкие навыки, такие как командная работа, управление временем и вопросник.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

Конец ознакомительного фрагмента
Купить и скачать всю книгу
На страницу:
7 из 7