Жизненный цикл разработки программного обеспечения
| English | Русский |
|---|---|
| requirements/rɪˈkwaɪəmənts/ | требования |
| development life cycle/dɪˈveləpmənt laɪf ˈsaɪkl/ | цикл разработки |
| waterfall/ˈwɔːtəfɔːl/ | водопад |
| maintenance/ˈmeɪntənəns/ | сопровождение |
| iterative model/ˈɪtərətɪv ˈmɒdl/ | итеративная модель |
| rapid application development/ˈræpɪd ˌæplɪˈkeɪʃn dɪˈveləpmənt/ | быстрая разработка приложений |
| prototype/ˈprəʊtəʊtaɪp/ | прототип |
| agile/ˈædʒaɪl/ | гибкая методология |
| implementation/ˌɪmplɪmənˈteɪʃn/ | реализация |
Аэропорт, открывшийся на шестнадцать месяцев позже срока
- Новый аэропорт Денвера должен был открыться в октябре 1993 с самой масштабной системой обработки багажа из когда-либо созданных: 4,000 автоматические тележки, 35 км путей, без участия людей. Он открылся в феврале 1995, превысив бюджет на $560 миллионов, при этом тележки разрывали чемоданы во время тестовых запусков.
- График был утвержден до того, как кто-либо проанализировал, что должна делать система. Требования постоянно менялись в процессе строительства. Тестирование началось, когда уже не осталось времени на исправление найденных ошибок.
- Каждое из этих неудач имеет свое название в этом уроке. Жизненный цикл разработки существует для того, чтобы проект планировался, управлялся и контролировался, а не обнаруживался спонтанно.
- Этот урок объясняет, зачем нужен жизненный цикл, три модели, указанные в программе экзамена, и пять этапов, через которые проходит любая программа.
Почему необходим жизненный цикл
- Жизненный цикл разработки — это набор этапов от идеи до готового, поддерживаемого программного обеспечения. Его цель — планировать, управлять и контролировать проект: создать нужный продукт, в срок и высокого качества.
- Он управляет сложностью, разбивая большую программу на фазы, координирует работу команды и отслеживает прогресс по ключевым точкам (вехам).
- Он предусматривает тестирование на ранних этапах, а не оставляет его на конец, фиксирует проектные решения для тех, кто будет поддерживать программу позже, и управляет рисками.
Жизненный цикл разработки используется для:
Структурирует работу на этапы, чтобы команда создала правильный продукт, в срок и высокого качества.
Каковы цели жизненного цикла разработки? Выберите все подходящие варианты.
Жизненный цикл планирует, управляет и контролирует. Он не может гарантировать корректность; он делает поиск и исправление ошибок частью плана.
Почему существует несколько моделей
- Ни одна модель жизненного цикла не подходит для каждого проекта, поэтому их существует несколько, и экзамен требует уметь выбирать подходящую.
- Выбор зависит от размера и сложности программы, насколько четко определены требования в начале, сколько изменений ожидается, каковы риски при провале, состав команды и сроки сдачи.
- Система начисления зарплаты со строгими законодательными правилами и видеоигра, игроки которой еще не знают, чего хотят, — это разные проекты. Они требуют разных циклов разработки.
Водоспад
- Модель водоспада представляет собой линейную последовательность: анализ, проектирование, кодирование, тестирование, поддержка. Каждый этап завершается, документально фиксируется и утверждается перед началом следующего.
- Преимущества: четкая структура, легкость управления и планирования, тщательная документация на каждом этапе, хорошо подходит для стабильных требований.
- Недостатки: изменение требований в середине проекта означает возврат назад; заказчик видит работающий результат только в конце; ошибки анализа проявляются лишь на этапе тестирования.

Вода не течет вверх по склону
Модель водопада лучше всего подходит для проектов, где:
Водопад линейен, каждый этап завершен перед началом следующего — отлично для стабильных требований, плохо для изменений в середине проекта.
В модели водопада клиент видит рабочую версию программы рано в проекте.
Ничего не работает до этапа написания кода и тестирования, находящихся в конце. Раннее получение рабочей программы — сильная сторона итеративной модели и RAD.
Итеративная модель
- Итеративная модель предполагает многократные проходы. Каждый проход создает частичную рабочую версию, которую просматривает пользователь и дорабатывает на следующем шаге.
- Преимущества: проблемы выявляются раньше; пользователь видит работающее ПО рано и часто; хорошо подходит для ситуаций, когда требования выявляются постепенно.
- Недостатки: сложнее оценить общую стоимость и сроки; повторные обзоры требуют внимания пользователя; дизайн может отклоняться без дисциплины.

Создать, показать, улучшить, повторить
Быстрая разработка приложений (RAD)
- Быстрая разработка приложений (RAD) быстро создает прототип, показывает его пользователям и перерабатывает на основе их отзывов до получения готового продукта. Команды часто работают над частями параллельно.
- Преимущества: очень быстрая первая доставка; изменения требований поглощаются по мере появления; пользователи напрямую формируют продукт.
- Недостатки: зависит от доступности пользователей на протяжении всего процесса; упрощения прототипа могут сохраниться в готовом продукте; лучше подходит для небольших систем, чем для крупных критически важных систем безопасности. Методологии Agile развивают эту идею дальше, используя короткие спринты и постоянное тестирование.

Прототип, обратная связь, снова прототип
В модели водопада каждый этап завершен перед началом следующего, тогда как Agile работает короткими итеративными спринтами с постоянной обратной связью.
Метод «Водопад» линейный (подходит для стабильных требований); гибкий метод адаптируется через короткие спринты с непрерывным взаимодействием с заказчиком и тестированием.
Соотнесите каждую модель с её ключевой идеей.
Водопад = линейность; итеративная = повторяющееся уточнение; RAD = ориентированность на прототип и скорость.
При быстрой разработке приложений создается ____ , который пользователи пробуют и дают на него обратную связь, после чего он перестраивается.
Прототип является определяющей чертой RAD; именно отзывы пользователей о нем позволяют выявить требования.
Разобранный пример: выбор жизненного цикла и обоснование
- Компании нужно программное обеспечение для расчета зарплат сотрудников в соответствии с налоговыми правилами, закрепленными законом. Какой жизненный цикл выбрать и почему? Водоспад: требования стабильны и полностью известны с самого начала, правила можно полностью описать на этапе анализа, а тщательная документация важна для системы, которая должна быть корректной и проходить аудит.
- Стартапу нужно приложение для нового вида социальных мероприятий; пользователи не уверены, какие функции им нужны. RAD: требования неясны и будут меняться, поэтому прототип, который пользователи пробуют и комментируют, позволяет быстро выявить их потребности, а небольшая система подходит для быстрого перестроения.
- Назовите модель и свяжите два её свойства с двумя фактами из сценария.
Небольшая команда должна создать приложение, пользователи которого не уверены в том, что им нужно, и могут пробовать версии каждую неделю. Какой жизненный цикл подходит лучше всего?
Неясные, изменяющиеся требования плюс доступные пользователи — это случай RAD. Водопад требует фиксированных требований в начале.
Пять этапов
- Анализ: определить что должна делать программа; собрать и задокументировать требования от пользователей.
- Проектирование: решить как: структуры данных, алгоритмы, модули, пользовательский интерфейс, формат файлов, выраженные в структурных диаграммах, блок-схемах и псевдокоде.
- Кодирование (реализация): написать исходный код согласно проекту. Тестирование: запустить его на запланированных тестовых данных и исправить найденные ошибки.
- Поддержка: после выпуска поддерживать работоспособность и полезность, устранять сбои, адаптироваться к изменениям и улучшать продукт.
Жизненный цикл разработки программного обеспечения
Пройдите через этапы, которые проходит каждый проект. Правильное определение требований на этапе анализа имеет решающее значение — ошибка, обнаруженная при тестировании, обходится гораздо дороже в исправлении, чем ошибка, выявленная на ранней стадии.
Этап анализа в основном заключается в определении:
Анализ собирает требования (что); проектирование решает, как.
Расставьте этапы жизненного цикла разработки программы по порядку.
Что, как, сборка, проверка, поддержание работоспособности. В итеративной модели средние этапы повторяются, но порядок внутри каждого прохода одинаков.
Разобранный пример: что происходит на этапах анализа и проектирования
- Опишите, что происходит на этапах анализа и проектирования жизненного цикла разработки программы. [4]
- Анализ: разработчики берут интервью и наблюдают за пользователями, чтобы понять, что должна делать программа; они определяют входные данные, выходные данные и необходимую обработку, и составляют техническое задание, которое согласовывается с заказчиком.
- Проектирование: разработчики решают, как программа удовлетворит эти требования: они выбирают структуры данных и алгоритмы, разбивают программу на модули по структурной схеме, проектируют экраны и файлы, а также пишут псевдокод.
- Два действия и один продукт для каждого этапа. «Они анализируют проблему» — это просто повторение заголовка и не приносит очков.
Потерянные баллы
- Анализ — это «что», проектирование — это «как». «Выбор алгоритмов» относится к проектированию.
- Метод водопада («Waterfall») — это не «плохой метод». Его сильная сторона — стабильные, хорошо документированные требования; его слабая сторона — изменение требований. При запросе преимуществ и недостатков приводите оба аспекта.
- RAD — это не просто «быстро». Его отличительная черта — прототип и обратная связь от пользователей по нему.
- Обслуживание (Maintenance) — это этап, а не второстепенное дело: большая часть стоимости жизненного цикла программы тратится именно на него.
Вы поняли
- Жизненный цикл проекта планирует, управляет и контролирует проект: фазы, вехи, встроенное тестирование, фиксация решений, управление рисками.
- Водопад: линейный, каждый этап утверждается отдельно, лучше всего подходит для стабильных требований, плохо справляется с изменениями · Итеративный: повторяющиеся уточненные версии, позволяет выявлять проблемы на ранней стадии, сложнее оценивать · RAD: прототип плюс обратная связь от пользователей, быстро и гибко, требует наличия доступных пользователей
- Выбирайте по четкости требований, ожидаемым изменениям, размеру и риску, и обоснуйте выбор конкретным сценарием
- Этапы: анализ (что) → проектирование (как) → написание кода → тестирование → обслуживание