Текстовая расшифровка десятого урока курса Введение в профессию аналитика.
Наш очередной модуль эскизно показывает, какие основные подходы к разработке программных продуктов сейчас существуют, чем они различаются, и как это влияет на разработку требований.
Вот две крайности, которые давно уже у всех на слуху. Слева у нас картинка из статьи Уинстона Ройса о водопадном процессе, которая была издана в материалах НАТО ещё в 1968 году. Это, собственно, иллюстрация водопада. А справа картинка, может быть, менее известная, это крайний способ Agile разработки — экстремальное программирование.
Что такое водопад? Водопад предполагает, что при создании продукта мы последовательно проходим через определённые этапы. В данном случае в статье перечислялись такие этапы. Сначала описание системных требований (то есть общесистемных, здесь под ними понимались фактически
Особенность «чистого» водопада в том, что каждый этап завершается созданием определённых артефактов. То есть, если говорить о требованиях, это как раз сводные документы требований. И следующий этап не начинается до того, как завершится предыдущий.
И полная противоположность — это экстремальное программирование, где всё идёт сплошными итерациями. Где мы требования, что называется, прямо с колёс выявляем у пользователя, тут же их обсуждаем, тут же их включаем в итерацию, принимаем, разрабатываем и так далее.
Наверное, уже все аналитики в той или иной мере знакомы с концепцией Agile, проходили
Я здесь привёл скриншот, представляющий квинтэссенцию
Этот
Я просто зачитаю, что здесь написано. Люди и их взаимодействие важнее инструментов. Работающий продукт важнее исчерпывающей документации. Сотрудничество с заказчиком важнее согласования условий контракта, и готовность к изменениям важнее следования первоначальному плану.
При этом, не отрицая всего того, что было создано до них, они заявили, что больше ценят то, что слева. Люди, взаимодействие, работающий продукт, сотрудничество с заказчиком и готовность к изменениям.
Как это влияет на работу с требованиями? Я свёл в табличку, чтобы сравнить, крайние методы водопада и крайние методы Agile при работе с требованиями.
Если водопадный процесс определяет конкретные этапы работы с требованиями — которые должны завершаться по определённой строгой процедуре созданием определённых документов, и следующий этап не начинается, пока мы эти требования не разработаем и документы эти не создадим, — то в Agile эти требования разрабатываются непрерывно. В интернете мы можем собирать новые требования прямо с рынка и тут же пускать их в разработку.
Если в водопадном процессе требования фиксируются в виде документов, то в Agile используются лёгкие форматы их описания. Я говорил по User Stories, которые изначально предназначены не только для описания требований, но и адаптированы для того, что бы тут же пускать их в разработку. В Agile используются такие лёгкие форматы требований.
В водопадном процессе для того, чтобы
Если в водопадном процессе предполагается, что требования должны полностью описывать продукт до того, как мы начали его разрабатывать, то есть мы создаём его полную модель в виде требований, то в Agile подходах такого принципа нет, там требования разрабатываются по мере необходимости. Поскольку они могут меняться, поскольку мы при выпуске очередной версии продукта мы можем не знать, что в нём изменится через полгода. Поэтому там используется итерационный подход в разработке требований.
Agile появился не на пустом месте. Я тут коротко перечислил условия, благодаря которым он смог возникнуть. Во времена больших машин машинное время — это был очень дорогой ресурс. Машин было немного. Для того, что бы выполнить
Естественно, переворот случился кардинальный. Сейчас машинное время не стоит практически ничего. Оборудование тоже очень доступно, и этот фактор больше не ограничивает нас в процессах разработки. И отпала необходимость в водопаде, обусловленная во многом тем, что создание системы с использованием машинного времени было само по себе достаточно дорогостоящим этапом. Сейчас нас ничего не ограничивает. Мы можем создавать продукты прямо с колёс: возникла идея, ты сел, закодировал, проверил, протестировал — выложил в интернет.
Программирование стало интерактивным по этой же причине. Если раньше невозможно было отлаживать нормально продукты, то сейчас вы можете проверять работоспособность вашего продукта буквально после внесения каждого нового оператора.
Многие операции роботизированы. В частности, о такой штуке, как непрерывная интеграция, конечно, в эпоху больших машин невозможно было и мечтать. А сейчас вы можете при выкладывании исходного кода в хранилище каждый раз заново делать тестовую сборку, чтобы убедиться, что у вас продукт не сломался.
Благодаря интернету появился массовый пользователь. Раньше у нас заказывали продукты только большие организации, я ещё участвовал в проектах, которые разрабатывались по решению Совета министров СССР. Техническое задание разрабатывалось пять лет, потом оно лежало на полке пять лет, потом начиналась реализация. Cейчас это невозможно. Сейчас такие продукты никому не нужны. Массовый пользователь хочет всего быстро, с одной стороны, а с другой стороны, у нас появилась возможность его быстро удовлетворять. Мы об этом говорили, когда обсуждали возможности интернета.
В результате запуск продукта стал простым и дешёвым. Можно создать продукт за пару выходных, для того, чтобы опробовать концепцию. Поэтому возникла необходимость и возможность быстро реагировать на быстро меняющиеся требования. И мы должны понимать, что все Agile практики очень сильно завязаны на работу с требованиями в том смысле, что они возникли как ответ на эту необходимость — быстро реализовывать меняющиеся требования.
Для чего я это сказал? Чтобы вы, как аналитики, испытывали гордость. Вы работаете с требованиями, а
Конечно, экстремальное программирование сейчас не очень часто используют. «Чистый» водопад не использовался никогда. Даже в самой статье, где изначально был описан этот процесс, уже предполагались некоторые итерации.
Понятно, что в реальной жизни, по мере того, как реализовывались те пункты, которые я на предыдущем слайде перечислил (железо становилось дешевле, средства разработки становились простыми и интерактивными, мы становились всё ближе и ближе к пользователю), естественно, появлялись методы разработки программных продуктов, которые были всё более и более итерационными. Появился так называемый спиральный метод разработки,
В Rational Unified Process появилось представление о плотности процесса. Здесь на картинке нарисовано, что в процессе создания продукта у нас определённые виды активности выполняются в большей или меньшей степени. То есть ближе к началу создания продукта мы больше занимаемся
Все процессы, которые связаны с созданием продуктов, включая те, которыми занимаются аналитики (моделирование, анализ, управление требованиями) как бы размазаны по всему жизненному циклу продукта. Естественно, это не водопад, где аналитик фактически отрабатывал на первом этапе и всё, на этом его работа заканчивалась.
И SCRUM, который уже является чистым
Этим слайдом я хотел показать, что это было не бинарно: был водопад, а потом в 2000 году все переключились на Agile. Развитие процессов шло постепенно.
Но когда появился Agile, у аналитиков возник вопрос, где же мы находимся? Эта картинка из доклада Андрея Бибичева, с которым он выступал почти 10 лет назад. Аналитики задались вопросом: где же найти место в новых Agile — подходах? Если вы посмотрите эту презентацию, там много разных вариантов, куда приложить аналитика в скраме. И на сторону заказчика, и на сторону разработки, и сделать его продукт оунером или сделать его помощником продукт оунера
Что происходит в
Но, тем не менее, и в некоторых
Я ещё не разобрался, как это происходило, но по моему разумению это было так. Министерство образования сформулировало требования, какие функции должен реализовывать электронный журнал для школьников, где им ставят оценки. Оформили в виде технического задания по ГОСТу. Очень хорошее техническое задание, я его видел. Это хороший пример, когда требования разрабатываются сами по себе, независимо. По водопаду этап разработки требований заканчивается выпуском определённого артефакта — это ТЗ. А потом это ТЗ используют независимые разработчики, и уже как они управляют требованиями в процессе реализации — это их дело. Они все могут работать по скраму, но в качестве основы они используют это зафиксированное техническое задание. Очень интересный кейс. Я думаю, что существуют и другие подобные кейсы.
Очень интересно видеть, как эти продукты отличаются. И они очень сильно отличаются друг от друга. Разные возможности, разные интерфейсы, но при этом обеспечивают выполнение одних и тех же функций, которые достаточно чётко прописаны в ТЗ.
То есть даже в
Но эта ниша достаточно узкая. Наверное, со временем она будет схлопываться. Я об этом сказал, чтобы вы понимали, что такие ситуации в
Предыдущий урок: Процессы разработки и управления требованиями
Следующий урок: Основные форматы представления требований
Введение в профессию аналитика 2 900 руб. | |
Введение в профессию аналитика (демо) Бесплатно | |
Вебинары Сообщества Аналитиков Бесплатно | |
SQL для непрограммистов (СЕРТИФИКАТ) 999 руб. | |
SQL для непрограммистов Бесплатно |