2. Количество внешних выводов. Подсчитываются все выводы, по которым к пользователю поступают результаты, вычисленные программным приложением. В этом контексте выводы означают отчеты, экраны, распечатки, сообщения об ошибках. Индивидуальные единицы данных отчета отдельно не подсчитываются.
3. Количество внешних запросов. Под запросами понимают диалоговый ввод, который приводит к немедленному программному ответу в форме диалогового вывода. При этом диалоговый ввод в приложении не сохраняется, а диалоговый вывод не требует вычислений. Подсчитываются все запросы – каждый учитывается отдельно.
4. Количество внутренних логических файлов. Подсчитываются все логические файлы (т.е. логические группы данных, которые могут быть частью базы данных или отдельным файлом).
5. Количество внешних интерфейсных файлов. Подсчитываются все логические файлы из других приложений, на которые ссылается данное приложение.
Выводы, вводы, запросы относятся к категории транзакция. Транзакция – это элементарный процесс, различаемый пользователем и перемещающий данные между внешней средой и программным приложением. В своей работе транзакции используют внутренние и внешние файлы. Приняты следующие определения.
Внешний ввод – элементарный процесс, перемещающий данные из внешней среды в приложение. Данные могут поступать с экрана ввода или из другого приложения. Данные могут использоваться для обновления внутренних логических файлов. Данные могут содержать как управляющую, так и деловую информацию. Управляющие данные не должны модифицировать внутренний логический файл.
Внешний вывод - элементарный процесс, перемещающий данные, вычисленные в приложении, во внешнюю среду. Кроме того, в этом процессе могут обновляться внутренние логические файлы. Данные создают отчеты или выходные файлы, посылаемые другим приложениям. Отчеты и файлы создаются на основе внутренних логических файлов и внешних интерфейсных файлов. Дополнительно этот процесс может использовать вводимые данные, их образуюткритерии поиска и параметры, не поддерживаемые внутренними логическими файлами. Вводимые данные поступают извне, но носят временный характер и не сохраняются во внутреннем логическом файле.
Внешний запрос – элементарный процесс, работающий как с вводимыми, так и с выводимыми данными. Его результат – данные, возвращаемые из внутренних логических файлов и внешних интерфейсных файлов. Входная часть процесса не модифицирует внутренние логические файлы, а выходная не несет данных, вычисляемых приложением (в этом и состоит отличие запроса от вывода).
Внутренний логический файл – распознаваемая пользователем группа логически связанных данных, которая размещена внутри приложения и обслуживается через внешние вводы.
Внешний интерфейсный файл – распознаваемая пользователем группа логически связанных данных, которая размещена внутри другого приложения и поддерживается им. Внешний файл данного приложения является внутренним логическим файлом в другом приложении.
Каждой из выявленных характеристик ставится в соответствие сложность. Для этого характеристике назначается низкий, средний или высокий ранг, а затем формируется числовая оценка ранга.
Для транзакций ранжирование основано на количестве ссылок и количестве типов элементов данных. Для файлов ранжирование основано на количестве типов-элементов записей и типов элементов данных, входящих в файл.
Тип элемента-записи – подгруппа элементов данных, распознаваемая пользователем в пределах файла.
Тип элемента данных – уникальное не рекурсивное (неповторяемое) поле, распознаваемое пользователем. Примеры элементов данных для различных характеристик приведены в табл.4, 5 и содержат правила учета элементов из графического интерфейса пользователя (ГИП).
Табл.4. Примеры элементов данных
Информационная характеристика | Элементы данных |
Внешние вводы | Поля ввода данных, сообщения об ошибках, вычисляемые значения, кнопки |
Внешние выводы | Поля данных в отчетах, вычисляемые значения, сообщения об ошибках, заголовки столбцов, которые читаются из внутреннего файла |
Внешние запросы | Вводимые элементы: поле, используемое для списка, щелчок мыши.Выводимые элементы: отображаемые на экране поля. |
Элемент данных | Правило учета |
Группа радиокнопок | Так как в группе пользователь выбирает только одну радиокнопку, все радиокнопки группы считаются одним элементом данных |
Группа флажков (переключатели) | Так как в группе пользователь может выбрать несколько флажков, каждый флажок считают элементом данных |
Командные кнопки | Командная кнопка может определять действия добавления, изменения, запроса. Кнопка ОК может вызвать транзакции (различных типов). Кнопка Next может быть входным элементом запроса или вызвать другую транзакцию. Каждая кнопка считается отдельным элементом данных. |
Списки | Список может быть внешним запросом, но результат запроса может быть элементом данных внешнего вида. |
Например, ГИП для обслуживания клиентов может иметь поля Имя, Адрес, Город, Страна, Почтовый_Индекс, Телефон, Email. Таким образом, имеется 7 полей или семь элементов данных. Восьмым элементом данных может быть командная кнопка (Добавить, Изменить, Удалить). В этом случае каждый из внешних вводов Добавить, Изменить, Удалить будет состоять из 8 элементов данных (7 полей плюс командная кнопка).
Обычно этому экрану ГИП соответствует несколько транзакций. Типичный экран включает несколько внешний запросов, сопровождающих внешний ввод.
Обсудим порядок учета сообщений. В приложении с ГИП генерируются три типа сообщений: сообщение об ошибке, сообщение подтверждения и сообщение уведомления. Сообщения об ошибке (например, «Требуется пароль») и сообщение подтверждения (например, «Вы действительно хотите удалить запись о клиенте?») указывают, что произошла ошибка или что процесс может быть завершен. Эти сообщения не образуют самостоятельного процесса, они являются частью другого процесса, то есть считаются элементом данных соответствующей транзакции.
С другой стороны, уведомление является независимым элементарным процессом. Например, при попытке получить от банкомата сумму денег, превышающую их количество на счете, генерируется сообщение «Не хватает средств для завершения транзакции». Оно является результатом чтения информации из файла счета и формирования заключения. Сообщение уведомления рассматривается как внешний вывод.
Данные для определения ранга и оценки сложности транзакций и файлов приведены в табл.6-10 (числовая оценка указана в круглых скобках). Использовать их очень просто. Например, внешнему вводу, который ссылается на два файла и имеет 7 элементов данных по табл.6 назначается средний ранг и оценка сложности 4.
Ссылки на файлы | Элементы данных | ||
1-4 | 5-15 | >15 | |
0-1 | Низкий (3) | Низкий (3) | Средний (4) |
2 | Низкий (3) | Средний (4) | Высокий (6) |
>2 | Средний (4) | Высокий (6) | Высокий (6) |
Табл.7. Ранг и оценка сложности внешних выводов
Ссылки на файлы | Элементы данных | ||
1-4 | 5-19 | >19 | |
0-1 | Низкий (4) | Низкий (4) | Средний (5) |
2-3 | Низкий (4) | Средний (5) | Высокий (7) |
>3 | Средний (5) | Высокий (7) | Высокий (7) |
Табл.8. Ранг и оценка сложности внешних запросов
Ссылки на файлы | Элементы данных | ||
1-4 | 5-19 | >19 | |
0-1 | Низкий (3) | Низкий (3) | Средний (4) |
2-3 | Низкий (3) | Средний (4) | Высокий (6) |
>3 | Средний (4) | Высокий (6) | Высокий (6) |
Табл.9. Ранг и оценка сложности внутренних логических файлов
Ссылки на файлы | Элементы данных | ||
1-19 | 20-50 | >50 | |
0-1 | Низкий (7) | Низкий (7) | Средний (10) |
2-5 | Низкий (7) | Средний (10) | Высокий (15) |
>5 | Средний (10) | Высокий (15) | Высокий (15) |
Табл.10. Ранг и оценка сложности внешних интерфейсных файлов
Ссылки на файлы | Элементы данных | ||
1-19 | 20-50 | >50 | |
0-1 | Низкий (5) | Низкий (5) | Средний (7) |
2-5 | Низкий (5) | Средний (7) | Высокий (10) |
>5 | Средний (7) | Высокий (10) | Высокий (10) |
Отметим, что если во внешнем запросе ссылка на файл используется как на этапе ввода, так и на этапе вывода, она учитывается только один раз. Такое же правило распространяется на элемент данных (однократный учет).
После сбора всей необходимой информации приступают к расчетам метрики – количества функциональных указателей FP (FunctionPoints). Автором этой метрики является А. Альбрехт (1979).
Исходные данные для расчета сводятся в табл. 11. В таблицу заносится количественное значение характеристики каждого вида (по всем уровням сложности). Места подстановки значений отмечены прямоугольником (этот символ играет роль метки - заполнителя). Количественные значения характеристик умножаются на числовые оценки сложности. Полученные в каждой строке значения суммируются, давая полное значение для данной характеристики. Эти полные значения суммируются по вертикали, формируя общее количество.