Читайте также:
|
|
К настоящему времени наиболее популярными и жизнеспособными оказались 2 технологии программирования: структурное программирование, объектно-ориентированное программирование.
Функциональное программирование – почитать.
Последние версии языка ассемблера поддерживают объектно-ориентированное программирование.
Типичному процессу написания программы на ассемблере более всего удовлетворяет концепции структурного программирования. Для микропроцессора intel эти концепции поддерживаются на аппаратном уровне с помощью сегментации памяти и команд передачи управления.
Структурное программирование – это методология программирования базирующиеся на системном подходе к анализу проектированию и реализации ПО. Основой этой технологии составляет следующие положения:
1. Сложная задача разбивается на более мелкие, функционально лучше управляемые задачи (Декомпозиция). Каждая задача имеет один вход и один выход. В этом случае управляющий поток программы состоит из совокупности элементарных подзадач с ясным функциональным назначением
2. Простота управляющих структур, используемых в задаче. Логически задача должна состоять из минимальной, функционально полной совокупности достаточно простых управляющих структур.
3. Разработка программы должна вестись поэтапно. На каждом этапе должно решатся ограниченное число чётко поставленных задач с ясным пониманием их значения и роли в контексте всей задачи. Если такое понимание не достигается, то это говорит о том, что этап слишком велик и его нужно разделить на более элементарные шаги.
Модульное программирование является частью общего структурного подхода.
Концепция модульного программирования:
1. Функциональная декомпозиция задачи – разбиение большой задачи на ряд более мелких функционально связанных между собой модулей. Модули связанны между собой входными и выходными данными.
2. Модуль – это основа концепции модульного программирования каждый модуль представляет собой чёрный ящик с одним входом и одним выходом. Модульный подход позволяет безболезненно производить модернизацию программы в процессе её эксплуатации и облегчает сопровождение. Дополнительно модульный подход позволяет разрабатывать части программ одного проекта на разных языках программирования, после чего с помощью компоновочных средств объединить их в единый загрузочный модуль.
3. Реализуемые решения должны быть простыми и ясными. Если назначение модуля непонятно это говорит о том, что декомпозиция начальной и промежуточной задачи недостаточна.
4. Назначение всех переменных модуля должно быть описано с помощью комментариев по мере описание переменных.
5. Исходный текст модуля должен иметь заголовок в котором отражены как назначение модуля, так и его внешние связи. Заголовок – интерфейсная часть модуля. В этой части с помощью комментариев помещается следующая информация: назначение модуля, особенности функционирования, описание входных аргументов, описание выходных аргументов, использование внешних модулей и переменных, сведения о разработчике для защиты авторских прав.
6. Ходе разработки программы следуют предусматривать специальные блоки, учитывающие реакции на возможные ошибки данных и действия пользователя. Этот момент означает отсутствие тупиковых ветвей в алгоритме программы. Любые непредусмотренные действия пользователя должны приводить к генерации ошибочной ситуации или предупреждению о возможности возникновения такой ситуации.
Применительно к ассемблеру рассматривают несколько форм организаций управляющих связей:
1. С использованием механизма макро-подстановок, позволяющего изменять исходный текст программы в соответствии с некоторыми предварительно описанными параметризованными объектами. Эти объекты имеют формальный аргумент, что позволяет производить их замещение фактическими аргументами в процессе макрогенерации.
2. Использование механизма подпрограмм (процедур), написанных на ассемблере и структурно входящих в одну программу. В отличие от макро –команд взаимодействие процедур осуществляется на этапе выполнения программы.
3. Использование механизма подпрограмм написанных на разных языках программирования и соединяемых в единый модуль на этапе компоновки. Эта возможность реализуется благодаря унифицированному формату объектного модуля, однозначным соглашением о передаче аргумента и единым схемам организации памяти на этапе выполнения.
4. Использование механизма динамического вызова исполняемых модулей и подключение их к windows.
Основные информационные связи
1. Использование общих областей памяти и общих аппаратно-программных ресурсов процессора для связи модулей
2. Унифицированная передача аргумента при вызове модуля. Унификацию можно представить, как на уровне пользователя, так и на уровне конкретного компилятора.
3. Унифицированная передача аргумента при возврате управления из модуля.
Дата добавления: 2015-11-26; просмотров: 37 | Нарушение авторских прав