Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика и ВТ Брукшир.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.07 Mб
Скачать

6.3.3Связность модуля

Сделать максимальной связь элементов внутри каждого модуля не менее важно, чем минимизировать межмодульные связи системы. Термином связность (cohesion) обозначается степень связанности внутренних частей модуля. Для того чтобы понять важность связности элементов модуля, необходимо рассмотреть не только разработку системы программного обеспечения, а весь ее жизненный цикл. Если потребуется внести в модуль какие-либо изменения, наличие в нем большого количества функций может осложнить изначально простую задачу. Поэтому, помимо небольшой межмодульной связи системы, разработчики программного обеспечения стремятся к высокой связности элементов модуля.

Логическая связность (logical cohesion) является слабым видом сцепления элементов модуля, при котором внутренние элементы модуля выполняют логически сходные действия. Рассмотрим, например, модуль, осуществляющий взаимодействие системы с внешним миром. «Клеем», соединяющим его в единое целое, является то, что все его процедуры обрабатывают информацию. Однако их действия могут быть совершенно разными. Некоторые процедуры могут получать данные, а другие, например, выводить сообщения об ошибках.

Функциональная связность (functional cohesion) представляет собой более сильное сцепление, при котором все части модуля обеспечивают выполнение одной задачи. Например, модуль OverseeBrowsing (см. рис. 6.3) не является функционально связным, поскольку он содержит процедуры, осуществляющие общение с покупателем, получающие и отображающие информацию о товарах и создающие бланк заказа покупателя. Однако если эти процедуры поместить в отдельные модули и использовать их в качестве абстрактных инструментов, то модуль OverseeBrowsing будет контролировать действия, связанные с просмотром каталога, что делает его более функционально связным.

В объектно-ориентированной системе объекты обычно связаны только логически, поскольку методы объекта, как правило, выполняют действия, практически не связанные между собой. При этом их объединяет только то, что они являются методами одного объекта. Например, в системе заказа товаров через Интернет каждый объект бланка заказа, вероятно, будет содержать метод, добавляющий элемент к заказу, удаляющий элемент из заказа и отправляющий заказ. Следовательно, такой объект будет представлять собой логически связный модуль.

Однако создатель программного обеспечения должен стремиться к тому, чтобы каждый отдельный метод объекта был функционально связным. То есть, даже если сам объект является только логически связным, каждый метод объекта должен выполнять только функционально связную задачу (рис. 6.7).

6.4 Методики проектирования

Создание методик разработки программного обеспечения является одной из главных задач в области проектирования программного обеспечения. Мы уже сталкивались с некоторыми из них — водопадной моделью и макетированием. В этом разделе мы рассмотрим дополнительные методы, а также направления современных исследований.