Оценка трудоемкости разработки программного обеспечения. Учебное пособие
.pdfДля оценки количества RET и DET основным источником информации в логическом файле могут служить, например, словарь данных (Data Dictionary), составленный в ходе моделирования информационной системы с использованием диаграмм потоков данных,логическаяструктурабазданных,полученнаяприпострое- ниимоделейсущность–связь,логическаяструктурафайловилибаз данных,поддерживаемыхдругимиПСиописаннаявсоответствующей документации (для EIF), и т. п.
ВцеломзадачаоценкиколичестваRETвметодефункциональных точек одна из самых сложных и результат ее решения зависит от точки зрения оценивающего.
ВыделениеиподсчетколичестваDETвлогическомфайлеможно связать с процедурой поддержки этого файла, осуществляемой с помощьютранзакционнойфункциивнешнеговвода(EI).Очевидно, что все типы полей данных, используемые во внешних вводах (EI), поддерживающих данный логический файл, и составляют его набор DET.
Для транзакционных функций (EI, EO и EQ) сложность определяется и ранжируется с помощью количества типов использу-
емых файлов (File Types Referenced, FTR), т. е. количества ILF и EIF,участвующихвтранзакционномпроцессе,атакжеколичества типовэлементовданныхDET(отличныхдруготдругаполейзаписей),добавляемых,модифицируемых,стираемыхилисоздаваемых в выходных данных.
Уровни сложности для внешних входов (EI) в зависимости от числа FTR и DET представлены в табл. 9, а уровни сложности для внешних выходов (EO) – в табл. 10.
|
|
|
|
Таблица 9 |
|
Уровни сложности для внешних входов |
|
||
|
|
|
|
|
Количество |
|
Количество DET |
|
|
FTR |
1–4 |
5–15 |
|
16 и более |
0–1 |
Низкий |
Низкий |
|
Средний |
2 |
Низкий |
Средний |
|
Высокий |
3 и более |
Средний |
Высокий |
|
Высокий |
61
|
|
|
|
Таблица 10 |
|
Уровни сложности для внешних выходов |
|
||
|
|
|
|
|
Количество |
|
Количество DET |
|
|
FTR |
1–5 |
6–19 |
|
20 и более |
0–1 |
Низкий |
Низкий |
|
Средний |
2–3 |
Низкий |
Средний |
|
Высокий |
4 и более |
Средний |
Высокий |
|
Высокий |
Уровни сложности для внешних запросов (EQ) определяются
сиспользованием следующего алгоритма:
1)входвнешнегозапросарассматриваетсяаналогичновнешнему входу (EI, см. табл. 9);
2)выход внешнего запроса рассматривается аналогично внешнему выходу (EO, см. табл. 10);
3)в качестве результата используется наибольшее значение из полученных в п. 1 и 2.
Весовыекоэффициентыуровнейсложностидляразличныххарактеристик функциональности ПС представлены в табл. 11.
Идентификация и оценка функциональности транзакций (EI, EO, EQ). Напомним, что элементарные процессы, в которых данные пересекают границу ПС снаружи внутрь, называются внешнимивводами(EI).Дляопределениявнешнихвводовважными источниками информации являются форматы экранов и диалогов ввода, а также любые другие формы ввода данных в ПС.Например,всистемахреальноговремениивстраиваемых системах необходимо учитывать вводы из других приложений или с внешних устройств, органов управления, датчиков и т. п. Приэтомтакиевводыдолжныобновлятьвнутренниелогические файлы ПС.
Элементарные процессы, в которых данные пересекают границу ПС изнутри наружу, называются внешними выводами (EO). Для определения внешних выводов важными источниками информации являются форматы экранов и диалогов вывода, формы отчетовиуведомляющихсообщений,атакжелюбыедругиеформы вывода данных в ПС. Например, в системах реального времени и
62
встраиваемыхсистемахнеобходимоучитыватьвыводынавнешние устройства,органыуправления,исполнительныемеханизмыит.п. При этом такие выводы должны сопровождаться процессами генерированиявыводимыхданныхилиуправляющейинформацией, вычислениями и т. п.
Элементарныепроцессы,вкоторыхданныепересекаютграницу ПСвобесторонывходедиалога,называютсявнешнимизапросами EQ. Для определения внешних запросов важными источниками информацииявляютсяформатыэкрановидиалоговввода-вывода, атакжелюбыедругиеформыввода-выводаданныхвПС,осуществ- ляемые в диалоговом режиме. Например, в системах реального времени и встраиваемых системах необходимо учитывать выводы на внешние устройства, органы управления, исполнительные механизмы и т. п. фиксированных данных в ответ на введенный запрос.ГлавнымотличиемвнешнихзапросовEQотвнешнихвводов EI и внешних выводов EO является то, что введенные в ПС с их помощью данные не записываются во внутренние логические файлы, а выводимая ими информация не является результатом какого-либо вычислительного процесса, а просто выбирается без всякой обработки из внутренних логических или внешних интерфейсных файлов.
Втабл. 12 представлены элементы данных для EI, EO и EQ.
Вметоде функциональных точек они могут использоваться в различных видах транзакций, относящихся к ПС, с преобладанием графического пользовательского интерфейса (GUI), например
|
|
|
|
Таблица 11 |
|
Весовые коэффициенты уровней сложности |
|
||
|
|
|
|
|
Показатель |
|
Уровень |
|
|
сложности |
низкий |
средний |
|
высокий |
ILF |
7 |
10 |
|
15 |
EIF |
5 |
7 |
|
10 |
EI |
3 |
4 |
|
6 |
EO |
4 |
5 |
|
7 |
EQ |
3 |
4 |
|
6 |
63
винформационныхсистемах,атакжевсистемахреальноговремени и встраиваемых системах [6].
Когда внешние вводы, выводы и запросы определены, оцениваетсяколичествотиповихэлементовданных(DET)иколичество типов используемых файлов (FTR).
FTR позволяют отличать внешние вводы, выводы или запросы друготдруга.ЛюбойFTRдолженбытьлибовнутреннимлогическим
Таблица 12
Элементы данных для транзакций модели функциональных точек
|
Элементы данных ПС |
||
Транзакция |
|
Системы реального |
|
Преобладание GUI |
времени и встраиваемые |
||
|
|||
|
|
системы |
|
Внешний |
Полявводаданных,сообще- |
Программные и аппарат- |
|
ввод |
нияобошибках,вычисляе- |
ные элементы управле- |
|
|
мыезначения,радио- |
ния, показания датчиков, |
|
|
кнопки,флажки,кнопки |
радиосигналы, положе- |
|
|
управления,вводыиздругих |
ния переключателей |
|
|
приложений,подтверждаю- |
и т. п. |
|
|
щиесообщенияит.п. |
|
|
Внешний |
Поля данных в отчетах, |
Световые сигналы, звуко- |
|
вывод |
заголовки полей данных |
вые сигналы, сигналы |
|
|
отчетов из внутренних ло- |
на исполнительные меха- |
|
|
гических файлов, вычисля- |
низмы, переключатели, |
|
|
емые значения, сообщения |
показания индицирую- |
|
|
об ошибках, подтвержда- |
щих элементов и т. п. |
|
|
ющие и уведомляющие |
|
|
|
сообщения и т. п. |
|
|
Внешний |
Вводимые элементы: поля, |
Вводимые элементы: про- |
|
запрос |
используемые для поиска, |
граммные и аппаратные |
|
|
управляющие кнопки |
элементы управления и |
|
|
и т. п. Выводимые элемен- |
т. п. Выводимые элемен- |
|
|
ты: отображаемые |
ты: световые сигналы, |
|
|
на экране поля, изображе- |
звуковые сигналы, по- |
|
|
ния, звуки и т. п. |
казания индицирующих |
|
|
|
элементов и т. п. |
|
64
файлом(ILF),либовнешниминтерфейснымфайлом(EIF).Каждый внутреннийлогическийфайл,связанныйсвнешнимвводом,выводом или запросом, а также каждый внешний интерфейсный файл, связанныйсвнутреннимлогическимфайломвходеэлементарного процессаподдержкивнутреннегологическогофайла,внешнеговыводаилизапроса,принимаетсязаодинFTR.Например,чтобыубедиться, что пользователь имеет соответствующий уровень доступа, внешний ввод обновляет внутренний логический файл, но в то же времяссылаетсянафайлбезопасности,являющийсяпоотношению крассматриваемомуПСвнешниминтерфейснымфайлом.Этокак раз тот случай, когда для данного внешнего ввода необходимо учитывать два FTR.
Некоторые группы элементов данных (DET) также позволяют отличатьвнешниевводы,выводыилизапросыдруготдруга.Таким образом, можно считать, что группа DET создает элементарный процесс, называемый EI, EO или EQ.
В современных ПС наибольшее распространение получил графический пользовательский интерфейс (GUI), поэтому рассмотрим более подробно правила подсчета DET именно при его использовании [6]:
Элемент данных |
Правило подсчета |
|
|
Поле ввода данных |
Считается одним элементом данных |
Группа |
Так как при каждом вводе можно выбрать только |
радиокнопок |
однурадиокнопку,всягруппасчитаетсяоднимэле- |
|
ментом данных |
Группа флажков |
Таккакприкаждомвводеможновыбратьнесколько |
|
флажков,каждыйфлажоксчитаетсяоднимэлемен- |
|
том данных |
Командная кнопка |
Каждая командная кнопка, которая инициирует |
|
транзакцию, считается одним элементом данных |
Список |
Данные списка получены в результате внешнего за- |
|
просаимогутбытьэлементомданныхвнешнеговвода |
Элемент графиче- |
Изображение,сохраняющеесявовнутреннемлоги- |
ского изображения |
ческомфайлецеликом,считаетсяоднимэлементом |
|
данных |
65
|
Окончание |
Элемент данных |
Правило подсчета |
|
|
Сообщение |
Считаетсяоднимэлементомданныхсоответствую- |
об ошибке |
щейтранзакции,анеотдельнымвнешнимвыводом |
|
или запросом |
Подтверждающее |
Считаетсяоднимэлементомданныхсоответствую- |
сообщение |
щейтранзакции,анеотдельнымвнешнимвыводом |
|
или запросом |
Уведомление |
Так как уведомление использует данные из внут- |
|
реннегологическогоиливнешнегоинтерфейсного |
|
файлаипроизводитсяприопределенномсостоянии |
|
ПС, то оно рассматривается как внешний вывод |
Звуковой сигнал |
Считается одним элементом данных соответству- |
|
ющей транзакции |
Подсчет ненормированного количества функциональных точек.
Общая формула для вычисления ненормированного количества функциональных точек (Unadjusted Function Point Count, UFPC)
UFPC = (3·LEI) + (4·AEI) + (6·HEI) + (4·LEO) +
+(5·AEO) +(7·HEO) + (7·LILF) + (10·AILF) +
+(15·HILF) + (5·LEIF) + (7·AEIF) + (10·HEIF) +
+(3·LEQ) + (4·AEQ) + (6·HEQ), |
(1) |
гдеUFPC–ненормированноеколичествофункциональныхточек; LEI – количество внешних входов низкого уровня сложности; AEI – количество внешних входов среднего уровня сложности; HEI – количество внешних входов высокого уровня сложности; LEO – количество внешних выходов низкого уровня сложности; AEO–количествовнешнихвыходовсреднегоуровнясложности; HEO–количествовнешнихвыходоввысокогоуровнясложности; LILF–количествовнутреннихлогическихфайловнизкогоуровня сложности; AILF – количество внутренних логических файлов среднего уровня сложности; HILF – количество внутренних логических файлов высокого уровня сложности; LEIF – количествовнешнихинтерфейсныхфайловнизкогоуровнясложности; AEIF – количество внешних интерфейсных файлов среднего
66
уровня сложности; HEIF – количество внешних интерфейсных файловвысокогоуровнясложности;LEQ–количествовнешних запросовнизкогоуровнясложности;AEQ–количествовнешних запросовсреднегоуровнясложности;HEQ–количествовнешних запросов высокого уровня сложности.
Рекурсивные поля ввода или вывода, т. е. поля, используемые одним и тем же способом многократно, считаются как один DET.
Еслиэлементуправления(команднаякнопка,например,«OK», «Next») инициирует какую-либо транзакцию, его считают одним DET. Если группа элементов управления выполняет одну и ту же функцию (транзакцию), то такую группу также учитывают как один DET.
Определение значения нормирующего фактора (VAF). Значение нормирующегофактора(VAF)определяютэкспертнымспособом, используя данные Приложения и формулы
TDI=∑DI; |
(2) |
VAF = (TDI·0,01) + 0,65. |
(3) |
Подсчетнормированногоколичествафункциональныхточек.Нор-
мированное количество функциональных точек определяют, используя формулу
AFP = UFP·VAF. |
(4) |
Следуетотметить,чтовомногихорганизацияхпроцедурунормированияколичествафункциональныхточексчитаютопциональной (необязательной).
Дляполученияокончательногорезультатаанализа,т.е.нормированного количества функциональных точек (Adjusted Function PointCount,AFP),необходимотакжеучестьрядобщихтребований к проекту, для чего полученное по формуле (1) ненормированное количество функциональных точек умножается на нормирующий фактор (Value Adjustment Factor, VAF).
Вметодефункциональныхточекнормирующийфакторопределяютвовремяанализаосновныххарактеристиксистемы(General System Characteristics, GSC), целью которого является учет
67
общесистемных требований, ограничивающих разработчиков в выборе решения и повышающих сложность разработки.
ЗначениефактораVAFзависитот14параметров,которыеопределяют системные характеристики продукта.
1.Обменданными(0–продуктпредставляетсобойавтономное приложение; 5 – продукт обменивается данными по более чем одному телекоммуникационному протоколу).
2.Распределенная обработка данных (0 – продукт не перемещает данные; 5 – распределенная обработка данных выполняется несколькими компонентами системы).
3.Производительность(0–пользовательскиетребованияпро- изводительности не установлены; 5 – время отклика ограничено для всех бизнес-операций, для удовлетворения требованиям необходимы специальные проектные решения и инструменты анализа).
4.Ограничения аппаратных ресурсов (0 – нет ограничений; 5 – продукт должен функционировать на определенном процессоре и не может быть распределен).
5.Транзакционная нагрузка (0 – транзакций немного и они распределены равномерно; 5 – число транзакций велико и неравномерно, требуются специальные решения и инструменты).
6.Интенсивность взаимодействия с пользователем (0 – все транзакции обрабатываются в пакетном режиме; 5 – более 30 % транзакций интерактивные).
7.Эргономика(эффективностьработыконечныхпользователей) (0–нетспециальныхтребований;5–требованияэффективности жесткие).
8.Интенсивностьизмененияданных(ILF)пользователями(0– не требуются; 5 – изменения интенсивные, жесткие требования восстановления).
9.Сложностьобработки(0–обработкаминимальная;5–специ- альные (или дополнительные) требования безопасности, логическая и математическая сложность, многопоточность).
10.Повторноеиспользование(0–нетребуется;5–продуктраз- рабатывается как стандартный многоразовый компонент).
68
11.Удобство инсталляции (0 – нет требований; 5 – установка
иобновление ПО производятся автоматически).
12.Удобствоадминистрирования(0–нетребуется;5–система автоматически восстанавливается).
13.Портируемость(0–продуктимееттолькооднуинсталляцию наединственномпроцессоре;5–системаявляетсяраспределенной
ипредполагается установка на различные аппаратные средства
иоперационные системы (ОС)).
14.Гибкость (0 – не требуется; 5 – гибкая система запросов и построение произвольных отчетов, модель данных изменяется пользователем в интерактивном режиме).
Четырнадцать системных параметров (Degree оf Influence, DI) оцениваются по шкале от 0 до 5 (см. Приложение).
Расчет суммарного эффекта 14 системных характеристик (Total DegreeоfInfluence,TDI)осуществляютпростымсуммированием(2).
Расчетзначенияфакторавыравниванияпроизводятпоформуле(3),аоценкуколичествафункциональныхточекдляпрограммного приложения – по формуле (4).
Размер разрабатываемого ПО рассчитывают по формуле
PP = ФТ·Кп/1000, |
(5) |
гдеРР–размерразрабатываемогоПО,тысячстрокусловногокода; ФТ – общее количество функциональных точек; Кп – коэффициент преобразования количества функциональных точек в строки условного кода.
Нормированноеколичествофункциональныхточекможетбыть использованодляпроведенияоценкиколичествастрокисходного кода (Source Lines of Code, SLOC) в ПС с помощью бэкфайер-ме-
тода, или метода обратного запуска (Backfire Method). Бэкфайер-метод основан на применении так называемого
языкового множителя, который представляет собой среднее количество строк исходного кода конкретного алгоритмического языка, приходящееся на одну нормированную функциональную точку. Кейперс Джонс – эксперт по метрикам ПО, глава фир-
мы «Software Productivity Research» – статистическими методами
69
определилзначенияязыковыхмножителейдлянекоторыхязыков программирования:
Язык программирования |
Языковой множитель Кп |
C |
97 |
C++ |
50 |
C# |
54 |
HTML |
34 |
Java |
53 |
JavaScript |
47 |
Assembler |
119 |
LISP |
64 |
Visual Basic |
42 |
SQL |
21 |
Таким образом, если язык реализации выбран, то оценить количество строк исходного кода разрабатываемого ПС можно умножениемнормированногоколичествафункциональныхточек на соответствующий языковой множитель:
SLOC = AFP·Кп, |
(6) |
гдеКп –языковоймножительязыкапрограммирования,коэффи- циентпреобразованияколичествафункциональныхточеквстроки условного кода.
Трудоемкость определяют по формуле
OTp= A PPB П7 |
MT, |
(7) |
i=1 |
i |
|
где ОТр – общая трудоемкость, чел.-мес; РР – размер разрабатываемого ПО, тысяч строк условного кода; МТi – i-й коэффициент трудоемкости; А = 5,17; B = 0,94.
При определении трудозатрат на разработку ПО используют коэффициенты трудоемкости (табл. 13).
Общаяцельанализапометодуфункциональныхточек–подсчет ихнормированногоколичества.Этотпроцессвключаетвсебяпять шагов:
70
