Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Понятие модуля. Характеристики качества модулей



Внутреннее проектирование программного изделия начинается с изучения внешних спецификаций проекта, разработанных на предыдущих этапах. Далее формируется структура программного изделия и общие правила взаимодействия компонентов. Программные изделия создаются на основе модульно-иерархической структуры, состоящей из отдельных модулей. Преимуществами разработки программного изделия с использованием модулей являются:

1. упрощение проектирования программного изделия, так как сложную и большую проблему легче понять, разбив ее на отдельные функциональные части;

2. улучшение возможностей оптимального использования ресурсов на разработку за счет распределения работы над модулями между программистами в соответствии с их способностями;

3. упрощение проведения работ по тестированию, отладке и сопровождению, так как в модулях небольшого размера легче понять логику программы, организовать проверку, оценить время, необходимое для проведения работ;

4. упрощение оценки текущего состояния работ.

Модуль – это отдельная функционально завершенная программная единица, которая может применяться самостоятельно, либо быть частью программы.

Целью внутреннего проектирования является такое разделение программы на модули, при котором каждый из них по возможности выполняет только одну функцию, т.е. обладает функциональной связностью. Связность модуля определяется как мера независимости его частей: чем выше связность модуля, тем лучше результат проектирования. Для обозначения связности используется также понятие силы связности модуля.

Различают семь видов связности:

 

№ п/п Вид связности Сила связности

Чем выше сила,

тем лучше.

1 По совпадению 0
2 Логическая связность 1
3 Временная связность 3
4 Процедурная связность 5
5 Коммуникативная связность 7
6 Последовательная связность 9
7 Функциональная связность 10

 

1. Модуль с видом связности по совпадению – это модуль, между элементами которого нет осмысленных связей. Такой модуль не выполняет никаких разумных функций. Такие модули возникают, когда мы обнаруживаем одинаковые последовательности операторов в различных частях программы и решаем объединить их в отдельный модуль. Если эти последовательности имеют различный смысл в различных местах по совпадению, то новый модуль обладает связностью по совпадению.

2. Модуль с логической связностью – это модуль, в котором объединены операторы только по признаку их функционального подобия, а для настройки модуля применяется алгоритм переключения. Отдельные части такого модуля ничем не связаны, а имеют лишь небольшое сходство между собой. Примером такого модуля может быть модуль, предназначенный для управления операциями обмена с внешними носителями или для проверки правильности данных:

 

procedure ReadwriteData (Switch:Integer) begin case switch of       1: begin               Writeln (`Введите х,у`);               Readln (х, у);            end;       2: writeln (`Значение z=`, z); end; end

3. Модуль с временной связностью – это модуль, содержащий части функционально не связанные, но необходимые в один и тот же момент работы программы. Самыми распространенными модулями такого типа являются модули инициализации данных работы программы и завершающие модули – модули освобождения ресурсов в конце работы программы. Эти модули часто называются связанными по классу.

4. Процедурно связанный модуль - это такой модуль, который последовательно выполняет набор функций, реализующих задачу. Функции объединяются посредством процедур. Такая структура модуля может возникнуть при расчленении длинной программы на части в соответствии с передачами управления

5. Коммуникативно связанный модуль – это модуль, обладающий процедурной связностью и дополнительно тем, что все его функции связаны через используемые данные. Общая структура данных является основной его организацией как единого модуля.

6. Модуль с последовательной связностью – это модуль, который может быть разбит на последовательные части, выполняющие независимые функции, но совместно реализующие единственную функцию.

7.  Модуль с функциональной связностью не может быть разбит на два модуля. Это такой модуль, который обеспечивает выполнение одной специфической функции. Выполняемая функция может быть представлена набором элементарных составляющих функций, но каждая из них не является самостоятельной с учетом общей выполняемой работы.

Модули высшего уровня иерархической структуры программного изделия должны иметь функциональную или последовательную коммуникативную связность. Другие типы связности свидетельствуют о недостаточной продуманности структуры программного изделия.

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

№ п/п Вид сцепления Степень сцепления

Чем ниже степень,

тем лучше.

1 По кодам 9
2 По внешним ссылкам 7
3 По управлению 5
4 По общей области 4
5 По образцу 3
6 По данным 1
7 Независимое 0

 

1. Модули имеют сцепление по кодам, если коды их команд перемежаются друг с другом. Это сцепление возникает тогда, когда для одного модуля доступны внутренние области другого без обращения к его точкам входа или когда два модуля используют общий участок памяти с командами.

Модули: А:

      В:

Передача управления из А в В не через внешнюю точку, а в любом месте. На языках высокого уровня это сделать невозможно, на языках низкого уровня – возможно.

 

   

 

 

   
   
   

 

 

2. Модули сцеплены по внешним ссылкам, если у них есть доступ к данным в другие модули через внешнюю точку входа. Таким образом осуществляется неявное управление функционированием другого модуля.

3. Модули имеют сцепление по управлению, если какой-нибудь из них управляет решениями внутри другого с помощью передачи флагов, переключателей и т.д., предназначенных для выполнения функций управления, т.е. предполагается, что один из модулей «знает» о функциях другого.

4. Модули сцеплены по общей области, если они разделяют одну и ту же глобальную структуру данных.

  глобальные переменные  
   
А:   В:
       
     

5. Модули сцеплены по образцу, если их формальные параметры содержат структуры данных, т.е. модули должны «знать» внутреннюю структуру данных другого модуля. Изменение структуры данных в одном модуле может повлечь неправильную работу другого модуля.

6. Модули сцеплены по данным, если они имеют общие единицы, которые передаются от одного модуля к другому как параметры, представляющие собой простые элементы данных, т.е. вызывающий модуль «знает» только имя вызываемого модуля, а также типы и значения его переменных, а вызываемый модуль ничего не знает о вызывающем.

7. Независимое сцепление возможно в том случае, ели модули не вызывают друг друга или не обрабатывают одну и ту же информацию.

Необходимо при проектировании программных изделий добиваться степени сцепления 3 и ниже.

Существует три критерия проектирования модулей:

1. сложность взаимодействия модуля с другим модулем должна быть больше сложности его внутренней структуры;

2. хороший модуль снаружи проще, чем внутри;

3. хороший модуль проще использовать, чем построить.

Кроме сцепления и связности, качество модулей определяется следующими факторами:

1. Размер модуля (модуль должен быть как можно меньше);

2. Предсказуемость модуля.

Предсказуемый модуль – это модуль, работа которого не зависит от предыстории его использования. Модуль должен быть предсказуемым.

Пример непредсказуемого модуля:

procedure f; const         k: Integer =0; время жизни переменной глобально begin      Inc (k);       if k >2 then k:= Ø;                case k of               1 : Writeln (`Hello`);              2: Readln (k);               end; end; При первом вызове k увеличивается на 1, т.е. k=1 и выводится сообщение “ Hello”. При втором вызове k=2 и ожидается ввод переменной k. При третьем – k=0 и никакие действия не производятся

3. Структура принятия решений. Всюду, где это возможно, желательно организовать модуль и принятие решений в них таким образом, чтобы модули, непосредственно управляемые решением, вызывались модулем, содержащим такое решение. Это ведет к устранению передачи специальных параметров, представляющих решение (т.е. нужно избегать сцепления по управлению).

4. Минимизация доступа к данным. Объем данных, на которые модуль может ссылаться, должен быть сведен к минимуму. Проблему общих данных не следует решать путем передачи одного огромного списка параметров во все модули.

5. Внутренняя процедура или подпрограмма – это закрытая подпрограмма физически содержащаяся в вызывающем модуле. Внутренних процедур следует избегать.

При проектировании программного изделия необходимо придерживаться следующих правил формирования структуры и взаимодействия модулей.

1. Структура программного изделия и правила оформления описаний должны быть унифицированными.

2. Каждый модуль должен характеризоваться функциональной законченностью, автономностью и независимостью в оформлении от модулей, которые его используют и которые он вызывает (функциональный вид связности).

3. Необходимо применять стандартные правила организации связей с другими модулями по управлению информацией.

4. Структура ПИ должна быть представлена в виде совокупности небольших программных модулей, связанных иерархическим образом.


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 384; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь