АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Навигация по разделу

Читайте также:
  1. Выводы к разделу 1
  2. Заключительное занятие по разделу: «Средства, влияющие на функции исполнительных органов и систем»
  3. К РАЗДЕЛУ I.
  4. К разделу «Философия деятельности»
  5. К разделу «Философия человека»
  6. Карта для внеаудиторной работы по теме № 29: Итоговое занятие по разделу «Опорно-двигательный аппарат»
  7. Контроль знаний по разделу Интегральное исчисление (задания повышенной сложности)
  8. Лабораторная работа к разделу 2
  9. Лабораторная работа к разделу 6
  10. Лабораторная работа к разделу 9
  11. Лабораторные работы к разделу 10
  12. Лабораторные работы к разделу 7

· 33.3.1. HIPO - диаграмма

· 33.3.2. Метод нисходящего проектирования

· 33.3.3. Метод расширения ядра

· 33.3.4. Метод восходящего проектирования

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

Под модульным программированием (модуляризацией) понимается разделение программы на части по некоторым установленным правилам.

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

Для того чтобы логический модуль можно было закодировать, необходимо предварительно описать его поведение, т.е. специфицировать. Для спецификации функций логических модулей с точки зрения входных выходных данных и связи между ними используют HIPO-диаграмму. Её название образовано из первых букв английского словосочетания hierarchy-input-processing-output (иерархическое описание вход-обработка-выход) [20].

Программы разбиваются на модули для того, чтобы:

· упростить их разработку и реализацию;

· облегчить чтение программ;

· упростить их настройку и модификацию;

· облегчить работу с данными, имеющими сложную структуру;

· избежать чрезмерной детализации алгоритмов;

· обеспечить более выгодное размещение программ в памяти ЭВМ.

Правильная декомпозиция является главным способом преодоления сложности разработки больших систем ПО. Понятие «правильная» по отношению к декомпозиции означает следующее:

· количество связей между отдельными модулями должно быть минимальным (принцип «слабой связанности» - Low Coupling);

· связность отдельных частей внутри каждого модуля должна быть максимальной (принцип «сильного сцепления» — High Cohesion).

Связность модуля определяется как мера зависимости его частей.

Чем выше связность модуля, тем лучше результат проектирования. Для обозначения связности используется также понятие силы связности модуля.

Сцепление модулей представляет собой меру относительной независимости модулей, которая определяет их читабельность и сохранность.

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

Методы проектирования программ, основанные на модульном принципе, делятся на три группы:

· методы нисходящего проектирования,

· методы расширения ядра и

· методы восходящего проектирования.

На практике обычно применяются различные сочетания этих методов.

Рассмотрим применение функциональной декомпозиции на следующем примере.

Пусть нам необходимо разработать консольное приложение для представления десятичного действительного числа в систему счисления с основанием р (основание может меняться в диапазоне от 2 до 16).

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

Рис. 33.1. Схема иерархии логических модулей.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)