Скачиваний:
46
Добавлен:
29.01.2021
Размер:
5.08 Mб
Скачать
    1. Модели жизненного цикла

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

Рис. 6. Обобщенная схема повторяемого процесса разработки

Общая схема модель жизненного цикла представлена на Рис. 6. Модель структурирует процесс разработки, выделяя в нем отдельные фазы (phases) или этапы (milestones), исполнение которых может совмещаться во времени и состоять из нескольких более мелких этапов. На каждом этапе исполняются определенные для этапа деятельности (activities), результатом которых являются рабочие продукты (work products) в виде некоторых документов (documents), создаваемых в ходе их исполнения. Примером таких документов являются исходный код, отчет о тестировании, отчет об исправлении дефектов. Рабочие продукты, поставляемые заказчику в ходе проекта, называются поставками (deliverables), и для них определяются сроки, формы и способы поставок (в электронном виде, на магнитном или ином носителе или еще как-нибудь), причем датой поставки считается не дата отправки исполнителем данного рабочего продукта заказчику, а подтвержденная дата получения этой поставки заказчиком.

Таким образом, модель жизненного цикла обеспечивает каркас для определения повторяемого процесса, в явном виде задающего деятельности по созданию высококачественного ПО. Она дает разработчику возможность включать лучшие практики из опыта других и делиться своими лучшими практиками с другими, причем понятие модели ЖЦ применимо к программным проектам любого размера, как большим, так и малым.

Типичными деятельностями в этой обобщенной схеме являются:

  • на фазе анализа –

  • планирование проекта (project planning)

  • сбор и анализ требований (requirements gathering and analysis);

  • на фазе проектирования –

  • предварительное или высокоуровневое проектирование (preliminary / high-level design)

  • подробное или низкоуровневое проектирование (detailed / low-level design);

  • на фазе реализации –

  • кодирование модульное тестирование (coding and unit testing);

  • на фазе обозрения –

  • интеграционное тестирование (integration testing);

  • системное тестирование (system testing).

Для малых проектов данная схема сводится к следующим основным фазам:

  1. Спланировать (plan) – определить функциональные требования, привязав их к ПО и к аппаратуре, и по ним создать план разработки, включающий перечень поставляемых рабочих продуктов, оценку ресурсов и определение процессов поддержки;

  2. Специфицировать (specify) – точно определить внешние характеристики будущей программы с точки зрения пользователя (например, через прототипирование и предъявление пользователям); провести обзор спецификаций как минимум с участием инженера-проектировщика, основных пользователей и заказчика;

  3. Разработать (develop) – выполнить детальный проект с точки зрения его реализации; провести обзор детального проекта с участием разработчиков и тестировщиков; выполнить кодирование этого проекта; провести обзор кода с участием тех же лиц, что и в обзоре проекта; скомпилировать программу, выявив синтаксические ошибки, не вскрытые на обзоре кода; протестировать программу, выявив логические ошибки, не вскрытые обзором кода;

  4. После завершения (post-mortem) – проанализировать проделанную работу, проверив, что все плановые поставки завершены; сравнить результаты работ с требованиями пользователя по качеству; сравнить фактические результаты с первоначальными оценками, объяснив все расхождения.

Наличие проговоренной и понятной модели ЖЦ и следование ей в процессе разработки имеет следующие положительные следствия для хода проекта:

  1. Модель способствует определению требований до проектирования системы – надо определить, что система должна делать ДО ее создания;

  2. Модель способствует проектированию программного обеспечения ДО построения его компонентов – надо спланировать, как именно компоненты будут взаимодействовать между собой и по каким интерфейсам ДО их создания;

  3. Модель определяет, какие именно рабочие продукты должен поставить данный процесс разработки – надо сгенерировать стандартный набор поставок, которые должны быть тестируемы и смогут помочь в дальнейшем сопровождении данного программного продукта;

  4. Модель дает возможность руководству проектом тщательно отслеживать его продвижение – руководство должно располагать базовыми стандартами для измерения качества продукта и производительности, как самого процесса разработки, так и разработчиков;

  5. Модель снижает затраты на разработку и сопровождение – все предыдущее этому способствует;

  6. Модель дает возможность организации-разработчику быть более структурированной и управляемой.

Благодаря следованию какой-либо известной модели ЖЦ, организация-разработчик получает следующие преимущества:

  1. Улучшается качество продукта через согласованность в его разработке – продукт определяется как состоящий из всех поставляемых рабочих продуктов его жизненного цикла;

  2. Облегчается управление проектами – сравнение с известными стандартами выявляет проблемы, требующие решения;

  3. Облегчается отслеживание состояния проекта – определение деятельностей и заданий в процессе является средством знать, что именно было сделано, за какое время и какими ресурсами;

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

  5. По мере исправления организационных слабостей растет уровень зрелости организации-разработчика – когда недостатки процесса исправляются, организация переходит на более высокий уровень зрелости, как это определяется моделями зрелости CMM/CMMI.

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