Модели разработки ПО Тема 2.1 Модели разработки ПО Семейство каскадных моделей: простая каскадная модель Принципы каскадной модели - Строго последовательное выполнение фаз
- Каждая последующая фаза начинается лишь тогда, когда полностью завершено выполнение предыдущей фазы
- Каждая фаза имеет определенные критерии входа и выхода: входные и выходные данные.
- Каждая фаза полностью документируется
- Переход от одной фазы к другой осуществляется посредством
- формального обзора с участием заказчика
- Основа модели – сформулированные требования (ТЗ), которые меняться не должны
- Критерий качества результата – соответствие продукта установленным требованиям
Преимущества каскадной модели - Проста и понятна заказчикам, т.к часто используется другими организациями для отслеживания проектов, не связанных с разработкой ПО
- Проста и удобна в применении:
- процесс разработки выполняется поэтапно
- ее структурой может руководствоваться даже слабо подготовленный в техническом плане или - неопытный персонал
- она способствует осуществлению строгого контроля менеджмента проекта
- Каждую стадию могут выполнять независимые команды (все документировано)
- Позволяет достаточно точно планировать сроки и затраты
Недостатки каскадной модели - Попытка вернуться на одну или две фазы назад, чтобы исправить какую-либо проблему или недостаток, приведет к значительному увеличению затрат и сбою в графике
- Интеграция компонент, на которой обычно выявляется большая часть ошибок, выполняется в конце разработки, что сильно увеличивает стоимость устранения ошибок
- Запаздывание с получением результатов – если в процессе выполнения проекта требования изменились, то получится устаревший результат
Семейство каскадных моделей: каскадно - возвратная модель Семейство итерационных моделей: спиральные модели Основные принципы спиральной модели - Разработка вариантов продукта, соответствующих различным вариантам требований с возможностью вернуться к более ранним вариантам
- Создание прототипов ПО как средства общения с заказчиком для уточнения и выявления требований
- Планирование следующих вариантов с оценкой альтернатив и анализом рисков, связанных с переходом к следующему варианту
- Переход к разработке следующего варианта до завершения предыдущего в случае, когда риск завершения очередного варианта (прототипа) становится неоправданно высок.
- Использование каскадной модели как схемы разработки очередного варианта
- Активное привлечение заказчика к работе над проектом. Заказчик участвует в оценке очередного прототипа ПО, уточнении требований при переходе к следующему, оценке предложенных альтернатив очередного варианта и оценке рисков
Спиральная разработка Преимущества спиральной модели - Более тщательное проектирование (несколько начальных итераций) с оценкой результатов проектирования, что позволяет выявить ошибки проектирования на более ранних стадиях.
- Поэтапное уточнение требований в процессе выполнения итераций, что позволяет более точно удовлетворить требованиям заказчика
- Участие заказчика в выполнении проекта с использованием прототипов программы. Заказчик видит, что и как создается, не выдвигает необоснованных требований, оценивает реальные объемы финансирования
- Планирование и управление рисками при переходе на следующие итерации позволяет разумно планировать использование ресурсов и обосновывать финансирование работ.
- Возможность разработки сложного проекта «по частям», выделяя на первых этапах наиболее значимые требования.
Недостатки спиральной модели - Сложность анализа и оценки рисков при выборе вариантов.
- Сложность поддержания версий продукта (хранение версий, возврат к ранним версиям, комбинация версий)
- Сложность оценки точки перехода на следующий цикл
- Бесконечность модели – на каждом витке заказчик может выдвигать новые требования, которые приводят к необходимости следующего цикла разработки
Семейство итерационных моделей: каркасная модель разработки Другие модели: сборочное программирование Другие модели: исследовательское программирование Модель разработки Microsoft Solution Framework В технологии MSF большое внимание уделяется анализу проблем заказчика и разработке вариантов системы для поиска решения этих проблем «Вехи» MSF - Модель MSF ориентирована на “вехи” (milestones) – ключевые точки проекта, характеризующие достижение какого-либо существенного результата
- Результат может быть оценен и проанализирован, что подразумевает ответ на вопрос: “А достигли ли мы целей, поставленных на этом шаге?»
- В модели предусматривается наличие основных вех (завершение главных фаз модели) и промежуточных, отражающих внутренние этапы главных фаз
Фазы MSF: выработка концепции - Создание общей картины приложения (Envisioning).На этом этапе решаются следующие основные задачи: оценка существующей ситуации; определение состава команды, структуры проекта, бизнес-целей, требований и профилей пользователей; разработка концепции решения и оценка риска.
- Устанавливаются две промежуточные вехи: "Организован костяк команды" и "Создана общая картина решения".
Фазы MSF: Планирование (Planning) - Включает планирование и проектирование продукта.
- На основе анализа требований разрабатывается проект и основные архитектурные решения, функциональные спецификации системы, планы и календарные графики, среды разработки, тестирования и пилотной эксплуатации.
- Этап состоит из трех стадий: концептуальное, логическое и физическое проектирование.
- На стадии концептуального проектирования задача рассматривается с точки зрения пользовательских и бизнес-требований и заканчивается определением набора сценариев использования системы.
- При логическом проектировании задача рассматривается с точки зрения проектной команды, решение представляется в виде набора сервисов.
- На стадии физического проектирования задача рассматривается с точки зрения программистов, уточняются используемы е технологии и интерфейсы.
Фазы MSF: Разработка (Developing) - Создается вариант решения проблемы, в виде кода и документации очередного прототипа, включая спецификации и сценарии тестирования.
- Основная веха этапа - "Окончательное утверждение области действия проекта". Продукт готов к внешнему тестированию и стабилизации.
- Заказчики, пользователи, сотрудники службы поддержки и сопровождения, а также ключевые участники проекта могут предварительно оценить продукт и указать все недостатки, которые нужно устранить до его поставки.
Фазы MSF: Стабилизация (Stabilizing) - Подготовка к выпуску окончательной версии продукта, доводка его до заданного уровня качества.
- Выполняется комплекс работ по тестированию (обнаружение и устранение дефектов), проверяется сценарий развертывания продукта. Когда решение становится достаточно устойчивым, проводится его пилотная эксплуатация в тестовой среде с привлечением пользователей и применением реальных сценариев работы.
Фазы MSF: Развертывание (Deploying) - Выполняется установка решения и необходимых компонентов окружения, проводится его стабилизация в промышленных условиях и передача проекта в руки группы сопровождения.
- Анализируется проект в целом на предмет уровня удовлетворенности заказчика.
Ключевые идеи RUP - весь ход работ направляется итоговыми целями проекта, выраженными в виде вариантов использования (use cases) – сценариев взаимодействия результирующей программной системы с пользователями или другими системами, при выполнении которых пользователи получают значимые для них результаты и услуги. Разработка начинается с выделения вариантов использования и на каждом шаге контролируется степенью приближения к их реализации;
- основным решением, принимаемым в ходе проекта, является архитектура результирующей программной системы. Архитектура устанавливает набор компонентов, из которых будет построено ПО, ответственность каждого из компонентов (т.е. решаемые им подзадачи в рамках общих задач системы), четко определяет интерфейсы, через которые они могут взаимодействовать, а также способы взаимодействия компонентов друг с другом; архитектура является одновременно основой для получения качественного ПО и базой для планирования работ и оценок проекта в терминах времени и ресурсов, необходимых для достижения определенных результатов. Она оформляется в виде набора графических моделей на языке UML;
- основой процесса разработки являются планируемые и управляемые итерации, объем которых (реализуемая в рамках итерации функциональность и набор компонентов) определяется на основе архитектуры.
Фазы жизненного цикла RUP - Фаза начала проекта (Inception)
- Фаза проектирования (Elaboration)
- Фаза построения (Construction)
- Фаза внедрения (Transition)
Фаза начала проекта - Основная цель этой фазы – достичь компромисса между всеми заинтересованными лицами относительно задач проекта и выделяемых на него ресурсов.
- На этой стадии определяются основные цели проекта, руководитель и бюджет, основные средства выполнения – технологии, инструменты, ключевые исполнители. Также, возможно, происходит апробация выбранных технологий, чтобы убедиться в возможности достичь целей с их помощью, и составляются предварительные планы проекта.
- На эту фазу может уходить около 10% времени и 5% трудоемкости одного цикла.
Пример хода работ на фазе начала проекта Фаза проектирования - Основная цель этой фазы – на базе основных, наиболее существенных требований разработать стабильную базовую архитектуру продукта, которая позволяет решать поставленные перед системой задачи и в дальнейшем используется как основа разработки системы.
- На эту фазу может уходить около 30% времени и 20% трудоемкости одного цикла.
Пример хода работ на фазе проектирования Фаза построения - Основная цель этой фазы – детальное прояснение требований и разработка системы, удовлетворяющей им, на основе спроектированной ранее архитектуры. В результате должна получиться система, реализующая все выделенные варианты использования.
- На эту фазу уходит около 50% времени и 65% трудоемкости одного цикла.
Пример хода работ на фазе построения Фаза внедрения - Цель этой фазы – сделать систему полностью доступной конечным пользователям. На этой стадии происходит развертывание системы в ее рабочей среде, бета-тестирование, подгонка мелких деталей под нужды пользователей.
- На эту фазу может уходить около 10% времени и 10% трудоемкости одного цикла.
Пример хода работ на фазе внедрения Основные артефакты проекта по RUP и потоки данных между ними Дисциплины RUP: определение - Дисциплины включают различные наборы деятельностей, которые в разных комбинациях и с разной интенсивностью выполняются на разных фазах.
- В документации по процессу каждая дисциплина сопровождается довольно большой диаграммой, поясняющей действия, которые нужно выполнить в ходе работ в рамках данной дисциплины, артефакты, с которыми надо иметь дело, и роли вовлеченных в эти действия лиц.
Рабочие дисциплины RUP Моделирование предметной области (бизнес-моделирование, Business Modeling) Задачи этой деятельности – понять предметную область или бизнес-контекст, в которых должна будет работать система, и убедиться, что все заинтересованные лица понимают его одинаково, осознать имеющиеся проблемы, оценить их возможные решения и их последствия для бизнеса организации, в которой будет работать система. В результате моделирования предметной области должна появиться ее модель в виде набора диаграмм классов (объектов предметной области) и деятельностей (представляющих бизнес-операции и бизнес-процессы). Эта модель служит основой модели анализа. Определение требований (Requirements) Задачи – понять, что должна делать система, и убедиться во взаимопонимании по этому поводу между заинтересованными лицами, определить границы системы и основу для планирования проекта и оценок затрат ресурсов в нем. Требования принято фиксировать в виде модели вариантов использования. Анализ и проектирование (Analysis and Design) Задачи – выработать архитектуру системы на основе требований, убедиться, что данная архитектура может быть основой работающей системы в контексте ее будущего использования. В результате проектирования должна появиться модель проектирования, включающая диаграммы классов системы, диаграммы ее компонентов, диаграммы взаимодействий между объектами в ходе реализации вариантов использования, диаграммы состояний для отдельных объектов и диаграммы развертывания. Реализация (Implementation) Задачи – определить структуру исходного кода системы, разработать код ее компонентов и протестировать их, интегрировать систему в работающее целое. Тестирование (Test) Задачи – найти и описать дефекты системы (проявления недостатков ее качества), оценить ее качество в целом, оценить, выполнены или нет гипотезы, лежащие в основе проектирования, оценить степень соответствия системы требованиям. Поддерживающие дисциплины Развертывание (Deployment) Задачи – установить систему в ее рабочем окружении и оценить ее работоспособность на том месте, где она должна будет работать. Управление конфигурациями и изменениями (Configuration and Change Management) Задачи – определение элементов, подлежащих хранению в репозитории проекта и правил построения из них согласованных конфигураций, поддержание целостности текущего состояния системы, проверка согласованности вносимых изменений. Управление проектом (Project Management) Задачи – планирование, управление персоналом, обеспечение взаимодействия на благо проекта между всеми заинтересованными лицами, управление рисками, отслеживание текущего состояния проекта. Управление средой проекта (Environment) Задачи – подстройка процесса под конкретный проект, выбор и замена технологий и инструментов, используемых в проекте. Распределение работ между различными дисциплинами в проекте по RUP Экстремальное программирование - возникло как эволюционный метод разработки ПО "снизу вверх"
- является примером так называемого метода "живой" разработки (Agile Development Method)
- в группу "живых" методов входят, помимо экстремального программирования, методы SCRUM, DSDM (Dynamic Systems Development Method, метод разработки динамичных систем), Feature-Driven Development (разработка, управляемая функциями системы) и др.
Основные принципы "живой" разработки ПО - Люди, участвующие в проекте, и их общение более важны, чем процессы и инструменты.
- Работающая программа более важна, чем исчерпывающая документация.
- Сотрудничество с заказчиком более важно, чем обсуждение деталей контракта.
- Отработка изменений более важна, чем следование планам.
Схема потока работ в XP Достоинства и недостатки - Достоинствами XP, если его удается применить, является большая гибкость, возможность быстро и аккуратно вносить изменения в ПО в ответ на изменения требований и отдельные пожелания заказчиков, высокое качество получающегося в результате кода и отсутствие необходимости убеждать заказчиков в том, что результат соответствует их ожиданиям.
- Недостатками этого подхода являются невыполнимость в таком стиле достаточно больших и сложных проектов, невозможность планировать сроки и трудоемкость проекта на достаточно долгую перспективу и четко предсказать результаты длительного проекта в терминах соотношения качества результата и затрат времени и ресурсов. Также можно отметить неприспособленность XP для тех случаев, в которых возможные решения не находятся сразу на основе ранее полученного опыта, а требуют проведения предварительных исследований.
|