<<
>>

Структурное программирование

Структурное программирование — методология программирования, базирующаяся на системном подходе к анализу, проектированию и реализации программного обеспечения. Эта методология зародилась в начале 70-х гг.
и оказалась настолько жизнеспособной, что и до сих пор является основной в большом количестве про- ектов. Ее основу составляет концепция модульного программирования. Концепцию модульного программирования можно сформулировать в виде не- скольких понятий и положений. Основа концепции модульного программирова- ния — модуль, который является продуктом процесса разбиения большой задачи на ряд более мелких функционально самостоятельных подзадач. Этот процесс на- зывается функциональной декомпозицией задачи. Каждый модуль в функциональ- ной декомпозиции представляет собой «черный ящик» с одним входом и одним выходом. Модули связаны между собой только входными и выходными данными. Модульный подход позволяет безболезненно производить модернизацию про- граммы в процессе ее эксплуатации и облегчает ее сопровождение.
Дополнитель- но модульный подход позволяет разрабатывать части программ одного проекта на разных языках программирования, после чего с помощью компоновочных средств объединять их в единый загрузочный модуль. ' Основная цель модульного подхода — простота и ясность реализуемых реше- ний. Если вы затрудняетесь четко сформулировать назначение модуля, это гово- рит о том, что один из предыдущих этапов декомпозиции задачи был проведен недостаточно качественно. В этом случае необходимо вернуться на один или бо- лее шаг назад и еще раз проанализировать задачу этапа, вызвавшего проблему. Это, возможно, приведет к появлению дополнительных модулей в процессе функцио- нальной декомпозиции. При наличии в проекте сложных мест их нужно подробно документировать с помощью продуманной системы комментариев.
Комментарии должны быть яс- ными в смысле отражения реализуемых идей и подчиняться некоторой системе — частной, если разработчик — частное лицо, или корпоративной, действующей внут- ри некоторого организованного коллектива разработчиков. По поводу системы комментирования можно еще раз напомнить несколько широко известных идей. Во-первых, желательно назначение всех переменных модуля описывать коммен- тариями по мере их определения. Во-вторых, исходный текст модуля должен иметь заголовок, отражающий назначение модуля и его внешние связи. Этот заголовок можно назвать интерфейсной частью модуля. В интерфейсной части с использо- ванием комментариев нужно поместить информацию о назначении модуля, об осо- бенностях функционирования, о входных и выходных аргументах, об исполь- зовании внешних модулей и переменных, а также о разработчике — для защиты авторских прав. В ходе разработки программы следует предусматривать специальные блоки операций, учитывающие реакцию на возможные ошибки в данных или в действи- ях пользователя. Это очень важный момент, означающий, что в алгоритме про- граммы не должно быть тупиковых ветвей, в результате работы которых программа «виснет» и перестает отвечать на запросы пользователя. Любые непредусмотрен- ные действия пользователя должны приводить к генерации ошибочной ситуации или к предупреждению о возможности возникновения такой ситуации. Из этих положений видно, какое большое значение придается организации управляющих и информационных связей между структурными единицами програм- мы (модулями), совместно решающими одну или несколько больших задач. При- менительно к языку ассемблера можно рассматривать несколько форм организа- ции управляющих связей. Si Макроподстановки позволяют изменять исходный текст программы в соответ- ствии с некоторыми предварительно описанными параметризованными объектами. Эти объекты имеют формальные аргументы, замещаемые в процес- се макрогенерации их фактическими аргументами. Такая форма образования структурных элементов носит некоторый предварительный характер из-за того, что процессы замены происходят на этапе компиляции и есть смысл рассмат- ривать их только как настройку на определенные условия функционирования программы.
• Объединение в одну программу подпрограмм, написанных на ассемблере. В языке ассемблера такие подпрограммы называют процедурами. В отличие от макрокоманд, взаимодействие процедур осуществляется на этапе выполнения программы. ii Объединение в единый модуль на этапе компоновки подпрограмм, написан- ных на разных языках программирования. Эта возможность реализуется бла- годаря унифицированному формату объектного модуля, однозначным согла- шениям о передаче аргументов и единым схемам организации памяти на этапе выполнения. «⅝ Динамический (на этапе выполнения) вызов исполняемых модулей и дина- мическое подключение библиотек (DLL-файлов) для операционной систе- мы Windows. В качестве основных информационных связей можно выделить следующие: ii общие области памяти и общие программно-аппаратные ресурсы процессора для связи модулей; Ш унифицированная передача аргументов при вызове модуля (эту унификацию можно представлять двояко: на уровне пользователя и на уровне конкретного компилятора); Ш унифицированная передача аргументов при возвращении управления из мо- дуля. Чуть позже мы подробно рассмотрим процессы, происходящие при передаче аргументов. Сейчас в качестве некоторого итога приведенных ранее общих рас- суждений перечислим средства языка ассемблера по осуществлению функциональ- ной декомпозиции программы: Ii макросредства; Ш процедуры; К средства компилятора ассемблера в форме директив организации оперативной памяти и ее сегментации. Макросредства подробно рассмотрены в главе 14. Предварительное обсужде- ние процедур проведено при обсуждении команд передачи управления в главе 10. Но процедуры — это не просто механизм тривиальной передачи управления из одной точки программы в другую. В частности, этот механизм тесно связан со сред- ствами компилятора, поддерживающими организацию памяти и сегментацию. Поэтому дальнейшее обсуждение будет посвящено более глубокому изучению функциональной декомпозиции программ с использованием процедур и связан- ных с ними средств компилятора.
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Структурное программирование:

  1. Психология личности структурна и иерархична (принцип структурности и иерархичности).
  2. Иванова Г.С. Основы программирования, 2002
  3. Основной курс (Программирование)
  4. Эстетика программирования
  5. Г.С.Иванова, Т.Н.Ничушкина, Е.К.Пугачев. Объектно- ориентированное программирование, 2001
  6. О. Л. Голицына, Т. Л. Партыка, И. И. Попов. ЯЗЫКИ ПРОГРАММИРОВАНИЯ, 2008
  7. Часть вторая Родительское программирование
  8. Программирование телевизионного вещания
  9. Часть вторая Родительское программирование СУДЬБА ЧЕЛОВЕКА
  10. Нейро-лингвистическое программирование
  11. Сергей Александрович Орлов. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения, 2013