- •Содержание
- •1.13. Задания для самопроверки 59
- •1.17. Задания для самопроверки 88
- •1.19. Задания для самопроверки 108
- •1.23. Задания для самопроверки 116
- •1.27. Задания для самопроверки 125
- •1.37. Задания для самопроверки 144
- •1.48. Задания для самопроверки 159
- •Перечень рисунков
- •Перечень таблиц
- •Введение
- •Принятые сокращения
- •1.Жизненный цикл разработки по
- •Программные проект и его атрибуты
- •Ролевые модели в программном проекте
- •Размер и сложность программного проекта
- •Характеристики программного проекта
- •Качество программного продукта
- •Экран проекта и сводка о подходе
- •Критерий smart для формулирования целей
- •Критерии успешности программного проекта
- •Модели жизненного цикла
- •Водопадная модель
- •Модель быстрой разработки приложения
- •Пошаговая модель
- •Спиральная модель Боэма
- •Прототипная модель
- •Выбор модели жизненного цикла
- •Задания для самопроверки
- •2.Типовой каркас для разработки по
- •Программная разработка
- •Планирование проекта
- •Модель cocomo для оценки трудозатрат в проекте
- •Модель slim для оценки трудозатрат в проекте
- •Разработка спецификации требований
- •Отслеживание и контроль
- •Верификация и валидация
- •Обеспечение качества
- •Конфигурационное управление
- •Метрики
- •Повышение квалификации
- •Задания для самопроверки
- •3. Модели зрелости способностей cmm/cmmi
- •Ключевые области процесса в модели cmm
- •Характеристика уровней зрелости в модели cmm
- •Интегрированная модель зрелости способностей cmmi
- •История возникновения
- •Уровни зрелости и области процесса
- •Уровни способностей процесса в модели cmmi
- •Специальные и общие цели и практики процессных областей
- •Характеристики уровней зрелости в модели cmmi
- •Задания для самопроверки
- •4.Управление рисками в программном проекте
- •Модели esi и pmi управления рисками
- •Выявление рисков
- •Анализ рисков
- •Расстановка приоритетов для рисков
- •Планирование рисков
- •Исполнение ответных стратегий
- •Оценивание результатов исполнение ответных стратегий
- •Документирование действий по рискам
- •Заключительное оценивание рисков
- •Задания для самопроверки
- •5.Стандарты качества iso в применении к по
- •Структура и принципы семейства стандартов iso 9000
- •Модели iso 9000 на базе процессов
- •Самооценивание по ключевым элементам iso 9000
- •Задания для самопроверки
- •6.Формальные методы в разработке по
- •Инструменты формализации и верификации
- •Взаимодействие функциональностей
- •Интегрированная технология анализа и верификации
- •Задания для самопроверки
- •7.Некоторые общие технологические приемы
- •Инспекции по Фейгану
- •Диаграммы Исикавы («рыбий скелет»)
- •Инструменты
- •Swot-анализ
- •Сбалансированный экран результативности
- •Технологическая дорожная карта
- •Метод Дельфи
- •Деревья решений
- •Сравнительное ранжирование
- •Методология подвижного программирования
- •Принципы подвижного программирования
- •Рабочий цикл и роли участников
- •Рабочие документы и обстановка
- •Задания для самопроверки
- •8.Сертификация программного обеспечения в авиации
- •История создания серии документов do-178 и ed-12
- •Уровни программного обеспечения
- •Процессы жизненного цикла по авиационных систем
- •Цели процессных деятельностей
- •Рабочие документы и категории их контроля
- •Процесс планирования по
- •Процессы разработки по
- •Определение требований
- •Проектирование
- •Кодирование
- •Верификация
- •Конфигурационное управление
- •Обеспечение качества
- •Контакт с органом сертификации
- •Выводы и рекомендации
- •Задания для самопроверки
- •9.Задания для самостоятельной работы
- •Темы, связанные с единым каркасом для разработки по
- •Перечень тем
- •Краткое описание каждой темы
- •Тема 2. Программная архитектура базового инструмента для распределенного управления программными проектами
- •Тема 3. Профили типовых рабочих компонентов для разработки приложений
- •Тема 1. Прототип метрической базы данных для управления разработкой приложений
- •Тема 5. Репозиторий повторно используемых компонентов
- •Тема 6. Сквозной пример для единого каркаса разработки приложений
- •Темы, связанные применением формальных методов перечень тем
- •Тема 1. Сравнительный анализ систем верификации
- •Тема 2. Формализация протоколов связи краткое описание каждой темы
- •Тема 1. Сравнительный анализ систем верификации
- •Тема 2. Формализация протоколов связи
- •10.Литература
- •11.Приложения
- •Шаблон для одностраничного экрана проекта
- •Примерная структура положения о работе и тз
- •Примерная форма еженедельного отчета
- •Примерная форма презентации на ежемесячном операционном обзоре
- •12.Указатель
Прототипная модель
Прототипная (prototyping) модель (Рис. 12) начинается с составления плана, после чего делается его быстрый анализ, создание некоторой базы данных, где будут копиться все данные о проекте и его рабочих продуктах, разрабатывается пользовательский интерфейс и после него разрабатываются прототипы, реализующие те функции, которые определяются спецификациями. Эти прототипы несколько раз совершенствуются, и дополняются новыми, которые реализуют все большее количество функций или реализуют их во все большем объеме.
После того, как наработан достаточный набор прототипов, демонстрирующих заказанную функциональность, и получено их одобрение заказчиком, тогда из последних версий прототипов собирается конечный продукт, выполняется его настройку на требования проекта с необходимыми поправками, и он выдается в качестве результата. Прототипная модель близка к пошаговой модели, но, в отличие от нее, строится на непрерывном совершенствовании и расширении работающих прототипов отдельных функций с участием заказчика в их оценивании.
Таким образом, подход прототипной модели состоит в построении «быстрой» частичной реализации системы до или во время фазы сбора требований. Заказчик или потенциальные пользователи некоторое время работают с этим прототипом и дают свои выводы о его сильных и слабых сторонах. Затем по этим заключениям изменяются спецификации требований, чтобы отразить реальные потребности заказчика.
Впоследствии на основании собранных требований может быть создан новый программный продукт уже с использованием другой модели ЖЦ, учитывающей эти новые обстоятельства. Для быстро устаревающих продуктов прототипная модель может быть удачным решением по соотношению затраты/результат.
Рис. 12. Прототипная модель
Выбор модели жизненного цикла
Выбор той или иной модели жизненного цикла обычно диктуется особенностями проекта, его обоснованием служат учитываемые критерии. Следующие факторы, как правило, влияют на этот выбор:
Доступность ресурсов: низкая или некоторая – ресурсы нельзя оценить или они недоступны; высокая – ресурсы можно определить, и они доступны.
Сложность проекта: низкая – все критерии сложности низкие; средняя – критерии сложности смешаны: 1-2 высокие, 1-2 низкие; высокая – все критерии сложности высокие.
Стоимость приложения: низкая – оценка меньше некоторой суммы; средняя – оценка равна этой сумме; высокая – оценка больше этой суммы.
Стоимость будущих обновлений: низкая – оценка меньше некоторой суммы; высокая – оценка стоимости больше этой суммы.
Дискретное изменений требований: малое – задевает не более 5 интерфейсов и включает не более 10 процессов; большое – задевает более 5 интерфейсов и включает более 10 процессов.
Легкость в использовании: просто – фазы и поставки понятны, процесс сфокусирован на разработку, а не на поддерживающие процессы; сложно – поддерживающие процессы требуют управления, наряду с разработкой.
Функциональные потребности приложения: смутные – трудно определимые; разработчики формулируют их сами; специфицированные – хорошо определены, если они измеряемы и тестируемы.
Постепенное изменение требований: малое – задевают небольшой объем системы; большое – требуют пересмотра большого числа интерфейсов.
Время жизни приложения: краткое – краткосрочное решение, например, на несколько дней; среднее – от 3 до 5 лет; долгое – более 5 лет.
Технология производства продукта: существующая – современная технология, уже применявшаяся разработчиками; новая – технология, ранее не применявшаяся данными разработчиками.
Отдача приложения: низкая – результаты анализа стоимость/выгоды меньше заданного значения или если выгоды несущественны; высокая – результаты анализа стоимость/выгоды больше заданного значения.
Качество результатов: сразу – нужное качество достигается с первого раза; переработка – для достижения нужного качества требуются переделки.
Изменчивость требований: низкая – требования изначально хорошо заданы и стабильны; средняя – минимальные изменения в требованиях допустимы; высокая – при высокой изменчивости эффект движущейся мишени.
Повторное использование продуктов и документации: низкое – возможность использования продуктов из других реализаций ограничена; высокое – предполагается их использование в интеграции и тестировании.
Перспективы управления рисками: нет – не рассматривается; да – управление рисками должно быть включено в данный ЖЦ.
Неопределенность требований: нет – требования определены и предсказуемы; да – есть неопределенность, и ЖЦ должен это учитывать.
Неизвестные требования: нет – все требования выявлены; да – некоторые требования могут быть упущены.
Следующая таблица дает сводку по сравнению рассмотренных выше шести моделей жизненного цикла по перечисленным выше 17 критериям, для каждого из которых дается нечисловая оценка: низкий, средний, высокий или некоторый; большой или малый; существующий или новый; да или нет; сразу или после переработки.
Табл. 4. Матрица выбора модели ЖЦ
Критерии выбора |
Водо- падная |
RAD |
V-об-разная |
Поша- говая |
Спи-ральная |
Прото- типная |
1.Доступность ресурсов |
низкая |
некот. |
низкая |
некот. |
некот. |
некот. |
2.Сложность проекта |
низкая |
средняя |
низкая |
высокая |
высокая |
средняя |
3.Стоимость приложения |
низкая |
низкая |
низкая |
средняя |
высокая |
низкая |
4.Стоимость будущих обновлений |
высокая |
низкая |
высокая |
низкая |
низкая |
низкая |
5.Дискретное изменений требований |
большое |
малое |
большое |
малое |
малое |
малое |
6.Легкость в использовании |
просто |
просто |
просто |
сложно |
сложно |
просто |
7.Функциональные потребности приложения |
специф. |
специф. |
специф. |
cмут-ные |
смутные |
смут-ные |
8.Постепенное изменение требований |
малое |
малое |
малое |
боль-шое |
большое |
малое |
9.Время жизни приложения |
среднее |
краткое |
среднее |
долгое |
долгое |
краткое |
10.Технология производства продукта |
существ. |
новая |
существ. |
новая |
новая |
новая |
11.Отдача приложения |
высокая |
низкая |
высокая |
высокая |
высокая |
низкая |
12.Качество результатов |
перераб. |
перераб |
перераб. |
сразу |
сразу |
сразу |
13.Изменчивость требований |
низкая |
низкая |
низкая |
средняя |
высокая |
низкая |
14.Повторное использование продукта и документации |
низкое |
низкое |
низкое |
высокое |
высокое |
низкое |
15.Перспективы управления рисками |
нет |
нет |
нет |
нет |
да |
да |
16.Неопределенность требований |
нет |
нет |
нет |
да |
да |
да |
17.Неизвестные требования |
нет |
нет |
нет |
да |
да |
да |
Если сравнивать по легкости в использовании (критерий №6), то просто используемыми являются модели водопадная, быстрой разработки приложения (RAD), V-образная и прототипная, а более сложными – пошаговая и спиральная. Если же сравнивать по сложности проекта (критерий №2), то водопадная и V-образная модели подходят только для проектов с низкой сложностью, модели быстрой разработки приложения (RAD) и прототипная – для проектов средней сложности, а пошаговая и спиральная могут применяться и для проектов с высокой сложностью.
На основании этой матрицы можно будет сделать обоснование выбора модели ЖЦ. При этом важно еще такой выбор задокументировать, сохранив в документах проекта и матрицу, и значения соответствующих атрибутов проекта.
Подводя итог, можно дать следующие характеристики рассмотренным моделям жизненного цикла.
Водопадная модель подходит для небольших проектов с хорошо определенными требованиями и минимальным взаимодействием с заказчиком.
Быстрая разработка приложений подходит для небольшой и высокопрофессиональной группы разработчиков, которым не надо много обмениваться между собою формальными сообщениями. Там сокращается цикл и увеличивается производительность именно за счет высокой профессиональности разработчиков при существенном повторном использовании готовых модулей и решений.
V-образная модель проста в использовании и в ней делается упор на тестирование через его сопряжение с разработкой; нисходящая и восходящая ветви процесса хорошо согласованы между собой.
Пошаговая модель быстрее дает действующую систему, на основании которой можно ее развивать, и, что очень важно, в этой модели нет резких скачков от одного состояния (когда система полностью не работает) к следующему, когда она уже работает. Нечто работающее появляется уже в самом начале проекта, что постоянно развивается и совершенствуется с учетом поступающей обратной связи от заказчика.
Спиральная модель более интересна своим вниманием к анализу рисков и рассчитана на сложные проекты с большими неопределенностями. Она является, на самом деле, расширением водопадной модели, но только с обратной связью.
Прототипную модель стоит применять, когда требования не ясны и(или) явно не полны. Создавая прототипы, один за другим, уже в самом начале проекта, исполнитель проясняет для себя и для заказчика все неясные или упущенные требования. Важным аспектом этой модели является своевременная обратная связь от заказчика. В результате создается именно то, что ему нужно, хотя в начале заказчик был не в состоянии исчерпывающим образом сформулировать свои требования.
Табл. 5. Комбинация моделей ЖЦ в разработке MS-DOS, версии 6.0
Компонент |
Модель жизненного цикла его разработки |
Virus Backup |
Внешняя разработка с последующей интеграцией |
Fixes |
V-образная |
Disk Doublespace |
Водопадная |
File Recovery |
Спиральная |
Memory Management |
Прототипная |
Весь релиз 6.0 |
Пошаговая |
При разработке больших программных систем могут применяться разные модели жизненного цикла для разных ее компонентов, как это показано в Табл. 5 на примере разработки ОС MS-DOS, версии 6.0.
Этот пример показывает, что к выбору модели ЖЦ следует подходить творчески, учитывая особенности данного проекта, создаваемого в нем продукта и его подсистем.