- •Оглавление
- •Глава 1. Жизненный цикл программного обеспечения ……………………………………………43
- •Глава 2. Методические аспекты
- •Глава 3. Моделирование бизнес-процессов
- •Глава 4. Анализ и проектирование
- •Глава 5. Технологии создания программного
- •Глава 6. Оценка трудоемкости создания
- •Глава 7. Особенности современных проектов ........527
- •Предисловие
- •Введение
- •Глава 1 жизненный цикл программного обеспечения
- •Нормативно-методическое обеспечение создания по
- •Стандарт жизненного цикла по
- •Основные процессы жц по
- •Вспомогательные процессы жизненного цикла по
- •Организационные процессы жизненного цикла по
- •Взаимосвязь между процессами жц по
- •Модели жизненного цикла по
- •Каскадная модель жц
- •Итерационная модель жизненного цикла
- •Методика spmn
- •Пример процесса «управление требованиями»
- •Пример процесса «управление конфигурацией по»
- •Общие принципы проектирования систем
- •Визуальное моделирование
- •Структурные методы анализа и проектирования по
- •Метод функционального моделирования
- •Описание типов связей
- •Моделирования процессов idef3
- •Типы связей idef3
- •Типы соединений
- •Моделирование потоков данных
- •Количественный анализ диаграмм
- •Сравнительный анализ sadt-моделей и диаграмм потоков данных
- •Моделирование данных
- •Объектно-ориентированные методы анализа и проектирования по
- •Основные принципы построения объектной модели
- •Основные элементы объектной модели
- •Значения мощности
- •Унифицированный язык моделирования uml
- •Диаграммы вариантов использования
- •Диаграммы взаимодействия
- •Диаграммы классов
- •Диаграммы состояний
- •Диаграммы деятельности
- •Диаграммы компонентов
- •Диаграммы размещения
- •Механизмы расширения uml
- •Количественный анализ диаграмм uml
- •Основные элементы языка uml
- •Основные типы связей языка uml
- •Диапазоны оценок для диаграмм uml
- •Образцы
- •Сопоставление и взаимосвязь структурного и объектно-ориентированного подходов
- •Структурный (процессный) подход к моделированию бизнес-процессов
- •Принципы процессного подхода
- •Применение диаграмм потоков данных
- •Система моделирования aris
- •Метод ericsson-penker21
- •Пример использвания процессного подхода
- •История болезни пациента
- •Спецификация структур данных
- •Построение диаграмм потоков данных нулевого и последующих уровней
- •Объектно-ориентированный подход к моделированию бизнес-процессов
- •Методика моделирования
- •Пример использования объектно-ориентированного подхода
- •Пример спецификации требований к программному обеспечению
- •Пример структурного проектирования по
- •Построение диаграмм системных процессов и диаграмм последовательностей экранных форм
- •Объектно-ориентированный анализ
- •Архитектурный анализ
- •Анализ вариантов использования
- •Объектно-ориентированное проектирование
- •Проектирование архитектуры системы
- •Проектирование элементов системы
- •Глава 5 технологии создания программного обеспечения
- •Определение технологии
- •Общие требования, предъявляемые
- •Внедрение тс по в организации
- •Общие сведения
- •Определение потребностей в тс по
- •Оценка и выбор тс по
- •Критерии оценки и выбора тс по
- •Выполнение пилотного проекта
- •Практическое внедрение тс по
- •Примеры тс по
- •Технология rup (rational unified process)
- •Технология oracle
- •Технология borland
- •Технология computer associates
- •Глава 6 оценка трудоемкости создания программного обеспечения
- •Методы оценки и их классификация
- •Методика оценки трудоемкости разработки по на основе функциональных точек
- •Определение функциональных типов
- •Определение количества и сложности функциональных типов по данным
- •Сложность ilf и eif
- •Определение количества и сложности транзакционных функциональных типов
- •Подсчет количества функциональных точек
- •Зависимость количества fp от сложности функционального типа
- •Коммуникации данных
- •Распределенная обработка данных
- •Сложность ei
- •Сложность ео
- •Производительность
- •Эксплуатационные ограничения
- •Частота транзакций
- •Ввод данных в режиме «онлайн»
- •Эффективность работы конечных пользователей1
- •Онлайновое обновление
- •Сложная обработка31
- •Повторное использование
- •Простота установки
- •Простота эксплуатации
- •Количество возможных установок на различных платформах
- •Гибкость32
- •Оценка трудоемкости разработки
- •Размер программного обеспечения в fp и loc
- •Распределение временных затрат по стадиям для маленьких и больших проектов
- •Статистические данные
- •Статистические (регрессионные) модели
- •Группа процессов
- •Определение весовых показателей вариантов использования
- •Определение технической сложности проекта
- •Определение уровня квалификации разработчиков
- •Оценка трудоемкости проекта
- •Методы, основанные на экспертных оценках
- •Метод дельфи
- •Метод декомпозиции работ
- •Средства оценки трудоемкости
- •Планирование итерационного процесса создания по
- •Глава 7 особенности современных проектов
- •Категории «безнадежных» проектов
- •Причины, порождающие «безнадежные» проекты
- •Причины разногласий между участниками проекта
- •Переговоры в «безнадежном» проекте
- •Человеческий фактор в «безнадежных» проектах
- •Процессы в «безнадежных» проектах
- •Динамика процессов
- •Контроль над продвижением проекта
- •Технология и инструментальные средства «безнадежных» проектов
- •Дополнительная литература
- •Краткий словарь терминов
- •Список основных сокращений
Средства оценки трудоемкости
Ряд средств оценки является коммерческими продуктами — SLIM (Quantitative Systems Management), ESTIMACS (Computer Associates), KnowledgePLAN и CHECKPOINT (SPR). Эти продукты нельзя назвать совершенными, и все они требуют от пользователя высокого уровня квалификации (здесь, как и в других областях деятельности, действует принцип «что заложишь, то и получишь»). В лучшем случае с помощью таких продуктов можно получить оценку с точностью 10%. Даже если точность будет 50%, это все равно лучше, чем брать данные «с потолка».
Существуют специальные программные средства, автоматизирующие проведение оценок по методу функциональных точек и позволяющие оценить, насколько быстро и с какими затратами в действительности удастся реализовать проект. Одним из таких средств является KnowledgePLAN - продукт фирмы SPR.
KnowledgePLAN разработан на основе исследований, проведенных в фирме SPR, в области оценок сложности, трудоемкости и производительности при разработке ПО. Оценка и планирование в пакете KnowledgePLAN ведется на основе статистических закономерностей, выведенных на основе анализа более чем 8000 успешно завершенных проектов из различных областей применения. Исходные данные для вычислений находятся в специальном репозитории, который обновляется по результатам выполнения реальных проектов. В качестве метрик для оценки размеров ПО используются методика подсчета функциональных точек и метод оценки сложности программного продукта — собственная разработка фирмы SPR - метрика, позволяющая учесть алгоритмическую сложность разрабатываемых программ.
KnowledgePLAN обладает следующими возможностями:
формирование близкого к реальному плана работ по проекту;
определение трудоемкости и стоимости планируемых проектов;
учет влияния условий разработки, применяемых инструментальных средств и используемых технологий на прогнозируемую трудоемкость, сроки и стоимость разработки;
проведение анализа «what — if» («что-если») для поиска лучших решений;
проведение сравнительного анализа качества и производительности разработки разнотипных проектов, или однотипных проектов, при выполнении которых использовались различные технологии;
накопление статистической многомерной информации о проекте и его участниках;
классификация проектов для принятия решения о структуре управления проектом;
анализ плановой и реальной оценки сложности и величины разработанного ПО и трудоемкости выполнения проекта.
6.7.
Планирование итерационного процесса создания по
При планировании процесса создания ПО важно не только оценить длительность разработки (как это, например, предлагалось сделать в подразд. 6.3.2), но и представлять себе соотношение длительности различных стадий процесса создания ПО. Так, например, поданным компании Rational Software, распределение времени и объема работ по стадиям представлено в табл. 6.19.
Такое распределение справедливо для проекта, имеющего следующие характеристики:
средний размер проекта и средний объем работ;
незначительное число рисков и нововведений;
нахождение в начальном цикле разработки;
отсутствие предопределенной архитектуры.
Таблица 6.19
Распределение времени и объема работ по стадиям
Стадия |
Время работы, % |
Объем работы, % |
Начальная стадия |
10 |
5 |
Разработка |
30 |
20 |
Конструирование |
50 |
65 |
Ввод в действие |
10 |
10 |
Данное распределение может быть достаточно гибким, оно подчиняется указанным ниже эвристическим правилам.
Если для определения области действия проекта, изыскания финансирования, изучения рынка или создания первоначального прототипа нужно значительное время, — увеличивается начальная стадия.
Если отсутствует архитектура, предусматривается применение новых (или незнакомых) технологий и (или) имеются жесткие ограничения производительности, значительное число технических рисков, а персонал большей частью состоит из новичков, — увеличивается стадия разработки.
Если проект представляет собой разработку второго поколения существующего продукта и в архитектуру не вносятся значительные изменения — уменьшаются стадии разработки и конструирования.
Если нужно быстро выпустить продукт на рынок (из-за высокой конкуренции) и спланировать постепенное завершение разработки — уменьшается стадия конструирования и увеличивается стадия ввода в действие.
Если затруднено внедрение, например, при замещении одной системы другой без прерывания эксплуатации или при необходимости сертификации (в таких областях, как медицинское оборудование, ядерная промышленность или авиационная электроника), — увеличивается стадия ввода в действие.
Следующий важный вопрос «Сколько итераций будет содержать каждая стадия?». Прежде чем принять решение по этому вопросу, нужно рассмотреть продолжительность каждой итерации.
В идеальной ситуации итерация длится от двух до шести недель, хотя в действительности это зависит от характера проекта и размера организации-разработчика. Приведем несколько примеров.
Группа из пяти человек может выполнить некоторое планирование в понедельник утром, наблюдать за ходом проекта и перераспределять задания во время ежедневных совместных обедов, начать конструирование во вторник, а завершить итерацию в пятницу вечером.
Если попытаться применить этот сценарий для группы из 20 человек, то это окажется затруднительным. Распределение работы, синхронизация подгрупп и интеграция будут занимать больше времени. В этом случае итерация может занять три—четыре недели.
Если же группа будет состоять из 40 человек, то только неделя уйдет на прохождение указаний от руководства к исполнителям. Нужны промежуточные уровни управления; кроме того, достижение общего понимания целей потребует большей формальности и документирования. В этом случае разумной продолжительностью итерации будет уже три месяца.
Кроме того, влияние оказывают и другие факторы: степень знакомства организации с итерационным подходом, стабильность и уровень развития организации, а также уровень технологической зрелости процессов создания ПО. В табл. 6.20 приведена приблизительная оценка длительности итерации, обобщающая результаты, полученные в реальных проектах.
Таблица 6.20
Длительность итерации
Количество строк кода |
Число сотрудников |
Длительность итерации |
5000 |
4 |
2 недели |
20000 |
10 |
1 месяц |
100000 |
40 |
3 месяца |
1000000 |
150 |
8 месяцев |
После того как определена приемлемая длительность итерации, следует определить число итераций на каждой стадии.
На начальной стадии может вообще не быть итераций, поскольку не производится никакого ПО, все действия связаны только с планированием и маркетингом. Одна итерация все же может потребоваться для создания прототипа, предназначенного смягчить последствия от реализации основных технических решений.
На стадии разработки нужна, как минимум, одна итерация. Если отсутствует начальная архитектура и нужно адаптироваться к новым инструментальным средствам, технологиям, платформе или языку программирования, то следует планировать две—три итерации. Возможно, потребуется продемонстрировать прототип заказчику или конечным пользователям, чтобы уточнить требования. Кроме того, дополнительная итерация может потребоваться для исправления ошибок, допущенных при разработке архитектуры.
На стадии конструирования также нужно запланировать не менее одной итерации, при этом количество итераций зависит в основном от реализуемой функциональности (количества вариантов использования).
На стадии ввода в действие нужна, как минимум, одна итерация, например, для выпуска окончательной версии после бета-версии .
В итоге можно определить три уровня проведения полного цикла разработки (табл. 6.21).
Таблица 6.21
Количество итераций по стадиям
Уровень |
Начальная стадия |
Разработка |
Конструирование |
Ввод в действие |
Низкий |
0 |
1 |
1 |
1 |
Типичный |
1 |
2 |
2 |
1 |
Высокий |
1 |
3 |
3 |
2 |
Таким образом, можно принять в качестве эмпирического правила, что средний итерационный проект включает 6 + 3 итерации.
! Следует запомнить
Оценка трудоемкости создания ПО является одним из наиболее важных видов деятельности в процессе создания ПО.
Модели и методы оценки трудоемкости необходимы для разработки бюджета проекта, анализа степени риска и выбора компромиссного решения, планирования и управления проектом, анализа затрат на улучшение качества ПО.
Большинство моделей для определения трудоемкости разработки ПО могут быть сведены к функции пяти основных параметров: размера конечного, продукта, особенностей процесса, возможностей персонала, среды и требуемого качества продукта.
Основные понятия
Функциональный тип, функциональная точка.
? Вопросы для самоконтроля
К каким последствиям могут привести недооценка и переоценка стоимости, времени и ресурсов, требуемых для создания ПО?
На какой стадии проекта и с какой точностью может выполняться оценка трудоемкости создания ПО?
Охарактеризуйте и сравните методы оценки трудоемкости создания ПО.
Что означает хорошая оценка трудоемкости?
В каких единицах измеряется размер ПО?
Какие факторы наиболее значительно влияют на трудоемкость создания ПО?
