С учетом назначения функциональной спецификации ПС и тяжелых последствий неточностей и ошибок в этом документе, функциональная спецификация должна быть математически точной. Это не означает, что она должна быть формализована настолько, что по ней можно было бы автоматически генерировать программы, решающие поставленную задачу. А означает лишь, что она должна базироваться на понятиях, построенных как математические объекты, и утверждениях, однозначно понимаемых разработчиками ПС. Достаточно часто функциональная спецификация формулируется на естественном языке. Тем не менее, использование математических методов и формализованных языков при разработке функциональной спецификации весьма желательно, поэтому этим вопросам будет посвящена отдельная лекция.
Функциональная спецификация состоит из трех частей:
описания внешней информационной среды, к которой должны применяться программы разрабатываемой ПС;
определение функций ПС, определенных на множестве состояний этой информационной среды (такие функции будем называть внешними функциями ПС);
описание нежелательных (исключительных) ситуаций, которые могут возникнуть при выполнении программ ПС, и реакций на эти ситуации, которые должны обеспечить соответствующие программы.
Функциональная спецификация служит следующим целям:
Инструкции для разработчиков.
Основа для оценки работ.
Договоренность с заказчиком о том, что должно быть разработано.
Точка синхронизации для всей группы.
Качество ПО
Ка́чество програ́ммного обеспечения — характеристика программного обеспечения (ПО) как степени его соответствия требованиям.
Различаются понятия внутреннего качества, связанного с характеристиками ПО самого по себе, без учета его поведения; внешнего качества, характеризующего ПО с точки зрения его поведения; и качества ПО при использовании в различных контекстах — того качества, которое ощущается пользователями при конкретных сценариях работы ПО.
Ниже приведены определения этих характеристик и атрибутов по стандарту ISO 9126:2001:
Функциональность (functionality)
Способность ПО в определенных условиях решать задачи, нужные пользователям. Определяет, что именно делает ПО, какие задачи оно решает.
Функциональная пригодность (suitability).
Способность решать нужный набор задач.
Точность (accuracy).
Способность выдавать нужные результаты.
Способность к взаимодействию (interoperability).
Способность взаимодействовать с нужным набором других систем.
Соответствие стандартам и правилам (compliance).
Соответствие ПО имеющимся индустриальным стандартам, нормативным и законодательным актам, другим регулирующим нормам.
Защищенность (security).
Способность предотвращать неавторизированный, т.е. без указания лица, пытающегося его осуществить, и неразрешенный доступ к данным и программам.
Надежность (reliability).
Способность ПО поддерживать определенную работоспособность в заданных условиях.
Зрелость, завершенность (maturity).
Величина, обратная частоте отказов ПО. Обычно измеряется средним временем работы без сбоев и величиной, обратной вероятности возникновения отказа за данный период времени.
Устойчивость к отказам (fault tolerance).
Способность поддерживать заданный уровень работоспособности при отказах и нарушениях правил взаимодействия с окружением.
Способность к восстановлению (recoverability).
Способность восстанавливать определенный уровень работоспособности и целостность данных после отказа, необходимые для этого время и ресурсы.
Удобство использования (usability) или практичность.
Способность ПО быть удобным в обучении и использовании, а также привлекательным для пользователей.
Понятность (understandability).
Показатель, обратный к усилиям, которые затрачиваются пользователями на восприятие основных понятий ПО и осознание их применимости для решения своих задач.
Удобство обучения (learnability).
Показатель, обратный усилиям, затрачиваемым пользователями на обучение работе с ПО.
Удобство работы (operability).
Показатель, обратный усилиям, предпринимаемым пользователями для решения своих задач с помощью ПО.
Привлекательность (attractiveness).
Способность ПО быть привлекательным для пользователей. Этот атрибут добавлен в 2001 году.
Соответствие стандартам удобства использования (usability compliance).
Этот атрибут добавлен в 2001 году.
Производительность (efficiency) или эффективность.
Способность ПО при заданных условиях обеспечивать необходимую работоспособность по отношению к выделяемым для этого ресурсам. Можно определить ее и как отношение получаемых с помощью ПО результатов к затрачиваемым на это ресурсам всех типов.
Временная эффективность (time behaviour).
Способность ПО выдавать ожидаемые результаты, а также обеспечивать передачу необходимого объема данных за отведенное время.
Эффективность использования ресурсов (resource utilisation).
Способность решать нужные задачи с использованием определенных объемов ресурсов определенных видов. Имеются в виду такие ресурсы, как оперативная и долговременная память, сетевые соединения, устройства ввода и вывода и пр.
Способность ПО сохранять работоспособность при переносе из одного окружения в другое, включая организационные, аппаратные и программные аспекты окружения.
Помимо перечисленных характеристик и атрибутов качества, стандарт ISO 9126:2001 определяет наборы метрик для оценки каждого атрибута. Приведем следующие примеры таких метрик.
Полнота реализации функций — процент реализованных функций по отношению к перечисленным в требованиях. Используется для измерения функциональной пригодности.
Корректность реализации функций — правильность их реализации по отношению к требованиям. Используется для измерения функциональной пригодности.
Отношение числа обнаруженных дефектов к прогнозируемому. Используется для определения зрелости.
Отношение числа проведенных тестов к общему их числу. Используется для определения зрелости.
Отношение числа доступных проектных документов к указанному в их списке. Используется для измерения удобства проведения анализа.
Наглядность и полнота документации. Используется для оценки понятности.