- •Разработка сложных программных изделий
- •Раздел 1.Структурные методологии разработки программного обеспечения Глава 1.Структурные методы в программотехнике
- •1.1.Эволюция структурных методов
- •1.2.Основные идеи и принципы структурной методологии
- •1.3.Принципы программотехники
- •1.4.Принципы информационной инженерии
- •1.5.Автоматизация проектирования
- •Глава 2.Структурные методы анализа и проектирования
- •2.1.Структурный системный анализ
- •2.2.Нисходящее проектирование
- •2.3.Структурное проектирование, управляемое потоками данных
- •2.4.Методы проектирования, управляемые структурами данных
- •Глава 3.Структурные методы программирования
- •3.1.Особенности структурных программ
- •3.2.Цели структурного программирования
- •3.3.Программирование с использованием пошаговой детализации
- •3.4.Нисходящее и восходящее программирование
- •Глава 4.Модульное программирование
- •4.1.Основные понятия и определения
- •4.2.Программные модули и схема модуляризации
- •4.3.Оценка качества модульной программы
- •Глава 5.Модели разработки программных изделий
- •5.1.Модель жизненного цикла программного изделия
- •5.2.Модель "возрастающей выдачи"
- •5.3.Модель с использованием прототипа
- •5.4.Спиральная модель
- •Раздел 2.Фазы жизненного цикла программного изделия Глава 6.Определение требований пользователя и требований к программному изделию
- •6.1.Требования пользователя
- •6.2. Требования к программному изделию
- •6.3. Разработка логической модели программного изделия
- •6.4. Классификация требований к программному изделию
- •6.5. Атрибуты требований к программному изделию
- •6.6. Документ Требования к программному изделию
- •6.7 Техническое задание на разработку программного изделия
- •Глава 7.Архитектурное проектирование программного изделия
- •7.1.Общее содержание работ фазы
- •7.2.Виды деятельности
- •7.3.Критерии качества архитектурного проекта
- •Глава 8.Детальное проектирование и изготовление программного изделия
- •8.1.Основные виды деятельности
- •8.2.Кодирование модулей
- •8.3.Тестирование программного изделия
- •8.4.Документирование работ по проектированию программного изделия
- •Глава 9.Отладка программ
- •9.1.Трудности отладки
- •9.2.Средства и методы отладки
- •9.3.Категории ошибок в программном обеспечении
- •9.4.Рекомендации по отладке
- •Глава 10.Эксплуатация и сопровождение программного изделия
- •10.1.Передача программного изделия в эксплуатацию
- •10.2.План испытаний
- •10.3.Работы по эксплуатации и сопровождению программного изделия
- •10.4.Задачи службы сопровождения программного изделия
- •Раздел 3.Управление разработкой программного изделия Глава 11.Управление жизненным циклом программного изделия
- •11.1.Виды деятельности, связанные с управлением жизненным циклом программного изделия
- •11.2.Измерения в программотехнике
- •11.3.Управление проектированием программного изделия
- •11.4.Методы получения оценок для проекта программного изделия
- •11.4.1. Методы функциональной декомпозиции
- •11.4.2. Эмпирические оценочные модели
- •11.5.Управление рисками
- •11.6.Планирование разработки программного изделия
- •Глава 12.Управление качеством программного изделия
- •12.1.Качество программного изделия
- •12.2.Обеспечение качества программного изделия
- •12.3.Измерение качества программного изделия
- •12.4.Управление конфигурацией программного изделия
- •Литература
11.4.2. Эмпирические оценочные модели
Оценочная модель для программных изделий использует формулу для получения оценочных данных. Для вывода формулы используются опытные данные, полученные в предыдущих разработках.
Обычно выделяются классы программных продуктов, и для каждого класса используется своя формула, т.е. универсальных моделей, пригодных для любых проектов, нет.
Модели, которые позволяют предсказать усилия на разработку изделия (в человеко-месяцах) и длительность проектирования (в хронологических месяцах или годах), получили название ресурсных моделей и обычно состоят из одной или нескольких эмпирически выведенных формул. Разработано несколько классов моделей.
Одной из наиболее распространенных и используемых на практике является Конструктивная модель стоимости — СОСОМО (Constructive Cost Model). Эта модель применима к трем типам программных систем:
1. Изолированный тип — относительно небольшие программные проекты, в разработке которых участвуют небольшие коллективы с хорошим прикладным опытом работы. Требования к программному изделию при этом не очень жесткие.
2. Полуизолированный тип — промежуточные по размеру и сложности проекты, в разработке которых участвуют группы специалистов с разным уровнем опыта и квалификации. Отдельные требования к программному изделию или базе данных могут быть весьма жесткими.
3. Встроенный тип — когда проект разрабатывается внутри очень строгих ограничений и требований.
Конструктивная модель стоимости представлена иерархией моделей:
1. Базовая модель — основная — это статическая модель с одной переменной. Модель позволяет рассчитать усилия и стоимость разработки программного изделия. Параметром модели служит размер изделия в тысячах строк кода (KLOC).
Базовая модель дает возможность получить не только интегральные оценки показателей трудозатрат в целом по всему проекту, но и определить трудозатраты и сроки выполнения работ как по фазам ЖЦПИ, так и по основным видам деятельности.
2. Промежуточная модель представляет собой развитие базовой модели и дает более точные оценки трудозатрат. Отличие модели заключается в использовании совокупности стоимостных атрибутов, или коэффициентов изменения трудоемкости, характеризующих особенности конкретного проекта и условия его разработки.
3. Детальная модель предназначена для более подробного учета деталей проекта и обеспечивает более точные оценки трудозатрат, сроков и стоимости разработки программного изделия.
Основная особенность детальной модели — трехуровневая иерархическая декомпозиция программного изделия: система — подсистема — модуль. Другое отличие от промежуточной модели состоит в том, что коэффициенты изменения трудоемкости определяются индивидуально для каждой фазы ЖЦПИ.
Для оценки стоимости и затрат усилий на разработку используются следующие уравнения базовой модели СОСОМО:
Е = а • (KLOC) • ехр (Ь);
D = с - (Е) • exp (d),
где Е — требуемые усилия (в человеко-месяцах);
D — хронологическое время разработки (в месяцах);
а, Ь, с, d — коэффициенты, представленные в табл. 11.1.
Таблица 11.1
Тип программного проекта |
а |
b |
с |
d |
1. Изолированный 2. Полуизолированный 3. Встроенный |
2,4 3,0 3,6 |
1,05 1,12 1.20 |
2,5 2.5 2.5 |
0,38 0,35 0,32 |
Базовая модель расширяется и превращается в промежуточную при условии учета совокупности атрибутов, оказывающих влияние на стоимость разработки. Обычно атрибуты группируются в четыре основные категории.
1. Атрибуты программного продукта:
• требуемая надежность;
• размер прикладной базы данных;
• сложность программного продукта.
2. Атрибуты технических средств:
• ограничения на время прогона программы;
• ограничения на объем памяти;
• требуемое время цикла обработки.
3. Атрибуты персонала разработчиков:
• квалификация системного аналитика;
• опыт в данной прикладной области;
• опыт работы с принятой в проекте средой разработки.
4. Атрибуты среды проектирования:
• применение современных методов программотехники;
• использование специальных инструментальных средств для разработки программного обеспечения.
Каждый из перечисленных атрибутов располагается в пределах шкалы значений, диапазон которой изменяется от "очень низкий" до "чрезвычайно высокий". На основе специально составленной таблицы, основанной на опыте разработки подобных проектов, определяется множитель корректировки усилий. Типичные значения этих множителей лежат в пределах от 0,9 до 1,4.