11. Процесс разработки программной системы 11.1. Последовательный и итеративный процессы разработки • Процесс разработки программной системы является бизнес процессом. • Поэтому, как и любой другой бизнес процесс, разработка программной системы представляется как последовательность действий или активностей, которая приводит к созданию конечного продукта, в данном случае программной системы. Этапы разработки программной системы • Разработка программной системы включает следующие этапы: – определение требований, которым должна удовлетворять программная система; – проектирование (моделирование) системы; – реализация (программирование) системы; – тестирование системы; – внедрение (опытная эксплуатация) системы. Диаграмма активности процесса разработки act Chapter 11 Определение функциональных требований к системе Проектирование системы Функциональные требования Реализация системы Модель системы Тестирование системы Программная система Внедрение системы Протестированная программная система Установленная программная система Различия в процессах разработки • На практике существуют различные подходы к исполнению процесса разработки программного обеспечения, которые отличаются в следующих двух аспектах: – каким-то этапам разработки программной системы может уделяться больше внимания и соответственно времени, чем другим; – этапы разработки могут исполняться последовательно один раз или итеративно повторяться несколько раз. • Второй аспект исполнения процесса разработки программной системы делит все такие процессы на две группы: последовательные (водопадные или каскадные) и итеративные процессы разработки программного обеспечения. 11.2. Итеративный процесс разработки • Наиболее известным итеративным процессом разработки программного обеспечения является RUP (Rational Unified Process) – унифицированный процесс разработки, предложенный фирмой Rational. • Основными характеристиками этого процесса разработки являются: – акцент на использование вариантов использования при разработке системы (Use-Case Driven); – наиболее важные статические и динамические аспекты программной системы определяются в терминах её архитектуры, при этом архитектура программной системы опирается на варианты использования (Architecture-Centric); – процесс разработки имеет итеративный характер, на каждой следующей итерации наращивается реализация системы, при этом итерации планируются на основании вариантов использования (Iterative and Incremental). Унифицированный процесс • Унифицированный процесс включает четыре фазы разработки программной системы, при исполнении которых выполняется итеративное повторение этапов разработки системы. • Эти фазы носят следующие названия: – – – – «Начало» (Inception); «Развитие» (Elaboration); «Конструирование» (Construction); «Внедрение» (Transition). Графическое представление RUP 11.3. Фаза «Начало» • • • Основным назначением фазы «Начало» является формирование начального видения проблемы и оценка ресурсов и рисков, связанных с разработкой программной системы. Результатом исполнения этой фазы должно быть решение о возможности или невозможности продолжать разработку проекта. Для принятия такого решения на фазе «Начало» рассматриваются следующие вопросы: – – – – достигается общее понимания границ и целей проекта; определяются основные функциональные возможности системы; определяется подходящая архитектура системы; определяется стоимость, время исполнения и риски, связанные с разработкой системы; – определяются средства и способы разработки системы. • При завершении фазы «Начало» заинтересованные стороны принимают решение о целесообразности продолжения проекта. Результаты фазы «Начало» – Проспект программной системы, описывающий требования к системе, основные её возможности и ограничения. – Предварительная функциональная модель системы, в которой 10%-20% вариантов использования проработаны полностью. – Предварительный глоссарий проекта. – Предварительная экономическая оценка проекта, которая включает оценку затрат на разработку и прибыли, которая будет получена в результате реализации проекта. – Предварительную оценку рисков, связанных с разработкой программной системы. – План проекта, содержащий фазы и итерации процесса разработки. – Бизнес модель прикладной области. – Один или несколько прототипов программной системы. 11.4. Фаза «Развитие» • Фаза «Развитие» является наиболее важной фазой в унифицированном процессе разработки программного обеспечения. • На этой фазе достигается более полное видение проблемы, что обеспечивается решением следующих вопросов: – уточняются функциональные и другие требования; – итеративно реализуется базовая архитектура; – разрабатываются наиболее критические компоненты программной системы; – разрешаются высокие риски, связанные с разработкой программной системы; – определяются более реалистичные оценки стоимости, времени разработки и прибыли. Результаты фазы «Развитие» – Функциональная модель системы, в которой около 80% вариантов использования проработаны полностью. – Нефункциональные требования к программной системе. – Глоссарий проекта. – Описание программной архитектуры. – Работающий прототип системы. – Проработанная экономическая оценка проекта. – Уточненная оценка рисков, связанных с разработкой программной системы. – Проработанный план реализации проекта. – Предварительный вариант руководства пользователя программной системы. 11.5. Фаза «Конструирование» • На фазе «Конструирование» завершается разработка программной системы. • На этой фазе выполняются следующие работы: – реализуются оставшиеся компоненты системы; – выполняется интеграция всех разработанных компонентов в конечный продукт; – разработанная программная система тестируется. Результаты фазы «Конструирование» – Завершенная программная система. – Руководство пользователя программной системы. – Описание текущей версии программной системы. 11.6. Фаза «Внедрение» • Целью фазы «Внедрение» является передача программной системы заказчику или подготовка этой системы к распространению. • Для решения этих задач на этой фазе выполняются следующие работы: – бета-тестирование системы, т.е. проверка системы на удовлетворение требованиям заказчиков или потребителей; – доработка конечной версии системы; – обучение пользователей и персонала, поддерживающего эксплуатацию системы; – маркетинг продукта и его передача распространителям и продавцам. • Результатом фазы «Внедрение» является законченная версия программной системы, готовая к к использованию заказчиком или распространению.