Технология программирования и основные этапы ее развития
Стр 1 из 15Следующая ⇒ Тема 1. Технология программирования. Основные понятия и подходы Технология программирования и основные этапы ее развития Технология программирования (ТП) – это совокупность методов и средств, используемых в процессе разработки программного обеспечения (ПО). Как любая технология, ТП представляет собой набор технологических инструкций, включающих: o указание последовательности выполнения технологических операций; o перечисление условий, при которых выполняется та или иная операция: o описание самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки. Кроме набора операций и их последовательности ТП также определяет способ описания модели проектируемой системы, используемой на конкретном этапе разработки. Различают два вида ТП: o технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов; в их основе, как правило, лежит ограниченно применимый конкретный метод, позволяющий решить конкретную задачу; o технологии, охватывающие несколько этапов или весь процесс разработки; в их основе лежит базовый подход, определяющий методологию, т.е. совокупность методов, используемых на разных этапах разработки. Рассмотрим основные этапы развития программирования вообще и ТП в частности. Первый этап – «стихийное» программирование. Этот этап охватывает период от момента появления первых ЭВМ до середины 60-х годов ХХ в. В этот период практически отсутствовали сформулированные технологии, и программирование фактически было искусством. Первые программы имели простейшую структуру. Они состояли из программы на машинном языке и обрабатываемых ею данных.
Появление ассемблеров позволило вместо двоичных или 16-ричных кодов использовать символические имена данных и кодов операций. В результате программы стали более «читаемыми». Ассемблер (англ. assemble – собирать) – вспомогательная программа в составе ОС для автоматического перевода исходной программы, подлежащей выполнению на ЭВМ, на машинный язык. (Один из видов транслятора.) Язык ассемблера – машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным кодам. Используется для представления в удобочитаемой форме программ, записанных в машинных кодах. Создание языков программирования высокого уровня (FORTRAN, ALGOL) существенно упростило программирование вычислений, снизив уровень детализации операций, что позволило увеличить сложность программ. Существенный прорыв в программировании произошел с появлением в языках средств, позволяющих оперировать подпрограммами, которые можно было сохранять и использовать в других программах. В результате были созданы огромные библиотеки расчетных и служебных подпрограмм, которые по мере надобности вызывались из основной программы. Слабым местом подобной архитектуры было то, что при увеличении числа подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой. Пример с МПД. Для сокращения подобных ошибок было предложено использовать в подпрограммах локальные переменные. В начале 60-х годов ХХ в. разразился «кризис» программирования. Он выражался в том, что фирмы, взявшиеся за разработку сложного ПО, (например, ОС) срывали все сроки завершения проектов. Проект устаревал раньше, чем был готов к внедрению, увеличивалась его стоимость, многие проекты так никогда и небыли завершены. Объективно все это было вызвано несовершенством ТП. Стихийно использовалась разработка «снизу-вверх» – подход, при котором вначале разрабатывали сравнительно простые подпрограммы, из которых потом пытались построить сложную программу. В отсутствие четких моделей описания подпрограмм и методов их проектирования создание каждой программы превращалось в сложную задачу, интерфейсы подпрограмм получались сложными, и при сборке выявлялось большое количество ошибок согласования. Исправление ошибок требовало серьезного изменения уже разработанных подпрограмм, что еще больше осложняло ситуацию, т.к. при этом в программу часто вносились новые ошибки. … В конечном итоге процесс тестирования и отладки программ занимал более 80% времени.
Анализ причин возникновения большинства ошибок позволил сформулировать структурный подход к программированию. Второй этап – структурный подход к программированию (60 – 70-е годы ХХ в.). Структурный подход к программированию (СПкП) представляет собой совокупность технологических приемов, охватывающих выполнение всех этапов разработки ПО. В основе СПкП лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 50 операторов) подпрограмм. С появлением других принципов декомпозиции (объектного, логического и др.) данный способ получил название процедурной декомпозиции. СПкП требует представления задачи в виде иерархии подзадач простейшей структуры. Следовательно, при таком подходе проектирование осуществляется «сверху-вниз» и подразумевает реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Одновременно в указанные годы вводились ограничения на конструкции алгоритмов, рекомендовались формальные модели их описания, специальный метод проектирования алгоритмов – метод пошаговой детализации. Поддержка принципов структурного программирования была заложена в основу процедурных языков программирования. Такие языки обычно содержат операторы передачи управления, поддерживают вложение подпрограмм, локализацию и ограничение области «видимости» данных (PL/1, ALGOL-68,Pascal, C). Дальнейший рост сложности и размеров программ потребовал развития структурирования данных. Как следствие, в языках появилась возможность определения пользовательских типов данных. Одновременно усилилось стремление разграничить доступ к глобальным данным программы. В результате появилась технология модульного программирования.
Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули (библиотеки подпрограмм). Например, модуль графических ресурсов, модуль подпрограмм вывода на принтер и др. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, а доступ к реализации модуля (телам подпрограмм и некоторым «внутренним» переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal, С++, новые языки Ada, Modula. Использование модульного программирования упростило параллельную разработку ПО несколькими программистами, обеспечило возможность использовать модули без изменений в других программах. Практика показала, что структурный подход в сочетании с модульным программированием позволяет получать достаточно надежные программы, размер которых не превышает 100 000 операторов. Узкое место модульного программирования состоит в том, что ошибка в интерфейсе при вызове подпрограммы выявляется только при выполнении программы (из-за раздельной компиляции модулей обнаружить эти ошибки раньше невозможно). При увеличении размера программы возрастает сложность межмодульных интерфейсов, и с некоторого момента предусмотреть взаимовлияние отдельных частей про8раммы становится практически невозможно. Для разработки ПО большого объема был предложен объектный подход. Третий этап – объектный подход к программированию (середина 80-х – конец 90-х годов ХХ в.). Объектно-ориентированное программирование (ООП) – это технология создания сложного ПО, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств и методов. (Взаимодействие программных объектов в такой систем осуществляется путем передачи сообщений.) Примеры ООЯ: Object Pascal (Delphi), C ++, Modula, Java.
Основное достоинство ООП по сравнению с модульным программированием – более естественная декомпозиция ПО, существенно облегчающая его разработку. Кроме того, объектный подход предполагает новые способы организации программ, основанные на механизмах инкапсуляции, наследования и полиморфизма. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотеки классов для различных применений. Бурное развитие технологий программирования, основанных на объектном подходе, позволило решить многие проблемы. Были созданы среды, поддерживающие визуальное программирование (Delphi, C ++Builder, Visual C ++, …). При использовании визуальной среды программист может проектировать некоторую часть, например, интерфейсы будущего проекта, с применением визуальных средств добавления и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды. Использование объектного подхода имеет много преимуществ, однако его конкретная реализация в ООЯ программирования (Object Pascal, C ++) имеет и ряд недостатков. Сохраняется зависимость модулей ПО от адресов экспортируемых полей и методов, а также структур и форматов данных. Эта зависимость объективна, т.к. модули должны взаимодействовать друг с другом, обращаясь к ресурсам друг друга. Связи модулей нельзя разорвать, но можно попробовать стандартизовать их взаимодействие, на чем и основан компонентный подход к программированию. Четвертый этап – компонентный подход и CASE -технологии (середина 90-х годов ХХ в. – наше время). Компонентный подход (КП) предполагает построение ПО из отдельных компонентов, т.е. физически отдельно существующих частей ПО, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию. На сегодня рынок объектов стал реальностью, в Интернете существуют узлы, предоставляющие большое количество компонентов. Это позволяет программистам создавать ПО, хотя бы частично состоящее из повторно используемых частей.
КП лежит в основе технологий, разработанных на базе COM (Component Object Model – компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object RequestBroker Architecture – общая архитектура с посредником обработки запросов объектов). Эти технологии используют сходные принципы и различаются лишь особенностями реализации. ТехнологияCOM фирмы Microsoft является развитием технологии OLE (Object Linking andEmbedding – связывание и внедрение объектов), которая использовалась в ранних версиях Windows для создания составных документов. Технология COM определяет общие принципы взаимодействия программ любых типов: библиотек, приложений, операционной системы, т.е. позволяет одной части ПО использовать функции (службы), предоставляемые другой, независимо от того, функционируют ли эти части в пределах одного процесса, в разных процессах на одном ПК или на разных ПК. Модификация COM, обеспечивающая передачу вызовов между компьютерами, называется DCOM (Distributed COM – распределенная COM). По технологии COM приложение предоставляет свои службы, используя специальные объекты – объектыCOM, которые являются экземплярами классов COM. Объект COM так же, как обычный объект, включает поля и методы, но в отличие от обычных объектов каждый объект COM может реализовывать несколько интерфейсов, обеспечивающих доступ к его полям и функциям. Это достигается за счет организации отдельной таблицы адресов методов для каждого интерфейса (по типу таблиц виртуальных методов). При этом интерфейс обычно объединяет несколько однотипных функций. Классы COM поддерживают наследование интерфейсов, но не поддерживают наследования реализации, т.е. не наследуют код методов, хотя при необходимости объект класса-потомка может вызвать метод класса-предка. На базе технологии COM и DCOM разработаны компонентные технологии, решающие различные задачи разработки ПО. 1. OLE-automation или просто Automation (автоматизация) – технология создания программируемых приложений, обеспечивающая программируемый доступ к внутренним службам этих приложений. Вводит понятие диспинтерфейса (dispinterface) – специального интерфейса, облегчающего вызов функций объекта. Эту технологию поддерживает, например, Microsoft Excel, предоставляя другим приложениям свои службы. 2. ActiveX – технология, построенная на базе OLE - automation, предназначенная для создания ПО как установленного на одном ПК, так и распределенного в сети. Предполагает использование визуального программирования для создания компонентов – элементов управления ActiveX. Полученные таким образом элементы управления можно устанавливать на компьютер дистанционно с удаленного сервера, причем устанавливаемый код не зависит от используемой ОС. Это позволяет применять элементы управления ActiveX в клиентских частях приложений Интернет. Основные преимущества технологии ActiveX: o быстрое написание программного кода (поскольку все действия, связанные с организацией взаимодействия сервера и клиента, берет на себя ПО COM, программирование сетевых приложений становится похожим на программирование для отдельного компьютера); o открытость и мобильность (спецификации технологии недавно были переданы в Open Group как основа открытого стандарта); o возможность написания приложений с использованием знакомых средсв разработки (Visual Basic, Visual C++, Borland Delphi, Borland C++ и любых средств разработки на Java); o большое количество уже существующих бесплатных программных элементов ActiveX; o стандартность (технология ActiveX основана на широко используемых стандартах Интернет (TCP/IP, HTML, Java) и стандартах COM, OLE). 3. MTS (Microsoft Transaction Server – сервер управления транзакциями ) – технология, обеспечивающая безопасность и стабильную работу распределенных приложений при больших объемах передаваемых данных. 4. MIDAS (Multitier Distributed Application Server – сервер многозвенных распределенных приложений) – технология, организующая доступ к данным разных компьютеров с учетом балансировки нагрузки сети. Все указанные технологии реализуют компонентный подход, заложенный в COM. Технология CORBA, разработанная группой компаний OMG (Object Management Group – группа внедрения объектной технологии программирования), реализует подход, аналогичный COM, на базе объектов и интерфейсов CORBA. Программное ядро CORBA реализовано для всех основных аппаратных и программных платформ и поэтому технологию можно использовать для создания распределенного ПО в гетерогенной (разнородной) вычислительной среде. Организация взаимодействия между объектами клиента и сервера в CORBA осуществляется с помощью специального посредника VisiBroker и др. специализированного ПО. Отличительной особенностью современного этапа развития ТП, кроме изменения подхода, является создание и внедрение автоматизированных технологий разработки и сопровождения ПО, которые называются CASE- технологии (Computer-Aided Software/System Engineering – разработка ПО/ПС с использованием компьютерной поддержки). На сегодняшний день существуют CASE- технологии, поддерживающие как структурный, так и объектный (в том числе и компонентный) подходы к программированию. Использование CASE -средств позволяет существенно снизить трудозатраты на разработку сложного ПО в основном за счет автоматизации процессов документирования и контроля. Сегодня практически все промышленно производимое сложное ПО разрабатывается с использованием CASE -средств. (Подробнее о CASE- средствах будет рассказано на пятом курсе в рамках дисциплины «Корпоративные ИС».) Появление нового подхода не означает, что отныне все ПО будет создаваться из программных компонентов, но анализ существующих проблем разработки сложного ПО показывает, что он будет применяться достаточно широко.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|