Внешнее проектирование модуля
Первый шаг при проектировании модуля состоит в определении его внешних характеристик. Эта информация выражается в виде внешних спецификаций модуля,которые содержат все сведения, необходимые вызывающим его модулям, и ничего больше. В частности, внешние спецификации модуля не должны содержать никакой информации о логике модуля или о внутреннем представлении данных. Кроме того, спецификации не должны включать каких бы то ни было ссылок на вызывающие модули или на контексты, в которых этот модуль используется.
Внешние спецификации модуля должны содержать сведения следующих шести типов:
Имя модуля. Указывается имя, применяемое для вызова модуля. Для модуля с несколькими входами это имя определенного входа (для каждого входа имеются отдельные спецификации).
Функция. Дается определение функции или функций, выполняемых модулем. Этот раздел не должен описывать логику или контексты, в которых модуль применяется.
Список параметров. Определяется число и порядок параметров, передаваемых модулю.
Входные параметры. Дается точное описание всех входных параметров. Сюда включается определение формата, размеров, атрибутов, единиц измерения (например, морские мили) и допустимых диапазонов значений всех входных параметров.
Выходные параметры. Дается точное описание всех данных, возвращаемых модулем. Сюда должно входить определение формата, размеров, атрибутов, единиц измерения и допустимых диапазонов значений всех выходных данных. Должна быть описана функциональная связь между входными и выходными данными, т.е. следует показать, какие выходные данные какими входными порождаются. Должны быть также определены выходные данные, порождаемые модулями в случае, когда входные данные не годятся. Для того чтобы можно было считать модуль специфицированным полностью, должно быть определено его поведение при любых входных условиях.
Внешние эффекты. Дается описание всех внешних для программы или системы событий, происходящих при работе модуля. Примерами внешних эффектов являются печать сообщения, чтение запроса с терминала, чтение из файла заказов, вывод сообщения об ошибке. Внешние эффекты модуля включают все внешние эффекты подчиненных ему модулей. Например, если модуль А вызывает модуль В и В печатает сообщение, этот внешний эффект должен включаться во внешние спецификации как модуля А, так и модуля В.
Важно отделить внешние спецификации модуля от другой документации (например, описания его логики), потому что изменение логики может никак не повлиять на вызывающие модули, а изменение внешних спецификаций обычно требует изменить вызывающие модули.
Внешние спецификации модуля физически могут принимать разнообразные формы, лишь бы они включали ответы на перечисленные выше шесть вопросов. Лучше всего поместить спецификации в виде комментария в начале текста исходной программы модуля (или, в случае модулей с несколькими входами, у каждого из них). Ниже показана спецификация модуля программы имитации передачи сообщений по каналу связи для определения вероятностных и статистических характеристик канала.
{*************************************************************************}
{спецификация имитационной модели смешанной СТИ
функция: имитация передачи отсчетов по каналу связи для определения вероятностных и статистических характеристик
список параметров: номер отсчета,
кратность обнаруживаемых ошибок,
кратность исправляемых ошибок,
вероятность ошибки на символ,
вероятность обнаружения,
вероятность исправления,
вероятность правильной передачи,
вероятность трансформации,
математическое ожидание,
дисперсия,
среднеквадратическое отклонение приведенной погрешности
входные параметры: номер отсчета integer 255=2^m–1>=1
вероятность ошибки на символ real [0;1]
кратность обнаруживаемых ошибок integer
кратность исправляемых ошибок integer
выходные параметры: вероятность правильной передачи real [0;1]
вероятность обнаружения real [0;1]
вероятность исправления real [0;1]
вероятность трансформации real [0;1]
математическое ожидание real
дисперсия real
среднеквадратическое отклонение
приведенной погрешности real
в зависимости от вектора ошибки, учитывая кратность исправляемых и обнаруживаемых ошибок, подсчитывается количество правильных передач, исправленных и обнаруженных ошибок, погрешность передачи
внешние эффекты: нет }
{**********************************************************************}