Автор: Пользователь скрыл имя, 25 Февраля 2013 в 03:35, курсовая работа
Машинно-ориентированное программирование появилось одновременно с созданием электронных вычислительных машин. Сначала это были программы в машинных кодах, затем появился язык программирования Assembler (Автокод), который немного «очеловечил» написание программы в машинном коде. Этот стиль программирования предполагает доскональное знание возможностей конкретной архитектуры ЭВМ и операционной системы и используется до сих пор тогда, когда другие стили бессильны, или нужно получить максимальное быстродействие в рамках той или иной операционной системы с использованием архитектуры данной ЭВМ.
Рисунок 1
Архитектурный подход к разработке программы представляет собой модификацию восходящей разработки, при которой модульная структура программы формируется в процессе программирования модуля. Но при этом ставится существенно другая цель разработки: повышение уровня используемого языка программирования, а не разработка конкретной программы. Это означает, что для заданной предметной области выделяются типичные функции, каждая из которых может использоваться при решении разных задач в этой области, и специфицируются, а затем и программируются отдельные программные модули, выполняющие эти функции. Так как процесс выделения таких функций связан с накоплением и обобщением опыта решения задач в заданной предметной области, то обычно сначала выделяются и реализуются отдельными модулями более простые функции, а затем постепенно появляются модули, использующие ранее выделенные функции. Такой набор модулей создается в расчете на то, что при разработке той или иной программы заданной предметной области в рамках конструктивного подхода могут оказаться приемлемыми некоторые из этих модулей. Это позволяет существенно сократить трудозатраты на разработку конкретной программы путем подключения к ней заранее заготовленных и проверенных на практике модульных структур нижнего уровня. Так как такие структуры могут многократно использоваться в разных конкретных программах, то архитектурный подход может рассматриваться как путь борьбы с дублированием в программировании. В связи с этим программные модули, создаваемые в рамках архитектурного подхода, обычно параметризуются для того, чтобы усилить применимость таких модулей путем настройки их на параметры.
В классическом методе нисходящей разработки рекомендуется сначала все модули разрабатываемой программы запрограммировать, а уж затем начинать нисходящее их тестирование [5]. Однако такой порядок разработки не представляется достаточно обоснованным: тестирование и отладка модулей может привести к изменению спецификации подчиненных модулей и даже к изменению самой модульной структуры программы, так что в этом случае программирование некоторых модулей может оказаться бесполезно проделанной работой. Более рациональным является другой порядок разработки программы, известный в литературе как метод нисходящей реализации. В этом методе каждый запрограммированный модуль начинают сразу же тестировать до перехода к программированию другого модуля.
Все эти методы имеют
еще различные разновидности
в зависимости от того, в какой
последовательности обходятся узлы
(модули) древовидной структуры
Подводя итог сказанному, на рис. 2 представлена общая классификация рассмотренных методов разработки структуры программы.
Рисунок 2
В завершении процесса модульного программирования следует этап контроля структуры программы. Для этого можно использовать три метода [5]:
Статический контроль состоит в оценке структуры программы, насколько хорошо программа разбита на модули с учетом значений рассмотренных выше основных характеристик модуля.
Смежный контроль сверху - это контроль со стороны разработчиков архитектуры и внешнего описания ПС. Смежный контроль снизу - это контроль спецификации модулей со стороны разработчиков этих модулей.
Сквозной контроль - это
мысленное прокручивание (проверка)
структуры программы при
Следует заметить, что указанный контроль структуры программы производится при классическом подходе. При конструктивном и архитектурном подходах контроль структуры программы осуществляется в процессе программирования (кодирования) модулей в подходящие моменты времени.
Подводя итог, хочу сказать, что концепция модульного программирования полностью удовлетворяет поставленным целям. Несмотря на «эру» объектно-ориентированного программирования, эта технология активно используется и по сей день. Средства создания модулей заложены практически во всех языках высокого уровня. Модули применяются также и в низкоуровневом программировании, где понятность кода особенно актуальна.
Использование программных модулей значительно упрощает отладку кода, дает значительные преимущества при локализации ошибок, позволяет быстро и безболезненно внести необходимые изменения в нужные части программы. Также, при создании крупных проектов, данная технология позволяет задействовать большое количество специалистов, которые в свою очередь разобьются на более мелкие группы и будут решать конкретную узко поставленную задачу, доводя ее до «совершенства». При этом структурированность и иерархичность данного процесса является большим плюсом, т.к. скорость разработки приложения повышается в несколько раз. Взаимодействие между различными группами специалистов сводиться к минимуму, тем самым снимая возможные недопонимания.
Еще одним несомненным
1. Дж.Хьюз, Дж.Мичтом. Структурный подход к программированию. М.: Мир, 1980. - С. 29-71.
2. В.Турский. Методология
3. Е.А.Жоголев. Технологические основы модульного программирования // Программирование,1980, #2. - С. 44-49.
4. R.C.Holt. Structure of Computer Programs: A Survey // Proceedings of the IEEE, 1975, 63(6). - P. 879-893.
5. Г.Майерс. Надежность программного обеспечения. М.: Мир, 1980. - С. 92-113.
6. Я.Пайл. АДА - язык встроенных систем. М.: Финансы и статистика, 1984. - С. 67-75.
7. М.Зелковец, А.Шоу, Дж.Гэннон. Принципы
разработки программного
8. А.Л.Фуксман. Технологические аспекты создания программных систем. М.: Статистика, 1979. С. 79-94.
9. Н.Г.Голубь. Искусство программирования на Ассемблере. СПб.: ООО «ДиаСофтЮП», 2002. – С. 8-9.
10. www.rushelp.com