Содержание


ЧАСТЬ B: КОНЦЕПЦИИ И ИХ ПРИМЕНЕНИЕ

 

1. ОСНОВНЫЕ ПОНЯТИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ

1.1. Определение

Хотя термин объектно-ориентированный и широко применяется в настоящее время, универсального определения его не существует. Обычно, по соглашению, оно охватывает множество свойств, каждое из которых может существовать отдельно от другого. Однако, включение или исключение определенных свойств все еще спорно. Это приводит к вольной трактовке термина: точка зрения, что объектно-ориентированный = хороший может смазать истинную картину. В реальном мире сила современных объектно- ориентированных систем (ООС) основана на уникальной комбинации идей, составляющих и углубляющих друг друга. В разделе 1.2 будет показано, как преимущества использования ООС могут стать естественным следствием таких основных идей.

В данном обзоре термин объектно-ориентированный определяется на основе четырех базовых свойств:

Любая система (язык, инструментальное средство или методология) является объектно-ориентированной, если она поддерживает все четыре понятия. Если она удовлетворяет только первым двум, то система называется просто объектной. Если она удовлетворяет только первым трем понятиям, то она основана на классах [Wegner 1987]. То обстоятельство, что система не поддерживает все четыре понятия, вовсе не означает, что она плохая. Объектные системы играют важную роль в таких областях, как проектирование ОС или составление документации.

Дальнейшее различие следует сделать между системами, поддерживающими ООС и теми, которые просто позволяют им существовать. В данном отчете принята точка зрения, что "язык поддерживает стиль программирования, если он имеет средства, делающие его удобным (достаточно простым, надежным и эффективным) для применения этого стиля" [Stroustrup 1988]. В противоположность этому, язык может просто давать возможность применять стиль - с ощутимой изобретательностью и сложностью. Можно писать объектно-ориентированные программы на языке Си (и на любом другом языке), но Си не поддерживает ни одно из вышеперечисленных свойств. Поскольку на рынке уже появилось множество объектно-ориентированных языков, такие упражнения выглядят мазохистски.

Объектно-ориентированная идея также очень близка при проектировании баз данных и в методологиях разработки ПО. Эти вопросы обсуждаются в части C. В этой главе подробно описаны основные свойства объектно-ориентированных языков с использованием терминологии языка Smalltalk, считающегося самым "чисто" объектно-ориентированным из имеющихся на сегодняшний день языков. В других языках для тех же понятий используются другие термины, чаще всего по историческим причинам. Краткий список таких терминов приводится в конце главы.

1.2. Объекты

В традиционных процедурных языках текст программ пишется и хранится в модулях, соответствующих специфическим процедурам, подпрограммам или функциям. Эти модули составляют блоки, из которых строится полная программа. Структура программы представляет собой последовательность операторов, содержащих вызовы подпрограмм, процедур или функций. Обычно один модуль выполняет одну функцию: например, он может вычислять квадратный корень или длину строки символов.

Программы моделируют реальный мир, в котором нет такого разделения между данными и процедурами. Реальный мир состоит из объектов, состоящих из комбинированной информации, и инструкций для действий над объектами. Между реальным миром и моделирующей его программой возникает концептуальный разрыв. Трудности в его ликвидации наиболее ясны в программах управления поведением физических систем, например, в авиации. Одним из первых применений объектно-ориентированной технологии была разработка системы запуска ракет Minuteman в 1957 г. Компьютер использовался для проектирования и моделирования полета экспериментальных ракет. Процесс был разделен на дискретные компоненты, созданные специалистами. Система выдавала информацию, передаваемую между компонентами: траектория, например, могла запросить у сопла, какую нагрузку на ось использовать для данной скорости и высоты [Ten Dyke 1988]. Хотя в то время еще не использовался термин "объектно- ориентированный", уже присутствовало основное понятие объектов, содержащих данные и методы, и взаимодействующих через посылку сообщений.

В 60-х гг. необходимость моделирования физических систем с помощью компьютерных программ привело к созданию языка Simula, в котором основной строительный блок или модуль был объектом: пакет, состоящий из данных и обрабатывающих их процедур, называемых методами. Данные и методы хранились и модифицировались как единое целое. Эта простая идея стала основой построения объектно-ориентированных систем.

Объекты дают естественный механизм скрытия информации. "Потребитель", использующий объекты, должен знать только имена и функции находящихся в них методов. Данные объекта и тексты функций известны только "производителю", создавшему их. Механизм защиты такой информации называется инкапсуляцией. Представьте объект в виде капсулы, в центре которой хранятся данные. Доступ к данным ведется через методы, доступ к которым осуществляется через сообщения от потребителя. Поверхность капсулы состоит из общей информации, содержащей имена и определения методов. Для вызова метода объекту посылается сообщение, сравнивающее его со списком имен методов. Если находится соответствие, метод активизируется и соответствующий ответ посылается потребителю; в противном случае посылается сообщение об ошибке.

1.3. Классы

1.3.1. Связь между объектами

Объекты реального мира не существуют изолированно - они связаны между собой общими свойствами и отличаются друг от друга тем, что не является общим. Например, все домашние кошки относятся к виду Кошачьих. Вид обладает набором характеристик, являющихся общими для всех его представителей: зубы, прячущиеся когти. Определенное животное, кот Том, живущий в доме, имеет характеристики, отличающие его от других кошек: вес (3 кг), окрас (рыжий) и порванное левое ухо. Мы можем рассматривать Тома как экземпляр класса Кошачьи, наделенный от рождения собственными частными данными, хранящимися в его генах, и модифицирующийся сообщениями от других кошек.

Поскольку объект вводится как основной блок построения структуры программы, естественным шагом было объединение схожих объектов в классы. Класс - это объект, содержащий определение всех данных и методов, применяемых к его членам. Некоторая часть информации принадлежит самому классу: это переменные класса и методы класса. Некоторая часть информации принадлежит отдельным объектам, являющимся экземплярами класса: во время их создания они инициализируются специальными данными, или переменными экземпляра, отличающими их от других объектов этого класса. Методы, которые можно применить к этим данным, называются методами экземпляра.

1.3.2. Пример: класс Pen

Для демонстрации применение этих идей на практике рассмотрим класс Pen системы Smalltalk/V, версии системы Smalltalk, широко применяемой на персональных компьютерах. Объекты этого класса встречаются в ряде объектно-ориентированных языков. Они моделируются на основе физических объектов реального мира - поэтому имеют цвет, позицию, направление, состояние и т.д. Вместо применения для рисования на бумаге они применяются для графики на экране компьютера. Полное описание класса Pen и его методов приводится в следующем разделе.

 

 

Таблица 1.1. Часть определения класса Pen

 

Этот класс расширяет функции класса BitBlt, обеспечивая графический интерфейс типа "черепашка". Форма источника служит ..... острием пера, форма маски - цветом пера, а форма цели - полотном для рисунка. Этот класс рисует, многократно копируя биты из формы ..... источника в форму цели.

Именованные переменные экземпляра

..

destForm

(Из класса BitBlt) содержит форму цели для передачи битов.

 

direction

Содержит целое число, обозначающее текущее направление рисования в градусах от 0 до 359.

 

downState

Содержит логическое значение, указывающее, опущено ли перо (истина) или поднято (ложь).

 

halftone

(Из класса BitBlt) содержит форму маски, дающей эффект полутона.

 

sourceForm

(Из класса BitBlt) содержит форму источника для передачи битов.

...

Методы класса

...

new

Ответом будет экземпляр класса Pen с инициализированными переменными экземпляра (в качестве формы цели используется Display

- экран)

...

Методы экземпляра

...

direction: anInteger

Установить направление, равное anInteger градусов

down

Опустить перо

dragon: anInteger

Нарисовать образ дракона, аргумент задает коэффициент рекурсии

 

go: anInteger

Переместить перо в текущем направлении на число точек, заданное аргументом

 

location

Ответом будет точка, текущая позиция пера

 

place: aPoint

Установить перо в заданную точку

 

polygon: lInteger sides: sInteger

Нарисовать многоугольник с числом сторон lInteger, каждая из которых имеет длину lInteger

 

destX

Ответом будет координата x начальной точки цели

 

up

Поднять перо

...

По соглашению имена классов начинаются с прописной буквы, а имена экземпляров - со строчной. Создание нового экземпляра (aPen) класса Pen осуществляется посылкой сообщения new классу Pen. Соответствующий метод класса запускается на создание нового экземпляра. Новый объект, aPen, по умолчанию инициализируется данными, содержащими его позицию (центр дисплея) , цвет (черный) , размер острия (1 на 1) и направление (север) . Эти значения по требованию впоследствии могут быть изменены.

Для применения объекта aPen в рисовании на экране, ему посылается ряд сообщений, запускающих его методы экземпляра. Рассмотрим получение такого сообщения:

aPen polygon: 100 sides: 3

Это сообщение состоит из имени объекта-приемника (aPen) , имени метода (polygon: sides: ) и двух аргументов (100 и 3) . Несмотря на довольно странный порядок аргументов в этом примере, результирующий многоугольник будет иметь 3 стороны длиной 100 единиц.

1.4. Наследование

1.4.1. Иерархии классов

Одним из первых действий, предпринимаемых человеком при попытке понять окружающий мир, является применение к нему некоторой структурной формы. При встрече с неизвестным объектом мы пытаемся втиснуть его в нашу существующую структуру: другими словами, классифицировать его. Большинство людей знакомо по крайней мере с несколькими классификационными структурами или иерархиями, например, используемыми специалистами по животным для демонстрации связей между различными типами животных.

Мы примерно представляем себе, какое место в иерархии животных занимает семейство кошачьих Felidae. Если в зоопарке мы встречаем оцелота, то мы сразу можем сказать, что он принадлежит семейству кошачьих. Латинское название (Felis pardalis) подтверждает это. Мы многое знаем об этом животном. Мы знаем, какие характеристики унаследованы от класса позвоночных, млекопитающих, плотоядных и кошачьих. Для полного описания нам требуется только отметить те черты, которые отличают оцелота от других кошек: например, размер и отметины на шкуре.

Использование иерархии классов вводит необходимость абстракции. Классы становятся более абстрактными по мере продвижения вверх по иерархии. Мы еще имеем представление о том, как может выглядеть обобщение кошачьих (Felidae) , но что касается плотоядных - это уже смутное изображение зубов и когтей. Абстракции типа "плотоядный" позволяет специалисту по животным строить иерархию, в которой подклассы определяются путем добавления дополнительных деталей в существующие классы.

Объектно-ориентированные языки используют такой же подход. Иерархии обычно начинаются с нескольких абстрактных классов. Каждый новый класс представляется как подкласс существующего класса (называемого его суперклассом) . Он наследует данные и методы от классов, стоящих выше в иерархии. Только те данные и методы, которые являются новыми для этого класса, следует определить и реализовать.

1.4.2. Наследование в классе Pen

Класс Pen занимает определенное место по отношению к иерархии классов Smalltalk/V. Краткие описания других классов этой структуры приведены в таблице 1.1. Класс Pen наследуется от класса BitBlt (для передачи блоков битов) . Основная операция в растровой графике - перемещение блока битов с одного места (называемого формой источника) в другую (называемую формой цели) . Полутоновое изображение достигается с помощью формы маски. Биты формы источника объединяются с битами формы маски с помощью логической операции "И". Затем результат накладывается на форму цели. Поскольку формы источника, маски и цели требуются для всех графических операций, то они наследуются классом Pen от класса BitBlt как переменные экземпляра, как показано в таблице 1.2.

Таблица 1.2. Определения классов
Object Суперкласс всех классов. Определяет стандартное поведение для вывода на экран, сравнения, копирования, доступа к индексированным переменным экземпляра и обработки ошибок. Включает возможности обработки отношений зависимости между объектами и передачи сообщений от объекта к зависимым от них объектам
BitBltГруппирует все основные графические операции. Основная функция - передача битов из одной области в другую
CharacterScannerПреобразует символы, представленные в коде ASCII, в выводимые на экран битовые образы
PenРасширяет функции класса BitBlt для работы с графическим пользовательским интерфейсом с использованием черепашки
AnimationНабор перьев, представляющий мультипликацию объектов
CommanderУправляет набором перьев, создавая иллюзию одновременной их работы
MagnitudeАбстрактный класс, применяемый для сравнения, подсчета и измерения экземпляров своих подклассов
AssociationДает средство сопоставления двух объектов - пар "ключ-значение" и определяет протокол работы с ними
CharacterОпределяет протокол для всех символов системы (кодов ASCII от 0 до 255)
DateОпределяет протокол для создания экземпляров, сравнения и вычисления даты
NumberАбстрактный класс для сравнения, вычисления и измерения экземпляров числовых подклассов
FractionОпределяет протокол выполнения арифметических операций над рациональными числами
IntegerАбстрактный класс для сравнения, вычисления и измерения экземпляров подклассов, представляющих целые числа
FloatОпределяет протокол выполнения арифметических операций над числами с плавающей точкой
TimeОпределяет протокол для сравнения, вычисления и создания экземпляров времени

Методы экземпляра также наследуются: экземпляр класса Pen может использовать метод destX, унаследованный от класса BitBlt, выдающий координату x начальной точки дисплея цели (444) . Класс Pen отличается от класса BitBlt добавлением новых переменных, например direction или downState, а также новых методов, например, down, go: и location.

1.5. Полиморфизм

1.5.1. Интерпретация сообщений

Объекты реального мира отвечают по-разному на одно и то же сообщение. Животные, даже в пределах одного семейства, по-разному реагируют на угрозу атаки. В физической системе сигнал, посланный группе датчиков, приведет к различным ответам отдельных датчиков. Сообщения, посланные объектам, наделены таким же свойством. При этом такие сообщения называются полиморфными, так как они выступают в нескольких различных видах. Например, операция "+" обычно используется для получения разнообразных результатов:

Первые две интерпретации этой операции поддерживаются в большинстве современных языков. Для интерпретации остальных следует предпринять специальные шаги.

Полиморфизм - это естественное следствие инкапсуляции методов в объектах. Поскольку интерпретация сообщения производится получившим его объектом, такое же сообщение можно посылать различным объектам. Например, при получении имени метода "+", объект-вектор проверяет, есть ли у него метод для этого имени. Если он есть, метод выполняется; в противном случае выдается сообщение об ошибке.

1.5.2. Связывание сообщения с методом

Объектно-ориентированные языки могут осуществлять поддержку более широкого использования полиморфизма по сравнению с другими языками. Интерпретация полиморфного сообщения зависит от типа задействованных данных. Однако, языки различаются по степени проверки типов данных и затраченного на это времени. Проверка типов может осуществляться либо компилятором, либо во время выполнения программы. При проверке типов во время компиляции связка между сообщением и методом может делаться компилятором. Это называется статическим (ранним) связыванием. Полиморфные сообщения можно посылать только объектам, тип которых известен во время компиляции. Динамическое (позднее) связывание происходит при проверке типов данных и связывании сообщения и метода во время работы программы. В этом случае полиморфное сообщение можно посылать любому объекту, который сможет его интерпретировать. На пути достижения полного полиморфизма встречается несколько стадий:

Smalltalk принимает подход динамического связывания, который иногда считается ключевой особенностью объектно-ориентированных языков. На практике необходимость статического или динамического связывания зависит от типа обрабатываемых данных. Набор объектов может быть связан прочно и непрочно [Cox 1986] в зависимости от того, как много заранее известно о природе объектов, составляющих набор. Тип данных каждого объекта можно узнать во время компиляции: например, при работе с числами с плавающей точкой или векторами. Такие тесно связанные наборы больше всего подходят для статического связывания. Непрочно связанные наборы объектов, поведение которых трудно предсказать, требуют динамического связывания. Например, проект автоматизации почтовой связи может содержать объект Container с именем Mailbox. Он может содержать ряд объектов разнообразных типов (Calendar, Envelope, Pricelist) . Конкретное содержание Mailbox в любое время предсказать нельзя.

1.5.3. Полиморфизм в классе Pen

Класс Commannder является подклассом класса Pen. Commander управляет массивом перьев, создавая иллюзию, что все перья работают одновременно. Commander наследует данные и методы от класса Pen. Некоторые методы реализованы по-новому, поэтому каждое перо из набора перьев получает одинаковые сообщения. Сообщение

aPen place: aPoint

устанавливает перо в точку aPoint. Напротив, сообщение

 

aCommander place: aPoint

устанавливает позицию первого пера в заданную точку aPoint и модифицирует позицию оставшихся перьев на величину изменения позиции первого пера. В каждом случае для достижения одинаковых целей используется одно и то же имя метода, однако, внутренняя реализация методов различна.

1.6. Другая терминология

Терминология, используемая в этой главе для представления основных понятий объектно-ориентированных систем, базируется на языке Smalltalk. Другие объектно-ориентированные языки используют для описания этих же понятий другие термины. Некоторые из них применяются в данном обзоре. Наиболее распространенные варианты таковы:

В некоторых объектно-ориентированных языках вместо посылки сообщений используются вызовы функций. В них имя функции эквивалентно имени сообщения. Первый аргумент функции играет роль приемника, а остальные - обычных аргументов. Вызовы функций

polygon (aPen, 100, 3)

 

polygon (aCommander, 100, 3)

приводят к выполнению операций вывода на экран соответственно треугольника и трех треугольников. Фактическая вызванная процедура зависит от объекта, заданного первым аргументом.

В этой главе мы предполагали единичное наследование - когда каждый подкласс наследует свойства только одного суперкласса. Так же, как и ученый может получить новый тип кошачьих скрещиванием льва и тигра, некоторые языки поддерживают наследование от более чем одного суперкласса - множественное наследование. Результаты такого типа наследования, как и в природе, контролировать трудно. Необходимы строгие правила старшинства свойств.

2. ПЛЮСЫ И МИНУСЫ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ

2.1. Введение

Объектно-ориентированные системы названы в прессе последним ответом на "кризис ПО". Такие же заявления ранее делались и для других технологий и методологий - поэтому понятно, прочему при чтении таких строк менеджеры цинично усмехаются. Fred Brooks сравнил поиск решения проблемы роста цен на ПО с поисками серебряной пули, которой можно убить оборотня в сказках. Он заключает: "Нет ни одной разработки ни в технологии, ни в управлении, которая бы предложила хотя бы одно безоговорочное увеличение производительности, надежности и простоты" [Brooks, 1987]. Однако, он уверен, что объектно-ориентированное программирование более перспективное, чем другие технические новинки сегодняшнего дня. Он указал три линии атаки, к которым применимы объектно-ориентированные технологии: 1) лучше покупать, чем делать самому; 2) принятие быстрого прототипирования; и 3) расширение ПО, а не его разработка.

В главе указаны четыре важных преимущества, полученных от использования доступных сейчас объектно-ориентированных систем. Они основаны на опыте первых пользователей. Вот эти преимущества:

Из этих преимуществ естественно вытекает увеличение производительности. Эти преимущества связаны с основными объектно-ориентированными идеями, обсуждавшимися в 1. Однако, большинство упоминаемых в обзоре систем находятся на начальной стадии своего развития, поэтому реальность имеет тенденцию быть субъективной. В общем случае в настоящий момент существует мало объективных оценок выигрыша в производительности, полученных в результате использования объектно-ориентированной технологии. Причины:

Более того, разброс цен на жизненный цикл ПО показывает, что около 67% общей цены составляет фаза сопровождения ПО [Hewlett and Durham 1987]. Затраты на написание программ равны около 7% стоимости жизненного цикла, поэтому выигрыш в 300 или 400% дает только видимость эффекта. Реальный выигрыш от использования ООС можно подсчитать только по достижении конца жизненного цикла первого поколения систем.

Если объектно-ориентированные системы настолько производительны, то почему они не так широко применяются? Основная причина заключается в том, что пользователи и прикладные задачи ограничены определенными техническими областями, указанными в разделе 3.1, вследствие ограничений сами объектно-ориентированных систем. Пользователи привели примеры проблем, возникающих вследствие несовершенства доступных продуктов - эти проблемы обсуждаются в разделе 2.3. Кроме того, на использование объектно-ориентированных систем в коммерческих задачах влияют две технических проблемы: недостаток постоянной памяти для объектов и производительность. Эти проблемы рассматриваются в разделах 2.4 и 2.5.

Для достижения успеха в главном направлении коммерческой деятельности объектно-ориентированные системы сами должны стать частью этого направления. Для этого они должны удовлетворять основным требованиям в пяти областях: Надежность, Доступность, Производительность, Сопровождаемость и Безопасность, которые можно зашифровать по-английски RAMPS: Reliability, Accessibility, Maintainability, Performance и Security) [Ten Duke 1988]. Среди этих требований надежность и сопровождаемость считаются преимуществами данной технологии. Однако, если ООС будут широко использоваться, поставщиками также должны выполняться другие требования:

Производители ООС в целом высоко оценивают эти требования и пытаются решить существующие задачи. ParcPlace Systems, Digitalk и Stepstone отмечают в качестве основной области разработок необходимость переноса их ПО на различные платформы. Tektronix работает над поддержкой групп программистов, работающих на языке Smalltalk. Bull разрабатывает связки с традиционными языками программирования и 4GLs.

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

2.2. Преимущества объектно-ориентированных систем

2.2.1. Концептуальная чистота

Использование программных объектов для моделирования объектов реального мира имеет два важных эффекта:

- уменьшает концептуальный разрыв, преодолеваемый разработчиками при создании компьютерной системы;

- позволяет разработчику моделировать системы, ранее считавшиеся слишком трудными или сложными для работы.

"Реальный мир" используется здесь в очень широком смысле, поскольку моделируемой системой может быть все, что угодно, от ракетной установки до другой программной системы. Зернистость разработки (т.е. размер модулей, на которые она расчленяется) основывается на определении соответствующих объектов данной области, которые можно сгруппировать для формирования классов объектно-ориентированной системы. Примеры широкого спектра таких классов:

- датчики и сканеры в измерительных и управляющих системах;

- дома в географической информационной системе;

- кружки для диаграмм данных в CASE;

- файлы и очереди в ОС;

- сети в адаптивной инженерии знаний.

Естественное соответствие один-в-один между объектами в предметной области и программными объектами подчеркивается большинством пользователей. Например, Wild Leitz обнаружил, что объектно- ориентированные понятия отлично проявили себя в больших графических задачах, требующих комплексного управления данными. В BehavHeuristics плавный переход от понятия к классу и от процесса к методу позволил гораздо легче разрабатывать и использовать ПО.

2.2.2. Надежность

В процедурном подходе в программировании разделение данных и процедур на фрагменты может привести к двум потенциальным ошибкам:

- программист может положиться на знание деталей реализации в одном модуле, а результат получить в другом модуле;

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

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

- ограничения информации до определения интерфейса модуля, в котором указано, какие сообщения можно посылать модулю и какой может быть ответ - т.е. разделение на "что" и "как";

- ограничения влияния любых изменений данных на объект, работающий с этими данными.

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

Сейчас слишком рано давать количественные оценки о повышении надежности объектно-ориентированных систем, полученных в результате практического использования таких систем. Пользователи сделали качественные оценки, на основе которых можно сказать, что использование объектно-ориентированных языков продемонстрировало новый подход к вопросу дальнейшего развития ПО.

 

2.2.3. Повторное использование

Текст программы в некоторой степени всегда использовался несколько раз. Программисты используют свои собственные программы, а также заимствуют на неформальной основе программы других. Фирмы составляют собственные библиотеки программ. Существуют библиотеки стандартных программ, например, для вычисления синуса углов, квадратного корня. Можно пользоваться графическими примитивами для разработки графических пакетов. Особая форма повторного использования, присущая только объектно-ориентированным системам, вытекает из наследования. Классы могут быть:

 

- частью языка, например, в языке Smalltalk;

- добавлены в язык продавцом, например, Stepstone;

- получены от третьих лиц, например, Knowledge Systems Corp;

- созданы для внутреннего пользования в определенной задаче.

Наибольший интерес представляет последняя группа. Фирмы обычно разрабатывают одновременно целый ряд взаимосвязанных пакетов программ. Область, моделируемая этими пакетами, остается той же самой, хотя отдельные объекты могут меняться: некоторые устаревают и заменяются новой технологией. Наследование позволяет фирме наилучшим образом тратить время и силы на основе существующего ПО, в то же время быстро реагируя на изменения рынка.

Преимущества повторного использования стали видны, как только первые пользователи перешли на новую фазу разработок с помощью существующих библиотек классов. Cadre обнаружил тенденцию к снижению стоимости: тексты новых программ стали намного меньше вследствие использования механизма наследования. Выбор языка Smalltalk означал для CSC и BehavHeuristics, что пользовательский интерфейс поставлялся бесплатно, сократив важное время на разработки. Программа была быстро написана и распространена, что означало, что фирма могла быстро реагировать на требования рынка, а стоимость разработок стала ниже, благодаря снижению объема текстов.

 

2.2.4. Гибкость

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

Обработка набора элементов в процедурных языках осуществляется с помощью оператора CASE или вложенных операторов IF. При добавлении в набор дополнительного элемента оператор CASE должен модифицироваться, а содержащий его модуль - перекомпилироваться. На практике на набор можно ссылаться в различных местах системы. Расширение набора для включения в него нового элемента приводит к определению всех модулей, ссылающихся на набор, внесению исправлений во все операторы CASE и перекомпиляции всех модулей.

Полиморфизм повышает гибкость системы. При добавлении в набор нового элемента в систему добавляется новый программный объект. Этот объект обладает методами реализации всех функций, выполнения которых можно запросить у этого элемента. Только эти новые методы нуждаются в написании и компиляции: существующая система остается прежней. Сообщения, уже применяемые к другим элементам, можно применить и к новому элементу.

Гибкость, обеспечиваемая объектно-ориентированной технологией, является важным фактором для многих пользователей. Combustion Engeneering смогла разработать систему, в которую в будущем станет гораздо легче интегрировать новые типы аппаратуры типа датчиков. Новый датчик будет иметь соответствующий ему программный объект, который унаследует обобщенное поведение от своего класса, и в то же время сможет отвечать на стандартные сообщения специфическим образом. Coopers & Lybrand пользуется объектно-ориентированной технологией баз данных в качестве части систем учета членов профсоюза, т.к. производство постоянно меняется и системы требуют постоянной модификации.

 

 

2.3. Сложности, с которыми столкнулись пионеры

2.3.1. Смена парадигмы

Хотя разработчики и отмечают, что объектно-ориентированный подход облегчил переход от реального мира к программной системе, программисты, работающие в области объектно-ориентированного программирования, отмечают сложности в переходе от процедурных к объектно-ориентированным языкам. Это означает, что концептуальный разрыв сдвинулся со стадии разработок до стадии программирования. Объектно-ориентированный подход ставит перед программистом новую парадигму, или шаблон, которому надо следовать. Возникающее изменение иногда называется "сменой парадигмы". Программист должен перейти к новым терминам:

В некоторых объектно-ориентированных языках, например, в Smalltalk, они должны также разбираться в обширной библиотеке классов.

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

Переход от процедурного к объектно-ориентированному программированию оказался наиболее трудной задачей для некоторых пользователей: Wild Leitz и Cadre отмечают, что обучение было более длительным, а наличие навыков управления проектированием - более важным по сравнению с традиционными системами.

2.3.2. Нехватка инструментальных средств

Для первых пользователей проблемой было несовершенство доступных продуктов, что очевидно для новой технологии. Первые пользователи Objective-C (Combustion Engineering и Wild Leitz) и C++ (Cadre) отмечали, что нехватка полной программной среды замедляла проект и увеличивала уже имеющиеся сложности в изучении нового подхода. С другой стороны, Smalltalk дает достаточную поддержку отдельному программисту: это было отмечено как преимущество (CSC and BehavHeuristics).

Поддержка использования объектно-ориентированной технологии в больших проектах остается проблемой. Инструментальные средства, в настоящее время доступные пользователям, описаны в С2, в то время как инструменты Case для поддержки объектно-ориентированных проектов, приведены в С5.

2.3.3. Возрастающая нужда в управлении проектами

Недостаток инструментальных средств и опыта программистов означает, что дополнительные требования предъявляются к менеджерам проектов (наряду с необходимостью убедить высшие инстанции в целесообразности проекта) . Советы начинающим пользователям:

 

- Выбор проекта: начните с небольшого, изолированного проекта или с нескольких интерфейсов и локализуйте переход.

- Штат: выделите основных исполнителей, имеющих гибкий ум или большой опыт в разработке проектов. Убедите их в необходимости перехода к новой технологии. Если есть возможность, наберите людей, знакомых с объектно-ориентированной технологией.

- Обучение: от разработки системы, объектно-ориентированных понятий до собственного опыта программистов. Используйте известные термины и пробуйте углубить познания с помощью примеров программ. Затем добавьте формальное обучение. Допустите более длительные сроки обучения и не скупитесь на начальные усилия.

- Процесс разработки: пользуйтесь прототипами. Работайте небольшой командой.

- Навыки управления проектом: не надо недооценивать необходимость усилий и хорошей структурой проекта. Объектно-ориентированная технология - это инструмент, а не причина ослабления принципов менеджмента и управления.

2.4. Нехватка постоянной памяти

В отличие от пользователей, разработчики коммерческих задач потребуют средств для хранения объектов в базах данных. В процедурных системах данные программы хранятся либо как временные переменные в памяти, либо в файлах на диске. Данные из временной памяти теряются при завершении программы. Данные, нужные в дальнейшем, хранятся на диске. Данные в файле диска имеют структуру, совершенно отличную от данных памяти, и требуют специальных методов доступа. Существенная часть системы должна быть отведена для передачи данных на диск или с диска.

С другой стороны, объектно-ориентированные системы, не предназначались изначально для коммерческих задач обработки данных, требующих управления большими объемами данных. Они происходили из языков типа Simula, предназначенных для моделирования дискретных событий. Данные в объектно- ориентированных системах скрыты внутри объектов и теряются при завершении программы даже если предприняты шаги к их сохранению.

Например, Smalltalk был предназначен для индивидуального пользователя на мощной рабочей станции: он имеет различные способы сохранения и распространения работы пользователя. Тексты программ можно записать в файл диска и затем восстановить. Текущее состояния системы можно сохранить в виде образа системы, а затем восстановить. Изменения в системе записываются в файл change.log, позволяющий координировать различные версии и восстановить систему в случае ее краха.

Дальнейшие ограничения накладываются на объектно-ориентированные системы объемом памяти для хранения всех объектов, созданных в системе. Система управления виртуальной памятью перекачивает страницы информации из памяти на диск, но она не предназначена для эффективной обработки объектов (см. раздел 2.5.3) .

Поэтому представляет интерес мысль о постоянных объектах, существующих и после завершения создавшей их программы. Текущая работа по решению проблем, связанных с памятью, рассматривается в главе 4 (объектно-ориентированные базы данных) .

 

 

2.5. Проблемы производительности

2.5.1. Динамическое связывание

Проблемы производительности объектно-ориентированных систем обычно связаны с тремя вопросами: динамическим связыванием, сборкой мусора и управлением памятью. Первый вид проблем связан с гибкостью, достигаемой объектно-ориентированным пакетированием текстов. В языках, использующих раннее связывание, компилятор задает связь между операцией и вызываемой процедурой и генерирует вызов стандартной функции. В языках, использующих динамическое связывание, связь между сообщением и процедурой должна устанавливаться во время выполнения программы путем поиска в словаре метода, соответствующего полученному сообщению. Такой поиск приводит к накладным расходам в производительности таких систем, которые в 2-2.5 раза больше по сравнению с производительностью простого вызова функции, в зависимости от компромисса между памятью и скоростью в методе реализации такой функции [Cox 1986]. Некоторые языки позволяют разработчику выбор между статическим и динамическим связыванием, чтобы гибкость как результат динамического связывания могла использоваться на фазе прототипирования, в то время как более высокая производительность при статическом связывании увеличивала быстродействие системы.

2.5.2. Сборка мусора

Вторая потенциальная проблема вытекает из способа управления памятью в объектно-ориентированных системах. Объекты можно создавать посылкой сообщений типа "new" некоторому другому объекту, имеющему процедуру создания новых объектов. Объекты, которые больше не нужны, необходимо удалить для освобождения памяти. В системе могут быть тысячи объектов. Поэтому для программиста встает также задача создания и удаления объектов. В некоторых объектно-ориентированных языках, если объекты больше не нужны, память освобождается системой управления памятью. "Сборка мусора" - это термин, используемый для метода освобождения места в памяти (т.е. объектов) , когда объекты больше не нужны. Некоторые системы, например, Smalltalk, выполняют эту задачу автоматически: как только на объект больше нет ссылок, его место в памяти освобождается для повторного использования другими объектами. Хотя автоматическая сборка мусора и облегчает задачу программиста, она проводит к существенным накладным системным расходам. В языках типа C++ объекты сами управляют своей памятью с помощью функций очистки.

2.5.3. Управление памятью

Третья проблема производительности - это отсутствие эффективной объектно-ориентированной системы управления памятью. Системы с виртуальной памятью созданы для работы с программами, состоящими из сравнительно больших модулей.

Разделы виртуальной памяти перекачиваются между основной и второстепенной памятью по мере их затребования программой. Такие разделы или страницы обычно измеряются в килобайтах. Объекты имеют намного меньший размер: в Smalltalk-80 это в среднем 50 байтов. Таким образом, объектно-ориентированные системы страдают от проблем с производительностью из-за свопинга лишних страниц.

Для решения этой проблемы на существующей аппаратуре разработчики систем пытаются выбрать стратегию для тщательной группировки объектов в пределах страницы в целях оптимизации управления памятью для небольших объектов. С развитием новых архитектур появляется возможность получения полностью объектно-ориентированной системы управления как основной, так и второстепенной памятью. Такой подход использован фирмой Linn Smart Computing при разработке процессора Rekursiv.

3. ПОЛЬЗОВАТЕЛИ И ПРИКЛАДНЫЕ ЗАДАЧИ

3.1. Введение

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

Технические фирмы, заинтересованные в ООС должны разрабатывать системы, отражающие следующие свойства:

 

- сложная структура;

- область реального мира;

- поддержка необычных типов данных;

- интерфейсы с разнообразной аппаратурой;

- несопоставимые элементы рассматриваются однотипно;

- пользовательский интерфейс с пиктограммами;

- частые модификации.

В результате разработка и обслуживание таких систем становится дорогой. Интерес, проявляемый такими фирмами в последнее время, является прямым следствием преимуществ, описанных в главе 2.2:

 

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

- Инкапсуляция данных и процедур внутри объектов превращает систему в более мощную, повышая тем самым надежность и снижая затраты на обслуживание.

- Наследование процедур внутри иерархии классов позволяет повторно использовать ПО и применять стандартное ПО, таким образом ускоряя время разработок и снижая объем текстов программ.

- Использование полиморфных операторов повышает гибкость вследствие поддержки несовместимых элементов и возможности быстрого реагирования на необходимые изменения. В совокупности с динамическим связыванием это позволяет осуществлять быстрое создание прототипов на стадии разработок.

Фактическое принятие технологии в настоящий момент зависит от того, как сильно мешают недостатки, описанные в разделах 2.3-2.5. Предпосылками успешного проекта могут послужить и культурный уровень фирмы, влияющий на принятие новшеств, и штат, имеющий за плечами большой научно- производственный опыт и естественным образом воспринимающий объектно- ориентированную модель, и небольшая изолированная прикладная задача, которую минимально затрагивают изменения, и небольшая команда, для которой не проблема нехватка инструментальных средств, и лимитированный размер памяти, при котором нехватка базы данных - не помеха, и наличие доступа к высокопроизводительной аппаратуре, которая сможет справиться с дополнительными требованиями к производительности системы. В настоящий момент такие проекты наиболее реальны в следующих областях:

 

- производство компьютерной техники;

- системное программирование:

- телекоммуникации;

- военные и аэрокосмические фирмы;

- производственные и технические фирмы.

Деятельность этих пяти групп пользователей рассмотрена в разделе 3.2, с акцентом на опыт пользователей, уже разрабатывавших системы. Программные продукты рассматриваются в части С.

Некоторые продавцы отмечают возрастающий интерес менеджеров крупных корпораций к их продуктам в области финансов или принятия решений. Ovum, занимающийся контролем за введением экспертных систем (близкая технология) в этой области полагает, что через некоторое время можно уже обсуждать результаты [Guilfoyle and Jeffcoate 1988]. Барьерами в принятии ООС для таких фирм в значительной степени являются необходимость стыковки системы с существующим аппаратным и программным обеспечением, сложностями в терминологии для сотрудников MIS и требованиями баз данных. Объектно-ориентированные системы чаще всего приживаются в таких компаниях для разработки новых прикладных задач, которые трудно или невозможно реализовать в существующих технологиях - например, для задач управления мультимедиа или написания пользовательского интерфейса с пиктограммами. Во всех таких областях можно получить существенные преимущества, когда область применения имеет родственное отношение к объектно-ориентированной модели. Эти области в настоящий момент включают:

 

- написание пользовательского интерфейса;

- технологию программирования (CASE) ;

- задачи механики и электроники;

- экспертные системы;

- системы реального времени;

- информационные системы мультимедиа.

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

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

 



3.2. Основные группы пользователей

 

3.2.1. Производители компьютерной техники

На данной относительно ранней стадии развития ООС трудно отличить пользователей от производителей, особенно при условии, что многие сегодняшние поставщики начинали как пользователи. Это происходит по самой природе технологии. Сначала начинающий пользователь изучает некоторые объектно-ориентированные понятия и применяет их к решению своей задачи; для поддержки понятий применяется объектно-ориентированный язык; поскольку система объектно-ориентированная, она легко расширяется; фирма понимает, что такие возможности можно продать; пользователь таким образом становится продавцом - объектно-ориентированный язык и инструментальные средства в качестве пакета поставляются конечному пользователю.

История развития ООС в фирмах типа Appolo и Apple является типичной. Другие фирмы придерживаются этого же шаблона: Sun Microsystems сейчас использует язык C++ в шести внутренних проектах, включая создание пакета, позволяющего персоналу давать заявки и конфигурировать системы для покупателей. Фирма уже начала продажу объектно-ориентированных продуктов.

Hewlett Packard и Tektronix - известные фирмы, специализирующиеся не только на компьютерной индустрии. Они являются активными приверженцами объектно-ориентированных языков. На фирме Hewlett Packard, например, отделение Lake Stevens Instrument Division уже несколько лет использует объектно-ориентированную методологию. В 1985 г. она стала использовать Objective C. Этот язык применялся для разработки виртуального инструмента и измерительного интерфейса на основе рабочей станции для многоканального Динамического Анализатора Сигналов HP3565. Этот продукт используется для анализа выпускаемых отделением устройств. Он выделяет характеристики сигнала (принятие сигнала, измерение, анализ, документация и автоматизация) и тестирует ответ. ПО состоит из 312 классов объектов, 6044 методов и 100474 строк текста. На разработку системы было затрачено время, эквивалентное 39 инженерным годам - коэффициент производительности равен 11 строкам на каждого инженера ежедневно. Фирма предполагает достичь более высокой производительности в будущих проектах, в которых можно повторно использовать тексты программ с помощью механизма наследования. Она разработала собственную систему измерений, основанную на документации по классам и заголовкам и используемую для прогнозирования жизненного цикла процесса [Uebbing 1987].

 

3.2.2. Разработчики ПО

Стоимость разработки и обслуживания ПО продолжает расти. Фирмы, занимающиеся разработкой, продажей и поддержкой пакетов ПО естественным образом заинтересованы в любом подходе, способном контролировать или снизить затраты и улучшить отклик на требования рынка. По мере расширения такие фирмы становятся жертвами собственного успеха, осуществляя поддержку ряда различных, но взаимосвязанных пакетов на разнообразных платформах. Покупатели ждут пакетов, в которые часто вводятся изменения, исправляющие ошибки и добавляющие новые возможности.

Конкуренты выставляют на рынок новые и более современные продукты. Обслуживание пакетов становится все более тяжкой обузой. Каждый новый продукт становится все более труднодоступным; это связано с запутанным общественным мнением и заменой клиентуры на небольших и более проворных клиентов. Разработчики ПО постоянно проявляют значительный интерес к преимуществам принятия объектно-ориентированного подхода, даже если это подразумевает отказ от внедрения разработанного ими ПО.

Две группы разработчиков ПО, имеющих специальный интерес к ООС, рассматриваются в разделе В3.3. К ним относятся разработчики инструментальных средств технологии программирования (CASE) и разработчики систем CAD/CAM. Центры по созданию ОС также проявляют интерес к данной технологии в целях развития сети консультаций и создания прикладных задач для своих клиентов. Один из них, Coopers & Lybrand. Сюда относятся также Arthur Andersen and Bolt, Beranek and Newman.

Важной областью прогресса в применении объектно-ориентированной технологии является сектор ПО для персональных компьютеров. В течение нескольких лет Apple Macintosh поддерживает объектно-ориентированную технику с помощью MacApp - пакета прикладных задач, предназначенных для разработчиков ПО. Одним из первых им пользовался Carl Nelson для создания системы прототипа навигационного пульта управления. Она выводила на экран чертеж, содержащий наложенные друг на друга линии курса. Он позволяет навигатору составлять курс по чертежу с помощью мыши [Tesler 1986]. На создание Navigation Application потребовалось пять человеко-месяцев и 8039 строк текста. Carl Nelsen уверен, что MacApp пригоден для средних прикладных задач, обладающих некоторыми (или всеми) из следующих характеристик:

 

- они пользуются стандартным интерфейсом Macintosh;

- они имеют понятие view (визуальное представление данных) , схожее с плоским листом бумаги;

- они могут читать, записывать и выводить на экран данные, находящиеся в одном или более документах (файлах) ;

- они обладают простым диалогом с пользователем;

- их интерфейс не совсем определен или будет меняться.

Этот пакет также хорош для создания прототипов нестандартных или больших задач [Uebbing 1987].

Успех Macintosh II наряду с созданием оконных интерфейсов для IBM PC и совместимых с ней, а также все возрастающие серьезные проблемы с ошибками в продуктах вдохновили основных продавцов ПО, таких как Ashton-Tate, Lotus and Microsoft обратить внимание на применение объектно-ориентированных языков и средств для собственных разработок.

 

3.2.3. Коммуникации и сети

Телекоммуникационные компании уже используют экспертные системы для разнообразных прикладных задач: при разработке сетей, выполнении контроля и анализа, диагностике ошибок и их корректировании. Такие задачи требуют глубоких знаний и должны работать в сложных сетях. Гибридные языки Kee, Nexpert Object или GoldWorks используются для развития таких систем. Однако, эти продукты выбираются в некоторой степени не из-за их способности обработки информации, а в качестве мощных инструментов, более пригодных для разработки ПО по сравнению с традиционными технологиями. Они имеют объектно-ориентированное представление, улучшенный пользовательский интерфейс и возможность работать с операциями экспериментальным путем. Объектно-ориентированные системы могут удовлетворять потребность работы в сложных сетях и поддержки быстрого прототипирования, в то же время предоставляя удобный пользовательский интерфейс. Более того, они позволяют пользователям переходить от Лисп-машин к машинам стандартной конфигурации.

Язык C++ был создан в Bell Labs при разработке проекта, требующего объединения конструкций языка Симула с производительностью языка Си. Неудивительно, что C++ все в большей степени применяется в AT&T. Наряду с другими проектами, компания применяет этот язык для разработки системы управления MacStar, в настоящее время используемую в некоторых региональных компаниях (Regional Bell Operating Companies - RBOCs) . Это смешанная система, использующая как объекты, так и обычные вычисления. В 1985-87 гг. командой из десяти человек с применением объектно- ориентированной технологии было разработано шесть версий этой системы. Назначением проекта было увеличение многократного использования ПО и улучшение его качества. Команда пришла к выводу, что доступность системы была увеличена благодаря наследованию и инкапсуляции следующим образом:

 

- наследование снизило объем текстов без увеличения их сложности;

- инкапсуляция упростила быстрое размещение текстов;

- благодаря наследованию также увеличилась расширяемость, позволяющая добавлять новые функции, не меняя работающее ПО, что приводит к большей надежности и к быстрой проверке компонентов и их взаимодействия;

- инкапсуляция гарантирует, что при изменении ПО после его тестирования, затронутая часть изменений обычно хорошо видна.

Таким образом, было повышено повторное использование ПО, хотя команда испытывала неудобства из-за нехватки среды, позволяющей большому числу разработчиков пользоваться, размещать и увеличивать большой набор классов [Uebbing 1987].

Другим активным пользователем в этой области является Bell Northern Research, занимающийся разработкой средств для новых коммуникационных служб. Эти средства поддерживают спецификацию как статических свойств, так и динамического поведения, моделирования и анализа производительности. Фирма работает на языке Smalltalk, но обсуждает переход на язык С++. US West занимается быстрым прототипированием для демонстрации понятий новых телекоммуникационных задач, например, сетевого контроля. Как инструментальные средства, так и целевой язык написаны на C++. Проекты включают пакеты пользовательского интерфейса, редакторы объектов, механизм вывода, систему ввода новых правил, различные мониторы для отладки и объектно-ориентированную базу данных. Фирма также ведет работы по написанию интерфейса машина/машина, особенно для старых систем, не являющихся объектно-ориентированными [Deutsch 1987].

 

3.2.4. Военная и аэрокосмическая область

Это еще одна область, где языки моделирования и экспертные системы широко применяются уже давно и где очень важно написание пользовательского интерфейса. Дополнительным стимулом является использование языка Ada. Хотя он и не поддерживает механизм наследования, он поддерживает использование объектов в виде пакетов. Объектно-ориентированные разработки и их понятия стали очень популярны среди программистов на языке Ada, особенно в результате влияния Grady Booch. Такие разработки подробно описаны в главе С5. Smalltalk используется для быстрого создания прототипов и написания пользовательского интерфейса. Однако, задачи в военной и аэрокосмической областях требуют более строгого подхода к разработке ПО, чем тот, который предоставляют среды типа Smalltalk. Одно из решений этой дилеммы дает язык Eiffel, поддерживающий наследование и полиморфизм в рамках статического языка, и дающий поддержку разработке ПО.

Eiffel используется для написания программы моделирования морского боя командой инженеров, работающей в ВМФ Франции. Первая версия этой системы моделирует военный корабль, атакуемый с воздуха. Военный корабль имеет противовоздушную систему с двумя радарами, обеспечивающими отслеживание и преследование, а также систему ракетной атаки. Используется три "кластера" классов: общие классы типа скорости, времени и продолжительности; классы управления средой типа пространства, экрана и панели управления; классы моделирования объектов типа кораблей, самолетов и радаров. Инженеры верят, что объектно-ориентированный подход очень удобен для разработки программ моделирования:

 

- моделирование включает ряд организованных в иерархию объектов, явно задаваемых свойствами и поведением;

- системы должны иметь способность развиваться путями, не предсказуемыми в начале проекта.

Кроме того, Eiffel поддерживает множественное наследование, что дает еще большие преимущества такому типу проектов и широко в нем используется. Например, класс RD_MONITORING наследуется от класса RADAR_GAUGE, так как он моделирует определенный тип радара, но также он наследуется от класса EARTH, дающего ему доступ к списку двигающихся объектов [Rousselot, Larignon and Perez 1988].

Только небольшая часть информации о задачах в этой области широко доступна. Однако известно, что несколько фирм работают над проектами в этой области, включая Hughes Aircraft, Lockheed и McDonnell Douglas. McDonnell Douglas Astronautics в Хьюстоне, штат Техас имеет контракт с NASA в Johnson Space Centre в области разработки Комплексного Прикладного Генератора - инструментального средства для моделирования космических станций. Оно будет написано на языке Ada с применением объектно-ориентированных представлений для определения повторно используемых компонентов. Hughes Aircraft работает над несколькими задачами в области CAD и Сase. Она использует Vbase для разработки графической информационной системы. Lockheed занимается объектно- ориентированным расширением своей экспертной системы на основе правил.

 

3.2.5. Проектирование и производство

Третья группа пользователей, деятельность которой включает моделирование и контроль за системами реального времени, применение экспертных систем и пользовательского интерфейса, представляет собой исследовательские и производственные отделения известных фирм-производителей. Эта группа формируется из продавцов, поставляющих оборудование, например, контрольно-измерительные системы, другим кампаниям. Другими продавцами являются McDonnell Douglas и Applied Intelligent Systems, Inc.

McDonnell Douglas's Computer Integrated Enterprise Business Unit (CIEBU) разработал семейство продуктов для поддержки сбора данных и распределенных цифровых управляющих систем для их применения в профсоюзах. Версия 1.0 была выпущена в 1988 г. и включает Членство, Отчеты о занятости и Набор данных, именуемые на рынке MATROL (Manufacturing Activity Control System) . Эти продукты были разработаны с помощью языка Objective-C для поставки на системы DEC Vax/VMS под DECnet с поддержкой MAP (Manufacturing Automation Protocol) и TOP (Technical Office Protocol) . Скорость разработки и гибкость - ключевые черты в выборе языка. Фирма оценила, что использование объектно-ориентированной технологии снизило время разработки примерно на семь месяцев.

Applied Intelligent Systems, Inc (AISI) разрабатывает визуальные системы, применяемые в операциях сборки и проверки в электронике и автоматике. Прикладные задачи включают распознавание символов, верификацию сборки, выявление брака, идентификацию, управление роботами, размещение и ориентацию компонентов. Фирма стремилась снизить время разработок, предоставив библиотеку программ, а также сделать системы программируемыми пользователями. Для создания библиотеки классов использован язык Objective-C, включающий общеупотребимые объекты типа камер, мониторов и операций обработки изображений.

Большие корпорации, занимающиеся разработками в этой области, включают General Motors, использующую объектно-ориентированные представления в нескольких своих проектах, таких как GM Research, так и GM Advanced Engineering Systems; а также GTE, организовавшую группу по объектно- ориентированным базам данных и рассматривающую возможность использования объектно-ориентированной технологии в своих многочисленных автономных подразделениях.

 

 

3.3. Основные области применения

 

3.3.1. Пользовательские интерфейсы

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

 

- Быстрое прототипирование позволяет писать интерфейс отдельно от задачи и тестировать его на потенциальных пользователях. Сам проект затем можно неоднократно изменять.

- Библиотеки классов основных компонент ускоряют разработку и гарантируют совместимость со стандартными инструментами типа X Window System.

Написание пользовательского интерфейса заключается не только в рисовании симпатичных картинок на Apple Macintosh. Создание интерфейса можно использовать в более широком диапазоне задач, чем те, которые известны пользователям PC и рабочих станций. Несколько компаний применяют объектно-ориентированную технологию для написания интерфейсов для разнообразных электронных устройств. Во Франции Thompson-CSF создает систему общего назначения для создания передних панелей устройств для приема излучения: the Front Panel Prototyping System (FPPS) [Juillard and Lorquet 1988]. Передняя панель отвечает за интерфейс между оператором и внутренним устройством. Она получает запросы оператора и направляет их на устройство, выдавая ответы в понятном оператору виде, при этом загорается контрольная лампочка или на экран выводится сообщение. FPPS позволяет моделировать поведение панели на графической рабочей станции. Разработчики отметили полезность объектно- ориентированного подхода по следующим причинам:

 

- ПО отражает реальный мир. Оно включает объекты, прямо соответствующие объектам реального мира, например, кнопки или контрольные лампочки;

- классы библиотеки языка Eiffel можно использовать для реализации базовых понятий, например, деревьев и списков;

- механизм наследования позволяет расширять систему в последующих реализациях.

FPPS содержит 102 новых класса, 5100 строк текста и на ее создание было затрачено семь человеко-месяцев.

Фирма Honeywell разработала среду Rapid (Rapid Prototyper for Interface Design) , позволяющую экспертам по человеческим факторам создавать прототипы внешнего вида интерфейсов оператора с небольшими управляющими панелями, например термостатами для дома и офиса, системами защиты и контроллерами включения электрических систем. Rapid предназначена для моделирования управляющей панели на рабочей станции или PC, достаточно точного для использования экспертами по человеческим факторам. Она была создана с помощью Smalltalk-80 на Tektronix 4404: простой работающий прототип был создан в течение нескольких недель [Freburger 1987]. Сотрудники NASA/Goddard Space Flight Cenre (GSFC) разработали объектно- ориентированную систему управления с пользовательским интерфейсом под названием Transportable Applications Executive (TAE Plus) . Интерес к этому проекту возник в 70-х годах, когда было выяснено, что 50% исходных текстов интерактивных прикладных задач, созданных в Космическом Центре, приходится на пользовательские интерфейсы. Первая версия TAE была создана в начале 80-х гг. Однако, она не была предназначена для работы с интерфейсами все возрастающей сложности - многооконными, цветными, с использованием графических объектов и пиктограмм.

Для этих целей GSFC решила расширить TAE функциями и инструментальными средствами для разработки и работы с оконными пользовательскими интерфейсами. Инструментальные средства прототипирования были реализованы на языке Smalltalk на рабочей станции Sun. Эти средства позволяют разработчику работать с предопределенными объектами типа кнопок, панелей и т.д. Законченная система затем сохраняется для прикладных программистов. Система TAE была написана на Си с помощью X Window System, но она не совместима с системой Smalltalk. Таким образом, разработчики решили переписать инструментальное средство на C++, чтобы соединить преимущества объектно-ориентированного подхода в написании интерфейса с совместимостью со стандартными средствами типа X Window [Szczur and Miller 1988].

 

3.3.2. Технология программирования (CASE)

Модель, приведенная в п. В3.2.1, предназначенная для изменения роли пользователей, в данном разделе также применяется для фирм. Поставщики ПО, например, Cadre Technologies и CSC, начали для внутренних задач использовать объектно-ориентированные языки и теперь планируют применять объектно-ориентированную технологию в своей продукции. Другой поставщик Case - Index Technology - занимается разработкой объектно- ориентированных инструментальных средств, которые необратимо превратятся в продукты второго поколения, которые скорее всего будут включать новый анализатор проектов для объектно-ориентированного проектирования. Новые продукты будут наверняка включать посылку сообщений и механизм наследования. Фирма в настоящее время работает на языке C++ и на собственном расширении языка Си, позволяющем осуществлять контроль за сообщениями [Deutsch 1987].

Корпорации также разрабатывают свои собственные программные средства. Одной из них является General Electric. Отделение GE Corporate Research and Developement разработало два инструментальных средства: the Object Modelling Technique, представляющее собой условные обозначения для рисования моделей объектов, и Data Structure Manager (DSM) - объектно- ориентированную систему программирования, использующую тексты на языке Си вместе с объектно-ориентированными расширениями. В свою очередь, эти инструменты используются для моделирования и реализации нескольких больших интерактивных прикладных задач, включая иерархический графический пакет. Команда разработчиков отмечает, что наибольшее преимущество, предоставляемое объектно-ориентированным подходом, состоит в значительном облегчении модификации программ: даже существенные изменения системы не могут значительно распространяться, в случае, если система имеет хорошо выделенные разделы. Эта команда смогла добавить в компилятор DSM и пакет выполняемых программ множественное наследование за две недели, включая отладку [Rumbaugh 1987].

Фирма Paradyne, специализирующаяся на сетях, создает прикладные пакеты на PC/AT на Smalltalk/80 и Objective-C. Здесь основное внимание уделяется вопросам координации нескольких лиц и изменению в управлении. Фирма решает их, расширяя существующие инструменты Smalltalk и создавая центральный диспетчер базы данных на Objective-C. Взаимосвязь с диспетчером базы данных для инструментов является прозрачной [Deutsch 1987].

 

3.3.3. Автоматизация проектирования

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

Mentor Graphics, Beaverton, Oregon выпускает прикладные пакеты автоматизации механического и электронного проектирования на рабочих станциях Apollo. ПО этих пакетов было написано на Паскале с общей библиотекой, состоящей из миллиона строк текста. По мере разрастания библиотеки в связи с возрастающим количеством прикладных задач появилась проблема работы с ней. В 1985 г. фирма перешла на C++. Ключевые разделы библиотеки были перестроены: к ним относятся система управления интерфейсом, управление памятью, графическая подсистема и система управления данными проектирования. Успех этого проекта заставил фирму начать широкое применение объектно-ориентированной технологии. Инструменты программирования на C++ пишутся на самой фирме, начиная с окна просмотра классов и редактора текстов [Uebbing 1987].

Функциональный имитатор/редактор для проектирования VLSI создан в Philips Research Laboratories, Sunnyvale, штат Калифорния. Этот прототип, названный Insist, реализован на Smalltalk-80 на Tektronix 4406, по следующим причинам:

 

- объектно-ориентированное проектирование считалось естественной средой для управляемого событиями моделирования интегральных схем;

- между программными объектами и электрическими схемами аппаратуры существовало тесное соответствие;

- прототип обеспечивал высокую производительность ПО.

Insist состоит из 185 новых классов и содержит более 25000 строк исходного текста. Создание прототипов происходило очень быстро: в среднем 115 строк текста в день и всего более 215 рабочих дней [van der Meulen 1987].

 

3.3.4. Экспертные системы

Ряд фирм, специализирующихся на искусственном интеллекте, продают гибридные инструментальные средства, поддерживающие работу с объектно-ориентированными понятиями. Эти инструменты включают Kee фирмы Intellicorp, GoldWorks фирмы Gold Hill Computer и Nexpert Object фирмы Neuron Data. Smalltalk также доказал свою популярность в этой области благодаря своей богатой среде программирования и средствам построения пользовательского интерфейса.

Technology Applications Inc (TAI) , Jacksonville, Florida - это консультационный центр, предоставляющий широкий ряд услуг в области экспертных систем. Она создала Reactor emergency action level monitor (Realm) - экспертную систему, предназначенную для помощи в экстренных случаях на атомных станциях, распознающую проблему и определяющую ее опасность. Realm представляет собой гибридную архитектуру, использующую как заключения по правилам вывода, так и объектно-ориентированное программирование. Прототип был создан на рабочей станции Xerox 1108 с использованием Kee. Realm содержит знания об инструментах, системах и подсистемах, компонентах, фактах, опасностях и ресурсах, представленных в виде объектов базы знаний. Они служат позициями в памяти важной физической информации об объекте и текущем состоянии станции. Каждый признак объекта содержится в слоте, который в дальнейшем тоже можно задать аспектом. Например, объект PRESSURIZER PRESSURE имеет слот CURRENT. TREND, который, в свою очередь, имеет аспект SLOPE. Каждый объект отвечает за свое управление и за информирование системы о возникающих проблемах.

Работники Kennedy Space Centre разработали Knowledgebased autonomous test engineer (Kate) - экспертную систему для управления системой реального времени с базой знаний, проверки сигналов, системного диагноза и целевого контроля и переконфигурации. По проекту передачи технологии TAI сотрудничала с Космическим Центром для применения этой системы в электронной промышленности. Усовершенствованная версия Kate+ была написана с помощью Keystone - гибридной среды на основе знаний, написанной на GCLisp. Она использует заключения на основе моделей, сравнивающие поведение компонентов в объектно-ориентированной программной модели с компонентами системы реального мира. Модели строятся на основе модулей повторно используемых компонент. Компоненты представляют физические части, или подсистемы моделируемой системы: насосы, клапаны или кнопки управления. Модель можно модифицировать путем добавления или удаления объектов. Преимущество такого подхода заключается в естественном способе представления знаний о реальном мире и в адаптируемости модели.

 

3.3.5. Моделирование и управление системами реального времени

Внешне кажется, что объектно-ориентированные системы предлагают заманчивый способ моделирования систем реального времени. Объекты имеют состояние и поведение, они взаимодействуют путем посылки сообщений. Однако, коммерческие объектно-ориентированные системы в настоящее время не поддерживают параллельность, хотя в ряде исследовательских проектов для этого были созданы специальные языки. Для применения ООС в моделировании и управлении системами реального времени требуется провести дополнительные разработки, добавляющие множество управляющих линий, позволяющих запускать несколько процессов параллельно [Nisenfeld and Davis 1989]. Это может быть осуществлено следующим образом:

 

- введением задач как дополнительного элемента или специального класса объектов;

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

Одним из примеров первого подхода является система, созданная в Combuston Engineering, предназначенная для систем измерения и управления реального времени.

The Defence Research Establishment, Ottawa, (DREO) совместно с Университетом Carleton работает над созданием тестов мультипроцессора для систем ESM (Electronic Support Measures) . Радарная система ESM - это вид оборонного устройства, использующегося для перехвата и обнаружения сигналов радара и станций умышленных помех. Целевой средой является система реального времени Harmony на мультипроцессоре 68020 с шиной VME. Проект основан на модели Actor. Такие модели синхронизируют свои задачи и взаимодействуют друг с другом путем посылки сообщений. Они могут иметь специальное назначение, например, серверы, клиенты, диспетчеры, рабочие или курьеры. Такой подход часто называют Антропоморфическим Программированием. В проекте ESM серверы играют роль объектов, а рабочие - методов. Программная среда была написана на версии языка Smalltalk, модифицированной понятием Actor и Objective-C [Barry, Altoft, Thomas and Wilson 1987].

Thompson-CSF разработала интерактивную модель для сетевых взаимодействий с использованием Eiffel. Класс Monitor был реализован для моделирования многозадачности. Экземпляр этого класса содержит список всех элементов сети и по очереди передает управления каждому из них. Как только элемент получит управление, они выполняет операцию типа чтения сообщения, обрабатывая сообщение или передавая его следующему элементу сети. Фирма разработала ряд объектно-ориентированных прикладных пакетов. При этом 70% текстов приходится на классы, написанные ранее для других вещей. На создание 61 специальных классов, состоящих из 10750 строк, ушло 10 человеко-недель [Gindre and Sada 1988].

 

3.3.6. Информационные системы мультимедиа

Информация поступает во многих видах: книгах, видеодисках, пластинках. Традиционные базы данных обрабатывают только ограниченное количество такой информации. Наблюдается значительная работа как по расширению типов хранящихся данных, так и по видам доступа к ним. Объектно- ориентированные базы данных подробно рассматриваются в части C4. Другой подход к вопросу обработки информации представлен гипертекстами. В таком типе систем данные хранятся в сети узлов, соединенных связями. В изначальном виде эти узлы содержали текст. Сейчас узел может содержать текст, графику, аудио, видео или другую информацию. Пользователи осуществляют навигацию в сети с помощью интерактивного окна просмотра.

Такие системы называются гипермедиа или гиперинформационными. Интерес в гипермедиа значительно возрос после успеха продукта HyperCard фирмы Apple, предлагающего упрощенную версию такого подхода. Гиперинформационные системы имеют естественную близость с объектно-ориентированной моделью, как в сопоставлении объекта и узла, так и в методе доступа. Существующие системы включают NoteCards, созданные в Xerox PARC и Document Examiner, представленный фирмой Symbolics для доступа к документации пользователя.

Bell Communication Research работает над созданием системы, называемой Telesophy. Она предназначена для прозрачного доступа ко всей основной информации фирмы. Она была создана как набор распределенных объектов. Доступная пользователям информация включает статьи New York Times и телеграфной системы AP, ежедневно пополняемые новой информацией; группы новостей Usenet и ARPAnet, полный текст нескольких популярных журналов, содержимое за несколько лет базы данных INSPEC; а также внутренний и личный материал - всего около 100000 единиц информации. Текущая версия - это прототип, написанный на Си, с препроцессором, работающим с описанием классов системы и строящем набор файлов-заголовков [Caplinger 1987].

 

4. НАПРАВЛЕНИЯ ИССЛЕДОВАНИЙ

 

4.1. Введение

Объектно-ориентированные системы являются объектом активных исследований в Европе, Америке и США. В этой главе даются основные области исследований, которые широко откроют рынок для ООС в середине 90-х гг. Исследования проводятся в академических институтах, и в крупных отделах больших фирм, часто в связи с исследованиями в области искусственного интеллекта и параллельных вычислений. В Европе ряд совместных проектов финансируется по программе Esprit. Исследования связаны с проблемами текущих ООС, например, со сложностью изучения, с быстродействием или с поддержкой постоянных объектов. Другие проекты предназначены для расширения возможностей ООС, например, поддержки параллельного программирования.

 

4.2. Новые архитектуры

Проблемы быстродействия возникают в ООС как следствие накладных расходов на ряд средств, описанных в разделе B2.5, например, динамическое связывание, автоматическая сборка мусора и управления объектно- ориентированной памятью.

В 70-х гг. ряд компаний провели исследования объектно-ориентированных архитектур: IBM (System/38) , Intel (iAPX432) и Xerox (Dorado) . Эти проекты основное внимание уделяли вопросам создания и использования объектов аппаратными средствами и операционной системой или создания в наборе инструкций операторов для управления основными объектами. Дальнейшие исследования были направлены на поддержку ООС типа Smalltalk. Для работы на уровне интегральных схем было создано два проекта:

 

- the "Smalltalk On A RISC" (Soar) - в Калифорнийском Университете в Беркли. Это Risc-процессор для поддержки Smalltalk-80;

- проект Sword-32 в Токийском Университете: интегральная схема VLSI с микрокодом для выполнения команд Smalltalk-80.

Некоторые исследовательские проекты соединяют параллельное выполнение с ООС. В Университете Манчестера разрабатывается распределенная многопользовательская среда программирования Mushroom. Этот проект финансируется UK Science ans Engineering Research Council. Система основана на Smalltalk-80 и предоставляет возможности распознавания типов, динамического связывания, автоматической сборки мусора, полиморфизма, множественное наследование и постоянные структуры данных. Система должна поставляться через сети на разнородные процессоры. Реализация прототипов будет включать основную рабочую станцию, несколько Risc-процессоров и объектно-ориентированную систему виртуальной памяти [Hopkins et al 1988].

Parallel Architectures and Languages for AIP - A VLSI Directed Approach (PALAVDA) - так называется основной проект, финансируемый контрактом 415 Esprit. Он предназначен для увеличения скорости прикладных средств в области искусственного интеллекта путем использования широкого параллелизма. Он объединяет шесть подходов, включая понятия объектно- ориентированного, функционального и логического программирования. Подпроект, выполняемый в Philips Research Laboratories в Эйндховене, связан с объектно-ориентированным программированием. На стадии разработки находится параллельная архитектура - decentralised object- oriented machine (Doom) и язык сопровождения - Parallel object-oriented language (Pool) [America 1987].

Другой подход к повышению производительности без использования Risc- процессора принят Дэвидом Харлендом в Linn Smart Computing при разработке архитектуры Rekursiv (см. раздел E13) . Уже продаются первые платы с такой интегральной схемой.

 

4.3. Новые языки

Доступные для приобретения объектно-ориентированные языки - это последнее, о чем можно сказать. Исследования в этой области представляют большой интерес. Обзор, выпущенный в сентябре 1987 г. [Saunders 1987], содержал 88 таких языков; 69 из них были "обособленными", а остальные - частью мультипарадигмы систем баз данных. Из обособленных систем 53 были исследовательскими проектами, а 16 - коммерческими языками. Две трети появилось после 1984 г. В исследование языка входят расширения к существующим языкам типа Smalltalk, позволяющие разрабатывать большие системы, обзор основных теоретических понятий, человеческий фактор и поддержка параллельности.

 

4.3.1. Теория

Определение объектно-ориентированной технологии было дано в главе B1 и оно является единственным, несмотря на то, что оно очень близко к широко применяемым сейчас объектно-ориентированным языкам. Оно подчеркивает те средства, которые позволяют этим языкам достигать определенных целей: в частности, в использовании классов и наследования для достижения гибкости и повторного использования текстов.

Существует общее соглашение о том, что эти цели желаемы, но гораздо меньше согласованности в вопросах о том, как этих целей достичь. Поэтому предлагаются различные подходы к посылке сообщений как средству взаимодействия между объектами и к наследованию как средству достижения гибкости и многократного использования текстов программ

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

 

4.3.2. Человеческие факторы

Длительность срока обучения - это негативный фактор, отмечаемый большинством первых пользователей ООС. Изучение обучаемости языку Smalltalk-80 [Borning and O'Shea 1987] выявило ряд концептуальных сложностей языка, включая:

 

- понятие метакласса (класс, содержащий объекты-классы) ;

- нестандартные формы наследования и абстрактных суперклассов;

- размер системы (более 200 классов и 5000 методов) ;

- различие между блоком текста и методом;

- путаница с верхним и нижним регистром букв, который имеет значение;

- применение универсальной метафоры "посылка сообщения" к известным операциям (например, посылка сообщения + объекту 3) .

Работа по понятности языков ведется в Rank Xerox EurpPARC, Кембридж, Англия в качестве части работы по взаимодействию человека с машиной. EEC предоставила субсидию в 250000 фунтов стерлингов Open University и Universities of Leeds and Glasgow Великобритании для работы над проектами, использующими визуальную технику программирования, аналогичную Alternate Reality Kit, описанную в B4.5.

 

4.4. Параллелизм

Существует несколько категорий объектно-ориентированных языков, разработанных для параллельных и распределенных компьютерных систем. Сюда входят языки типа Actor, появившиеся после разработок в MIT, параллельные языки и распределенные языки.

Языки Actor классифицируют объекты как деятелей, агентов или серверов в зависимости от того, как они связаны с окружающими объектами. Деятель не принимает сам никаких операций, а только производит операции над другими объектами. Агент может как выполнять операции, так и принимать их, в то время как сервер только принимает операции и не производит никаких действий. Они могут реализовать идею параллелизма через делегирование (delegation) и параллельное функционирование. Примером такого языка служит Actra, созданный в Университете Carleton, Оттава.

Параллельные языки вводят идею одновременного выполнения объектов. Они предназначены для работы на параллельных архитектурах, хотя доступные прототипы пока этого не позволяют. Описанный выше язык Pool является одним из примеров. Сюда также входят языки:

 

- ABCL/R, разработанный в Токийском Институте Технологии [Watanabe and Yonezawa 1988];

- Beta, разработанный в Университете Aarhus;

- Hybrid, созданный в Женевском Университете[Nierstrasz 1987];

- ConcurrentSmalltalk, созданный в Университете Keio, Япония [Yokote and Tokoro 1987].

Распределенные языки поддерживают идеи отдельных, но взаимодействующих объектов системы. Distributed Smalltalk (DS) - это реализация Smalltalk, созданная в Вашингтонском Университете [Bennett 1987]. Он позволяет объектам разных машин посылать сообщения и отвечать на сообщения. Другие языки этой категории: Jasmine, Emerald, Cluster-86, SAST и Argus.

В проекте SPAN исследуется интеграция символьного и численного вычисления в высокопараллельных архитектурах в рамках проекта Esprit 1588. В качестве части этого проекта группа из University College Лондона работает над созданием Object-Oriented Framework (OOF) . Это выльется в создание языка Solve как среды разработки, поддерживающей разнообразные языки. OOF будет применяться для исследования применения объектно-ориентированных понятий на распределенных и параллельных архитектурах. Он будет содержать память объектов, подсистему посылки сообщений, диспетчеры объектов, язык Solve и среду программирования [Winder et al 1988].

 

4.5. Языки визуального программирования

Языки визуального программирования позволяют пользователю писать программы интерактивно, работая с объектами на экране. Большинство из них, хотя не все, реализованы на объектно-ориентированном языке. Теоретически они расширяют область действия технологии, позволяя непрофессиональным пользователям составлять программы и прикладные задачи на основе наборов примитивных компонентов. С широким развитием пользовательских интерфейсов на основе пиктограмм визуальное программирование стало оказывать большое влияние на рынок в начале 90-х гг.

The Alternate Reality Kit (ARK) , созданный Ранддаллом Смитом в Xerox PARC, является примером проекта с применением визуального языка, написанного на языке Smalltalk-80, демонстрирующем мощные среды визуального программирования. Он предназначен для помощи неопытным программистам в написании интерактивных, мультипликационных моделей [R. B. Smith, 1986].

Для разработки Ark критерием были конкретность, универсальность и расширяемость. Он позволяет человеку создавать миры, отличные от наших (в которых, например, изменены законы притяжения) и обучать их реальному миру. Таким образом, это продолжение работы над обучением и образованием, поставившей систему Smalltalk на первое место.

По словам Р. Смита, недостатками Ark являются быстрое загромождение экрана, вследствие чего затрудняется отладка, а работа становится медленной. К преимуществам можно отнести объектно-ориентированность, создание новых объектов из примеров и отсутствие синтаксических ошибок.

Другие примеры проектов по визуальным языкам с использованием объектно-ориентированной технологии включают Interface Construction Set (InterCONS) и Fabril. InterCONS состоит из визуального языка данных и среды для создания программ обработки данных и вывода представления таких программ. Он был написан на языке Smalltalk/V в IBM T. J. Watson Research Centre [Smith 1987].

Fabrik - это среда визуального программирования, состоящая из набора вычислительных и интерфейсных компонентов, которые можно связать вместе для создания новых компонентов и прикладных средств. Fabrik был разработан Advanced Technology Group на Apple Computer [Ingalls et al 1988].


Содержание