автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.12, диссертация на тему:Повышение эффективности создания программныхкомпонент САПР машиностроения на базе объектно-ориентированного подхода

кандидата технических наук
Бикулов, Сергей Александрович
город
Москва
год
1997
специальность ВАК РФ
05.13.12
Автореферат по информатике, вычислительной технике и управлению на тему «Повышение эффективности создания программныхкомпонент САПР машиностроения на базе объектно-ориентированного подхода»

Автореферат диссертации по теме "Повышение эффективности создания программныхкомпонент САПР машиностроения на базе объектно-ориентированного подхода"

Р Г Б ОД

На правах рукописи

Бикулов Сергей Александрович

"Повышение эффективности создания программных компонент САПР машиностроения на базе объектно-орнентнрованного подхода".

Специальность 05.13.12 «Системы автоматизации проектирования».

Автореферат диссертации на соискание учёной степени кандидата технических наук.

Москва 1997 г.

Работа выполнена в Московском государственном технологическом университете "Станкин"

Научный руководитель: - член-корреспондент РАН,

Соломенцев Ю.М.

Официальные оппоненты: - доктор технических наук,

Кузьмин В.В. - кандидат технических наук, Кузнецов Л.В.

Ведущее предприятие: Центральный Аэро -Гидродинамический институт (ЦАГИ)

Защита состоится "24" декабря_1997 года в 10 час на

заседании Диссертационного Совета Д.063.42.02 при МГТУ "СТАНКИН" по адресу 101472, ГСП, Москва, К-55, Вадковский

пер., д. За.

С диссертацией можно ознакомиться в библиотеке МГТУ'Станкин"

Автореферат разослан "¿2" иоябра 1997 года.

Ученый секретарь Диссертационного совета д. т. н., доцент

Волкова Г. Д.

Общая характеристика работы

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

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

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

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

способствует лучшему абстрагированию данных, приводит к более простому и интуитивно понятному синтаксису.

Исходя из всего вышесказанного исследование новых подходов, повышающих эффективность создания программных компонент САПР, является актуальной научной и практической задачей.

Предметом_исследования диссертации являются методы

организации и построения программных компонент САПР, средства и инструменты разработки сложных программных систем.

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

• исследованы основные закономерности построения программных компонент САПР машиностроения;

• исследованы приемы традиционной разработки программ и проведен анализ существующих инструментов и методов;

• разработана методика использования объектно-ориентированного подхода для эффективного решения задач разработки программных компонент САПР машиностроения.

• определены и формализованы в качестве элементов объектной модели различные компоненты САПР;

• разработаны методы задания поведения и свойств элементов САПР в терминах объектно-ориентированного подхода;

• реализованы конкретные программные компоненты САПР средствами объектно-ориентированного программирования.

Методы исследования. Для теоретических исследований и практической реализации применялись методы технологии программирования, двухмерного и трехмерного геометрического

моделирования, теории конечных автоматов, объектно-ориентированного программирования.

Научная новизна диссертационной работы заключается в следующем:

1. Выявлены и систематизированы основные компоненты, модульная архитектура, механизм управления и структурные элементы сложных САПР машиностроения.

2. Предложена общая методика разработки САПР машиностроения на основе объектно-ориентированного подхода.

3.Разработаны новые методы проектирования различных компонент САПР на основе применения средств и методов объектно-ориентированного подхода.

4. Определены базовые механизмы функционирования элементов-примитивов САПР, установлена их взаимная зависимость и связь с основными компонентами управления.

5. Разработана эффективная схема описания и программной реализации пользовательских команд.

6. Созданы инструментальные средства программирования функциональности окон диалога в САПР, работающих в графических операционных средах.

7.Разработан метод повышения надежности и отказоустойчивости систем на основе технологии управления исключениями.

Практическая ценность работы:

1. Повышение эффективности разработки САПР машиностроения за счет сокращения времени проектирования, повышения надежности проектных решений;

2. Сокращение затрат за счет снижения общего количества работников и связанных с этим расходов;

3. Повышение производительности пользователей САПР, за счет более логичного и структурированного построения системы.

Реализация и внедрение результатов: Результаты работы были использованы в виде комплекса алгоритмических и программных средств при создании параметрической САПР "T-FLEX CAD" в МГТУ "СТАНКИН". САПР T-FLEX CAD успешно используется на сотнях предприятий Российской Федерации, а также за рубежом.

Апробация. Результаты работы представлялись на десятках российских и международных выставках, семинарах и конференциях, включая:

• Международная конференция Восток - Запад «Информационные технологии в проектировании» (5-9 сентября 1994 г., г. Москва, МЦНТИ);

• 3-й международный конгресс «Конструкторско-технологическая информатика» (КТИ-96), (г. Москва) 22-24 мая 1996 г.

• Международная выставка «САПР'92» (г. Москва);

• Международный Компьютерный Форум (г. Москва) 1992,1993 гг.

• Международная выставка «AutoFact» (г. Детройт, США) 1994, 1996 гг.

• Международная выставка «Softool» (г. Москва) 1993,1994,1995,1996,1997 гг.

• Международная выставка «Информатика» (г. Москва) 1993,1994,1995 гг.

• Международная выставка «COMTEK» {г. Москва) 1996 г.

• Международная выставка «Windows Expo» (г. Москва) 19 96 г.

• Международная выставка «Дизайн и компьютер» (г. Москва) 1995,1996 гг.

• Международная выставка «VolgaCom'97» (г. Н.Новгород)

• Международная выставка «Машиностроение» (г. Москва) 1994,1995 гг.

• Международная конференция «Ost-West Forum» (г. Берлин, Германия) ноябрь 1994 г.

• Международная выставка «Инвеком» (г. Санкт-Петербург) 1993,1994,1995 гг.

• Международная выставка «Сибсофт» (г. Новосибирск) 1994,1995 гг.

• Всероссийский съезд лифтостроителей, (г. Москва) 1997 г.

• Выставка «Региональная Информатика» (г. Екатеринбург) 1995 г.

• Выставка «Региональная Информатика» (г. Уфа) 1994 г.

• Выставка «Информатика'95» (г. Киев)

• Выставка «Информатика» (г. Минск), 1994

• Выставка «Компьютеры, средства коммуникации» (г. Воронеж),

1996 г.

• Выставка «Hard and Soft» (г. Ростов-на-Дону), 1996 г.

• Семинар «Использование системы Г-FLEX CAD при компьютерном проектировании и подготовке производства» (г. Омск), 1995 г.

• Семинар «Использование системы T-FLEX CAD при компьютерном проектировании и подготовке производства» (г. Владимир),

1997 г.

• Семинар «Использование системы T-FLEX CAD при компьютерном проектировании и подготовке производства» (г. Ковров), 1997 г.

• Семинар «Использование системы T-FLEX CAD при компьютерном проектировании и подготовке производства» (г. Тольятти), 1995,1997 г.

• Семинар «Использование системы T-FLEX CAD при компьютерном проектировании и подготовке производства» (г. Ульяновск) 1996,1997 гг.

• Семинар «Компьютерное проектирование и подготовка производства», (г. Ижевск) 1995, 1997 гг.

• Семинар «Компьютерное проектирование и подготовка производства», (г. Москва) 1994,1995,1996,1997 гг.

• Семинар «Использование системы T-FLEX CAD при компьютерном проектировании и подготовке производства» (г. Новгород), 1997

• Семинар «Использование системы T-FLEX CAD при компьютерном проектировании и подготовке производства» (г. Киров), 1997

• Семинар «Автоматизация проектирования в архитектуре и строительстве», (г. Санкт-Петербург), 1996,1997 гг.

Публикации : по теме диссертационной работы опубликовано 8 печатных работ, список которых приведен в конце настоящего реферата.

Краткое содержание работы Во введении обосновывается актуальность темы и дается общая характеристика диссертационной работы.

В первой главе проводится анализ современного состояния проблемы, определяется цель и задачи исследования.

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

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

Рис. 1. Информационно-функциональная структура программных компонент в САПР

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

Основной проблемой этих языков является обеспечение псоледозательной еззммосбяз!: процедур и согласованности данньто . Работа наг; крупными проектами при использовании этих «зыкоь требует большого числа разработчиков и скрупулезной »^работки первоначальной спецификации, что не всегда возможно на стадии постановки задачи. Яоследукяше модификации таки.--: проектоь крайне затруднены, так как для этого часто неоС-холимо производить много взаимосвязанных изменений о различных частях проекта .

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

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

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

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

программных компонент САПР. Схема и структура построения САПР логично согласуется с общими принципами объектно-ориентированного подхода, дающими ряд неоспоримых преимуществ по сравнению с процедурным методом.

Были проведены исследования различных направлений объектно-ориентированного подхода, определяющих его применение к решению различных задач. Наиболее распространенными стали два направления - традиционные методы (Гради Буча, Джима Рамбо, ОМТ - Object Modeling Technique) и трансляционный метод Шлаера-Мелора. Оба метода определяют общие положения и принципы перевода объектов реального мира и механизмов их взаимодействия в программную среду. Традиционные методы больше ориентированы на непосредственный код программы и являются законченнъши в том смысле, что предлагают определенные программные средства работы на всех стадиях и во всех аспектах разработки программного обеспечения. Метод Шлаера-Мелора позволяет создавать явную взаимосвязь с программными и концептуальными понятиями, четко прорабатывать проблемы масштабирования, свойственные сложным, ответственным системам и требует использования специальных CASE-инструментов. Однако использование CASE-инструментов для разработки такой неоднородной системы как САПР, к тому же требующей оптимизации кода по скорости выполнения, не всегда оправдано. Поэтому целесообразно использовать комбинацию вышеописанных методов, используя их преимущества. Весь проект разработки САПР можно разделить на базовые объектные составляющие, соответствующие общей структуре САПР и разрабатывать на основе целостности и независимости друг от друга. Такая схема, которую можно назвать распределенным объектным моделированием, позволит, во-первых, обеспечить

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

Большую роль при разработке САПР играет правильный выбор инструмента реализации программных компонент. В первую очередь это относится к выбору языка программирования и системы программирования для этого языка.

Объектно-ориентированные языки делятся на два основных типа: языки, являющиеся расширением существующих структурных языков, такие как С++, Объектный Паскаль, или CLOS (Common Lisp Object System), и чистые объектно-ориентированные языки, типа Smalltalk-80 и Eiffel.

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

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

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

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

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

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

Исходные данные операции

30 узлы

Ссылки на исходные элементы Информация о "захвате" элементов Аттрибуты операции

Операция выталкивания

Актуальная геометрическая модель

Методы пересчета, доступа к данным, пометки, удаления, записи в файл, определения аттрибутов

Рис. 2. Соответствие реальных объектов элементам ООП

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

~E trudOper() {

if(firstPnt) firstPnt->Unlock(); if(secondPnt) secondPnt->Unlock();

} ;

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

Е trudOperS operator^(const Е trudOper& ToBeAssigned); BOOL operator "(const E trudOperS other); Первый оператор задает операцию присваивания, второй сравнения. Теперь в любом месте программы можно использовать эти операции, применяя их к объектам, аналогично тому, как их применяли бы, например, к целым числам. Определим методы, задающие основные исходные данные операции, вспомогательные параметры операции, группу методов доступа к внутреннему состоянию объекта "операция выталкивания", группу методов удаления, проверки достаточности исходных данных для генерации, обновления актуальных значений переменных, метод пометки элемента на экране, методы чтения объекта из файла и записи его в файл, метод определения значения атрибутов операции. Все эти методы-функции определяют поведение объектов.

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

После определения методов расположим в классе поля данных, в которых находится состояние объекта:

Point2Dto3D *firstPnt, *secondPnt; - точки задания вектора направления

short length_var; - величина выталкивания double length;

short dAngle_var; - угол, задающий литейный уклон double dAngle;

short bottom_Rvar; - величина радиуса сопряжения на нижнем основании

double bottom_R; и т.д.

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

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

Рис. 3. Иерархическая схема построения классов элементов САПР

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

Процедурное программирование

Начало

Цикл по всем линиям

Цикл по всем размерам

Цикл по всем текстам

Цикл по всем штриховкам

Линии

Функция Draw_Une () Рисовать линию

Размеры

Функция Draw_Dim <) Рисовать размер

Тексты

Функция Draw Tsr.t () Рисовать текст

Штриховки

Функция Draw_Hatch () Рисовать штриховку

ООП с использованием полиморфизма

Начало

Элементы

Цикл по всем элементам

Метод Draw () Рисовать элемент

Конец

Объекты

Линия

Размер

Текст

Штриховка

- метод Draw (}

- метод Draw () ■ метод Draw О

- метод Draw О

Конец

Рис. 4. Общий цикл перерисовки чертежа в процедурном подходе и в ООП

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

данных, удаление элемента с очисткой захваченных ресурсов, поиск и пометка при выборе элемента, запись и чтение, изменение параметров элемента. При этом также был

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

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

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

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

class TFIOError {

public:

virtual void e plain() {

// ... Вывод сообщения об ошибке

>

};

class TFReadError : public TFIOError {

public:

void e plain();

};

class TFWriteError : public TFIOError {

public:

void e plain();

};

int main (void) {

try {

// Код ввода/вывода }

catch (TFIOError& ioerr) {

ioerr.e plain(); }

return 0;

}

На основании проведенных исследований и практических результатов предлагается следующая методика проектирования и разработки программных компонент САПР машиностроения на основе объектно-ориентированного подхода:

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

2. Выявляются требования к данным, которые необходимо хранить и обрабатывать. Строится схема логической и структурной организации данных. На основе абстракции выделяются элементы с общими базовыми свойствами и поведением. В машиностроительных САПР этими элементами являются элементы чертежа (линии, размеры, и т.д.), 30 модели (поверхности, тела, операции, т.д.), технологические данные, и т.д.

3. Формируются классы, соответствующие выделенным элементам. В классы инкапсулируются методы, отражающие поведение элементов (прорисовка на экране, пересчет геометрии, и т.д.), а также реализующие другие функциональные возможности.

4. Строится схема организации команд системы (ввод и редактирование элементов, расчет характеристик, обмен с другими программами и т.д.).

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

6. На основе технологии управления исключениями реализуется механизм обработки ошибочных ситуаций для повышения надежности системы.

7. Разрабатываются модули и методы взаимодействия с графической ОС.

8. Строится общий проект с делением на подпроекты и собирается исполняемый модуль с сопутствующими информационными структурами.

9. Происходит наполнение команд системы.

В третьей главе изложены методы применения схемы объектного моделирования к организации общесистемных компонент САПР.

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

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

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

2. Общее управление системой окон и документов. Использование четырех основных классов, порожденных от классов MFC (настройки над API операционной системы), позволило избежать рутинного и весьма сложного программирования на уровне функций интерфейса прикладных программ. Бьша построена система приема сообщений операционной среды, и были созданы функции-обработчики этих сообщений. Таким образом, была обеспечена взаимосвязь документов, окон и основного приложения САПР.

3.Чтение и запись информации на диск. Были использованы возможности классов MFC обрабатывать сообщения для команд открытия и сохранения файлов. Была разработана специальная переопределенная функция Serialize в классе документа, которая непосредственно осуществляет чтение и запись документов. Для проверки документа на его модификацию была разработана методология встраивания кодов модификации в различные программные компоненты.

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

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

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

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

7 . Экспорт чертежей в другие форматы. Механизм полиморфизма и динамическое определение типа объекта позволили использовать функции вывода чертежа на экран для вывода чертежа в форматы других систем. Использование классов MFC для вывода метафайла резко сократили время разработки функции поддержки этого формата.

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

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

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

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

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

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

В четвёртой главе представлено практическое использование и механизмы реализации результатов исследования.

Результаты проведенного анализа и исследования в области использования объектно-ориентированного подхода при разработке программных компонент САПР были на практике реализованы при проектировании и программировании параметрической САПР T-FLEX CAD (рис. 5).

Для реализации проекта была выбрана система программирования на языке С++. На основании сравнительного анализа выбор был сделан в пользу пакета Visual С++.

Для повышения производительности разработки исходного текста программ были применены специализированные "мастера" генерирования исходного текста, которые включены в пакет Visual С++. Для составления функционального скелета программы был использован "мастер" App. Выло определено, что программа должна иметь несколько документных интерфейсов; должна быть сервером OLE и OLE Automation, использовать динамически подгружаемые библиотеки и т. д. В результате создался полный комплект файлов для проекта: исходных, подключаемых, файлов ресурсов и т.д. К программе были подключены все необходимые MFC-классы, а также обработчики для команд меню.

"Мастер" Class был использован при построении классов и в качестве средства быстрого поиска фрагментов исходного текста. С его помощью программа была дополнена обработчиками сообщений, принадлежащими функциями и переменными. Этот инструмент также был задействован при работе с OLE Automation и событиями OLE.

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

Были созданы следующие под проекты:

- CompDoc - работа с составным документом на основе технологии OLE. Составной документ подразумевает хранение разнородных данных в рамках единого составного набора данных. В этом документе хранятся данные 2D чертежа, 3D модели, данные настройки, параметры по умолчанию и т.д.

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

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

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

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

- Tfgc - библиотека вывода элементов на экран. Основу библиотеки составляет класс tfgc, переопределенный от класса CGC из функционального набора MFC. Класс tfgc обладает многочисленными методами вывода различных геометрических примитивов (от линий и дуг, до многоконтурных штриховок) в единицах чертежа. При этом используется математика с плавающей точкой, в отличие от целочисленных параметров базовой функциональности MFC.

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

- Wav - набор классов поддержи функционирования автоматов, реализующих команды ввода и редактирования элементов модели.

- Wgk - библиотека классов базового трехмерного ядра. Содержит необходимые процедуры генерации и хранения геометрии твердых тел.

- Wi - команды программы, основанные на механизме автоматов. Также эта библиотека содержит вспомогательные классы и функции: выбор элементов, расчет объемных характеристик, проверку на пересекаемость трехмерных объектов.

- Wvs - подсистема визуализации трехмерных моделей, базирующаяся на технологии OpenGL. Эта подсистема представляет собой набор взаимосвязанных классов, позволяющих манипулировать моделью (вращение в реальном времени, отображение в различных видах), выбирать элементы модели на 3D виде, получать проекции чертежа с заданным набором сечений.

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

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

При разработке сложных САПР часто приходится интегрироваться с библиотеками функций и классов других разработчиков. В САПР T-FLEX CAD были использованы следующие объектно-ориентированные библиотеки классов: ACIS 3D Toolkit фирмы Spatial Technologies, реализующая базовые функции ядра твердотельного моделирования; Open Inventor фирмы TGS, обеспечивающая объектно-ориентированный механизм доступа к функциональности OpenGL (визуализация в реальном времени). При разработке САПР T-FLEX CAD классы этих библиотек были использованы для порождения собственных классов T-FLEX, что позволило, опираясь на базовую функциональность, адаптировать эти библиотеки под конкретные задачи.

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

Основные выводы и результаты работы

Проделанная работа сводится к следующим основным

положениям и результатам:

1. Решена актуальная задача повышения эффективности создания программных компонент САПР машиностроения на основе использования принципов и методов объектно-ориентированного подхода.

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

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

• описание и функциональная поддержка геометрических элементов;

• реализация команд ввода и изменения элементов;

• взаимодействие с операционной системой;

• организация диалогового интерфейса пользователя;

• разработка и организация общей структуры программы;

• создание средств отображения элементов модели и их вывода в различных форматах и на различные устройства;

• построение многодокументных взаимосвязанных моделей;

• интерфейс к внешним процедурам.

4. Разработана общая методика использования объектно-ориентированного подхода для эффективного решения задач разработки программных компонент САПР машиностроения.

5. Разработана методика формирования иерархических структурных наборов объектов, соответствующих элементам САПР.

6. Разработан ряд методов, повышающих скорость разработки САПР и программную отказоустойчивость.

7. Разработанные методы и программные средства эффективно применялись при создании программных компонент САПР.

Основные результаты диссертационной работы опубликованы в

следующих работах:

1. Кураксин С.А., Бикулов С.А., Баранов JI.B., Козлов С.Ю., Ксенофонтов Д.К., Ефремов А.Н. T-FLEX CAD - новая технология построения САПР // Автоматизация проектирования. 19 96, № 1.

2. Бикулов С.А., Кураксин С. A. T-FLEX CAD - российская параметрическая САПР // САПР и Графика N4 1997.

3. Бикулов С.А., Кураксин С.A. T-FLEX CAD - повышение эффективности, снижение затрат // PC Week. N18 1997.

4. Кураксин С.А., Бикулов С.А., Ксенофонтов Д.К., Козлов С.Ю. T-FLEX CAD - лучшая российская параметрическая САПР // Компьютер пресс. Июнь 19 97.

5. Бикулов С.А., Кураксин С.А., Козлов С.Ю., Ксенофонтов Д.К., Ефремов А.Н. Параметрическая система автоматизированного проектирования и черчения T-FLEX CAD // 3-й международный конгресс «Конструкторско-технологическая информатика» (КТИ-96), 22-24 мая 1996 г, Москва.

6. Бикулов С.А., Козлов С.Ю. Parametric CAD Becomes а Reality on Every Engineers' PC // Международная конференция Восток - Запад «Информационные технологии в проектировании». 5-9 сентября 1994 г., Москва, МЦНТИ.

7. Бикулов С.А., Козлов С.Ю. Опыт разработки САПР // Журнал доктора Добба. N3 1993.

8. Кураксин С.А., Козлов С.Ю., Бикулов С.А., Ефремов А.Н., Баранов Л.В., Ксенофонтов Д.К., Иванов В.А., Кондрашин Ю.А., Саблин К.П., Ильин A.B., Ахмед Яхья М.М., Алтухов В.В., Софронова Ю.В., Конева C.B. Свидетельство РосАПО об официальной регистрации программы для ЭВМ «Система автоматизированного и черчения (T-FLEX CAD)» // №950128, заявка №950069 от 10.04.1995.