Теория и практика программирования


От сборочного к компонентному программированию

Е.М. Лаврищева,
зав. отделом программирования
СКБ ММС ИК АН УССР, 1977г.

Идея Глушкова - фарбики программ
Исследование ПИК и языков их описания
Методы и принципы сборки программ с помощью интерфейса
Генератор проблемно-ориентированных языков СОД
Инициативы В.М. Глушкова на государственном уровне
Технологическая подготовка разработки (ТПР)
Становление программной инженерии
Переход к компонентному программированию
Список литературы

Оcновным продуктивным базисом современного программирования является постоянное накопление и использование повторных компонентов (ПИК). Первыми ПИК были подпрограммы библиотек машинных программ (1960г.), реализованные на ЭВМ М-20, БЭСМ и др. На данном этапе развития создаются библиотеки программ для новых поколений языков С, С++, JAVA и др. В ПИК материализуется многолетний опыт компьютеризации разных сфер человеческой деятельности и отображается в репозитариях компонентов и их интерфейсов. ПИК могут применяться непосредственно, а также путем настройки или адаптации к новым условиям обработки. Программирование с использованием ПИК обогатило метод проектирования (снизу-вверх) сложных программ из более простых и положило начало сборочному программированию.

Идея Глушкова - фарбики программ

Идею сборки программ по принципу сборочного конвейера в промышленности сформулировал В.М.Глушков 5 марта 1975г. на совещании специалистов ИК АН УССР (Ющенко Е.Л., Сергиенко И.В., Летичевский А.А., Капитонова Ю.В., Молчанов И.Н., Лаврищева Е.М., Никитин А.И., Бабенко Л.П. и др.). Реализацию этой идеи Глушков В.М. видел в создании систем автоматизации программ различного назначения, т.е. фабрик программ, работающих по технологии сборки из "готовых деталей". Эта идея плодотворно развивалась многие годы по разным направлениям в институте: кибернетики: формализованные технические задания (Капитонова Ю.В., Летичевский А.А.); система автоматизации программ - АПРОП (Лаврищева Е.М.); комплексирование пакетов прикладных программ (ППП) методов численного анализа (Молчанов И.Н.); блочно-модульное создание ППП прикладной статистики и оптимизации (Парасюк И.Н.); языковые спецификации для генерации систем обработки данных Макробол (Бабенко Л.П) и др.

К этому периоду времени машинные программы постепенно вытеснилиcь программами в языках программирования (ЯП): Ассемблер, Алгол, ПЛ-1, Фортран и Кобол для ЕС ЭВМ (прототипе IBM-360). Разнообразие ЯП и большой объем памяти ЕС облегчили реализацию идеи сборки программ для ЭВМ нового поколения.

Исследование проблем сборки программ проводилось по следующим направлениям.

Исследование ПИК и языков их описания. На основе ПИК и вновь создаваемых программ и комплексов, а также особенностей объединения ПИК с отличающимися типами и структурами данных в ЯП сформировались подходы для формального их преобразования при композиции на разных ЯП. На основе теории абстрактных типов данных и теории алгоритмических алгебр В.М.Глушкова был построен класс алгебраических систем для множества типов и структур данных входных языков ОС ЕС. Каждому типу данных алгебраической системы соответствует множество значений и множество операций их обработки или преобразования при наличии отличий в их представлении в ЯП. Операции задавались на множестве специальных функций доведения одного релевантного типа данных к другому к которым отнесены функции для отличающихся типов данных (boolean, character, integer, real, array, record и др.) ЯП, которыми обменивались друг с другом собираемые модули. Доказан изоморфизм отображения одной алгебраической системы в другую в классе построенных алгебраических систем [1,2]. Для исходных модулей разработан стандарт паспорта - информационний раздел, в котором описываются типы данных входных и выходных параметров и операторы вызова модулей в языке спецификации интерфейсов. В 90 годах за рубежом появились языки спецификаций интерфейсов программных объектов - API (Application Progpam Interface) и IDL (Interface Definition Language) и др., а также новые общесистемные среды для выполнения ПИК (COM, CORBA, OLE и др.).

Методы и принципы сборки программ с помощью интерфейса. Сформирована концепция сборки, суть которой состояла в задании стыковочного модуля - интерфейса между двумя разнородными ПИК. В нем специфицировались операторы обращения данного модуля к другим, по параметрам которых устанавливалась необходимость преобразования передаваемых структур и типов данных другому модулю. Цели и задачи сборки модулей с помощью интерфейсного модуля-посредника представлены в аванпроекте системы автоматизации производства программ - АПРОП (1976г.) [1]. Концепция стыковки модулей через интерфейсный модуль посредник была первая парадигмой интерфейса в отечественном программировании, она намного опередила зарубежные разработки. Современным альтернативным решением модуля посредника для пары модулей является патерный посредник, который реализует схему кооперативного взаимодействия множества компонентов распределенной системы. Т.е. интерфейс актуален и является главной доминантой взаимодействующих компонентов и объектов в современных глобальных и сетевых системах и средах.

Для обеспечения процесса сборки любых исходных модулей и ПИК разработана структура хранилища модулей и их паспортов - Банк модулей ПИК с функциональными областями (вычислительная математика, экономика, АСУ и др.) и библиотека функций релевантного преобразования типов и структур данных (около 70).

Метод сборки программ и систем положил начало сборочному программированию и понятиям, близким к сборочному конвейеру: стандарт объекта сборки, интерфейс, этапы жизненного цикла процесса сборки, моделирование предметной области, структура системы сборки разнородных модулей и программ. Данный метод реализован в системе АПРОП, которая обеспечивает автоматизированную генерацию стыковочных интерфейсных модулей посредников для каждой пары заданного множества модулей создаваемой сложной структуры комплекса с помощью библиотеки функций интерфейсов, которая в то время нашла широкое применение у многочисленных разработчиков страны, работающих с разными языками в ОС ЕС, а также в составе системы АПРОП [2, 3] была передана в ГосФАП в 1982г. и в ЕрНУЦ СНПО "Алгоритм" в 1985г. и внедрена в 23 организациях СССР [4].

Технология сборки модулей в системе АПРОП включает автоматизированные процессы: сопоставления типов данных каждой собираемой пары модулей в разных ЯП (С++, Java, Basic и др. ); преобразования отличающихся типов и структур данных к виду представления ЯП вызывающего модуля; генерации интерфейсного модуля для каждой пары модулей; сборки пары модулей и соответствующего интерфейсного модуля в отдельную структуру и ее тестирование; размещения каждой такой структуры в распределенной среде; построения каркаса системы путем сборки троек структур. Роль хранилища компонентов-заготовок на процессах выполняет репозитарий программ и репозитарий интерфейсов, а роль посредников - брокеры объектных запросов.

Реализация интерфейса компонентов на разных языках

Генератор проблемно-ориентированных языков СОД. Другим направлением реализации идеи В.М.Глушкова является спецификация инструментов автоматизации программирования. В рамках этого направления на основе накопленного опыта построения первых отечественных компиляторов под руководством Ющенко Е.Л. (с Адресного языка для машин "Киев", "М-20", "Днепр-1", с языка Алгол-60 для машин "М-20", "Днепр-1"), Бабенко Л.П. был предложен язык А-КОБОЛ для спецификации программных компиляторов (1967г.). Первая реализация транслятора с языка КОБОЛ была сделана в нашей стране по инициативе В.М.Глушкова. Этот язык успешно завоевал к тому времени проблемную область задач обработки данных (СОД) и широко используется за рубежом до настоящего времени. Транслятор с языка КОБОЛ базировался на Адресном языке и наборе специфических для алгоритмов компиляторов средств, аналогичных абстрактным классам современных объектно-ориентированных языков (абстрактные таблицы, списки, стеки и др.). Описание данного транслятора (мобильное относительно ЭВМ) в машинно-независимом языке А-КОБОЛ позволило осуществить параллельную реализацию конкретных трансляторов на ряде ЭВМ: "Днепр-2", "РУТА-110", "БЭСМ-6".

Идея спецификации компиляторов в дальнейшем развивалась применительно к задачам СОД для разработки типовых высокоуровневых функций аналитической обработки баз данных на языке КОБОЛ, системных функций времени генерации и построении и использовании словарей-справочников данных, управляющих доступом к базам данных и их анализом (Л.П.Бабенко, 1982г.). В основе данной концепции автоматизации задач СОД лежат такие базовые понятия: интерфейс, библиотека макрофункций - ПИК, язык спецификации входного языка пользователя с СОД и система генерации программ взаимодействия конечного пользователя по их спецификации. Разработка новой СОД по этой концепции состояла в декомпозиции системы на три главные подсистемы: средства взаимодействия (интерфейсы), доступ к данным, обработка данных независимо друг от друга. Данная концепция реализована в системе МАКРОБОЛ и по своей сути данная она соответствовала базовой концепции языков четвертого поколения (4GL) 90-х годов. Созданный на указанных идеях МАКРОБОЛ был сдан в Республиканский фонд алгоритмов и программ и успешно работал в ряде организаций (ГИВЦ Минэнерго СССР, оборонный комплекс "Альтаир", НИИ Горсистемотехники, г.Ереван) [5].

Инициативы В.М. Глушкова на государственном уровне

На государственном уровне идея ПИК и систем автоматизации проводилась по следующим направлениям:

- создание республиканских и государственных фондов алгоритмов и программ на носителях (МЛ/ПК) для складирования, распространения и продажи их по стране заинтересованным организациям. Программы Фондов получили статус изделий или продукции производственно-технического назначения и практически использовались по своей прямой направленности. Использование программ Фондов в новых системах затруднялось из-за отсутствия в них интерфейсных посредников с другими готовыми программами. Фонды просуществовали более 10 лет и их надобность отпала, как только ушли со сцены ЕС ЭВМ;

- сборка новых АСУ из готовых программных ПИК и заготовок частей АСУ на программостроительном заводе в Калинине, который практически стал первой фабрикой программ со специальным назначением - сборка АСУ из готовых частей программ. На его основе в течение трех лет было построено два опытных образца АСУ путем модернизации ранее сделанной АСУ. В результате практически была отработана промышленная технология стыковки программ, как на полуавтоматизированном сборочном конвейере. Но, как говорят сегодня, завод обанкротился из-за отсутствия нужных готовых типовых "деталей" на складе завода и в Фондах, а также достаточных ресурсов (оборудования, памяти, финансов и др.);

- проведение НИОКР при ГКВТИ СССР по разработке инструментальных систем автоматизации сложных программных комплексов и пакетов прикладных программ. В результате выполнения этих НИОКР был создан ряд систем автоматизации программ различного назначения (АПРОП, ПРИЗ, ЯУЗА, ПРОТВА, АПФОРС, СИГМАСТАТ, МАКРОБОЛ и др.) - CASE-cистемы.

В рамках государственной программы разработана система АПФОРС для автоматизации пакетов прикладных программ [6], а по комплексной программе НТП СЭВ "ИНТЕРФЕЙС" разработан программно-технологический комплекс (ПТК) ПРОГРАММА-ПРОГРАММА (1985-1987гг.) [7].

Технологическая подготовка разработки (ТПР). Обобщением идеи сборки программы является сборка специализированных технологий из методов, средств и нотаций. Сформировался взгляд на ТПР, как подготовительного этапа создания новых технологических линий (ТЛ) для целенаправленной работы фабрики программ по ТЛ, подобно автомобильной промышленности [8]. Для ТПР определена инфраструктура: метод формализованной сборки специализированных технологий программирования для решения разных задач (АСУ, СОД, АСНИ и др.), язык спецификации технологий, модели технологических процессов, ТЛ и инженерные методы управления качеством разработки программ по ТЛ.

ТЛ состояла из жизненного цикла и процессов, переводящих объект разработки из одного промежуточного состояния в другое. Заключительное состояние - готовый программный продукт.

Метод сборки технологий апробирован при создании конкретных функционально-ориентированных технологий программирования программ, работающих с базами данных. В частности, в рамках АИС "Юпитер" Минобороны СССР разработаны шесть ТЛ, с помощью которых созданы сотни прикладных программ.

Таким образом, идея Глушкова о создании фабрик программ различного назначения привела к методу сборки ТЛ из готовых объектов программной инженерии. Промышленное изготовление программ по ТЛ не удалось провести, так как к 90-м годам большие ЭВМ и суперкомпьютеры, на которых выполнялись инструментальные CASE-системы поддержки ТЛ, стали вытесняться персональными компьютерами с индивидуальным режимом работы для разных категорий пользователей. Сегодня производство программ - это тиражирование отдельных готовых программных продуктов и лицензионная их продажа. Образовались новые общесистемные среды для выполнения таких продуктов и определены стандарты их взаимодействия с другими.

Становление программной инженерии

В последние десятилетие программные системы приобрели статус главной движущей силы современного информационного общества и оказывают значительное влияние на развитие, подъем экономики стран мира и на их хозяйственную и политическую деятельность. Расширяется сфера их применения. Практически нет ни одной сферы деятельности (экономика, медицина, бизнес, коммерция, промышленность и т.д.), где бы не использывалось ПО, автоматизирующее и улучшающее эту деятельность. Согласно зарубежным данным в следующем десятилетии в область программирования будет втянуто более 100 млн. программистов, а 44% их программ будут содержать серьезные ошибки. Типичный новый программный проект разрабатывается 1-2 года, а эволюционирует 6-7лет. На сопровождение проекта тратиться 61% затрат против 39% на его разработку. Это объясняется возрастающей сложностью программных проектов, появлением новых распределенных сред, недостаточным уровнем использования инженерных методов управления процессами разработки и достижения качества программ и др.

Поэтому усилиями многих специалистов мирового сообщества программистов стали развиваться методы и средства управления проектами больших систем, стандарты жизненного цикла, методики оценки технологической зрелости коллектива (СММ), методы наглядного, визуального проектирования архитектур новых систем (UML, RUP), объектное проектирование распределенных программных систем для современных сред и системы управления качеством [9]. В информатике сложилась новая научно-техническая отрасль - программная инженерия (Software Engineering), основу которой составляет: жизненный цикл ПО и методы управления проектом, обеспечения качества и продуктивности, а также повышения произодительности труда разработчиков ПО.

Опыт и знания в области программной инженерии были представлены рядом международных профессиональных объединений и передовых фирм в виде ядра SWEBOK (Software Engineering Body Knowledge) (1999г.) с определением дефиниции программной инженерии - дисциплины, которая охватывает все аспекты создания ПО от начальной стадии разработки требований до сопровождения.

Используя богатый опыт в области технологии программирования и структуру ядра SWEBOK, в Институте программных систем НАН Украины разработан учебник по программной инженерии [10]. В нем рассмотрены основные процессы жизненного цикла и методы управления и оценка качеством ПО, представлены современные методы расчета стоимости и трудозатрат, оценки рисков и качества ПО. Данный учебник (2001г.) является первым учебником на просторе СНГ и внесет значительный вклад в развитие инженерии программирования в Украине. Учебник предназначен для подготовки специалистов в области информатики, а также при практическом создании различных автоматизированных и распределенных систем. В ближайшие годы ожидается дальнейшее усовершенствование методов решения задач управления требованиями, проектом, конфигурацией и качеством программ. Неизбежно возникнет необходимость устанавливать уровень зрелости (модель СММ) организации, занимающейся выпуском программной продукции.

Результаты исследований опубликованы в монографии "Методы инженерии распределенных компьютерных систем" (Андон Ф.И., Лаврищева Е.М.) и в учебнике "Основи програмної інженерії" (Бабенко Л.П., Лаврищева Е.М.)

Переход к компонентному программированию

Данный период развития программирования характеризуется переходом от сборочного программирования [11] к компонентному программированию, как непосредственному его преемнику. Окончательно сформируется теория компонентно-ориентированной программной инженерии, ее модели, компонентная алгебра, среда и сервис. В ней будут разработаны: понятийний аппарат - основные термины, понятия и теоремы компонентного создания новых програмнных систем; принципы построения компонентной модели и средства ее описания с использованием языка моделирования UML; компонентно-ориентированная методология с описанием этапов и процессов проектирования компьютерных систем; методы оценки рисков при выборе ПИК; система слежения за качеством на этапах жизненного цикла; средства сертификации компонентов. Появятся электронные библиотеки ПИК программных компонентов и патернов, новые типы их композиций в структуры (контейнеры, каркасы и др.) и сформируется новый вид интерфейсов - интероперабельный для виртуальной интеграции этих типов интерфейсов с новыми структурами и реальными системами, работающими в гетерогенных средах [12-14].

Е.М. Лаврищева

Список литературы

1. Глушков В.М., Лаврищева Е.М., Стогний А.А. Моренцов Е.И. - Система автоматизации производства программ - АПРОП, Киев, ИК АН УССР, 1976.-136с.
2. Лаврищева Е.М., Грищенко В.Н. Связь разноязыковых модулей в ОС ЕС ЭВМ, М.:, Финансы и статистика, 1982г.- 127с.
3. Лаврищева Е.М., Грищенко В.М. Сборочное программирование .-Киев.- Наукова думка, 1991. -213с.
4. Система автоматизации производства программ с режимом мультидоступа -АПРОП-2 / А.Т. Вишня, Грищенко В.Н., Лаврищева Е.М. и др.- Киев, 968с.- Деп. В ГосФАП 09.12.82, №П005508; Рег. в ЕрНУЦ СНПО "Алгоритм" в составе системы Протва, №93, 26.09.84.
5. Л.П.Бабенко Проблемно-ориентированные средства в языке КОБОЛ//М.: Финансы и статистика, 1979.-192с.
6. Лаврищева Е.М., Хоролец Д.С., Куцаченко Л.И. и др. Комплекс программных средств, обеспечивающих построение ППП на основе формализованных спецификаций модулей - АПФОРС / Деп.в ЕрНУЦ СНПО "Алгоритм".- 1985.- Инв. 104 и РФАП АН УССР.- 1987.- Инв.№ АД0002.
7. Лаврищева Е.М., Коваль Г.И., Коротун Т.М., Моренцов Е.И. Программно-технологический комплекс ведения разработки ППО. Технологические документы.- Киев: 1988.-571с. Деп.в РФАП АН УССР .-Инв. АП0218-И.
8. Лаврищева Е.М. Основы технологической подготовки разработки программ СОД.- Киев: 1987.- 29c. (Препр. 87-5, Ин-т кибернетики им.В.М.Глушкова АН УССР ).
9.. Андон Ф.И., Лаврищева Е.М. Методы инженерии распределенных компьютерных систем, Киев, Наукова думка, 1997г.-228с.
10. Бабенко Л.П., Лавріщева К.М. Основи програмної інженерії. Киев, Знання.-2001р. -269с.
11. Лаврищева Е.М. Сборочное программирование. Некоторые итоги и перспективы // Проблемы программирования, Киев, 1999, №2 .-с.20-31.
12. Грищенко В.Н., Лаврищева Е.М. Компонентно-орентированное программирование. Состояние, направления и перспективы развития. // Проблемы программирования.- Киев, 2002, N 1-2. - С.80-90.
13. Грищенко В.Н., Лаврищева Е.М. Методы и средства компонентного программирования // Кибернетика и системный анализ, №1, 2003.- с.39-55.
14. Грищенко В.Н. Формальные модели компонентного программирования // Проблемы программирования, №2, 2003.-с.42-57.

 

Наверх

 

HTD © 2003