Тема 1. Технология программирования. Основные понятия и подходы
Лекция 1
Приведите пример и прокомментируйте структурные схемы САР непосредственного цифрового управления.
Приведите пример и прокомментируйте самонастраивающуюся схемы САР со стабилизацией динамической характеристики.
Приведите пример и прокомментируйте самонастраивающуюся схемы САР со стабилизацией частотной характеристики.
Приведите пример и прокомментируйте самонастраивающуюся схемы САР с анализом отклонения показателя качества.
Приведите пример и прокомментируйте самонастраивающуюся схемы САР с подстраиваемой моделью.
Приведите пример и прокомментируйте самонастраивающуюся схемы САР с контролем временной характеристики.
Приведите пример и прокомментируйте самонастраивающуюся схемы САР с контролем АЧХ.
Приведите пример экстремального регулирования сжигания топлива в термической печи.
6. Приведите пример и прокомментируйте самонастраивающуюся схемы САР с обобщённым настраивым объектом.
Литература по лекции 7.
1.Ульянов В,А., Леушин И.О., Гущин В,Н. Технологические измерения, автоматика и управление в технических системах. Ч.1. Н.Новгород: НГТУ, 2000. –С.7-77.
2.Майзель М.М. Автоматика и системы управления производственными процессами. М.: Высшая школа,1972. С.85-264.
3.Глинков Г.М., Косырев А.И., Шевцов Е.К. Контроль и автоматизация металлургических процессов. М.: Металлургия, 1989. С.94-143.
4.Воронов А.А., Титов В.К., Новогранов Б.Н. Основы теории автоматического регулирования и управления. М.: Высшая школа, 1977. С.154-356.
5.Коганов В.Ю., Блинов О.М., Беленький А.М. Автоматизация управления металлургическими процессами. М.: Металлургия,!974. С.17-80.
6.Дорф Р., Бишоп Р. Современные системы управления. М.: Лаборатория Базовых Знаний, 2002. С.243-564.
7.Филипс Ч., Харбор Р. Системы управления с обратной связью. М.: Лаборатория Базовых знаний, 2001. С.113-326.
8.Методы классической и современной теории автоматического управления. Т.1 /Под ред. К.А. Пупкова. М.: МГТУ, 2004. С.150-179.
9.Никулин Е.А. Основы теории автоматического управления. Частотные методы анализа и синтеза систем. СПб.: БХВ-Петербург, 2004.
Технология программирования (ТП) – это совокупность методов и средств, используемых в процессе разработки программного обеспечения (ПО). Как любая технология, ТП представляет собой набор технологических инструкций, включающих:
o указание последовательности выполнения технологических операций;
o перечисление условий, при которых выполняется та или иная операция:
o описание самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки.
Кроме набора операций и их последовательности ТП также определяет способ описания модели проектируемой системы, используемой на конкретном этапе разработки.
Различают два вида ТП:
o технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов; в их основе, как правило, лежит ограниченно применимый конкретный метод, позволяющий решить конкретную задачу;
o технологии, охватывающие несколько этапов или весь процесс разработки; в их основе лежит базовый подход, определяющий методологию, т.е. совокупность методов, используемых на разных этапах разработки.
Рассмотрим основные этапы развития программирования вообще и ТП в частности.
Первый этап – «стихийное» программирование. Этот этап охватывает период от момента появления первых ЭВМ до середины 60-х годов ХХ вв. В этот период практически отсутствовали сформулированные технологии, и программирование фактически было искусством. Первые программы имели простейшую структуру. Они состояли из программы на машинном языке и обрабатываемых ею данных. Появление ассемблеров позволило вместо двоичных или 16-ричных кодов использовать символические имена данных и кодов операций. В результате программы стали более «читаемыми».
Создание языков программирования высокого уровня (FORTRAN,ALGOL) существенно упростило программирование вычислений, снизив уровень детализации операций, что позволило увеличить сложность программ.
В начале 60-х годов ХХ в. разразился «кризис» программирования. Анализ причин возникновения большинства ошибок позволил сформулировать структурный подход к программированию.
Второй этап – структурный подход к программированию (60 – 70-е годы ХХ вв.). Структурный подход к программированию (СПкП) представляет собой совокупность технологических приемов, охватывающих выполнение всех этапов разработки ПО. В основе СПкП лежит декомпозиция (разбиение на части) сложных систем с целью последующей реализации в виде отдельных небольших (до 50 операторов) подпрограмм. С появлением других принципов декомпозиции (объектного, логического и др.) данный способ получил название процедурной декомпозиции.
СПкП требует представления задачи в виде иерархии подзадач простейшей структуры. Следовательно, при таком подходе проектирование осуществляется «сверху-вниз» и подразумевает реализацию общей идеи, обеспечивая проработку интерфейсов подпрограмм. Одновременно в указанные годы вводились ограничения на конструкции алгоритмов, рекомендовались формальные модели их описания, специальный метод проектирования алгоритмов – метод пошаговой детализации.
Поддержка принципов структурного программирования была заложена в основу процедурных языков программирования. Такие языки обычно содержат операторы передачи управления, поддерживают вложение подпрограмм, локализацию и ограничение области «видимости» данных (PL/1, ALGOL-68, Pascal, C).
Дальнейший рост сложности и размеров программ потребовал развития структурирования данных. Как следствие, в языках появилась возможность определения пользовательских типов данных. Одновременно усилилось стремление разграничить доступ к глобальным данным программы. В результате появилась технология модульного программирования.
Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компилируемые модули (библиотеки подпрограмм). Например, модуль графических ресурсов, модуль подпрограмм вывода на принтер и др. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, а доступ к реализации модуля (телам подпрограмм и некоторым «внутренним» переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal, С++, новые языки Ada, Modula.
Использование модульного программирования упростило параллельную разработку ПО несколькими программистами, обеспечило возможность использовать модули без изменений в других программах.
Третий этап – объектный подход к программированию (середина 80-х – конец 90-х годов ХХ в.). Объектно-ориентированное программирование (ООП) – это технология создания сложного ПО, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств и методов. (Взаимодействие программных объектов в такой систем осуществляется путем передачи сообщений.) Примеры ООЯ: ObjectPascal (Delphi), C++, Modula, Java.
Основное достоинство ООП по сравнению с модульным программированием – более естественная декомпозиция ПО, существенно облегчающая его разработку. Кроме того, объектный подход предполагает новые способы организации программ, основанные на механизмах инкапсуляции, наследования и полиморфизма. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотеки классов для различных применений.
Использование объектного подхода имеет много преимуществ, однако его конкретная реализация в ООЯ программирования (Object Pascal, C++) имеет и ряд недостатков. Сохраняется зависимость модулей ПО от адресов экспортируемых полей и методов, а также структур и форматов данных. Эта зависимость объективна, т.к. модули должны взаимодействовать друг с другом, обращаясь к ресурсам друг друга. Связи модулей нельзя разорвать, но можно попробовать стандартизовать их взаимодействие, на чем и основан компонентный подход к программированию.
Четвертый этап – компонентный подход и CASE -технологии (середина 90-х годов ХХ в. – наше время). Компонентный подход (КП) предполагает построение ПО из отдельных компонентов, т.е. физически отдельно существующих частей ПО, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы. В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию.
КП лежит в основе технологий, разработанных на базе COM (Component Object Model – компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object Request Broker Architecture – общая архитектура с посредником обработки запросов объектов). Эти технологии используют сходные принципы и различаются лишь особенностями реализации.
Технология COM фирмы Microsoft является развитием технологии OLE (Object Linking and Embedding – связывание и внедрение объектов), которая использовалась в ранних версиях Windows для создания составных документов. Технология COM определяет общие принципы взаимодействия программ любых типов: библиотек, приложений, операционной системы, т.е. позволяет одной части ПО использовать функции (службы), предоставляемые другой, независимо от того, функционируют ли эти части в пределах одного процесса, в разных процессах на одном ПК или на разных ПК. Модификация COM, обеспечивающая передачу вызовов между компьютерами, называется DCOM (Distributed 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- технологии, поддерживающие как структурный, так и объектный (в том числе и компонентный) подходы к программированию.
Появление нового подхода не означает, что отныне все ПО будет создаваться из программных компонентов, но анализ существующих проблем разработки сложного ПО показывает, что он будет применяться достаточно широко.