Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Модульное программирование

Читайте также:
  1. В оперативной памяти находятся 10 переменных, содержащих числа, - S1, S2, ... S10. Программирование в среде Ассемблера. Сосчитать их произведение.
  2. Динамическое программирование
  3. Мультипрограммирование, многопользовательский режим работы и режим разделения времени
  4. Наркомания не болезнь, а грех. Программирование души на грех
  5. Нейро-линвистическое программирование
  6. НЕЙРО-ЛИНГВИСТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

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

Модуль характеризуют:

один вход и один выход - на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных, т.е. реализуется стандартный принцип IPO (Input - Process - Output) - вход-процесс-выход;

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

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

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

обозримый по размеру и сложности программный элемент.

Таким образом, модули содержат определение доступных для обработки данных, операции обработки данных, схемы взаимосвязи с другими модулями.

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

Модульная структура программных продуктов

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

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

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

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

принятие основных решений в алгоритме выносится на максимально "высокий" по иерархии уровень;

для использования одной и той же функции в разных местах алгоритма создается один модуль, который вызывается на выполнение по мере необходимости. В результате дальнейшей детализации алгоритма создается функционально-модульная схема (ФМС) алгоритма приложения, которая является основой для программирования.

Состав и вид программных модулей, их назначение и характер использования в программе в значительной степени определяются инструментальными средствами. Например, применительно к средствам СУБД отдельными модулями могут быть:

экранные формы ввода и/или редактирования информации базы данных;

отчеты генератора отчетов; макросы; стандартные процедуры обработки информации;

меню, обеспечивающее выбор функции обработки и др.

Так же как и для структурной технологии программирования, концепцию модуль­ного программирования можно сформулировать в виде нескольких понятий и положений:

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

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

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

Назначение всех переменных модуля должно быть описано с помощью ком­ментариев по мере их определения.

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

• назначение модуля;

• особенности функционирования;

• описание входных аргументов;

• описание выходных аргументов;

• использование внешних модулей и переменных;

• сведения о разработчике для защиты авторских прав.

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

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

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

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

Использование механизма подпрограмм, написанных на ассемблере и струк­турно входящих в одну программу. В языке ассемблера такие подпрограммы называют процедурами. В отличие от макрокоманд, взаимодействие процедур осуществляется на этапе выполнения программы.

Использование механизма подпрограмм, написанных на разных языках про­граммирования и соединяемых в единый модуль на этапе компоновки. Эта возможность реализуется благодаря унифицированному формату объектного модуля, однозначным соглашениям по передаче аргументов и единым схемам организации памяти на этапе выполнения.

Использование механизма динамического (то есть времени выполнения) вы­зова исполняемых модулей и подключения библиотек dll для операционной системы Windows.

В качестве основных информационных связей можно выделить следующие:

Использование общих областей памяти и общих программно-аппаратных ре­сурсов микропроцессора для связи модулей.

Унифицированную передачу аргументов при вызове модуля. Эту унификацию можно представлять двояко: на уровне пользователя и на уровне конкретного компилятора.

Унифицированную передачу аргументов при возврате управления из модуля.


Дата добавления: 2015-07-08; просмотров: 221 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Общие концепции.| Філософія Київської Русі

mybiblioteka.su - 2015-2024 год. (0.01 сек.)