Анализ требований к автоматизированным информационным системам

Жизненные циклы разработки. Анализ требований

Данная лекция посвящена центральному понятию в разработке программного обеспечения — жизненному циклу информационных систем и продуктов (SDLC). В рамках лекции проводится разграничение между жизненным циклом самой информационной системы и жизненным циклом процесса её разработки. Слушатели познакомятся с эволюцией подходов к разработке: от классической каскадной модели (Waterfall) до гибких методологий (Agile), а также с промежуточными моделями (разработка через тестирование и спиральная модель). Особое внимание уделяется месту и роли анализа требований в этих процессах. В завершение лекции представлен анализ статистических данных об эффективности различных методологий и даны рекомендации по их применению.

Основные мысли

• Разделение понятий: Необходимо четко различать жизненный цикл информационной системы (от идеи до утилизации) и жизненный цикл разработки (непосредственное создание и тестирование продукта). Они связаны, но преследуют разные цели.
• Цель жизненного цикла: Основная цель любого жизненного цикла — достижение запланированного, понятного и воспроизводимого результата деятельности.
• Эволюция методологий: Методологии разработки не являются взаимоисключающими конкурентами. Они развивались эволюционно, каждая последующая решала проблемы предыдущей и была «заточена» под определенные условия и приоритеты (например, минимизация рисков или скорость адаптации к изменениям).
• Роль аналитика: Анализ требований — это сквозной этап, присутствующий во всех жизненных циклах. От выбранной методологии зависит, как именно аналитик будет работать, и, следовательно, траектория его профессионального развития.
• Ключ к успеху Agile: Основное преимущество Agile заключается не в отрицании этапов Waterfall, а в организации эффективной коммуникации внутри команды, что позволяет минимизировать потерю знаний (которая может достигать 50% при передаче между этапами) и быстро исправлять ошибки.
Показывать лекцию целиком
Краткое изложение


Мы продолжаем курс «Анализ требований к информационным системам». Сегодня мы перейдем к лекции 2, в которой более пристальное внимание уделим рассмотрению жизненного цикла разработки информационных систем, а также жизненного цикла самих информационных продуктов.

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

Сегодня мы проведем краткий анонс лекции 2, затем – анонс этого модуля. Следом за этим мы поговорим о жизненных циклах информационной системы и процесса разработки информационных систем. После этого будем закреплять знания и делать выводы на основе статистики использования разных жизненных циклов. В конце модуля мы подведем итоги и постараемся сделать заключение о целесообразности применения жизненного цикла в конкретных ситуациях и условиях.

Основной объект нашего внимания в этой лекции – SDLC (Software development lifecycle), если дословно перевести на русский язык – «жизненный цикл разработки информационных систем и продуктов». В области информационных систем применительно к процессам разработки выделяют жизненные циклы самих систем и процессов разработки. Это важное различие, которое разделяет фокус внимания специалистов, участвующих в создании информационных систем. Основное прикладное назначение жизненных циклов – объединять различные специализированные этапы в разные рабочие методологии, назначением которых является создание информационных систем по разным критериям и с вниманием к разным аспектам создаваемых систем. Мы рассмотрим три основных типа жизненных циклов, которые демонстрируют эволюционное развитие подходов к разработке информационных систем. Основная тема нашего курса – анализ требований, поэтому важно рассмотреть то, как он изменяется и применяется и каково его назначение в разных типах жизненного цикла. Этому сравнению мы уделим отдельный рабочий модуль. Поняв различия в применении анализа, мы сделаем выводы о том, что траектория профессионального развития аналитика сильно зависит от той методологии, в которой он функционирует как специалист. На основе этих выводов мы сделаем заключение о том, как следует развиваться аналитику.

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

Понятие жизненного цикла интуитивно. Речь идет о процессе с момента появления замысла, то есть идеи, до момента, когда эта идея, воплощенная в виде материального или информационного артефакта, утилизируется – то есть «от момента рождения до момента смерти». Жизненный цикл описывает эти этапы и акцентирует внимание на тех из них, которые представляют наибольшую ценность для создаваемого продукта. Часть этапов может детализироваться и иметь продолжение, которое оказывает влияние на смежные циклы. В этом случае нужно четко понимать, что от этих результатов требуется для поддержания жизненных циклов, в которых они задействованы. Цель жизненного цикла – достичь запланированного, понятного, воспроизводимого результата деятельности.

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

Жизненный цикл разработки также начинается с подготовительного этапа. Затем начинается процесс анализа требований и постановки, следом – этап проектирования, разработки и тестирования. Этапы жизненного цикла процесса разработки выполняются в рамках жизненного цикла информационных систем. Этапы жизненного цикла информационных систем, как правило, последовательны, а вот этапы процесса разработки могут комбинироваться в разной последовательности, более того, большинство из них могут выполняться параллельно. Последовательность и параллельность задают рабочие методологии.

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

В этом модуле мы не будем детально рассматривать суть, назначение, преимущества, недостатки и детали каждой методологии – это мы сделаем чуть позже. Здесь мы еще раз отметим, что методологии не нужно рассматривать, противопоставляя их друг другу, – это как противопоставлять XVIII век XIX веку и не имеет особого смысла. Их нужно изучать и исследовать с точки зрения прикладной практической составляющей и опыта, получаемого при их применении. Они развиваются на протяжении последних 50 лет, что по меркам любого ремесла и науки не так уж много. С этой точки зрения можно констатировать, что информационные технологии – зарождающая отрасль, в которой много направлений развития. Методологии оптимальной организации рабочего процесса – одно из таких направлений. Развитие будет происходить за счет более точной и подробной декомпозиции этих методологий на составляющие и совершенствования этих самых составляющих. Анализ требований – предмет, который сформировал свои профессиональные очертания, но этот предмет развивается, и еще многое предстоит сделать.

Исторически первая методология – фундаментальная. Она наиболее комплексная и уделяет максимум в части теории тому, как достигать запланированного результата в определенных временных рамках. Это каскадная модель. Еще ее называют Waterfall. Существует она в двух видах. Перечислю основные моменты, характеризующие эту методологию: очень высокая цена ошибки, если таковая допускается во время разработки продукта; очень высокий расчет на профессионализм исполнителей. При этом фундаментальная методология – самая романтичная и идеалистичная, она не учитывает риски и верит в то, что все будет хорошо. Следующая методология, по ходу исторического развития, – разработка через тестирование. Это модель разработки, принятая и до сих пор используемая в компании НАСА, она делает акцент на постоянной валидации запланированного и сделанного. Для этой методологии также требуются исполнители высокой профессиональной зрелости, замотивированные на работу. При этом, эволюционно решая многие проблемы, которые приводили к рискам в каскадной модели, эта разработка наполнена дополнительными контрольными процедурами и тестированием, что приводит к появлению дополнительных ролей и, как следствие, удорожанию процесса разработки информационных продуктов. Следующая – спиральная модель. Уникальность этой модели состоит в том, что она заложила основу по работе с рисками и качественно изменила линейность складывающихся процессов с понятными началом и концом в сторону спирального, бесконечного развития, подкрепляемого целями и ценностью от создаваемого продукта. И последний, то есть самый востребованный подход – Agile. Здесь сложность и комплексность, как элемент современных систем, выходят на другой уровень. Задача процесса разработки – решать понятные, маленькие и очень ценные задачи. Ошибки, допускаемые в ходе процесса разработки, можно и даже нужно исправлять как можно раньше рано за счет того, что над продуктом работает саморегулируемая команда специалистов. А теперь уступим место статистике.

Статистика – злая, но крайне справедливая наука. Спорить с ней бесполезно – она оперирует фактами. Эти факты необходимо интерпретировать, обращая при этом внимание на методы их сбора. С 2015 по 2019 год было проведено исследование, основанное на фактах, собранных из 15 тысяч проектов. Основным параметром сравнения является эффективность и удовлетворенность компаний от использования waterfall- и agile-подходов. Полная статистика показывает, что 39% опрошенных говорят об успешности применения Agile, 52% считают его эффективность спорной и 9% недовольны результатами его применения. 11% опрошенных довольны waterfall-подходом, 60% считают его результаты спорными и 29% не удовлетворены его применением. Если посмотреть глубже и разделить проекты на большие, средние и малые, то окажется, что тренд к лидированию Agile в категории успешности сохраняется по проектам всех размеров, кроме малых, в которых наблюдается примерное равенство по успешности между Agile и Waterfall. Причина в том, что в малых проектах фактически Waterfall становится Agile – как структурно, так и по выполняемым операциям. Waterfall уделяет большое внимание и выполнению целевых показателей, что во многом делает сотрудников, вовлеченных в процесс, заложниками намеченных планов.

А Agile большее внимание уделяет тому, как намеченные планы будут выполняться в реальности и что нужно сделать для того, чтобы достичь результатов, которые необходимы для достижения ценности. С точки зрения организации работы Waterfall и Agile не противоречат друг другу – они друг друга дополняют. Waterfall – это как стратегия, а Agile – как тактическая методика организации работы, которая требовательна к тому, какие роли находятся в процессе, как они взаимодействуют между собой и что необходимо для организации эффективной коммуникации. Этапы, выполняемые и в той, и в другой методологии, очень похожи, но методы отличаются из-за разной мотивации на использование этих методологий.

В waterfall-подходах эксперты делают работу, передавая ее друг другу по этапам, не оглядываясь и не подтверждая то, что работа, переданная им, была выполнена в соответствии с необходимыми для них критериями качества. При возникновении проблем поздно менять принятые решения – нужно искать способы исправить возникшие проблемы без ущерба для уже сделанной экспертами работы. Очень часто это невыполнимо. В противоположность этому Agile основное внимание уделяет принципам взаимодействия экспертов, собранных в единую команду, которая постоянно экспериментирует и ищет лучшие способы организации своей работы. Эта команда учится, работает, измеряет результат и на основе этих показателей ищет способы улучшения своей работы. Ключевой момент, которым нужно подытожить этот слайд, – 50% знаний теряются при передаче. В Waterfall возможности коммуникаций ограничены и не поощряются. Agile же строит свою эффективность и развитие именно на оперативной и постоянной коммуникации.

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

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

Приложения

Презентация 2.1
Введение
Лекция посвящена жизненному циклу разработки информационных систем (SDLC). Цель — понять, как различные направления и этапы работ объединяются в единый процесс для создания успешного продукта.

Понятие жизненного цикла
Жизненный цикл — это интуитивно понятный процесс «от рождения до смерти» идеи или продукта. Он описывает последовательность этапов для достижения воспроизводимого и запланированного результата.

Два типа жизненных циклов
1. Жизненный цикл информационной системы (ИС): Охватывает весь путь системы: от возникновения идеи, анализа, проектирования, разработки, тестирования, внедрения, эксплуатации и поддержки до утилизации. Это широкий, как правило, последовательный процесс.
2. Жизненный цикл разработки (процесса): Это конкретный процесс создания продукта. Он включает анализ требований, проектирование, разработку и тестирование. Важно, что этапы этого цикла могут выполняться параллельно и комбинироваться, что и формирует различные рабочие методологии.

Эволюция методологий разработки
Методологии — это инструменты для решения конкретных задач. Их развитие шло по пути решения проблем предшественников:
• Каскадная модель (Waterfall): Фундаментальная, последовательная модель. Характеризуется высокой ценой ошибки и требует высокой квалификации исполнителей. Идеалистична, так как не учитывает риски.
• Разработка через тестирование: Акцент на постоянной проверке результата (валидации). Решает проблемы Waterfall, но добавляет много контрольных процедур, что удорожает процесс.
• Спиральная модель: Революционная модель, которая ввела понятие работы с рисками и перешла от линейного процесса к бесконечному, итеративному развитию, ориентированному на ценность продукта.
• Agile: Самый востребованный подход. Фокусируется на решении небольших, понятных и ценных задач саморегулируемой командой. Ошибки исправляются быстро благодаря постоянной коммуникации.

Статистика и сравнение подходов
Исследование проектов с 2015 по 2019 год показывает:
39% успешных проектов используют Agile, 11% — Waterfall.
Agile лидирует в проектах всех размеров, кроме малых, где эффективность сравнялась (так как малый Waterfall по сути становится гибким).
• Ключевое различие: Waterfall — это стратегия, где работа передается по этапам. Agile — это тактика, где команда работает сообща, постоянно коммуницируя. При передаче информации между этапами в Waterfall теряется до 50% знаний, тогда как Agile строится на минимизации этих потерь через коммуникацию.

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

Выводы

1. Успех разработки информационной системы напрямую зависит от правильного выбора и понимания жизненного цикла, который должен соответствовать масштабу проекта и допустимым рискам.
2. Противопоставление Waterfall и Agile является некорректным. Их можно рассматривать как взаимодополняющие инструменты: Waterfall как стратегическое планирование, Agile как тактическая гибкость в реализации.
3. Главный фактор успеха современных методологий (Agile) — это эффективная коммуникация в команде, позволяющая минимизировать потери знаний и быстро реагировать на изменения.
4. Профессиональный путь аналитика требований должен строиться с учетом понимания различных методологий, так как его роль, инструменты и зона ответственности в каждом подходе существенно различаются.

Вопросы для самопроверки

1. В чем заключается принципиальная разница между жизненным циклом информационной системы и жизненным циклом процесса разработки?
2. Перечислите основные этапы жизненного цикла информационной системы.
3. Какие четыре основные методологии разработки рассматриваются в лекции? В чем главная особенность каждой из них?
4. Почему каскадную модель (Waterfall) называют «романтичной и идеалистичной»?
5. Какое нововведение в процесс разработки привнесла спиральная модель?
6. Согласно приведенной статистике, в каких проектах эффективность Waterfall и Agile практически сравнялась и почему?
7. Какой фактор в Agile-методологии помогает снизить потерю знаний при разработке?
8. Почему методологии разработки не стоит рассматривать как «соревнующиеся», а лучше воспринимать как инструменты?
9. Как выбор методологии разработки влияет на работу аналитика требований?
10. Какова основная цель применения любого жизненного цикла в разработке?
Вернуться к учебному плану