|
Это часто случается
тогда, когда модули при выполнении возложенных на них задач тре-
буют доступа к обширному количеству данных. Чаще всего это легко
может произойти, если на модуль возложено выполнение нескольких
опций. |
английский словарь |
|
|
Чтобы знать состояние программы в данное время, модуль
должен принимать очень много различных переменных. Если это так,
и выявлено, что модуль принимает большое количество параметров,
необходимо ответить на следующие две группы вопросов:
Первая: В этом модуле предпринята попытка выполнения несколь-
ких функций? Требует ли модуль параметры, используемые в не отно-
сящихся к данному модулю секциях? Если ответы на эти вопросы по-
ложительные, то необходимо снова обратиться к дальнейшей
сегментации этого модуля.
Вторая: Модуль представляет собой функциональный разрез? Яв-
ляются ли на самом деле вызывающий и вызываемый модули частью од-
ной и той же функции? Если это так, то поместите их вместе в один
модуль, даже если результирующий модуль окажется слишком большим.
Затем попробуйте выполнить сегментацию модуля снова различными
способами.
Сегментация модулей через функциональный разрез часто проис-
ходит тогда, когда программист обнаруживает, что две программные
секции идентичны или сильно похожи друг на друга. |
перевод с русского на английский |
|
{img3} |
symantec antivirus |
|
Программист за-
тем пытается создать из них один модуль. Это не модульное прог-
раммирование, поскольку результирующий модуль имеет не функцио-
нальное соединение.
Если в процессе проектирования будет обнаружено, что ничего
сделать нельзя, чтобы избежать использования большого числа ссы-
лок на данные или передачи меток параметров, вернитесь обратно в
начало проектирования и проверьте корректность поставленной проб-
лемы.
Минимизации количества необходимых вызовов
Одним из существенных преимуществ модульного программирования
является то, что программа основного уровня очень часто может
быть сконструирована для чтения как последовательность вызываемых
процедур. |
англо русский словарь |
|
|
архиватор winrar, отказоустойчивые вычислительные системы, архиватор win rar, asplinux 11.2, symantec, .
антивирус панда
|
Это происходит
при использовании таблицы переходов для реализации потока управ-
ления внутри программы. Таблица перехода используется путем "про-
талкивания" адреса возврата в стек, вычисления индекса требуемого
адреса перехода в таблице и выполнения перехода в памяти. Пример
этого приема показан в листинге программы драйвера устройства,
приведенной в главе 6.
При практическом выполнении декомпозиции модулей можно самим
найти некоторое количество альтернативных решений. Прежде чем
осуществить правильный выбор, необходимо знать альтернативы. Цель
состоит в выборе таких альтернатив, которые создадут наилучшие
условия проектирования.
Функциональная декомпозиция
При обращении к проблеме на стадии проектирования первым аль-
тернативным выбором должна быть функциональная декомпозиция, т.е.
разбиение проблемы на более узкие, вполне поддающиеся управлению
функциональные единицы, где каждая единица выполняет завершенную,
легко идентифицируемую задачу. Имеется множество путей определе-
ния содержания задачи. Вот лишь некоторые примеры подобных еди-
ниц, которые выполняют определенные функции: получение квадратно-
го корня некоторого числа; выполнение всех операций относительно
указанного устройства таких, как операции в/в диска, операции в/в
клавиатуры; выполняющие общую группу действий в указанное время
такие, как инициализация областей данных; и единицы, которые вза-
имодействуют последовательно или используют общие элементы данных
такие, как считывание данных с клавиатуры и преобразование их в
целые значения.
В настоящее время в области программирования на языках высо-
кого уровня чаще всего принимаются такие решения, которые предс-
тавляют собой наилучший способ по использованию сегментации прог-
- 2-3 -
рамм. При программировании на языке Ассемблер обычно нельзя быть
столь последовательным. Каждый из ранее приведенных способов под-
водит, по крайней мере, к начальной точке для разбиения проблемы.
Часто обнаруживается, что некоторые модули связываются с помощью
одного набора критериев, а другие модули - с помощью другого. По-
ка каждый модуль включает легко понимаемые программные секции
(обычно две страницы или меньше), Вы находитесь на правильном пу-
ти.
Минимизации количества передаваемых параметров
Иногда обнаруживается, что после определения модулей програм-
мы создано нечто громоздкое и неуклюжее.
|
|
|