1 Тема 3. Методы оценки трудоемкости разработки программного продукта 3.1. Основные понятия Трудоемкость – количество рабочего времени, затрачиваемого на производство программного продукта (слайд). Необходимо помнить, что помимо непосредственно программирования в проекте разработки ПП есть много других процессов, которым требуются ресурсы, а само программирование составляет лишь четверть всех затрат. Распределение трудозатрат по основным производственным процессам при современном процессе разработки ПО выглядит в среднем таким образом (слайд). Поэтому, если по вашей оценке для реализации требуемой функциональности в проекте необходимо написать 10 тысяч строк исходного программного кода, а программисты пишут в среднем по 100 строк в день, то общие трудозатраты на проект будут не 100 чел.*дней, а не менее чем 400 чел.*дней. Остальные ресурсы потребуются на анализ и уточнение требований, проектирование, документирование, тестирование и другие проектные работы. Прежде, чем определять численность и состав проектной команды необходимо сделать оценку трудоемкости разработки ПП. В нашем случае такая экспертная оценка составила с учетом затрат на гарантийное сопровождение на этапе опытной эксплуатации 9000 чел.*час. Исходя из эмпирической кривой Б. Боэма (слайд), численность команды, близкая к оптимальной, составила 10 человек. Можно утверждать что: Существует оптимальное, с точки зрения затрат, время выполнения графика: T = 2,5 (N ч.*м.)1/3. Следствием является кривая, дающая оптимальную численность проектной команды. 2 Кривая стоимости медленно растет, если запланированный график длиннее оптимального. Работа занимает все отведенное для нее время. Кривая стоимости резко растет, если запланированный график короче оптимального. Практически ни один проект невозможно завершить быстрее, чем за 3/4 расчетного оптимального графика вне зависимости от количества занятых в нем! Этот примечательный результат дает менеджеру программного проекта солидное подкрепление, когда высшее руководство требует принятия невозможного графика. Трудоемкость разработки ПП рассчитывается с учетом объективных и субъективных факторов: количество строк исходного текста, написанных разработчиком (без учета текста, сгенерированного автоматически, использованного из библиотек и т.д.); сложность разрабатываемого ПП; степень новизны разрабатываемого ПП; уровень требований к показателям качества ПП; условия и средства разработки ПП; опыт и квалификация разработчика. Диапазон приемлемой длительности разработки ПП ограничен сверху 10 годами (рациональными сроками создания самых сложных ИС), а снизу – 1 – 3,5 года (сроками естественного технологического процесса). Средняя длительность разработки ПП задается формулами: Тр = 0,8 Пк1/3, или Тр = 1,4 Пк1/4 лет, где Пк – объѐм ПП в тысячах команд. Объем каждой отдельной функции разрабатываемого ПП (Vi), выраженный числом строк исходного текста, написанных на языке С++, определяется по Каталогу функций программных средств № 1 на основании имеющейся в техническом задании информации о составе функций разрабатываемого ПП. Исходный объем ПП в существенной степени влияет 3 на точность результатов расчета трудоемкости, поэтому точность определения его отдельных составляющих (объемов функций) имеет важное значение. Чем глубже проработана функциональная архитектура, тем точнее результаты расчетов. Технические задания могут существенно различаться по степени детализации функций. Если в техническом задании функции ПП достаточно глубоко детализированы, то для повышения точности расчетов рекомендуется использовать Каталог функций программных средств № 2. Объем, разрабатываемого ПП (Vо), определяется по формуле: n V0 Vi mi k i , i 1 где Vi – объем i-й функции ПП; n – общее число функций ПП; mi – число реализаций i-й функции; ki – коэффициент повторного использования i-й функции, может принимать значения от 0 до 1 (ki=0 – i-я функция полностью дублируется, k i = 1 – i-я функция полностью разрабатывается). Объем ПП определяют как сумму этих значений (слайд). Фрагмент таблицы с каталогом функций продемонстрирован на этом слайде (слайд). 3.2. Нормы времени и порядок расчета базовой трудоемкости Базовая трудоемкость разработки ПП (Тб) определяется по формуле: Т б Норм К сложн , где Норм – норма времени на разработку, определяется таблице норм времени; Ксложн – коэффициент сложности ПП. Норма времени определяется по следующей таблице в зависимости от исходного объема ПП в тыс. строк (Vo). Нормы времени, указанные в этой таблице, рассчитаны на количество строк исходного текста на языке С++, написанных разработчиком вручную без учета текста, сгенерированного автоматически, использованного из библиотек и т.д. 4 Если исходный объем ПП выражается таким числом строк исходного текста, которое отсутствует в этой таблице, то норма времени вычисляется методом линейной интерполяции. В столбце 2 этой таблицы следует выбрать два значения Vо, которые по отношению к фактическому значению Vо являются ближайшим меньшим и ближайшим большим значениями, и для каждого из этих двух значений Vо определить значение нормы времени (столбец 3), а затем по этим двум значениям норм времени вычислить среднее значение пропорционально положению фактического значения Vо между его ближайшим меньшим и ближайшим большим значениями. Формула линейной интерполяции: f ( x1 ) f ( x 0 ) f (x) f (x 0 ) x x 0 x1 x 0 Коэффициент сложности ПП определяется по таблице в зависимости от наличия или отсутствия у разрабатываемого ПП соответствующих характеристик. Слайд Уровень сложности представляет собой субъективное средневзвешенное значение уровней сложности выбранных характеристик кода программы. 3.3. Вычисление общей трудоемкость разработки ПП Общая трудоемкость То определяется по формуле: Т о Т б К н К кач , где Кн – поправочный коэффициент, учитывающий степень новизны ПП; Ккач – поправочный коэффициент, учитывающий уровень требований к показателям качества ПП; Тб – базовая трудоемкость разработки ПП. Значение поправочного коэффициента (Кн), учитывающего степень новизны ПП, определяется по таблице. Коэффициент, учитывающий уровень требований к показателям качества ПП, рассчитывается по формуле: 5 К кач К над К произв К докум К пик , где Кнад – коэффициент, учитывающий требования к надежности ПП; Кпроизв – коэффициент, учитывающий требования к производительности ПП; Кдокум – коэффициент, учитывающий требования к уровню информативности документации на фазах жизненного цикла ПП; Кпик – коэффициент повторного использования программных компонентов. (слайд 22) Экономия трудозатрат путем установления очень низкого значения коэффициента повлечет дополнительные расходы в процессе сопровождения. Плохая документация или отсутствие ее приведут к увеличению коэффициента, связанного с параметром «Понимание ПП». (Слайд 23) Этот параметр учитывает дополнительные трудозатраты, необходимые для создания компонентов, предназначенных для повторного использования в текущих и будущих проектах: более общей архитектуры ПП, более детализованных спецификаций и более тщательного проведения испытаний с тем, чтобы гарантировать готовность компонентов к использованию в составе других приложений. «На уровне проекта» может применяться к повторному использованию на уровне модулей, входящих в состав какого-либо проекта по разработке бизнес-приложений. «На уровне программ» подходит для повторного использования на уровне нескольких проектов по разработке бизнес-приложений для одной организации. «На уровне линии программных продуктов» применяется, если повторное использование распространяется на несколько организаций. «На уровне нескольких линий» означает повторное использование на уровне линий бизнес-приложений, приложений для маркетинга и коммерции. Разработка с целью повторного использования накладывает некоторые ограничения на значения коэффициентов Кнад и Кдокум. Значение Кнад выбирается из графы на один уровень ниже, чем уровень Кпик. Значение Кдокум должно быть, по 6 меньшей мере, равно среднему при высоком значении К пик и высокому при очень и исключительно высоком значении Кпик. 3.4. Трудоемкость разработки ПП с учетом условий разработки Трудоемкость разработки ПП с учетом условий разработки (Тур) рассчитывается по формуле Т ур Т о К ср.упр.жиз К ср.разр , где То – общая трудоемкость разработки ПП; Кср.упр.жиз – поправочный коэффициент, учитывающий использование средств управления жизненным циклом (табл. 5.10); Кср.разр – поправочный коэффициент, учитывающий конкретные условия и средства разработки ПП (табл. 5.11). Наименьший рейтинг присваивается в том случае, если при разработке используются только средства для написания и редактирования кода, максимальный рейтинг присваивается при использовании интегрированных средств управления жизненным циклом. Указанные в этой таблице средства разработки обозначают группу средств подобного типа. Поэтому если имеется средство разработки, непосредственно не указанное в левом столбце, то его необходимо самостоятельно отнести к какой-либо из групп, наиболее близкой по уровню используемого языка. В том случае, если имеются сведения об опыте и квалификации разработчика, рассчитывается трудоемкость разработки с учетом рейтинга разработчика Тр: Т р Т ур К квал К опыт , где Тур – трудоемкость с учетом условий разработки ПП; Кквал – поправочный коэффициент, учитывающий уровень квалификации разработчика ПП; Копыт – поправочный коэффициент, учитывающий опыт разработчика ПП. 7 Слайд Оценка должна строиться на возможностях разработчиков как членов группы, а не на индивидуальных возможностях каждого программиста. Основными критериями оценки, которые необходимо учесть при определении рейтинга, являются: квалификация, эффективность работы, скрупулезность, коммуникабельность и способность работать в коллективе. 3.5. Трудоемкости отдельных стадий разработки ПП Трудоемкость разработки ПП Т (равная Тур или Тр, если расчеты ведутся для конкретного разработчика) в человеко-днях складывается из трудоемкостей отдельных стадий разработки: n Т Тi , i 1 где Тi – трудоемкость i-й стадии разработки ПП; n – количество стадий разработки ПП. Трудоемкость каждой отдельной стадии разработки ПП (Тi) определяется по формулам: Т1 L1 T – трудоемкость стадии «Анализ разработки»; Т 2 L2 T – трудоемкость стадии «Проектирование»; Т3 L3 T – трудоемкость стадии «Программирование»; Т 4 L4 T – трудоемкость стадии «Тестирование»; Т5 L5 T – трудоемкость стадии «Внедрение», где Li – удельный вес трудоемкости i-й стадии разработки, причем 5 L i 1; i 1 Т – трудоемкость разработки ПП. Значения Li зависят от вида технологии разработки ПП и определяются по таблице. Если при расчете трудоемкости всей разработки не учитывались квалификация и опыт разработчика, то трудоемкость различных стадий процесса разработки может быть скорректирована (уточнена) с учетом 8 профессиональных качеств исполнителей (трудоемкость Т в этом случае также изменится). Трудоемкость стадии «Анализ разработки» может быть скорректирована с учетом профессиональных качеств аналитиков: Т1* Т1 К ан , где Кан – коэффициент, учитывающий профессиональные качества аналитиков. Примечание. Аналитики – часть персонала организации, занятая в разработке технических требований, высокоуровневом проектировании и составлении рабочего плана. Основными характеристиками, которые следует рассмотреть при определении категории для данного параметра, являются способность к проектированию и анализу, производительность и аккуратность, а также коммуникабельность и способность к совместной работе. Трудоемкость стадии «Проектирование» может быть скорректирована с учетом профессиональных качеств проектировщиков: Т 2* Т 2 К пр где Кпр – коэффициент, учитывающий профессиональные качества проектировщиков. Трудоемкость стадии «Программирование» может быть скорректирована с учетом опыта работы с языками и средствами разработки: Т 3* Т 3 К прог , где Кпрог – коэффициент, учитывающий опыт работы программистов с языками и средствами разработки. Если для испытания ПП необходимо генерировать большой объем тестовых данных, то трудоемкость стадии тестирования может быть скорректирована с учетом размеров базы данных: Т 4* Т 4 К БД , где КБД – коэффициент, учитывающий размер БД (табл. 5.18); 9 Т4 – трудоемкость стадии тестирования без учета размера БД. Исходя из трудоемкости стадий разработки ПП (Тi) определяются количество специалистов или сроки, необходимые для реализации стадий разработки ПП. Данная оценка производится в условиях одного из двух ограничений: задано (ограничено) число разработчиков на каждой стадии разработки ПП; заданы сроки реализации стадий разработки ПП. Срок реализации ПП (в месяцах) определяется по формуле Ti , i 1 N i Ф n t где t– время, необходимое для разработки ПП (месяцы); n – число стадий разработки ПП; Тi – трудоемкость i-й стадии разработки ПП (чел.-дн.); Ni – количество разработчиков, принимающих участие в разработке ПП на i-й стадии; Ф – фонд времени одного разработчика в течение месяца, дней/месяц. Если сроки разработки ПП заданы, то их соблюдения добиваются путем подбора нужного количества разработчиков на каждой стадии разработки ПП. В случае сокращения сроков выполнения плана работ существует тенденция к увеличению трудозатрат как на ранних этапах проекта (с тем, чтобы свести на нет дополнительные риски и улучшить архитектуру), так и на поздних этапах при параллельном проведении дополнительных испытаний и составлении документации. Увеличение сроков выполнения плана работ не приводит к изменению трудозатрат. Общая трудоемкость разработки может быть скорректирована: Т срок Т К ср , где Тсрок – трудоемкость с учетом сроков разработки; Т – трудоемкость разработки; 10 Кср – коэффициент, учитывающий влияние сроков работ на трудоемкость. Приведенные в настоящем документе нормы времени включают затраты времени на выполнение всех работ, сопутствующих разработке ПП. В нормах времени учтено время на подготовительно-заключительные работы, обслуживание рабочего места, отдых и личные надобности в размере 10 % оперативного времени.