Файл: Иванова Г.С. Технология программирования.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 20.11.2019

Просмотров: 9461

Скачиваний: 184

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

технологических

приемов

охватывающих

выполнение

всех

этапов

разработки

программного

обеспечения

В

основе

структурного

подхода

лежит

декомпозиция

 (

разбиение

на

части

сложных

систем

с

целью

последующей

реализации

в

виде

отдельных

небольших

  (

до

 40 - 50 

операторов

подпрограмм

С

появлением

других

принципов

декомпозиции

  (

объектного

логического

и

т

д

.) 

данный

способ

получил

название

процедурной

декомпозиции

В

отличие

от

используемого

ранее

процедурного

подхода

к

декомпозиции

структурный

подход

требовал

представления

задачи

в

виде

иерархии

подзадач

простейшей

структуры

Проектирование

таким

образом

осуществлялось

  «

сверху

вниз

» 

и

подразумевало

реализацию

общей

идеи

обеспечивая

проработку

интерфейсов

подпрограмм

Одновременно

вводились

ог

-

раничения

на

конструкции

алгоритмов

рекомендовались

формальные

модели

их

описания

а

также

специальный

метод

проектирования

алгоритмов

 - 

метод

пошаговой

детализации

Поддержка

принципов

структурного

программирования

была

заложена

в

основу

так

называемых

процедурных

языков

программирования

Как

правило

они

включали

основные

«

структурные

» 

операторы

передачи

управления

поддерживали

вложение

подпрограмм

локализацию

и

ограничение

области

 «

видимости

» 

данных

Среди

наиболее

известных

языков

этой

группы

стоит

назвать

 PL/1, ALGOL-68, Pascal, 

С

Одновременно

со

структурным

программированием

появилось

огромное

количество

языков

базирующихся

на

других

концепциях

но

большинство

из

них

не

выдержало

конкуренции

Какие

-

то

языки

были

просто

забыты

идеи

других

были

в

дальнейшем

использованы

в

следующих

версиях

развиваемых

языков

Дальнейший

рост

сложности

и

размеров

разрабатываемого

программного

обеспечения

потребовал

развития

структурирования

данных

Как

следствие

этого

в

языках

появляется

возможность

определения

пользовательских

типов

данных

Одновременно

усилилось

стремление

разграничить

доступ

к

глобальным

данным

программы

чтобы

уменьшить

количество

ошибок

возникающих

при

работе

с

глобальными

данными

В

результате

появилась

и

начала

развиваться

технология

модульного

программирования

Модульное

программирование

предполагает

выделение

групп

подпрограмм

использующих

одни

и

те

же

глобальные

данные

в

отдельно

компилируемые

модули

 (

библиотеки

подпрограмм

), 

например

модуль

графических

ресурсов

модуль

подпрограмм

вывода

на

принтер

 (

рис

. 1.5). 

Связи

между

модулями

при

использовании

данной

технологии

осуществляются

через

специальный

интерфейс

в

то

время

как

доступ

к

реализации

модуля

  (

телам

подпрограмм

и

некоторым

«

внутренним

» 

переменным

запрещен

Эту

технологию

поддерживают

современные

версии


background image

языков

 Pascal 

и

С

 (C++), 

языки

Ада

и

 Modula. 

Использование

модульного

программирования

существенно

упростило

разработку

программного

обеспечения

несколькими

программистами

Теперь

каждый

из

них

мог

разрабатывать

свои

модули

независимо

обеспечивая

взаимодействие

модулей

через

специально

оговоренные

межмодульные

интерфейсы

Кроме

того

модули

в

дальнейшем

без

изменений

можно

было

использовать

в

других

разработках

что

повысило

производительность

труда

программистов

Практика

показала

что

структурный

подход

в

сочетании

с

модульным

программированием

позволяет

получать

достаточно

надежные

программы

размер

которых

не

превышает

 100 000 

операторов

 [10]. 

Узким

местом

модульного

программирования

является

то

что

ошибка

в

интерфейсе

при

вызове

подпрограммы

выявляется

только

при

выполнении

программы

  (

из

-

за

раздельной

компиляции

модулей

обнаружить

эти

ошибки

раньше

невозможно

). 

При

увеличении

размера

программы

обычно

возрастает

сложность

межмодульных

интерфейсов

и

с

некоторого

момента

предусмотреть

взаимовлияние

отдельных

частей

программы

становится

практически

невозможно

Для

разработки

программного

обеспечения

большого

объема

было

предложено

использовать

объектный

подход

Третий

этап

 - 

объектный

подход

к

программированию

  (

с

середины

 80-

х

до

конца

 90-

х

годов

 XX 

в

.).

Объектно

-

ориентированное

программирование

определяется

как

технология

создания

сложного

программного

обеспечения

основанная

на

представлении

программы

в

виде

совокупности

объектов

каждый

из

которых

является

экземпляром

определенного

типа

 (

класса

), 

а

классы

образуют

иерархию

с

наследованием

свойств

 [10, 24, 29]. 

Взаимодействие

программных

объектов

в

такой

системе

осуществляется

путем

передачи

сообщений

 (

рис

. 1.6). 

Объектная

структура

программы

впервые

была

использована

в

языке

имитационного

моделирования

сложных

систем

 Simula, 

появившемся

еще

в

 60-

х

годах

 XX 

в

Естественный

для

языков

моделирования

способ

представления

программы

получил

развитие

в

другом

специализированном

языке

моделирования

 - 

языке

 Smalltalk (70-

е

годы

 XX 

в

.), 

а

затем

был

использован

в

новых

версиях

универсальных

языков

программирования

таких

как

 Pascal, C++, 

Modula, Java. 

Основным

достоинством

объектно

-

ориентированного

программирования

по

сравнению

с

модульным

программированием

является

  «

более

естественная

» 

декомпозиция

программного

обеспечения

которая

существенно

облегчает

его

разработку

Это

приводит

к

более

полной

локализации

данных

и

интегрированию

их

с

подпрограммами

обработки

что

позволяет

вести

практически

независимую

разработку

отдельных

частей

  (

объектов

программы

Кроме

этого

объектный

подход

предлагает

новые

способы

организации

программ

основанные

на

механизмах

наследования

полиморфизма

композиции

наполнения

Эти

механизмы

позволяют

конструировать

сложные

объекты

из

сравнительно

простых

В

результате

существенно

увеличивается

показатель

повторного

использования

кодов

и

появляется

возможность

создания

библиотек

классов

для

различных

применений

Бурное

развитие

технологий

программирования

основанных

на

объектном

подходе

позволило

решить

многие

проблемы

Так

были

созданы

среды

поддерживающие

визуальное

программирование

например

, Delphi, C++ Builder, Visual C++ 

и

т

д

При

использовании

визуальной

среды

у

программиста

появляется

возможность

проектировать

некоторую

часть

например

интерфейсы

будущего

продукта

с

применением

визуальных

средств

добавления

и

настройки

специальных

библиотечных

компонентов

Результатом

визуального

проектирования

является

заготовка

будущей

программы

в

которую

уже

внесены

соответствующие

коды

Использование

объектного

подхода

имеет

много

преимуществ

однако

его

конкретная

реализация

в

объектно

-

ориентированных

языках

программирования

таких

как

 Pascal 

и

 C++, 

имеет

существенные

недостатки

ƒ

фактически

отсутствуют

стандарты

компоновки

двоичных

результатов

компиляции

объектов

в

единое

целое

даже

в

пределах

одного

языка

программирования

компоновка

объектов

полученных

разными

компиляторами

 C++ 

в

лучшем

случае

проблематична

что

приводит

к

необходимости

разработки

программного

обеспечения

с

использованием

средств

и

возможностей

одного

языка

программирования

высокого

уровня

и

одного

компилятора

а

значит

требует

одного


background image

языка

программирования

высокого

уровня

и

одного

компилятора

а

значит

требует

наличия

исходных

кодов

используемых

библиотек

классов

изменение

реализации

одного

из

программных

объектов

как

минимум

связано

с

перекомпиляцией

соответствующего

модуля

и

перекомпоновкой

всего

программного

обеспечения

использующего

данный

объект

Таким

образом

при

использовании

этих

языков

программирования

сохраняется

зависимость

модулей

программного

обеспечения

от

адресов

экспортируемых

полей

и

методов

а

также

структур

и

форматов

данных

Эта

зависимость

объективна

так

как

модули

должны

взаимодействовать

между

собой

обращаясь

к

ресурсам

друг

друга

Связи

модулей

нельзя

разорвать

но

можно

попробовать

стандартизировать

их

взаимодействие

на

чем

и

основан

компонентный

подход

к

программированию

Четвертый

этап

 - 

компонентный

подход

и

 CASE-

технологии

 (

с

середины

 90-

х

годов

 XX 

в

до

нашего

времени

).

Компонентный

подход

предполагает

построение

программного

обеспечения

из

отдельных

компонентов

физически

отдельно

существующих

частей

программного

обеспечения

которые

взаимодействуют

между

собой

через

стандартизованные

двоичные

интерфейсы

В

отличие

от

обычных

объектов

объекты

-

компоненты

можно

собрать

в

динамически

вызываемые

библиотеки

или

исполняемые

файлы

распространять

в

двоичном

виде

 (

без

исходных

текстов

и

использовать

в

любом

языке

программирования

поддерживающем

соответствующую

технологию

На

сегодня

рынок

объектов

стал

реальностью

так

в

Интернете

существуют

узлы

предоставляющие

большое

количество

компонентов

рекламой

компонентов

забиты

журналы

Это

позволяет

программистам

создавать

продукты

хотя

бы

частично

состоящие

из

повторно

использованных

частей

т

.

е

использовать

технологию

хорошо

зарекомендовавшую

себя

в

области

проектирования

аппаратуры

Компонентный

подход

лежит

в

основе

технологий

разработанных

на

базе

 COM (Component 


background image

Object Model - 

компонентная

модель

объектов

), 

и

технологии

создания

распределенных

приложений

 CORBA (Common Object Request Broker Architecture - 

общая

архитектура

с

посредником

обработки

запросов

объектов

). 

Эти

технологии

используют

сходные

принципы

и

различаются

лишь

особенностями

их

реализации

.

Технология

СОМ

фирмы

 Microsoft 

является

развитием

технологии

 OLE I (Object Linking and 

Embedding - 

связывание

и

внедрение

объектов

), 

которая

использовалась

в

ранних

версиях

Windows 

для

создания

составных

документов

Технология

СОМ

определяет

общую

парадигму

взаимодействия

программ

любых

типов

библиотек

приложений

операционной

системы

т

е

позволяет

одной

части

программного

обеспечения

использовать

функции

  (

службы

), 

предоставляемые

другой

независимо

от

того

функционируют

ли

эти

части

в

пределах

одного

процесса

в

разных

процессах

на

одном

компьютере

или

на

разных

компьютерах

  (

рис

. 1.7). 

Модификация

СОМ

обеспечивающая

передачу

вызовов

между

компьютерами

называется

 DCOM 

(Distributed COM - 

распределенная

СОМ

). 

По

технологии

СОМ

приложение

предоставляет

свои

службы

используя

специальные

объекты

 - 

объекты

СОМ

которые

являются

экземплярами

классов

СОМ

Объект

СОМ

так

же

как

обычный

объект

включает

поля

и

методы

но

в

отличие

от

обычных

объектов

каждый

объект

СОМ

может

реализовывать

несколько

интерфейсов

обеспечивающих

доступ

к

его

полям

и

функциям

Это

достигается

за

счет

организации

отдельной

таблицы

адресов

методов

для

каждого

интерфейса

(

по

типу

таблиц

виртуальных

методов

). 

При

этом

интерфейс

обычно

объединяет

несколько

однотипных

функций

Кроме

того

классы

СОМ

поддерживают

наследование

интерфейсов

но

не

поддерживают

наследования

реализации

т

е

не

наследуют

код

методов

хотя

при

необходимости

объект

класса

-

потомка

может

вызвать

метод

родителя

Каждый

интерфейс

имеет

имя

начинающееся

с

символа

 «I» 

и

глобальный

уникальный

идентификатор

 IID (Interface IDentifier). 

Любой

объект

СОМ

обязательно

реализует

интерфейс

ILJnknown (

на

схемах

этот

интерфейс

всегда

располагают

сверху

). 

Использование

этого

интерфейса

позволяет

получить

доступ

к

остальным

интерфейсам

объекта

Объект

всегда

функционирует

в

составе

сервера

 - 

динамической

библиотеки

или

исполняемого

файла

которые

обеспечивают

функционирование

объекта

Различают

три

типа

серверов

внутренний

сервер

 - 

реализуется

динамическими

библиотеками

которые

подключаются

к

приложению

-

клиенту

и

работают

в

одном

с

ними

адресном

пространстве

 - 

наиболее

эффективный

сервер

кроме

того

он

не

требует

специальных

средств


background image

локальный

сервер

 — 

создается

отдельным

процессом

  (

модулем

ехе

), 

который

работает

на

одном

компьютере

с

клиентом

удаленный

сервер

 - 

создается

процессом

который

работает

на

другом

компьютере

Например

, Microsoft Word 

является

локальным

сервером

Он

включает

множество

объектов

которые

могут

использоваться

другими

приложениями

Для

обращения

к

службам

клиент

должен

получить

указатель

на

соответствующий

интерфейс

Перед

первым

обращением

к

объекту

клиент

посылает

запрос

к

библиотеке

СОМ

хранящей

информацию

обо

всех

зарегистрированных

в

системе

классах

СОМ

объектов

и

передает

ей

имя

класса

идентификатор

интерфейса

и

тип

сервера

Библиотека

запускает

необходимый

сервер

создает

требуемые

объекты

и

возвращает

указатели

на

объекты

и

интерфейсы

Получив

указатели

клиент

может

вызывать

необходимые

функции

объекта

Взаимодействие

клиента

и

сервера

обеспечивается

базовыми

механизмами

СОМ

или

 DCOM, 

поэтому

клиенту

безразлично

местонахождение

объекта

При

использовании

локальных

и

удаленных

серверов

в

адресном

пространстве

клиента

создается

proxy-

объект

 - 

заместитель

объекта

СОМ

а

в

адресном

пространстве

сервера

СОМ

 - 

заглушка

соответствующая

клиенту

Получив

задание

от

клиента

заместитель

упаковывает

его

параметры

и

используя

службы

операционной

системы

передает

вызов

заглушке

Заглушка

распаковывает

задание

и

передает

его

объекту

СОМ

Результат

возвращается

клиенту

в

обратном

порядке

На

базе

технологии

СОМ

и

ее

распределенной

версии

 DCOM 

были

разработаны

компонентные

технологии

решающие

различные

задачи

разработки

программного

обеспечения

OLE-

automation

или

просто

 Automation (

автоматизация

) — 

технология

создания

программируемых

приложений

обеспечивающая

программируемый

доступ

к

внутренним

службам

этих

приложений

Вводит

понятие

диспинтерфейса

 (dispinterface) - 

специального

интерфейса

облегчающего

вызов

функций

объекта

Эту

технологию

поддерживает

например

Microsoft Excel, 

предоставляя

другим

приложениям

свои

службы

Active

X - 

технология

построенная

на

базе

 OLE-automation, 

предназначена

для

создания

программного

обеспечения

как

сосредоточенного

на

одном

компьютере

так

и

распределенного

в

сети

Предполагает

использование

визуального

программирования

для

создания

компонентов

 - 

элементов

управления

 ActiveX. 

Полученные

таким

образом

элементы

управления

можно

устанавливать

на

компьютер

дистанционно

с

удаленного

сервера

причем

устанавливаемый

код

зависит

от

используемой

операционной

системы

Это

позволяет

применять

элементы

управления

ActiveX 

в

клиентских

частях

приложений

Интернет

Основными

преимуществами

технологии

 ActiveX, 

обеспечивающими

ей

широкое

распространение

являются

быстрое

написание

программного

кода

 - 

поскольку

все

действия

связанные

с

организацией

взаимодействия

сервера

и

клиента

берет

на

программное

обеспечение

СОМ

программирование

сетевых

приложений

становится

похожим

на

программирование

для

отдельного

компьютера

открытость

и

мобильность

 - 

спецификации

технологии

недавно

были

переданы

в

 Open Group 

как

основа

открытого

стандарта

возможность

   

написания

   

приложений

  

с

  

использованием

  

знакомых

средств

разработки

,  

например

, Visual Basic, Visual C++, Borland Delphi, Borland C++ 

и

любых

средств

разработки

на

Java; 

большое

количество

уже

существующих

бесплатных

программных

элементов

 ActiveX (

к

тому

же

практически

любой

программный

компонент

 OLE 

совместим

с

технологиями

 ActiveX 

и

может

применяться

без

модификаций

в

сетевых

приложениях

); 

стандартность

 - 

технология

 ActiveX 

основана

на

широко

используемых

стандартах

 Internet 

(TCP/IP, HTML, Java), 

с

одной

стороны

и

стандартах

введенных

в

свое

время

 Microsoft 

и

необходимых

для

сохранения

совместимости

 (COM, OLE). 

MTS (Microsoft Transaction Server - 

сервер

управления

транзакциями

технология

обеспечивающая

безопасность

и

стабильную

работу

распределенных

приложений

при

больших

объемах

передаваемых

данных

MIDAS (Multitier Distributed Application Server - 

сервер

многозвенных

распределенных