Отношение использования
Концептуально структура использования основывается на отношении использования. Словосочетание «процедура А использует процедуру В» расшифровывается так: для того чтобы процедура А соответствовала предъявленным к ней требованиям, необходимо наличие правильно функционирующей процедуры В. На практике это очень напоминает отношение вызова (хотя об их тождестве речи не идет). Как правило, если речь идет об использовании процедурой А процедурs то первая вызывает вторую. Впрочем, в двух нижеприведенных случаях вызовами и использованием наблюдаются существенные различия. 1. Согласно спецификации процедуры А, она должна вызывать процедуру - однако последующие вычисления, произведенные процедурой А не зависят от операций В. Для обеспечения работоспособности процедуры А требуется наличие процедуры В, но со правильность но является обязательной. При этом А вызывает В, но не использует ее. Процедура В, к примеру, может быть обработчиком ошибок. 2. Процедура В выполняет свою функцию, не сталкиваясь с вызовом со стороны процедуры А; впрочем, А использует ее результаты — в качестве таковых может выступать, например, обновленное хранилище данных, формируемое процедурой В. Кроме того, В может быть обработчиком прерываний, существование и корректное функционирование которого А принимает в виде допущения. Таким образом. А использует, но не вызывает В. Отношение использования позволяет быстро идентифицировать функциональные подмножества. Из того, что процедура А находится в определенном подмножестве, можно сделать вывод, что все используемые ею процедуры следует искать там же. Такое подмножество определяется транзитивным замыканием отношения использования. Снимая требование о наполнении каждого отдельного подмножества целостной системой, оно способствует конструированию и организации данной структуры. В результате программисты получают структуру разрешения использования (allowed-to-use structure). По завершении реализации фактические варианты использования можно каталогизировать. Первичной единицей структуры использования (или, иначе, структуры разрешения использования) является процедура доступа. Определяется она перечислением всех процедур, которыми могут пользоваться все остальные процедуры (из этого можно сделать вывод о том, в каких случаях использование одной процедурой другой запрещено). На практике, несмотря на роль процедуры как единицы структуры использования, ограничения по использованию могут распространяться на все процедуры модуля. Следовательно, в структуре использования может фигурировать имя модуля, и в таком случае его следует рассматривать как сокращенное обозначение всех присутствующих в этом модуле процедур доступа. Концептуальное описание структуры (разрешения) использования выглядит как бинарная матрица; в ее строках и столбцах фиксируются все имеющиеся в системе процедуры. Так, элемент (w.w) означает, что процедура т использует процедуру п (или имеет разрешение на ее использование). Поскольку на деле такая запись оказывается слишком громоздкой, правила принято не разбивать на отдельные процедуры, а сокращать до целых модулей. Роль структуры использования в программной архитектуре А-7Е иллюстрируется табл. 3.3.
|