КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
A.3.1.2 Соединение
A.3.1.1 Связанность Связанность - вид и степень в которой задачи, выполняемые одиночным модулем программного обеспечения связаны друг с другом; типы связанности разделяют на случайные, коммуникационные, функциональные, логические, последовательные и временные. Типы связанности, охарактеризованные ниже, расположены в порядке убывания их желательности. a) функциональная связанность - модуль с функциональной связанностью осуществляет деятельность, связанную с одной целью. Функционально связанный модуль преобразует единственный тип входных данных в единственный тип выходных данных, такой как менеджер стека или менеджер очереди. b) последовательная связанность - модуль с последовательной связанностью содержит функции, в каждой из которых выходные данные являются исходными для следующей функции в модуле. Примером последовательно связанного модуля является модуль, который содержит функции для записи данных аудита и поддерживает работу счетчика числа накопленных нарушений безопасности определенного типа в журнале аудита. c) коммуникационная связанность - модуль с коммуникационной связанностью содержит функции, которые создают выходные данные для, или используют выходные данные из других функций внутри модуля. Примером коммуникационно связанного модуля является модуль проверки доступа, который включает мандатные, дискреционные проверки и проверки возможностей. d) временная связанность - модуль с временной связанностью содержит функции, которые должны быть выполнены примерно в одно и то же время. Примерами временно связанного модуля являются модули инициализации, восстановления и отключения. e) логическая (или процедурная) связанность - модуль с логической связанностью осуществляет аналогичную деятельность для разных структур данных. Модуль проявляет логическую связность, если его функции выполняют связанные, но разные, операции для разных входных данных. f) случайная связанность - модуль со случайной связанностью выполняет не связанные или слабо связанные между собой действия. Соединение является видом и степенью взаимозависимости между программными модулями; типы соединения включают соединение по вызову, по общности и по содержимому. Типы соединения, охарактеризованные ниже, расположены в порядке убывания их желательности. a) вызов: два модуля являются соединенными по вызову, если они взаимодействуют строго посредством использования их задокументированных вызовов функций; примерами соединения по вызовам являются соединения по данным, по шаблону и по управлению, которые определены ниже. 1) данные: два модуля являются соединенными по данным, если они взаимодействуют строго с помощью параметров вызова, которые представлены единственными элементами данных. 2) шаблон: два модуля являются соединенными по шаблону, если они взаимодействуют с помощью использования параметров вызова, включающих несколько полей или имеющих значимые внутренние структуры. 3) управление: два модуля являются соединенными по управлению, если один передает информацию, которая предназначена, чтобы влиять на внутреннюю логику выполнения другого. b) общность: два модуля являются соединенными по общности, если они имеют общую область данных или общую систему ресурсов. Глобальные переменные показывают, что модули, использующие их, являются соединенными по общности. Общее соединение через глобальные переменные, как правило, допускается, но лишь в ограниченной степени. Например, переменные, которые помещаются в глобальной области, но используются только в единственном модуле, являются неправильно размещенными, и должны быть удалены. Другими факторами, которые необходимо учитывать при оценке пригодности глобальных переменных являются: 1) Количество модулей, которые изменяют глобальную переменную: Обычно, только единственному модулю следует нести ответственность за контроль содержания глобальной переменной, но могут быть ситуации, в которых второй модуль может разделять эту ответственность, в таком случае, для этого должно быть предоставлено достаточное обоснование. Разделение ответственности недопустимо для более чем двух модулей (При оценке внимание следует уделить определению модуля, фактически ответственного за содержимое переменной; например, если единственная процедура используется для изменения переменной, но это процедура просто выполняет модификацию, запрошенную вызывающим модулем, то запрашивающий модуль несет ответственность, и таких модулей может быть больше одного). Кроме того, в рамках определения сложности, если два модуля несут ответственность за содержимое глобальной переменной, то следует иметь четкие указания о том, как изменения координируются между ними. 2) Количество модулей, которые ссылаются на глобальные переменные: Хотя, как правило, количество модулей, которые ссылаются на глобальную переменную, не ограничено, случаи, когда много модулей делают такую ссылку, следует проверять на предмет их обоснованности и необходимости. c) содержание: два модуля являются соединенными по содержанию, если можно дать прямую ссылку от одного модуля на внутренние компоненты другого (например, изменение кода или обращаясь к внутренним меткам другого модуля). В результате получается, что часть или же все содержание одного модуля фактически включается в другой. Соединение по содержанию может рассматриваться как использование недекларируемых интерфейсов модулей; это отличается от соединения по вызову, в котором используются только декларированные интерфейсы модулей.
Дата добавления: 2014-01-15; Просмотров: 734; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |