Функционально-ориентированные метрики косвенно измеряют программный продукт и процесс его разработки. Вместо подсчета LOC-оценки при этом рассматривается не размер, а функциональность или полезность продукта.
Используется 5 информационных характеристик.
1. Количество внешних вводов. Подсчитываются все вводы пользователя, по которым поступают разные прикладные данные. Вводы должны быть отделены от запросов, которые подсчитываются отдельно.
2. Количество внешних выводов. Подсчитываются все выводы, по которым к пользователю поступают результаты, вычисленные программным приложением. В этом контексте выводы означают отчеты, экраны, распечатки, сообщения об ошибках. Индивидуальные единицы данных внутри отчета отдельно не подсчитываются.
3. Количество внешних запросов. Под запросом понимается диалоговый ввод, который приводит к немедленному программному ответу в форме диалогового вывода. При этом диалоговый ввод в приложении не сохраняется, а диалоговый вывод не требует выполнения вычислений. Подсчитываются все запросы — каждый учитывается отдельно.
4. Количество внутренних логических файлов. Подсчитываются все логические файлы (то есть логические группы данных, которые могут быть частью базы данных или отдельным файлом).
5. Количество внешних интерфейсных файлов. Подсчитываются все логические файлы из других приложений, на которые ссылается данное приложение.
Вводы, выводы и запросы относят к категории транзакция. Транзакция — это элементарный процесс, различаемый пользователем и перемещающий данные между внешней средой и программным приложением. В своей работе транзакции используют внутренние и внешние файлы. Приняты следующие определения.
Внешний ввод — элементарный процесс, перемещающий данные из внешней среды в приложение. Данные могут поступать с экрана ввода или из другого приложения. Данные могут использоваться для обновления внутренних логических файлов. Данные могут содержать как управляющую, так и деловую информацию. Управляющие данные не должны модифицировать внутренний логический файл.
|
Уровень активности дня недели |
|||
|
День |
Хиты |
% от Сумма хитов |
Сеансы пользователя |
|
Понедельник |
1887 |
16,41 |
201 |
|
Вторник |
1547 |
13,45 |
177 |
|
Среда |
1975 |
17,17 |
195 |
|
Четверг |
1591 |
13,83 |
191 |
|
Пятница |
2209 |
19,21 |
200 |
|
Суббота |
1286 |
11,18 |
121 |
|
Воскресенье |
1004 |
8,73 |
111 |
|
Сумма по рабочим дням |
9209 |
80,08 |
964 |
|
Сумма по выходным дням |
2290 |
19,91 |
232 |
|
Информационная характеристика |
Элементы данных |
|
Внешние Вводы Внешние Выводы Внешние Запросы |
Поля ввода данных, сообщения об ошибках, вычисляемые значения, кнопки Поля данных в отчетах, вычисляемые значения, сообщения об ошибках, заголовки столбцов, которые читаются из внутреннего файла Вводимые элементы: поле, используемое для поиска, щелчок мыши. Выводимые элементы — отображаемые на экране поля |
|
Элемент данных |
Правило учета |
|
Группа радиокнопок Группа флажков (переключателей) Командные кнопки Списки |
Так как в группе пользователь выбирает только одну радиокнопку, все радиокнопки группы считаются одним элементом данных Так как в группе пользователь может выбрать несколько флажков, каждый флажок считают элементом данных Командная кнопка может определять действие добавления, изменения, запроса. Кнопка ОК может вызывать транзакции (различных типов). Кнопка Next может быть входным элементом запроса или вызывать другую транзакцию. Каждая кнопка считается отдельным элементом данных Список может быть внешним запросом, но результат запроса может быть элементом данных внешнего ввода |
|
Ссылки на файлы |
Элементы данных |
|
|
|
|
1-4 |
5-15 |
>15 |
|
0-1 2 >2 |
Низкий (3) Низкий (3) Средний (4) |
Низкий (3) Средний (4) Высокий (6) |
Средний (4) Высокий (6) Высокий (6) |
|
Ссылки на файлы |
Элементы данных |
||
|
|
1-4 |
5-19 |
>19 |
|
0-1 2-3 >3 |
Низкий (4) Низкий (4) Средний (5) |
Низкий (4) Средний (5) Высокий (7) |
Средний (5) Высокий (7) Высокий (7) |
|
Ссылки на файлы |
Элементы данных |
||
|
|
1-4 |
5-19 |
>19 |
|
0-1 2-3 >3 |
Низкий (3) Низкий (3) Средний (4) |
Низкий (3) Средний (4) Высокий (6) |
Средний (4) Высокий (6) Высокий (6) |
|
Типы элементов-записей |
Элементы данных |
||
|
|
1-19 |
20-50 |
>50 |
|
1 2-5 >5 |
Низкий (7) Низкий (7) Средний (10) |
Низкий (7) Средний (10) Высокий (15) |
Средний (10) Высокий (15) Высокий (15) |
|
Типы элементов-записей |
Элементы данных |
||
|
|
1-19 |
20-50 |
>50 |
|
1 2-5 >5 |
Низкий (5) Низкий (5) Средний (7) |
Низкий (5) Средний (7) Высокий (10) |
Средний (7) Высокий (10) Высокий (10) |
|
Имя характеристики |
Ранг, сложность, количество |
|||
|
|
Низкий |
Средний |
Высокий |
Итого |
|
Внешние вводы |
0x3 = __ |
0x4 = __ |
0x6 = __ |
= 0 |
|
Внешние выводы |
0x4 = __ |
0x5 = __ |
0x7 = __ |
= 0 |
|
Внешние запросы |
0х3 = __ |
0x4 = __ |
0x6 = __ |
= 0 |
|
Внутренние логические файлы Внешние интерфейсные файлы |
0x7 = __ 0x5 = __ |
0x 10= __ 0x7 = __ |
0x15 = __ 0x10 = __ |
= 0 = 0 |
|
Общее количество |
= 0 |

|
№ |
Системный параметр |
Описание |
|
1 |
Передачи данных |
Сколько средств связи требуется для передачи или обмена информацией с приложением или системой? |
|
2 |
Распределенная обработка данных |
Как обрабатываются распределенные данные и функции обработки? |
|
3 |
Производительность |
Нуждается ли пользователь в фиксации времени ответа или производительности?. |
|
4 |
Распространенность используемой конфигурации |
Насколько распространена текущая аппаратная платформа, на которой будет выполняться приложение? |
|
5 |
Скорость транзакций |
Как часто выполняются транзакции? (каждый день, каждую неделю, каждый месяц) |
|
6 |
Оперативный ввод данных |
Какой процент информации надо вводить в режиме онлайн? |
|
7 |
Эффективность работы конечного пользователя |
Приложение проектировалось для обеспечения эффективной работы конечного пользователя? |
|
8 |
Оперативное обновление |
Как много внутренних файлов обновляется в онлайновой транзакции? |
|
9 |
Сложность обработки |
Выполняет ли приложение интенсивную логическую или математическую обработку? |
|
10 |
Повторная используемость |
Приложение разрабатывалось для удовлетворения требований одного или многих пользователей? |
|
11 |
Легкость инсталляции |
Насколько трудны преобразование и инсталляция приложения? |
|
12 |
Легкость эксплуатации |
Насколько эффективны и/или автоматизированы процедуры запуска, резервирования и восстановления? |
|
13 |
Разнообразные условия размещения |
Была ли спроектирована, разработана и поддержана возможность инсталляции приложения в разных местах для различных организаций? |
|
14 |
Простота изменений |
Была ли спроектирована, разработана и поддержана в приложении простота изменений? |




|
№ |
Характеристика |
Количество |
Сложность |
Итого |
|
1 |
Вводы |
0 |
х4 |
= 0 |
|
2 |
Выводы |
0 |
х5 |
= 0 |
|
3 |
Запросы |
0 |
х4 |
= 0 |
|
4 |
Логические файлы |
0 |
х7 |
= 0 |
|
5 |
Интерфейсные файлы |
0 |
х7 |
= 0 |
|
6 |
Количество алгоритмов |
0 |
х3 |
= 0 |
|
Общее количество |
= 0 |
|
Язык программирования |
Количество операторов на один FP |
|
Ассемблер С |
320 128 |
|
Кобол |
106 |
|
Фортран |
106 |
|
Паскаль |
90 |
|
C++ |
64 |
|
Java |
53 |
|
Ada 95 |
49 |
|
Visual Basic |
32 |
|
Visual C++ |
34 |
|
Delphi Pascal |
29 |
|
Smalltalk |
22 |
|
Perl |
21 |
|
HTML3 |
15 |
|
LISP |
64 |
|
Prolog |
64 |
|
Miranda |
40 |
|
Haskell |
38 |