ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.11.2019
Просмотров: 9461
Скачиваний: 184

технологических
приемов
,
охватывающих
выполнение
всех
этапов
разработки
программного
обеспечения
.
В
основе
структурного
подхода
лежит
декомпозиция
(
разбиение
на
части
)
сложных
систем
с
целью
последующей
реализации
в
виде
отдельных
небольших
(
до
40 - 50
операторов
)
подпрограмм
.
С
появлением
других
принципов
декомпозиции
(
объектного
,
логического
и
т
.
д
.)
данный
способ
получил
название
процедурной
декомпозиции
.
В
отличие
от
используемого
ранее
процедурного
подхода
к
декомпозиции
,
структурный
подход
требовал
представления
задачи
в
виде
иерархии
подзадач
простейшей
структуры
.
Проектирование
,
таким
образом
,
осуществлялось
«
сверху
вниз
»
и
подразумевало
реализацию
общей
идеи
,
обеспечивая
проработку
интерфейсов
подпрограмм
.
Одновременно
вводились
ог
-
раничения
на
конструкции
алгоритмов
,
рекомендовались
формальные
модели
их
описания
,
а
также
специальный
метод
проектирования
алгоритмов
-
метод
пошаговой
детализации
.
Поддержка
принципов
структурного
программирования
была
заложена
в
основу
так
называемых
процедурных
языков
программирования
.
Как
правило
,
они
включали
основные
«
структурные
»
операторы
передачи
управления
,
поддерживали
вложение
подпрограмм
,
локализацию
и
ограничение
области
«
видимости
»
данных
.
Среди
наиболее
известных
языков
этой
группы
стоит
назвать
PL/1, ALGOL-68, Pascal,
С
.
Одновременно
со
структурным
программированием
появилось
огромное
количество
языков
,
базирующихся
на
других
концепциях
,
но
большинство
из
них
не
выдержало
конкуренции
.
Какие
-
то
языки
были
просто
забыты
,
идеи
других
были
в
дальнейшем
использованы
в
следующих
версиях
развиваемых
языков
.
Дальнейший
рост
сложности
и
размеров
разрабатываемого
программного
обеспечения
потребовал
развития
структурирования
данных
.
Как
следствие
этого
в
языках
появляется
возможность
определения
пользовательских
типов
данных
.
Одновременно
усилилось
стремление
разграничить
доступ
к
глобальным
данным
программы
,
чтобы
уменьшить
количество
ошибок
,
возникающих
при
работе
с
глобальными
данными
.
В
результате
появилась
и
начала
развиваться
технология
модульного
программирования
.
Модульное
программирование
предполагает
выделение
групп
подпрограмм
,
использующих
одни
и
те
же
глобальные
данные
в
отдельно
компилируемые
модули
(
библиотеки
подпрограмм
),
например
,
модуль
графических
ресурсов
,
модуль
подпрограмм
вывода
на
принтер
(
рис
. 1.5).
Связи
между
модулями
при
использовании
данной
технологии
осуществляются
через
специальный
интерфейс
,
в
то
время
как
доступ
к
реализации
модуля
(
телам
подпрограмм
и
некоторым
«
внутренним
»
переменным
)
запрещен
.
Эту
технологию
поддерживают
современные
версии

языков
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++
в
лучшем
случае
проблематична
,
что
приводит
к
необходимости
разработки
программного
обеспечения
с
использованием
средств
и
возможностей
одного
языка
программирования
высокого
уровня
и
одного
компилятора
,
а
значит
,
требует
одного
языка
программирования
высокого
уровня
и
одного
компилятора
,
а
значит
,
требует
наличия
исходных
кодов
используемых
библиотек
классов
;
•
изменение
реализации
одного
из
программных
объектов
,
как
минимум
,
связано
с
перекомпиляцией
соответствующего
модуля
и
перекомпоновкой
всего
программного
обеспечения
,
использующего
данный
объект
.
Таким
образом
,
при
использовании
этих
языков
программирования
сохраняется
зависимость
модулей
программного
обеспечения
от
адресов
экспортируемых
полей
и
методов
,
а
также
структур
и
форматов
данных
.
Эта
зависимость
объективна
,
так
как
модули
должны
взаимодействовать
между
собой
,
обращаясь
к
ресурсам
друг
друга
.
Связи
модулей
нельзя
разорвать
,
но
можно
попробовать
стандартизировать
их
взаимодействие
,
на
чем
и
основан
компонентный
подход
к
программированию
.
Четвертый
этап
-
компонентный
подход
и
CASE-
технологии
(
с
середины
90-
х
годов
XX
в
.
до
нашего
времени
).
Компонентный
подход
предполагает
построение
программного
обеспечения
из
отдельных
компонентов
физически
отдельно
существующих
частей
программного
обеспечения
,
которые
взаимодействуют
между
собой
через
стандартизованные
двоичные
интерфейсы
.
В
отличие
от
обычных
объектов
объекты
-
компоненты
можно
собрать
в
динамически
вызываемые
библиотеки
или
исполняемые
файлы
,
распространять
в
двоичном
виде
(
без
исходных
текстов
)
и
использовать
в
любом
языке
программирования
,
поддерживающем
соответствующую
технологию
.
На
сегодня
рынок
объектов
стал
реальностью
,
так
в
Интернете
существуют
узлы
,
предоставляющие
большое
количество
компонентов
,
рекламой
компонентов
забиты
журналы
.
Это
позволяет
программистам
создавать
продукты
,
хотя
бы
частично
состоящие
из
повторно
использованных
частей
,
т
.
е
.
использовать
технологию
,
хорошо
зарекомендовавшую
себя
в
области
проектирования
аппаратуры
.
Компонентный
подход
лежит
в
основе
технологий
,
разработанных
на
базе
COM (Component

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 (
на
схемах
этот
интерфейс
всегда
располагают
сверху
).
Использование
этого
интерфейса
позволяет
получить
доступ
к
остальным
интерфейсам
объекта
.
Объект
всегда
функционирует
в
составе
сервера
-
динамической
библиотеки
или
исполняемого
файла
,
которые
обеспечивают
функционирование
объекта
.
Различают
три
типа
серверов
:
•
внутренний
сервер
-
реализуется
динамическими
библиотеками
,
которые
подключаются
к
приложению
-
клиенту
и
работают
в
одном
с
ними
адресном
пространстве
-
наиболее
эффективный
сервер
,
кроме
того
,
он
не
требует
специальных
средств
;

•
локальный
сервер
—
создается
отдельным
процессом
(
модулем
,
ехе
),
который
работает
на
одном
компьютере
с
клиентом
;
•
удаленный
сервер
-
создается
процессом
,
который
работает
на
другом
компьютере
.
Например
, 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 -
сервер
многозвенных
распределенных