1 анализ моделей предметных областей в аос сапр

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Факультет информационных систем и технологий
Кафедра «Вычислительная техника»
К защите допустить
Зав. кафедрой ВТ
_________ П.И.Соснин
« 20» мая 2010г.
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к выпускной бакалаврской работе
(вид выпускной квалификационной работы)
на тему: «Реализация модели предметной области
интеллектуальной АОС САПР КОМПАС»
Направление: 230100.62 “Информатика и вычислительная техника”
Выполнил студент гр. БЭВМд-41______________ Канев Д.С.
Научный руководитель ____________Афанасьев А. Н., д. т. н.
Консультант ________________________
________________________
Рецензент __________________________ Антипова Е.В.
Ульяновск - 2010
2
СОДЕРЖАНИЕ
АННОТАЦИЯ .......................................................................................................... 4
ВВЕДЕНИЕ .............................................................................................................. 5
1 АНАЛИЗ МОДЕЛЕЙ ПРЕДМЕТНЫХ ОБЛАСТЕЙ В АОС САПР ............. 6
1. 1 Продукционная модель .............................................................................. 7
1. 2 Логическая модель ...................................................................................... 8
1. 3 Семантическая сеть ..................................................................................... 9
1. 4 Фреймовая модель .................................................................................... 10
1. 5 Авторская древовидная модель Войта Н. Н. .......................................... 12
1. 6 Сравнительный анализ моделей представления знаний ....................... 14
1. 7 Обзор современных САПР: P-CAD 2002, OrCAD 9.2, Quartus II 7.2,
AutoCAD 2008, SolidWorks 2008, КОМПАС-3D V10 Plus ............................ 16
1. 8 Представление промышленных изделий в САПР КОМПАС .............. 22
1. 9 Применение моделей в интеллектуальных автоматизированных
обучающих системах ......................................................................................... 23
1. 10 Постановка задачи .................................................................................... 24
1. 11 Выводы …………………………………………………………………..25
2 РАЗРАБОТКА ГРАФИЧЕСКОГО КОНСТРУКТОРА МОДЕЛИ
ПРЕДМЕТНОЙ ОБЛАСТИ И ПОСТАНОВКА НАУЧНОГО ЭКСПЕРИМЕНТА
С МОДЕЛЬЮ ПРЕДМЕТНОЙ ОБЛАСТИ НА ПРИМЕРЕ ИЗДЕЛИЯ
«РЕДУКТОР» САПР КОМПАС .......................................................................... 27
2. 1 Адаптация модели представления предметной области ИОС САПР
КОМПАС, постановка научного эксперимента.............................................. 27
2. 2 Архитектура графического конструктора модели предметной
области………………………………………………………………………… 35
3
2. 3 UML-описание (диаграммы вариантов использования, деятельности,
классов, компонентов) графического конструктора модели предметной
области…………………………………………………………………………43
2. 4 Разработка ER-диаграммы базы данных ................................................ 51
2. 5 Выводы ....................................................................................................... 53
3 РЕАЛИЗАЦИЯ ГРАФИЧЕСКОГО КОНСТРУКТОРА МОДЕЛИ
ПРЕДМЕТНОЙ
ОБЛАСТИ…..…………………………………………………………………... 55
3. 1 Диаграммы алгоритмов ............................................................................ 55
3. 2 Модули проекта......................................................................................... 60
3. 3 Руководство разработчика предметной области ................................... 70
3. 4 Экономическое обеспечение и техника безопасности .......................... 77
3. 5 Выводы ....................................................................................................... 83
ЗАКЛЮЧЕНИЕ ..................................................................................................... 84
СПИСОК ЛИТЕРАТУРЫ..................................................................................... 86
ПРИЛОЖЕНИЕ ..................................................................................................... 93
4
АННОТАЦИЯ
Выпускная работа бакалавра Канева Дмитрия Сергеевича на тему:
«Реализация модели предметной области интеллектуальной АОС САПР
КОМПАС». Кафедра ВТ УлГТУ, 2010г.
Научный руководитель д.т.н., профессор Афанасьев А.Н.
Работа содержит 115 страниц, включающих 28 иллюстраций, 10 таблиц,
1 приложение и список информационных источников из 61 наименования.
Ключевые
слова:
модель,
интеллектуальная
система,
автоматизированная обучающая система, графический конструктор модели.
В работе представлены результаты научного эксперимента по учебнометодическому наполнению модели предметной области интеллектуальной
автоматизированной обучающей системы на примере САПР КОМПАС.
Исследованы
продукционная,
логическая,
фреймовая,
древовидная
модели и семантическая сеть.
Реализована модель предметной области интеллектуальной АОС САПР
КОМПАС, разработано учебно-методическое наполнение модели предметной
области интеллектуальной автоматизированной обучающей систем на примере
САПР КОМПАС.
Реализован графический конструктор модели предметной области САПР.
5
ВВЕДЕНИЕ
Автоматизация
проектирования
занимает
особое
место
среди
информационных технологий. Знание основ автоматизации проектирования и
умение работать со средствами САПР требуется практически любому
инженеру-разработчику. К настоящему времени создано большое число
программно-методических комплексов для САПР с различными степенью
специализации и прикладной ориентацией. В результате автоматизация
проектирования стала необходимой составной частью подготовки инженеров
разных специальностей; инженер, не владеющий знаниями и не умеющий
работать в САПР, не может считаться полноценным специалистом. Часто
САПР дополняют обучающей подсистемой, используемой для подготовки
специалистов [49]. Создано огромное число различных обучающих систем,
дающих знания этой области. Многие из них строятся на базе некоторой
математической модели, описывающей конкретную предметную область. В
настоящее время известен ряд базовых моделей представления знаний и их
модификаций — это представление с помощью фактов и правил, исчисления
предикатов, нейронные сети, семантические сети, фреймы[46]. Каждая из
моделей позволяет получить систему с некоторыми преимуществами, делая ее
более эффективной в конкретных условиях, облегчая ее понимание и
требуемые модификации. Таким образом, именно создание адекватной модели
предметной
области
зачастую
является
первым
шагом
к
созданию
эффективных интеллектуальных автоматизированных обучающих систем.
6
1 АНАЛИЗ МОДЕЛЕЙ ПРЕДМЕТНЫХ ОБЛАСТЕЙ В АОС САПР
1. 1 ПРОДУКЦИОННАЯ МОДЕЛЬ
Продукция – это выражение, содержащее ядро, интерпретируемое фразой
«Если А, то В», имя, сферу применения, условие применимости ядра и
постусловие, представляющее собой процедуру, которую следует выполнить
после успешной реализации ядра. Все части, кроме ядра, являются
необязательными.
Сопоставление частей ЕСЛИ правил с фактами может породить так
называемую цепочку выводов — дерево решений [59]. Один из главных
недостатков метода представления знаний с помощью правил — значительные
затраты времени на построение цепочки вывода. При частом использовании
какого-либо дерева решений система редуцирует ("сжимает") дерево решений
до нового правила и вводит его в базу знаний. Это действие называют
продукцией правил. Правило такого рода имеет значительно большую
размерность, чем исходные правила. Системы, построенные на основе
продукционных моделей, более эффективны по затратам памяти и по
быстродействию, чем системы, основанные просто на правилах.
По
уровню
абстрактности
элемента
знаний
модель
работает
с
простейшими составляющими знания — фактами и правилами. Модель
направлена на решение простых, однородных задач и приводит к резкому
падению эффективности решения таких проблем, которые состоят из
нескольких
разнородных
задач.
Серьезнейшим
недостатком
является
невозможность эффективно описать правила с исключениями. Объем памяти,
необходимый для хранения элемента знаний модели — конструкции ЕСЛИ —
ТО, мал в силу его простоты. Однако база знаний, описывающая реальную,
даже не очень сложную задачу, должна содержать сотни и тысячи правил [60].
В качестве примера можно привести семейство инструментальных систем
МОНАП, МОНАП ПЛЮС [5 -7], на основе которых реализован ряд
7
прикладных
ИОС,
обеспечивающих
адаптивный
процесс
обучения
грамматикам немецкого и русского языков и представляющих собой
достаточно гибкие системы открытого вида.
Эффективность
ИС
работающих
на
базе
продукционной
модели
объясняется довольно просто. Такая модель накладывает ряд ограничений на
решаемую задачу, объем знаний и некоторые другие параметры ИС. Создатели
первых подобных систем строили их в рамках этих ограничений и получили
эффективные и удобные решения.
1. 2
ЛОГИЧЕСКАЯ МОДЕЛЬ
В основе логического способа представления знаний лежит идея
описания знаний о предметной области в виде некоторого множества
утверждений, выраженных в виде логических формул, и получение решения
построением вывода в некоторой формальной (дедуктивной) системе [7].
Модель представления знаний с помощью логики предикатов использует
в своей основе математический аппарат одного из разделов математической
логики,
называемый
символьной
логикой.
Основными
формализмами
представления предикатов являются "терм", устанавливающий соответствие
знаковых символов описываемому объекту, и предикат для описания
отношения сущностей в виде реляционной формулы, содержащей в себе термы.
Когда говорится "предикат", то обычно имеется в виду, что в него входит термпеременная. Например, таким предикатом является ОТЕЦ (X,Y). Пусть "Иван",
"Василий" — это термы. Когда же между ними имеется отношение "отец" и
"ребенок", то это отношение описывается как ОТЕЦ (ИВАН, ВАСИЛИЙ).
Предикат,
все
термы
которого
являются
термами-константами,
называется высказыванием.
По уровню абстрактности элемента знаний эта модель, как и предыдущая,
работает с простейшими составляющими знания — фактами и правилами.
Модель универсальна, однако, также, как и модель представления знаний с
8
помощью фактов и правил, не может быть использована для создания ИС,
которые должны одновременно манипулировать специальными знаниями из
разных предметных областей.
Способности модели к обучению находятся на среднем уровне. С
помощью логики предикатов можно, определяя произвольным образом знания,
выяснить, имеются или отсутствуют противоречия между новыми и уже
существующими знаниями. Объем памяти, необходимый для хранения
элемента знаний — предиката или предикатной формулы, мал в силу его
простоты. Однако, база знаний, описывающая реальную, даже не очень
сложную предметную область, должна содержать значительное количество
указанных элементов [1].
Модель привлекает разработчиков высокой модульностью, легкостью
внесения
в
систему
дополнений
и
изменений,
простотой
механизма
логического вывода и часто применяется в промышленных ИС.
Intelligent Computer Tutoring Group использует логическую модель в
системах NORMIT, обучение моделированию концептуальных диаграмм
«сущность-связь», NORMIT, которая обучает нормализации данных, а также
CAPIT, система преподает правила английского языка для знаков препинания и
заглавных букв. Они также разработали две веб-системы: SQLT-WEB, которая
обучает языкуSQL, и LBITS, репетитор для развития языка [16].
1. 3
СЕМАНТИЧЕСКАЯ СЕТЬ
Модель представления знаний с помощью семантических сетей состоит
из вершин, называемых узлами, соответствующих объектам, концепциям или
событиям,
и
связывающих
рассматриваемыми
объектами
их
дуг,
[55].
описывающих
В
качестве
отношения
вершин
сети
между
можно
использовать фреймы и продукции [49]. Дуги могут быть определены разными
методами. Обычно для представления иерархии используются дуги типа IS-A
(отношение "является") и HAS-PART (отношение "имеет часть"). Они также
9
устанавливают иерархию наследования в сети, т.е. элементы более низкого
уровня в сети могут наследовать свойства элементов более высокого уровня,
что экономит память, поскольку информацию о наследуемых свойствах не
нужно повторять в каждом узле сети.
Ниже приводятся шесть самых распространенных типов семантических
сетей [18]:
1. Определяющая сеть подчеркивает подтип или связь между типом
концепции и новым определяемым подтипом. В результате сети, называемые
также обобщение или категориальной иерархией, поддерживает правила
наследования для копирования свойств, определенных в супертипе для всех
своих подтипов.
2. Утверждающие сети предназначены для утверждающих предложений.
В отличие от определяющих сетей, информация в этой сети считается условно
истинной, если она явно выделена модальным оператором. Некоторые
утверждающие сети были предложены в качестве модели концептуальной
структуры семантики естественного языка.
3. Импликационные сети используют последствия в качестве основного
соотношения для соединения узлов. Они могут быть использованы для
представления структуры убеждений, причин, или выводов.
4. Исполняемые сети включают некоторые механизм, такие как
проходной маркер или прикреплённая процедура, которые могут выполнять
выводы, пропускать сообщения, или выполнять поиск по шаблонам и
ассоциациям.
5. Обучающие сети строят или расширяют представления за счет
приобретения знаний из примеров. Новые знания могут изменить старые сети,
добавлением или удалением узлов и дуг, либо путем изменения числовых
значений, называемые весами, связанных с узлами и дугами.
6. Гибридные сети сочетают два или более предыдущих типов.
10
Выводы на семантических сетях реализуются через отношения между
элементами, однако, они таят в себе угрозу возникновения противоречий.
Модель универсальна и легко настраивается. Характерная особенность
семантической сети — наглядность знаний как системы.
Одна из самых выразительных и детально описанных парадигм
представления знаний основанных на семантических сетях это MultiNet [10, 11]
(акроним для Многослойные Расширенные Семантические Сети). Лексическая
база данных английского языка WordNet [9], организованная в виде
семантические сети, является примером эффективного средства для изучения
английского языка [51].
Достоинства:
- форма
представления
знаний
не
накладывает
ограничений
на
содержание;
- не
является
обязательным
структурированное
и
единообразное
описание предметной области.
Недостатки:
- отсутствует возможность явным образом обрабатывать каузальную
информацию;
- человеку свойственно, отвечая на вопрос, предполагать цель, с которой
этот вопрос задается, и отвечать в соответствии с этим пониманием цели.
Отсутствие каузального подхода приводит к тому, что он не всегда правильно
понимает, "к чему клонит" система, и дает не вполне правильные ответы;
- серьезным недостатком является неудовлетворительная способность
объяснить свои решения.
Применение семантических сетей как моделей представления знаний
рассматривается в [29, 30, 52].
1. 4
ФРЕЙМОВАЯ МОДЕЛЬ
Модель представления знаний с помощью фреймов предложена
Марвином Минским, который описывает их следующим образом [48]: "Фрейм
11
— это структура данных, представляющая стереотипную ситуацию, вроде
нахождения внутри некоторого рода жилой комнаты или сбора на вечеринку по
поводу рождения ребенка. Каждому фрейму присоединяются несколько видов
информации. Часть этой информации — о том, как использовать фрейм. Часть
о том, чего можно ожидать далее. Часть о том, что следует делать, если эти
ожидания не подтвердятся".
Фреймовая модель по своей организации во многом похожа на
семантическую сеть. Она является сетью узлов и отношений, организованных
иерархически: верхние узлы представляют общие понятия, а подчиненные им
узлы — частные случаи этих понятий. В системе, основанной на фреймах,
понятие в каждом узле определяется набором атрибутов-слотов (например,
имя, цвет, размер) и значениями этих атрибутов (например, "Запорожец",
красный, маленький). Каждый слот может быть связан со специальными
процедурами, которые выполняются, когда информация в слотах (значения
атрибутов) меняется. С каждым слотом можно связать любое число процедур.
Описание некоторой предметной области в виде фреймов обладает
высоким уровнем абстрактности. Фреймовая система не только описывает
знания, но и позволяет человеку описывать метазнания, т.е. правила и
процедуры обработки знаний, выбора стратегий, приобретения и формирования
новых знаний. Модель является универсальной, поскольку существуют не
только фреймы для обозначения объектов и понятий, но и фреймы-роли (отец,
начальник, пешеход), фреймы-ситуации (тревога, рабочий режим устройства) и
др.
Обучение фреймовых систем затруднено. Приобретение новых знаний
возможно только в системах со сложной структурой фреймов. Создание таких
систем требует серьезных затрат времени и средств, но они позволяют
формировать новые знания на уровне понятий. При этом проблема устранения
противоречивых знаний должна решаться самой системой. Для хранения
12
элемента модели требуются значительные объемы памяти, определяемые
сложностью конкретного фрейма.
Фреймы применены в обучающих системах по физике Донецкого
открытого университета [24], реализующих деятельный подход к обучению
Атанова Г.А. и Локтюшина В.В.
В
настоящее
расширяется,
время
благодаря
концепция
развитию
программирования
[58].
программирования
появились
фреймов
методов
Практически
во
специальные
быстро
развивается
и
объектно-ориентированного
всех
современных
языках
структурно-функциональные
единицы (объекты, классы), обладающие основными признаками фреймов.
Есть мнение, что язык описания фреймов и язык семантических сетей
являются синтаксическим вариантом исчисления логики первого порядка
(FOPC) [1].
1. 5
АВТОРСКАЯ ДРЕВОВИДНАЯ МОДЕЛЬ ВОЙТА Н. Н.
Модель
предметной
области
автоматизированного проектирования
представлена в виде дерева онтологий[26,27, 36], которая динамически
использует иерархические, порядковые и ассоциативные связи онтологий
объектов и процессов проектирования. Каждой онтологии соответствует
учебный элемент. Иерархические связи используются для описания объекта и
процесса проектирования с разной степенью детализации. Порядковые связи
упорядочивают описание на одном иерархическом уровне и определяют
цепочки онтологий. Ассоциативные связи соединяют иерархические и
порядковые онтологии разных уровней.
Модель предметной области позволяет адекватно представить учебный
материал и является базой знаний промышленного проектирования.
Модель предметной области имеет вид CADModel={ИмяОбъекта,
Функции, Процессы, Данные, Паттерны, МетаДата| ortree, <, view},
13
где ИмяОбъекта={ИмяОбъектаi, i=1…E} – множество имен объектов
проектирования;
Функции={функцияi, i=1…Z} – множество проектных функций;
Процессы={процессi, i=1…P} – множество проектных процессов;
Данные={данныеi, i=1…D} – множество проектных данных;
Паттерны={Операцияi,
Командаi,
Способi,
i=1…T}
–
множество
проектных шаблонов,
Операция={операцияi, i=1…O} – множество проектных операций,
Команда={командаi, i=1…C} – множество проектных команд,
Способ={способi, i=1…S} – множество проектных способов выполнения
команды,
Атом={понятиеi, действиеi, i=1…A} – множество «атомов» знаний,
состоящее из элементарных понятий и простейших действий,
Атом ∈Этап,
Атом ∈Процедура,
Атом∈Операция,
Атом ∈Команда, Атом ∈Способ;
МетаДата={ключi, хеш-функция, i=1…H} – метаданные модели,
где <ключi> – кортеж ассоциативных ключей,
хеш-функция – хэш-функция поиска элемента;
ortree – иерархическое отношение;
< – отношение порядка;
view – ассоциативное отношение.
14
1. 6
СРАВНИТЕЛЬНЫЙ АНАЛИЗ МОДЕЛЕЙ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ
Каждая из первых четырёх приведённых моделей представления знаний
обладает как минимум тремя недостатками из приведенного списка:
недостаточный универсализм, сложность получения новых знаний,
возможность получения противоречивых знаний; сложность наращивания
модели, значительная размерность модели, отсутствие наглядности в
представлении знаний. Именно поэтому в последнее время значительное
внимание в инженерии знаний уделяется сочетанию разных моделей. В таблице
1 показаны сравнительные характеристики представленных моделей.
Таблица 1 - Сравнение моделей представления знаний
Модель
представления
знаний
Продукционная
модель
Логическая
модель
Примеры ИАОС
МОНАП, МОНАП
ПЛЮС, CODA-X
Преимущества
Недостатки
Объем памяти
для хранения
элемента знаний
модели мал в
силу его
простоты
Значительные
затраты
времени на построение
цепочки вывода
Невозможность
эффективно
описать
правила с исключениями
База
знаний,
описывающая реальную
задачу,
должна
содержать
сотни
и
тысячи правил
Не может одновременно
манипулировать
специальными знаниями
из разных предметных
областей.
Объем
памяти
для
хранения
элемента знаний
модели мал в
его
NORMIT, KERMIT, силу
CAPIT, SQLT-Web, простоты
LBITS
Модель
универсальна
Не может одновременно
манипулировать
специальными знаниями
из разных предметных
областей.
База
знаний,
описывающая реальную
задачу,
должна
содержать
сотни
и
тысячи правил.
15
Продолжение табл.1
Модель
представления
знаний
Семантическая
сеть
Примеры ИАОС
WordNet, Alice
Преимущества
Недостатки
Элементы в сети
могут наследовать
свойства
элементов более
высокого уровня,
что экономит
память.
Таят в себе угрозу
возникновения
противоречий.
Модель
универсальна и
легко
настраивается.
Неудовлетворительная
способность объяснить
свои решения.
Наглядность
знаний как
системы.
Фреймовая
модель
Обучающие системы
по физике Донецкого
открытого
университета
Атанова
Г.А.
и
Локтюшина В.В.
Используется
в
ИАОС Ульяновского
механического
Авторская
завода,
в
древовидная
разрабатываемой
модель Войта Н.
ИАОС Ульяновского
Н.
Государственного
технического
университета
Обладает высоким
Обучение
фреймовых
уровнем
систем затруднено.
абстрактности
Проблема
устранения
Позволяет
противоречивых знаний
описывать
должна решаться самой
метазнания.
системой
Для хранения элемента
Модель является модели
требуются
универсальной.
значительные
объемы
памяти.
Элементы могут
Не может одновременно
наследовать
манипулировать
свойства
специальными знаниями
элементов
более
из разных предметных
высокого уровня,
областей.
что
экономит
память.
Наглядность
Недостаточный
знаний
как
универсализм
системы.
Адаптивность
модели под разные
промышленные
области САПР
16
1. 7
ОБЗОР СОВРЕМЕННЫХ САПР: P-CAD 2002, ORCAD 9.2, QUARTUS II
7.2, AUTOCAD 2008, SOLIDWORKS 2008, КОМПАС-3D V10 PLUS
P-CAD 2002
САПР P-CAD предназначена для сквозного проектирования печатной
платы (ПП). Она позволяет формировать принципиальные электрические
схемы и топологию ПП, а также имеется возможность оформления
конструкторской документации. Выходные данные используются для вывода
информации на различные устройства: принтеры, плоттеры, фото плоттеры
(для изготовления фото-шаблонов), сверлильные станки и др. [44].
Назначение основных пакетов системы:
- SymbolEditor
графический
редактор
для
создания
символьного
изображения радиоэлектронного компонента;
- PatternEditor графический редактор для создания конструкторскотехнологического образа радиоэлектронных компонентов (РЭК);
- LibraryExecutive менеджер библиотек программа для создания РЭК
и ведения библиотек;
- Schematic графический редактор для создания принципиальных
электрических схем;
- РСВ графический редактор для размещения РЭК и ручной и
интерактивной трассировки ПП;
- RELAY графический редактор с сокращенным набором команд для
размещения РЭК и интерактивной трассировки ПП. Используется при
групповой организации проектных работ.
17
OrCAD 9.2
САПР OrCAD
интегрированное
программное
обеспечение,
предназначенное для сквозного проектирования радиоэлектронных устройств
(РЭУ). Особенностью системы OrCAD является законченность отдельных
составляющих,
представляющих
собой
самостоятельные
пакеты.
Нет
охватывающей программы, но обмен документами происходит автоматически,
такое решение уменьшает требования к ресурсам и ускоряет обмен между
пакетами. Интеграция пакетов происходит при работе, а не при инсталляции,
поэтому нет проблем работы в отдельном пакете без запуска других. Полный
комплект программ состоит из следующих пакетов:
- OrCADCapture графический
редактор
схем
электрических
принципиальных;
- OrCADCapture CIS редактор принципиальных схем с возможностью
ведения баз данных компонентов, в том числе, и посредством Internet (для
зарегистрированных пользователей доступно более 200 тысяч наименований
различных компонентов);
- OrCADPspice (основная версия), OrCADPspice A/D (версия для
смешанного
моделирования
аналоговых
и
цифровых
устройств)
или
OrCADPspice A/D Basics (то же самое, но с базовым комплектом библиотек)
средства моделирования;
- OrCADLayout (основной пакет) или OrCADLayoutPlus (расширенный
комплект) редактор печатных плат.
В комплект поставки редактора печатных плат входят дополнительные
программы
для
промежуточной
автотрассировщик),
пакет
Visual
трассировки
C
ADD
SmartRoute
по
доводке
(бессеточный
механических
18
характеристик платы и связи с AutoCAD и пакет по доводке слоев до
требований производства GerbTool.
Quartus II 7.2
Программное обеспечение AlteraQuartus II предоставляет полную
мультиплатформенную среду проектирования, которая может быть легко
перенастроена под конкретные требования. Это идеальная среда для
проектирования на основе ПЛИС законченных систем на кристалле (SOPS).
Программное обеспечение Quartus II включает в себя средства для всех фаз
проектирования с применением ПЛИС как FPGA, так и CPLD структур.
AutoCAD 2008
Система AutoCAD одна из самых мощных систем автоматизированного
проектирования в классе систем, работающих на персональных компьютерах.
Она может выполнять практически все виды чертежно-конструкторских работ,
необходимых в самых разнообразных областях технического проектирования, в
том числе, и для проектирования мебели. Основные возможности системы
AutoCAD следующие:
- построение и редактирование двухмерных (плоских) чертежей и
получение твердых копий графических документов;
- развитые технологии работы со структурами данных (блоки, внешние
ссылки и т. п.), что позволяет организовать совместное использование
информации с другими приложениями, а также применение информации из
внешних баз данных;
- трехмерное
(пространственное)
моделирование
и
создание
реалистического изображения пространственных объектов с удалением
невидимых линий, наложением теней и текстур, различными вариантами
освещения;
19
- эффективная
работа
с
архивами
чертежей:
стандартизация,
сопровождение архивов, работа в сети, защита от сбоев;
- индивидуальная
настройка
рабочей
среды
в
соответствии
с
индивидуальными потребностями и наклонностями конкретного пользователя
и спецификой предметной области;
- наличие встроенного языка программирования AutoLISP (и его
развития Visual LISP), который позволяет создавать прикладные проблемноориентированные системы проектирования для различных сфер применения.
SolidWorks 2008
SolidWorks 2008 мощное
средство
проектирования,
ядро
интегрированного комплекса автоматизации предприятия, которое позволяет
осуществлять поддержку изделия на всех этапах жизненного цикла в полном
соответствии с концепцией CALS-технологий. Основное назначение SolidWorks обеспечение сквозного процесса проектирования, инженерного анализа
и подготовки производства изделий любой сложности и назначения, включая
создание интерактивной документации и обеспечение обмена данными с
другими системами.
Комплексные
передовых
программные
технологиях
решения
гибридного
SolidWorks
параметрического
базируются
на
моделирования,
интегрированных средствах электронного документооборота SWR-PDM и
SWR-Workflow, а также на широком спектре специализированных модулей.
Программное обеспечение выполнено на русском языке, имеет привычный
Windows-интерфейс
и
работает
на
платформе
2000/XP/Vista.
Выпуск
конструкторской и технологической документации осуществляется в полном
соответствии с требованиями ЕСКД. Обладая широкими возможностями и
доступной ценой, система быстро внедряется в производство, обеспечивая
скорую окупаемость вложенных средств.
20
КОМПАС-3D V10 Plus
Основная задача, решаемая системой КОМПАС-3D– моделирование
изделий с целью существенного сокращения периода проектирования и
скорейшего их запуска в производство. Эти цели достигаются благодаря
возможностям:
- быстрого
получения
конструкторской
и
технологической
документации, необходимой для выпуска изделий (сборочных чертежей,
спецификаций, деталировок и т.д.);
- передачи геометрии изделий в расчетные пакеты;
- передачи геометрии в пакеты разработки управляющих программ для
оборудования с ЧПУ;
- создания дополнительных изображений изделий (например, для
составления каталогов, создания иллюстраций к технической документации и
т.д.);
- основные компоненты КОМПАС-3D– собственно система трехмерного
твердотельного моделирования, чертежно-графический редактор и система
проектирования спецификаций.
Система трехмерного твердотельного моделирования предназначена для
создания
трехмерных
параметрических
моделей отдельных
деталей и
сборочных единиц, содержащих как оригинальные, так и стандартизованные
конструктивные элементы. Параметрическая технология позволяет быстро
получать модели типовых изделий на основе однажды спроектированного
прототипа.
Многочисленные
сервисные
функции
облегчают
решение
вспомогательных задач проектирования и обслуживания производства.
Чертежно-графический
редактор
предназначен
для
автоматизации
проектно-конструкторских работ в различных отраслях деятельности. Он
21
может успешно использоваться в машиностроении, архитектуре, строительстве,
составлении планов и схем везде, где необходимо разрабатывать и выпускать
графические и текстовые документы. Совместно с любым компонентом
КОМПАС-3D может использоваться система проектирования спецификаций,
позволяющая выпускать разнообразные спецификации, ведомости и прочие
табличные документы.
Каждый из представленных продуктов имеет открытый программный
интерфейс, для работы с объектами проектирования. В качестве примера для
реализации модели предметной области интеллектуальной автоматизированной
обучающей систем выберем САПР КОМПАС, так как этот продукт является
отечественной разработкой, имеет хорошую документацию на русском языке и
его
повсеместно
используют
предприятия
на
территории
Российской
Федерации и Ульяновской области [44]:
- ОАО Газпром;
- ФГУП «Концерн "Росэнергоатом"»;
- ОАО «АВТОВАЗ»;
- ФГУП Всероссийский научно-исследовательский институт «Сигнал»;
- ОАО «Автодеталь-сервис» (AMS GROUP), Ульяновск;
- ОАО «Кондитерская фабрика 'ВОЛЖАНКА'», Ульяновск;
- ОАО «Ульяновский Механический Завод» (Концерн ПВО «АлмазАнтей»), Ульяновск;
- ОАО
«Ульяновский
научно-исследовательский
и
технологический институт машиностроения», Ульяновск;
- ОАО «Утес» (Аэрокосмическое оборудование), Ульяновск;
проектно-
22
- ОАО ФНПЦ «НПО «Марс» (Моринформсистема — Агат), Ульяновск.
1. 8 ПРЕДСТАВЛЕНИЕ ПРОМЫШЛЕННЫХ ИЗДЕЛИЙ В САПР КОМПАС
Объект проектирования в САПР КОМПАС это деталь или сборка.
Сборка состоит из отдельных деталей и подсборок (которые, в свою
очередь, также могут состоять из деталей и подсборок). Проектирование сборки
ведется "сверху вниз"; каждая новая деталь моделируется на основе уже
имеющихся
деталей
(обстановки)
с
использованием
параметрических
взаимосвязей.
Детали и подсборки могут создаваться непосредственно в сборке или
вставляться в нее из существующего файла.
Взаимное положение компонентов сборки задается путем указания
сопряжений
между
ними.
В
системе
доступны
разнообразные
типы
сопряжений: совпадение, параллельность или перпендикулярность граней и
ребер, расположение объектов на расстоянии или под углом друг к другу,
концентричность, касание. Процесс формирования сборки как бы повторяет
действия слесаря-сборщика. Каждая деталь последовательными действиями
"приставляется" к соседним деталям и подсборкам.
Несколько компонентов (деталей и подсборок) могут объединяться в
новую подсборку.
Для создания копий компонентов используются операции, копирование
по сетке, по окружности, вдоль кривой, зеркальное копирование. Возможно не
только
копирование
операций
выдавливания
и
приклеивания,
но
и
"копирование копирования".
Плоская фигура, на основе которой образуется тело, называется эскизом.
Проектирование детали начинается с создания базового тела путем выполнения
операции над эскизом (или несколькими эскизами) в результате которого
получается трёхмерная деталь. При этом доступны следующие типы операций:
- вращение эскиза вокруг оси, лежащей в плоскости эскиза;
23
- выдавливание эскиза в направлении, перпендикулярном плоскости
эскиза;
- кинематическая операция - перемещение эскиза вдоль указанной
направляющей.
Таким образом, сборка состоит из деталей, которые попарно сопряжены
между собой, сопряжение определяет, взаимное расположение деталей. Также в
сборку включаются массивы деталей, которые являются полными копиями друг
друга
и
единообразным
образом
располагаются
относительно
других
компонентов. Детали в свою очередь таким же образом состоят из поддеталей.
Атомарные
детали
получаются
из
двухмерных
эскизов
выполнением
специальной операции. В свою очередь эскиз состоит из множества
геометрических фигур: отрезков, треугольников, окружностей и так далее.
1. 9
ПРИМЕНЕНИЕ
МОДЕЛЕЙ
В
ИНТЕЛЛЕКТУАЛЬНЫХ
АВТОМАТИЗИРОВАННЫХ ОБУЧАЮЩИХ СИСТЕМАХ
Продукционная модель представления знаний используется в семействе
инструментальных систем МОНАП, МОНАП ПЛЮС, на основе которых
реализован ряд прикладных ИОС, обеспечивающих адаптивный процесс
обучения грамматикам немецкого и русского языков и представляющих собой
достаточно гибкие системы открытого вида.
Intelligent Computer Tutoring Group использует логическую модель в
системах NORMIT, обучение моделированию концептуальных диаграмм
«сущность-связь», NORMIT, которая обучает нормализации данных, а также
CAPIT, система преподает правила английского языка для знаков препинания и
заглавных букв. Они также разработали две веб-системы: SQLT-WEB, которая
обучает языку SQL, и LBITS, репетитор для развития языка.
Лексическая база данных английского языка WordNet, организованная в
виде семантические сети, является примером эффективного средства для
изучения английского языка.
24
Фреймы применены в обучающих системах по физике Донецкого
открытого университета, реализующих деятельный подход к обучению
Атановым Г.А. и Локтюшиной В.В.
Авторская
древовидная
интеллектуальной
модель
автоматизированной
Войта
Н.
Н.
обучающей
используется
системе
в
(ИАОС)
Ульяновского механического завода, и в разрабатываемой ИАОС Ульяновского
Государственного технического университета.
1. 10 ПОСТАНОВКА ЗАДАЧИ
Целью данной работы является проведение научного эксперимента по
разработке учебно-методического наполнения модели предметной области
интеллектуальной
автоматизированной
обучающей
системы
(используя
авторскую древовидную модель Войта Н. Н. для представления знаний),
которым докажем адекватность, полноту модели на примере изделия
«Редуктор» САПР КОМПАС.
Для выполнения поставленной цели необходимо решить следующие
задачи:
1. Анализ моделей представления предметной области САПР.
2. Описание представителей среднего САПР: P-CAD 2002, OrCAD 9.2,
Quartus II 7.2, AutoCAD 2008, SolidWorks 2008, КОМПАС-3D V10 Plus.
3. Реализовать графический конструктор модели предметной области
САПР на языке программирования Java, обеспечивающий хранение данных в
СУБД MySQL.
4. Разработать БД для хранения и обработки компонентов предметной
области на базе MySQL-сервера.
5. Разработать
переносимый
формат
для
представления
модели
предметной области на базе XML.
6. Разработать
серверную
компоненту
по
технологии
JavaBeans в соответствии с EJB 3.0 Specification Final Release.
Enterprise
25
7. Реализовать
интеграцию
графического
конструктора
модели
предметной области САПР и САПР КОМПАС с помощью COM-технологии.
8. Разработать учебно-методическое наполнение модели предметной
области интеллектуальной автоматизированной обучающей систем по изделию
«Редуктор» САПР КОМПАС.
9. Рассчитать
себестоимость,
отпускную
цену
и
прибыль
от
предполагаемой реализации графического конструктора предметной области.
10. Рассмотреть
компьютером.
правила
техники
безопасности
при
работе
за
1. 11 ВЫВОДЫ
Рассмотрена продукционная модель представления знаний содержащее
ядро, интерпретируемое фразой «Если А, то В», имя, сферу применения,
условие применимости ядра и постусловие, представляющее собой процедуру,
которую следует выполнить после успешной реализации ядра.
Представлена логическая модель в основе которого лежит идея описания
знаний о предметной области в виде некоторого множества утверждений,
выраженных в виде логических формул, и получение решения построением
вывода в некоторой формальной системе.
Описана модель представления знаний с помощью семантических сетей
состоящая из вершин, называемых узлами, соответствующих объектам,
концепциям или событиям, и связывающих их дуг, описывающих отношения
между рассматриваемыми объектами.
Приведена
модель
представления
знаний
с
помощью
фреймов,
предложенная Марвином Минским, которая по своей организации во многом
похожа на семантическую сеть.
Показана авторская древовидная модель Войта Н. Н. представляющая
совокупность учебных элементов в виде структурной схемы – древовидного
графа, который называют графом содержания учебного материала и строят по
иерархическому принципу.
26
Проанализированы модели представления знаний (таблица 1).
Сделан обзор современных пакетов САПР:P-CAD2002, OrCAD9.2,
QuartusII7.2, AutoCAD2008, SolidWorks2008, КОМПАС-3DV10Plus. Описано
представление промышленных изделий в САПР КОМПАС.
27
2
РАЗРАБОТКА ГРАФИЧЕСКОГО КОНСТРУКТОРА
МОДЕЛИ
ПРЕДМЕТНОЙ
ОБЛАСТИ
И
ПОСТАНОВКА НАУЧНОГО ЭКСПЕРИМЕНТА С
МОДЕЛЬЮ ПРЕДМЕТНОЙ ОБЛАСТИ НА ПРИМЕРЕ
ИЗДЕЛИЯ «РЕДУКТОР» САПР КОМПАС
2. 1
АДАПТАЦИЯ МОДЕЛИ ПРЕДСТАВЛЕНИЯ ПРЕДМЕТНОЙ ОБЛАСТИ
ИОС САПР КОМПАС, ПОСТАНОВКА НАУЧНОГО ЭКСПЕРИМЕНТА
Важной задачей при разработке интеллектуальных автоматизированных
обучающих систем является создание и наполнение предметной области,
адекватно отображающей объект и процесс проектирования. В работе
представлен пример такой модели, ориентированной на изучение САПР
КОМПАС.
Модель предметной области позволяет адекватно представить учебный
материал, ориентированный на конкретное промышленное изделие и является
базой знаний промышленного проектирования. На рис. 1 построена модель
«Редуктор» в САПР КОМПАС [22, 23, 38, 39,47].
Рисунок 1 - Редуктор в САПР КОМПАС
28
29
Модель редуктора построена с использованием программы «Графический
Конструктор Модели Предметной Области САПР» [34, 61] (рис. 2). Так как
модель редуктора имеет около 5000 элементов, ее ручное наполнение не
представлялось возможным. Для наполнения был реализован COM-клиент,
который подключается к САПР КОМПАС, и, используя его COMинтерфейс[3],получает данные о сборке и экспортирует их в формат XML.
Далее «Графический Конструктор Модели Предметной Области САПР»
импортирует данные из формата XML[15], и на основе полученной
информации формирует узлы и связи между ними, а также автоматически
генерирует содержимое узлов на основании характеристик сборки, деталей и их
компонентов. Для наполнения модели учебно-методическим содержанием
использовались следующие источники [21, 40, 45].
Для визуального отображения модели была решена задача планирования
графа на плоскости (размещение 4630 элементов графа вручную не
представляется возможным), программа автоматически размещает элементы в
древовидном порядке на рабочем поле.
Модель редуктора содержит 4630 узлов, 4899 иерархических связей, 27
ассоциативных связей, 1906 порядковых связей.
На рис. 2 изображены:
связь,
– порядковая связь,
– элемент или узел,
– иерархическая
-ассоциативная связь.
Ниже более подробно описан элемент «Подшипник 410 ГОСТ 8338-75
(Шарик)». Этот элемент в свою очередь, входит в состав элемента «Подшипник
410 ГОСТ 8338-75» и является частью элемента «Массив по концентрической
сетке:1», в который входят дополнительно 10 аналогичных элементов,
показанных ассоциативными связями. Структура «Подшипник 410 ГОСТ 833875 (Шарик)» показана детально, включая отрезки, точки. На рис. 3 показано,
30
что для построения отрезка необходимо задать начальную и конечную точки,
Рисунок 2 - Модель изделия «Редуктор»
часть учебно-методическое содержание представлено на рис. 4.
31
Рисунок 3 - Содержание элемента
Двигаясь по узлам модели снизу вверх можно достичь узел, содержащий
планируемое изделие «Подшипник 410 ГОСТ 8338-75 (Шарик)» (см. рис. 5, 7),
на рис. 8 представлена часть его учебно-методического наполнения.
Начальная точка имеет значения координат по оси абсцисс, ординат.
Содержание представляет все необходимого для начальной и конечной точки, а
соответственно и для построения отрезка.
Рисунок 4 - Учебно-методическая часть
32
На рис. 6 видно, что подшипник также является частью массива по
концентрической сетке:1.
33
Рисунок 5 - Дерево построения «Подшипник 410 ГОСТ 8338-75 (Шарик)»
Рисунок 6 - Дерево построения «Подшипник 410 ГОСТ 8338-75 (Шарик)»
(массив по концентрической сетке:1)
элемента «Подшипник 410 ГОСТ 8338-75 (Шарик)»
Рисунок 8 - Учебно-методическая часть содержания
34
35
Таким образом, модель корректно отображает структуру и функции
объекта. Соответственно, представление предметной области в виде дерева
онтологий позволяет получить адекватную модель этой предметной области
[25].
Разработана учебно-методическая конструкторская документация на
промышленное изделие «Редуктор», включенная в компьютерную модель
предметной области САПР КОМПАС.
Также экспериментально обоснована адекватность разработанной
компьютерной
модели
предметной
области
автоматизированного
проектирования на примере промышленного изделия «Редуктор»,
выполненного в САПР КОМПАС.
2. 2
АРХИТЕКТУРА ГРАФИЧЕСКОГО
ПРЕДМЕТНОЙ ОБЛАСТИ
КОНСТРУКТОРА
МОДЕЛИ
Система реализована в двухуровневой архитектуре, состоящей из
следующих компонентов (см. рис. 9):
- сервер
базы
данных,
осуществляющий
хранение
данных
и
позволяющий масштабировать систему в случае роста нагрузки на нее;
- клиентское место пользователя.
Рисунок 9 - Диаграмма развёртывания.
Выбор определённой СУБД не является ключевым вопросом в виду
требования их простой взаимозаменяемости. В этих условиях главными
критериями стали доступность, бесплатность, опыт работы с конкретной СУБД,
наличие утилит для администрирования баз данных. Под эти критерии
подходят следующие СУБД:
36
- Microsoft SQL Server 2008;
- MySQL 5.1;
- PostgreSQL 8.4.
Все эти СУБД доступны, бесплатны или имеют бесплатную версию. Для
каждой системы имеются инструменты для администрирования баз данных.
Решающим критерием стал опыт работы с конкретной СУБД, личное
предпочтение и наличие подводных камней. Посмотрим сравнительную
таблицу 2.
Таблица 2 - Сравнение СУБД
Критерий
Microsoft
SQL MySQL 5.1
PostgreSQL 8.4
Server 2008
Доступность
Да
Да
Да
Бесплатность
Да,
есть Да
Да
бесплатная
версия
Опыт работы
Утилиты
Есть
для Да
Есть
(SQL Да
администрирования Management
Studio Express)
Известные
Нет
проблемы
оконного выбора
Studio
Нет
(dbForge Да (PgAdminIII)
for
MySQL)
поддержки -
-
Из таблицы видно, что наилучшим образом в качестве СУБД подходит
MySQL 5.1 [17], которая и была выбрана.
Для разработки клиентского места пользователя, требуется решить
проблему выбора языка программирования. Выбор языка программирования
37
является важным шагом в создании программный продуктов. Прежде всего,
нужно определить, что «должна уметь» ваша программа. И, уже исходя из
этого, точно определиться в выборе. При неправильном анализе выполнения
нужных задач на самом последнем этапе проектирования может возникнуть
такая ситуация, что выбранное вами программное обеспечение не способно
решить подобную задачу. И, наоборот, для решения не слишком сложных задач
вовсе необязательно использовать среду с очень широкими возможностями.
Конечно, с поставленной задачей она справится, но на более простых и
доступных средствах разработки этого можно было достигнуть более простыми
методами и меньшими сроками, что тоже немаловажно. Чем проще структура
программы, тем легче ее сопровождать, модифицировать и дополнять.
Определим требования к языку программирования:
- доступность, возможность получения копии программы;
- наличие лицензии, позволяющее бесплатно пользоваться данным ПО;
- личное предпочтение;
- опыт работы с конкретным языком программирования;
- наличие бесплатной интегрированной среды разработки с поддержкой
рефакторинга, профилирования, выделения
синтаксических
конструкций
цветом, автодополнения набираемых конструкций на лету;
- возможность работы с различными базами данных (Microsoft SQL
Server 2008, MySQL 5.1, PostgreSQL 8.4);
- кроссплатформенность;
- простота разработки десктопных приложений.
Начальный
список
альтернатив
формируется
из
языков
программирования, с которыми есть опыт работы, это Pascal, Delphi, Java,
38
C/C++/C#, PHP.Под указанные критерии из списка подходят следующие языки
программирования:
1) С++;
2) С#;
3) Java.
Посмотрим сравнительную таблицу 3:
Таблица 3 - Сравнение языков программирования
Критерий
C++
C#
Java
Доступность
Да
Да
Да
Бесплатность
Да
Да
Да
Опыт работы
5 лет
4 года
5 лет
Среда разработки
есть
есть
есть
Поддержка СУБД
есть
есть
есть
Кроссплатформенность да,
с да
да
перекомпиляцией
Простота разработки
5/10
10/10
10/10
Из таблицы видно, что C++ уступает в простоте разработки. Таким
образом, на выбор остаются C# и Java. В конечном итоге, был выбран Java
вследствие наличия большого количества сторонних бесплатных библиотек и
следующих её основных возможностей[42, 50, 8]:
- унифицированный доступ к базам данных на основе JDBC и SQLJ.
Технология JDBC позволяет в случае необходимости менять текущую СУБД
без изменения программного кода. Предполагается, что приложение будет
активно взаимодействовать с базой данных, а значит, стандартный набор
средств для работы с ней может сильно облегчить разработку[2];
39
- Кроссплатфоменность
Java-приложений.
Программы
на
Java
транслируются в байт-код, выполняемый виртуальной java-машиной (JVM) —
программой, обрабатывающей байтовый код и передающей инструкции
оборудованию как интерпретатор, но с тем отличием, что байтовый код, в
отличие от текста, обрабатывается значительно быстрее. Достоинство
подобного способа выполнения программ — в полной независимости байт-кода
от ОС и оборудования, что позволяет выполнять Java-приложения на любом
устройстве, которое поддерживает виртуальную машину;
- набор стандартных коллекций, таких как массив, список, стек и т. п.
Реализация математической модели неизменно влечёт за собой использование
большого количества различных абстрактных типов данных, и система
коллекций Java позволит наиболее быстро и эффективно организовать их
работу;
- наличие бесплатных и условно-бесплатных средств разработки.
Существует несколько программных продуктов, позволяющих разрабатывать
программы на Java. Большинство из них снабжены редактором исходного
текста, предоставляющим подсветку синтаксиса, форматирование текста
исходного кода, интеллектуальную систему навигации по коду, возможность
динамически показывать/скрывать различные участки исходного текста прямо
в редакторе кода. Кроме того в них реализованы визуальные конструкторы
форм,
различные
системы
управления
проектом,
автоматического
документирования и построения диаграмм. Всё это в сумме существенно
упрощает и ускоряет процесс разработки.
Программа реализована с использованием шаблона MVC (см. рис. 10),
благодаря которому модель данных приложения, пользовательский интерфейс
и управляющая логика разделены на три отдельных компонента, что позволяет
строить функциональность программы независимо от графической части [56,
31, 14].
40
Рисунок 10 - Концепция Model-View-Controller.
Сплошными линиями показаны прямые связи, прерывистыми линиями
показаны косвенные связи
Шаблон MVC позволяет разделить данные, представление и обработку
действий пользователя на три отдельных компоненты:
1. Модель (Model). Модель предоставляет данные (обычно для View), а
также реагирует на запросы (обычно от контроллера), изменяя своё состояние.
2. Представление
(View).
Отвечает
за
отображение
информации
(пользовательский интерфейс).
3. Поведение
(Controller).
Интерпретирует
данные,
введённые
пользователем, и информирует модель и представление о необходимости
соответствующей реакции.
Важно отметить, что как представление, так и поведение зависят от
модели. Однако модель не зависит ни от представления, ни от поведения. Это
одно из ключевых достоинств подобного разделения. Оно позволяет строить
модель независимо от визуального представления, а также создавать несколько
различных представлений для одной модели.
Разрабатываемая информационная система [53] характеризуется [41]:
- по типу хранимых данных - фактографическая ИС. Фактографические
системы предназначены для хранения и обработки структурированных данных
41
в виде чисел и текстов. Над такими данными можно выполнять различные
операции;
- по степени распределённости - распределённая двухзвенная клиентсерверная
ИС,
в
которых
компоненты
распределены
по
нескольким
компьютерам. База данных и СУБД находятся на сервере, а на рабочих
станциях находятся клиентские приложения. В двухзвенных ИС всего два типа
«звеньев»: сервер баз данных, на котором находятся БД и СУБД, и рабочие
станции,
на
которых
находятся
клиентские
приложения.
Клиентские
приложения обращаются к СУБД напрямую;
- по
степени
автоматизации
-
автоматизированная
ИС.
Автоматизированные ИС предполагают участие в процессе обработки
информации и человека, и технических средств, причем главная роль в
выполнении рутинных операций обработки данных отводится компьютеру.
Именно этот класс систем соответствует современному представлению понятия
"информационная система";
- по характеру обработки данных - информационно-справочная, или
информационно-поисковые ИС, в которой нет сложных алгоритмов обработки
данных, а целью системы является поиск и выдача информации в удобном
виде.
Для доступа к моделям предметной области разработана серверная
компонента по технологии Enterprise JavaBeans [4, 19].
Для возможности наполнения модели предметной области из разных
источников был разработан формат хранения описания модели основанный на
формате XML. Рассмотрим формат на следующем примере.
<ModelCNodes="3" CAssoc="1" CAggr="1">
<Assoces>
<Assoc Id="1" Name="Массив" Node="2" Count="2" Parent="1" />
42
</Assoces>
<Aggregations>
<Agr From="1" To="2" />
</Aggregations>
<Nodes count="2">
<Node Id="1" Name="elem1" Next="3">
<Description>…</Description>
<Nodes count="0"/>
</Node>
<Node Id="2" Name="elem2" Next="0">...</Node>
<Node Id="2" Name="elem2" Next="0">...</Node>
</Nodes></Model>
Корневой элемент Model содержит атрибуты: количество узлов,
количество ассоциативных связей, количество иерархических связей.
Дальше идёт список описания ассоциативных связей с атрибутами: имя,
идентификатор узла – представителя ассоциативной связи, количество
элементов, идентификатор узла – родителя узлов входящих в ассоциативную
связь.
Следующий элемент – список иерархических связей с двумя атрибутами,
идентификаторами дочернего и родительского узла.
Дальше идёт список узлов с атрибутами: идентификатор,
имя,
идентификатор следующего узла для последовательной связи. Внутри узла
также содержится его описание в теге «Description». Импорт описанного XMLфайла приведёт к созданию модели, изображённому на рис. 11.
43
Рисунок 11 - Результат импорта XML-файла
2. 3
UML-ОПИСАНИЕ (ДИАГРАММЫ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ,
ДЕЯТЕЛЬНОСТИ, КЛАССОВ, КОМПОНЕНТОВ) ГРАФИЧЕСКОГО
КОНСТРУКТОРА МОДЕЛИ ПРЕДМЕТНОЙ ОБЛАСТИ
Визуальное моделирование в UML[33, 57] можно представить, как
некоторый процесс поуровневого спуска от наиболее обшей и абстрактной
концептуальной модели исходной системы к логической, а затем и к
физической модели соответствующей программной системы. Для достижения
этих целей вначале строится модель в форме, так называемой диаграммы
вариантов
использования
(use
case
diagram),
которая
описывает
функциональное назначение системы или, другими словами, то, что система
будет делать в процессе своего функционирования. Диаграмма вариантов
использования является исходным концептуальным представлением или
концептуальной моделью системы в процессе ее проектирования и разработки.
44
Разработка диаграммы вариантов использования преследует цели:
- определить общие границы и контекст моделируемой предметной
области на начальных этапах проектирования системы;
- сформулировать общие требования к функциональному поведению
проектируемой системы;
- разработать исходную концептуальную модель системы для ее
последующей детализации в форме логических и физических моделей;
- подготовить
исходную
документацию
для
взаимодействия
разработчиков системы с ее заказчиками и пользователями.
Суть данной диаграммы состоит в следующем: проектируемая система
представляется в виде множества сущностей или актёров, взаимодействующих
с системой с помощью, так называемых вариантов использования. При этом
актёром (actor) или действующим лицом называется любая сущность,
взаимодействующая с системой извне. Это может быть человек, техническое
устройство, программа или любая другая система, которая может служить
источником воздействия на моделируемую систему так, как определит сам
разработчик. В свою очередь, вариант использования (use case) служит для
описания сервисов, которые система предоставляет актёру. Другими словами,
каждый вариант использования определяет некоторый набор действий,
совершаемый системой при диалоге с актёром. При этом ничего не говорится о
том, каким образом будет реализовано взаимодействие актёров с системой.
Диаграмма использования содержит одного актёра (см. рис. 12) –
Пользователя и несколько вариантов использования системы:
1. «Сохранить модель». Сохранение текущей модели в базе данных, при
этом требуется задать имя сохраняемой модели.
45
2. «Загрузить модель». Загрузка модели из базы данных по указанному
пользователем имени.
3. «Добавить элемент». Добавление нового, пустого узла модели.
4. «Изменить элемент». Можно задать имя и содержимое узла модели.
5. «Удалить элемент». Удаление элемента и всех его связей из модели.
6. «Добавить связь». Связать два узла модели одной из трёх типов связей:
иерархической, последовательной или ассоциативной.
При моделировании поведения проектируемой или анализируемой
системы возникает необходимость не только представить процесс изменения ее
состояний, но и детализировать особенности алгоритмической и логической
реализации выполняемых системой операций. Традиционно для этой цели
использовались блок-схемы или структурные схемы. Каждая такая схема
акцентирует внимание на последовательности выполнения определенных
действий или элементарных операций, которые в совокупности приводят к
получению желаемого результата. Важно подчеркнуть то обстоятельство, что с
увеличением сложности системы строгое соблюдение последовательности
выполняемых операций приобретает все более важное значение.
Для моделирования процесса выполнения операций используются так
называемые диаграммы деятельности. Каждое состояние на диаграмме
деятельности соответствует выполнению некоторой элементарной операции, а
переход в следующее состояние срабатывает только при завершении этой
операции в предыдущем состоянии. Графически диаграмма деятельности
представляется в форме графа деятельности, вершинами которого являются
состояния действия, а дугами — переходы от одного состояния действия к
другому.
На
диаграмме
деятельности
отображается
логика
или
46
последовательность перехода от одной деятельности к другой, при этом
внимание фиксируется на результате деятельности.
Разработанные диаграммы характеризуют деятельность системы и
пользователя. На рис. 13 представлена диаграмма деятельности системы.
Дальше строится диаграмма классов графического конструктора модели
предметной области (см. рис. 14) и диаграмма компонентов (см. рис. 15).
Рисунок 12 - Диаграмма использования
47
Рисунок 13 - Диаграмма деятельности
48
Рисунок 14 - Диаграмма классов
49
Рисунок 15 - Диаграмма компонентов
50
51
2. 4 РАЗРАБОТКА ER-ДИАГРАММЫ БАЗЫ ДАННЫХ
Основные концепции модели ER (рис. 16), «сущность-связь» включают
типы сущностей, типы связей и атрибуты. Объектные отношения хранят
данные о всех объектах одного и того же типа, по одному кортежу на объект, и
содержат ключ для идентификации
объекта. Все другие поля должны
функционально зависеть от этого ключа.
Поставленная задача предполагает наличие трёх сущностей:
1. Модель. Хранит названия и даты изменения всех созданных моделей.
2. Тип связи. Предопределённое множество, всего реализовано три типа
связи: иерархическая, последовательная и ассоциативная.
3. Элемент. Таблица содержит перечень всех элементов.
Р
Рисунок 16 - ER-модель БД
Описание сущностей БД представлено в таблицах. 4, 5, 6, 7.
52
Таблица 4 - Описание сущности Model (сущность - модель)
Атрибуты
Описание
id
Идентификатор
name
Название
time
время создания
Таблица 5 - Описание сущности Node (сущность -узел)
Атрибуты
Описание
id
идентификатор
name
название
x
X-координата
y
Y-координата
nextId
последовательная связь, следующий узел
modelId
модель
assocId
ассоциативная связь
contentId
содержание
53
Таблица 6 - Описание сущности Assocrelation (сущность - ассоциативный ключ)
Атрибуты
Описание
id
идентификатор
name
название
modelId
модель
Атрибуты
Описание
Таблица 7 - Описание сущности Аggregationrelation (сущность - иерархическая
связь)
2. 5
id
идентификатор
sourceNodeId
узел-ребёнок
targetNodeId
узел-ребёнок
modeld
модель
ВЫВОДЫ
Разработана учебно-методическая конструкторская документация на
промышленное изделие «Редуктор», включенная в компьютерную модель
предметной области САПР КОМПАС.
Экспериментально
компьютерной
модели
проектирования
на
обоснована
адекватность
предметной
области
примере
выполненного в САПР КОМПАС.
промышленного
разработанной
автоматизированного
изделия
«Редуктор»,
54
Разработана архитектура графического конструктора модели предметной
области, система реализована в двухуровневой технологии, состоящая из
сервера базы данных, осуществляющий хранение данных и позволяющий
масштабировать систему в случае роста нагрузки на нее, и клиентского место
пользователя.
Представлено UML-описание (диаграммы вариантов использования,
деятельности, классов, компонентов) графического конструктора модели
предметной области. Разработана ER-диаграмма базы данных.
55
3 РЕАЛИЗАЦИЯ ГРАФИЧЕСКОГО
ПРЕДМЕТНОЙ ОБЛАСТИ
3. 1
КОНСТРУКТОРА
МОДЕЛИ
ДИАГРАММЫ АЛГОРИТМОВ
В этом разделе рассмотрены оригинальные алгоритмические решения,
которые заложены в графическом конструкторе модели предметной области.
Так как продукт изначально разрабатывался на работу с большими
объёмами данных, требовалась обеспечить быстрое сохранение изменённых
моделей предметной области. Для этого каждый класс, хранящий свои данные в
базе данных, имеет поле «Состояние», которое характеризует его изменения
относительно копии в базе данных. Состояние бывает пяти типов:
1. Нет изменений – элемент соответствует копии в БД.
2. Создано – элемент создан, копии в БД нет.
3. Изменено – элемент изменён, в БД устаревшая информация.
4. Удалено – элемент удалён, в БД присутствует копия, которую
необходимо удалить.
5. Удалено из БД – копия удалено из БД, требуется удалить элемент из
памяти программы.
Элемент и его копия синхронизируются только при сохранении модели.
Если синхронизация прошла успешно, состояние элемента изменяется на «нет
изменений».
Состояния используются следующими компонентами графического
конструктора модели предметной области: модель, узел, ассоциативная и
иерархические связи.
На рис. 17 представлены диаграммы изменения и сохранения модели.
56
Рисунок 17 - Алгоритм изменения и сохранения модели
Следующий алгоритм, который рассмотрим, это алгоритм формирования
содержимого узла. Диаграмма, представленная на рис. 18 описывает из каких
элементов и каким образом формируется содержимое узлов.
57
Рисунок 18 - Алгоритм формирования содержимого узла
Следующий алгоритм импорт модели предметной области из XML файла
изображён на рис. 19.
58
Рисунок 19 - Алгоритм импорта из XML файла
Более подробно рассмотрим алгоритм по размещению узлов на экране
или,
по-другому,
алгоритм
дополнительно [12, 20].
планеризации
графа
(см.
рис.
20)
[13],
59
Рисунок 20 - Алгоритм планеризации графа
60
3. 2 МОДУЛИ ПРОЕКТА
Программный комплекс написан на языке программирования Javaи
включает следующие компоненты:
- графический конструктор предметной области;
- серверная
компонента
по
технологии
Enterprise
JavaBeans
в
соответствии с EJB 3.0 Specification Final Release.
Дополнительно был реализован COM-клиент на языке программировния
С# «KompasToXML», который подключается к САПР КОМПАС для получения
данных о промышленном изделии экспортирует их в XML файл.
Графический
конструктор
предметной
области
содержит
представленные в таблице 8.
Таблица 8 - Классы графического конструктора предметной области
Класс
Количество строк кода
AggregationRelation.java
118
AssoctiationRelation.java
186
DBProvider.java
198
ImportXML.java
182
Main.java
78
Model.java
298
ModelNode.java
552
ModelState.java
54
классы
61
Продолжение табл.8
Класс
Количество строк кода
PlanerModel.java
203
WebBrowser.java
212
Controls\AutoGenerateScetch.java
158
Controls\ChooseAssiciationRelationType.java
193
Controls\GeneralFrame.java
713
Controls\HTMLEditor.java
130
Controls\JModelNodeTree.java
78
Controls\JModelPanel.java
158
Controls\JScreenPanel.java
836
Controls\LoadSaveDialog.java
179
Controls\LoginDialog.java
171
Суммарное количество строк кода
4697
Модули AggregationRelation, AssoctiationRelation, Model, ModelNode
непосредственно работают с моделью представления знаний:
AggregationRelation – обрабатывает иерархические связи;
AssoctiationRelation – отвечает за работу ассоциативных связей;
ModelNode – представляет узлы модели и работает с порядковыми
связями;
62
Model – является контейнером для узлов, ассоциативных, порядковых и
иерархических связей.
Описанные модули работают с базой данных посредством DBProvider.
Диаграмма на рис.18 представляет алгоритма работы с БД. Эти модули имеют
поле ModelState, которое описывает состояние объекта в памяти ПЭВМ, и
записи о нём в БД. У этого поля есть пять состояний:
1. None – элемент соответствует копии в БД.
2. Insert – элемент создан, информации в БД о нём нет.
3. Update – элемент изменён, в БД устаревшая информация.
4. Delete – элемент удалён, в БД присутствует копия, которую
необходимо удалить.
5. CanRemove – копия удалено из БД, требуется удалить элемент из
памяти программы.
Ниже приведён фрагмент кода на языке Java, описывающий правила
перехода из одного состояния в другое.
// Состояние элемента
public enum ModelState {
CanRemove, Delete, Insert, Update, None;
//Проверка изменялся ли элемент после сохранения в БД
public boolean isCanChange(ModelState newState, ModelState oldState) {
return (newState.ordinal() < oldState.ordinal());
}
//Изменениеэлемент
public static ModelState changeObject(ModelState state) {
if (state == None) return Update;
63
return state;
}
//Сохранениеэлемента
public static ModelState saveObject(ModelState state) {
if (state.ordinal() >= Insert.ordinal()) return None;
return CanRemove;
}
//Проверка - используется ли элемент
public static ModelState existObject(ModelState state) {
if (state.ordinal() >= Insert.ordinal()) return Update;
return CanRemove;
}
//Удалениеэлемента
public static ModelState deleteObject(ModelState state) {
if (state.ordinal() >= Update.ordinal() || state == Delete) return Delete;
return CanRemove;
}
//Проверка - элемент удалён из БД
public boolean canRemoveObject() {
return this == CanRemove;
}
//Проверка - нужно ли сохраянть элемент
public boolean isNeedSave() {
return (this == Insert || this == Update || this == Delete);
}
//Проверка - есть ли запись о элементе в БД
public boolean isExistObject() {
return (this == Update || this == Delete || this == None);
}
//Проверка - элементудалёнизпамяти
public boolean isDeleted() {
return (this == Delete || this == CanRemove);
64
}}
Модуль ImportXML импортирует модель предметной области из XML
файла. Алгоритм работы этого модуля представлен на рис. 18. Исходный код
приведён в приложении.
Модуль PlanerModel обеспечивает автоматическое расположение узлов
модели на экране. Алгоритм работы этого модуля представлен на рис. 19.
Исходный код приведён в приложении.
Модуль
WebBrowser
обеспечивает
формирование
и
просмотр
содержимого узла. Алгоритм работы этого модуля представлен на рис. 18.
Исходный код приведён в приложении.
Модули Controls представляют собой графические окна для общения с
пользователем.
Отдельно отмечу модули Controls\HTMLEditor и Controls\JScreenPanel,
отвечающие
за
редактирование
учебно-методического
наполнения
и
отображение модели на экране соответственно.
На графический конструктор модели предметной области САПР
получено свидетельство о государственной регистрации программы для ЭВМ
№ 2010613515 «Графический конструктор модели предметной области САПР»
от 28 мая 2010.
Для работы графического конструктора модели предметной области
необходимы следующие компоненты:
- виртуальная машина Java Runtime Environment;
- СУБД MySQL версии 5.1 и выше.
65
Серверная компонента по технологии Enterprise JavaBeans
Серверная компонента по технологии Enterprise JavaBeans содержит
классы, представленные в таблице 9.
Таблица 9 - Классы серверной компоненты по технологии Enterprise JavaBeans
Класс
Количество строк кода
SessionBean\AggregationRelationFacade.java
65
SessionBean\AggregationRelationFacadeLocal.java
33
SessionBean\AggregationRelationFacadeRemote.java 33
SessionBean\AssocRelationFacade.java
65
SessionBean\AssocRelationFacadeLocal.java
33
SessionBean\AssocRelationFacadeRemote.java
33
SessionBean\ModelFacade.java
65
SessionBean\NodeFacade.java
65
SessionBean\NodeFacadeLocal.java
33
SessionBean\NodeFacadeRemote.java
33
Entity\AggregationRelation.java
144
Entity\AssocRelation.java
139
Entity\Model.java
173
Суммарное количество строк кода
1304
66
Модули
Entity
используются
для
хранения
элементов
в
БД:
иерархических, ассоциативных связей, информации о модели и узлов
соответственно. Эти модули предоставляют собой объектно-реляционное
отображение элементов предметной области. В качестве примера в приложении
представлен исходный код модуля Entity\AssocRelation.
Модули
SessionBean\*Facade
являются
Enterprise
JavaBean
обеспечивающие работу с элементами модели:
- создание элемента;
- редактирование элемента;
- удаление элемента;
- поиск элемента;
- получение всех элемента;
- получение количества элементов.
Модули SessionBean\*FacadeLocal и SessionBean\*FacadeRemote являются
интерфейсами для локальной и удалённой работы с SessionBean\*Facade.
Для работы серверной компоненты по технологии Enterprise JavaBeans
необходимы следующие компоненты:
- виртуальная машина Java Runtime Environment;
- СУБД MySQL версии 5.1 и выше;
- сервер приложений, поддерживающий стандарты Java Platform,
Enterprise Edition (например, GlassFish v.3.0).
67
COM-клиент «KompasToXML»
COM-клиент «KompasToXML» содержит классы, представленные в
таблице 10.
Таблица10 - Классы COM-клиента «KompasToXML»
Класс
Количество строк кода
Aggregation.cs
19
Assoc.cs
22
KompasTreeManager.cs
118
ListNode.cs
20
Model.cs
112
Node.cs
58
Part.cs
40
XmlExtends.cs
31
Shapes\Arc.cs
51
Shapes\Circle.cs
36
Shapes\LineSegment.cs
43
Shapes\Point.cs
54
Shapes\Shape.cs
53
Mate\Mate.cs
72
Mate\MateAngle.cs
25
Mate\MateCoincidence.cs
25
68
Продолжение табл.10
Mate\MateConcentric.cs
25
Mate\MateConstraintGroup.cs
87
Mate\MateDistance.cs
25
Mate\MateInPlace.cs
25
Entity\BaseRotated.cs
66
Entity\BossExtrusion.cs
39
Entity\BossRotated.cs
39
Entity\Chamfer.cs
38
Entity\CircularCopy.cs
66
Entity\CircularPartArray.cs
70
Entity\CutExtrusion.cs
57
Entity\CutRotated.cs
41
Entity\Entity.cs
45
Entity\EntityManager.cs
41
Entity\Fillet.cs
30
Entity\Hole.cs
25
Entity\Sketch.cs
103
Суммарное количество строк кода
1733
69
Модули Aggregation, Assoc, ListNode, Model, Node сохраняют в себе
информацию о промышленном изделии САПР КОМПАС. Модуль XmlExtends
экспортирует информацию в XML файл, а KompasTreeManager управляет
работой модулей.
Остальные модули непосредственно получают информацию об элементах
изделия
САПР
КОМПАС:
параллельность,
cборка,
перпендикулярность,
концентричность,
касательность),
деталь,
на
операции
сопряжения
расстоянии,
над
эскизом
(совпадение,
под
углом,
(вращение,
выдавливание, перемещение), отверстие, скругление, фаска, плоские фигуры
(дуга, отрезок, точка, окружность) и т.д.
Первым делом программа подключаются к запущенному САПР
КОМПАС:
if (kompas == null)
{
Type t = Type.GetTypeFromProgID("KOMPAS.Application.7");
kompas =
(KompasObject)Marshal.GetActiveObject("KOMPAS.Application.5");
}
if (kompas != null)
{
kompas.Visible = true;
kompas.ActivateControllerAPI();
}
Затем получает активный документ:
doc = kompas.ActiveDocument3D() as ksDocument3D;
Дальше программа получает данные об изделии, начиная с корневой
сборки:
ksPart topPart = doc.GetPart((short)Part_Type.pTop_Part) as ksPart;
Part p = new Part(topPart, treeManager);
70
Node node = p.GetNode();
После чего информация сохраняется в XML файл
Model.Instance.LoadNode(lastAsctiveNode);
Model.Instance.Save(lastAsctiveNode.Name + ".xml");
Для работы COM-клиент «KompasToXML» необходимы следующие
компоненты:
 Microsoft NET Framework 3.0;
 АСКОН КОМПАС-3D V12.
Представленные выше компоненты имеют суммарное количество
исходного кода - 7734строк. Их них около 6500 написано вручную.
3. 3
РУКОВОДСТВО РАЗРАБОТЧИКА ПРЕДМЕТНОЙ ОБЛАСТИ
Программа обеспечивает разработку модели предметной области САПР и
наполнение проектным содержанием модели (промышленными объектами) в
графическом
виде.
Содержанием
модели
является
конструкторская
документация (текст, рисунки, гипермедиа материал и файлы (объекты) САПР).
Графическое представление модели обеспечено с помощью узлов и
связей. Узлом, называется учебный элемент, который описывает некоторую
простейшую операцию (например, повернуть, выдавить) или атомарное
понятие (например, дуга, отрезок). Узлами могут быть представлены как
атомарные операции, объекты, так и композиции элементов (например, вал,
крышка). К узлу прикрепляются проектные файлы, которые детально
описывают элемент (рисунки элементов, эскизы, схемы и т.п.).
Отношения между узлами задаются тремя видами связей: порядковыми,
иерархическими, ассоциативными.
71
Порядковые связи задают порядок перехода между узлами, порядок
выполнения проектных операций.
Иерархические связи описывают вложенность операций, элементов
(составляющих частей).
Ассоциативные связи описывают связность по ключу (ссылке) с узлами,
соответственно изменение одного узла повлечет за собой изменение всех
связных узлов.
Компьютерная
модель
позволяет
адекватно
представить
учебный
материал, ориентированный на конкретное промышленное производство, и
является базой знаний промышленного проектирования [35, 27].
Пользовательский
графический
интерфейс
(далее
интерфейс)
графического конструктора представлен на рис. 21.
Рисунок 21 - Графический конструктор модели предметной области САПР
Интерфейс состоит из следующих компонентов:
- главного меню (на рис. 20 обозначен числом 1);
72
- панели быстрого запуска (2);
- навигационного списка (3);
- рабочего поля (4).
Меню файл содержит пункты:
- Создать (создание новой модели);
- Открыть (открытие существующей модели);
- Сохранить (сохранение модели);
- Импорт XML (импортирование модели из XML-файла);
- Планер (древовидное размещение узлов на рабочей поверхности);
- Выход (выход из программы).
Для открытия модели ее следует выбрать из списка доступных моделей
из диалогового окна «Сохранение/Загрузка» (рис. 22).Программа сохраняет и
загружает модели из базы данных.
Рисунок 22 - Диалоговое окно «Сохранение/Загрузка»
73
Меню Правка содержит пункты:
- добавить (добавление узла на рабочую поверхность);
- удалить (удаление узла).
Панель быстрого доступа содержит пункты:
- создать модель (
);
- сохранить модель (
- открыть модель (
);
);
- добавить порядковую связь (
);
- добавить ассоциативную связь (
- добавить иерархическую связь (
);
);
- добавить узел ( );
- удалить узел ( );
- выбор масштаба (
Навигация
по
).
элементам
позволяет
быстро
переходить
между
различными узлами модели.
Рабочая область содержит топологию модели.
Редактирование узла осуществляется через контекстное меню, которое
вызывается правой кнопкой мыши (рис. 23) и содержит следующие пункты:
1. Название – редактирование названия узла.
2. Добавить связь – добавление соответствующего типа связи.
3. Редактировать – редактирование содержимого узла.
74
4. Просмотр содержимого – просмотр содержимого узла.
5. Удалить – удаление узла.
6. Дубликат - создать копию узла.
Рисунок 23 - Контекстное меню узла
Редактор содержимого узла представляет собой HTML-редактор, который
позволяет менять шрифт, цвет текста, вставлять таблицы и рисунки (рис. 24).
Рисунок 24 - Гипертекстовый редактор конструкторской документации
Содержимое узла представляется в виде гипертекста[28,32, 54], с
автоматически добавляемой информацией о структуре узла и его связях, а
также формируются гиперссылки на связанные узлы (рис. 25, 26).
75
Рисунок 25 - Содержимое узла
Программа предоставляет следующую функциональность для удобного
расположения узлов на рабочей поверхности:
1. Возможность перемещения как одного, так и группы узлов.
2. Композиция и декомпозиция узлов.
3. Масштабирование рабочей поверхности.
4.Автоматическое
древовидное
размещение
узлов
поверхности (см. рис. 26).
Рисунок 26 - Структура узлов и связей
на
рабочей
76
Наполнение модели содержимым упрощается с помощью:
1. Операций добавления ассоциативных, порядковых и иерархических
связей.
2. Операций добавления и удаления узлов.
3. Автоматизированного формирования содержимого узла, используя
сборку изделия в САПР КОМПАС.
4. Наличие операций (добавление, удаление, изменение) редактирования
узлов.
Пример модели изделия «Вал»
Рассмотрим изделие «Вал» в САПР КОМПАС (рис. 27).
Рисунок 27 - Изделие «Вал» в САПР КОМПАС
77
Пример модели изделия «Вал» представлен на рис. 28.
Рисунок 28 - Модель изделия «Вал»
3. 4
ЭКОНОМИЧЕСКОЕ ОБЕСПЕЧЕНИЕ И ТЕХНИКА БЕЗОПАСНОСТИ
Решение о целесообразности разработки и внедрения программного
продукта принимается на основании расчета ожидаемого экономического
эффекта.
Затраты на сырьё и материалы.
Учитывая специфику выполняемых работ, данный вид затрат будет
состоять из затрат на электроэнергию. Затраты на затраченную при разработке
данного продукта электроэнергию будут равны - потребляемая мощность
компьютера, умноженная на количество часов и на стоимость одного Квт/ч. В
среднем тариф, установленный энергетической комиссией г. Ульяновска для
промышленных предприятий и организаций составляет 2,94 руб. за 1 Квт/ч.
Затраты на электроэнергию будут составлять:
0,5 Квт * 240 часов * 2,94 руб. = 352,8 руб.
78
Сумма основной заработной платы с начислениями.
Сумма основной заработной платы с начислениями складывается из
основной и дополнительной заработной платы, а так же и отчисления на
социальное страхование. Тариф оплаты труда программиста составляет
100руб/час, размер основной заработной платы программиста за 240 ч.
составит:
240 ч * 100 руб/час = 24000 руб.
Дополнительная заработная плата будет составлять 20% и равна:
(24000 руб. * 20 %) / 100% = 4800 руб.
Следовательно, оплата труда программиста составит:
24000 руб. + 4800 руб. = 28800 руб.
В сумме отчисления на социальное страхование составляют 26%, что
равно:
(28800 руб. * 26%) / 100% = 7488 руб.
Сумма денежных средств, необходимых для оплаты основной заработной
платы с начислениями составит:
24000 руб. + 4800 руб. + 7488 руб. = 36288 руб.
Расчёт амортизации оборудования
В
ходе
изготовления
программного
продукта
использовалось
оборудование общей стоимостью 17000 руб. Расчёт амортизации на одно
изделие (программный продукт) ведём по формуле:
Ра  Куд 
На
100
где Ра - расходы на амортизацию, руб.,
(1)
79
На - норма амортизации (На = 25 %)
Куд 
К
* Фэ
Тшт
(2)
где К - общая стоимость оборудования, руб.,
Фэ - эффективный фонд использования оборудования, ч,
Тшт - суммарное время использования оборудования и аппаратуры.
Примем следующие исходные данные: что Фэ = 1920ч * 5 = 9600ч
(количество рабочих часов за 5 лет, если принимать рабочий день восьми
часовой), Тшт = 240 ч, К = 17000 руб. Учитывая исходные данные и формулы
(1) и (2) получим следующие величины:
Куд= (17000 / 9600ч) * 240 = 425 руб.
Ра = (425 руб. * 25%) / 100% = 106,25 руб.
Калькуляция себестоимости и расчёт отпускной цены продукта.
Полная себестоимость продукта равна
352,8 руб. +36288 руб. +106,25 руб. = 36747,05 руб.
В условиях переходного периода к рыночной экономике значение цены
определяем по формуле:
Ц
С
1  Пу
(3)
где С - полная себестоимость продукта,
Пу - минимально приемлемая для изготовителя доля прибыли в цене.
Значение Пу примем равным 0,6, тогда:
80
Расчёт экономической эффективности
Положим, что у данного изделия аналога не имеется. Производство
единичное. Следовательно, расчёт экономической эффективности будем вести
по формуле:
Э = П – Ен * Ку,
(4)
где Ку - капитальные затраты (едино переменные).
Ку = Куд + Книр,
(5)
где Куд - удельная стоимость использованного оборудования, Книр затраты на научно-исследовательскую работу.
Книр = 24000 руб.
Общая стоимость капитальных вложений составит:
Ку = 425 руб. + 2400 руб. = 24425 руб.
Прибыль от предполагаемой реализации изделия определяем по формуле:
П=Ц–С
(4.9)
П = 91867,62 руб. – 24425 руб. = 67442,62 руб.
Учитывая полученные данные экономический эффект составит:
Э = 67442,62 руб. - 0,3 * 24425 руб. = 60115,12 руб.
Техника безопасности
Ни для кого не секрет что люди, по долгу работы длительное время
работающие за компьютерами, часто болеют своими «компьютерными»
81
болезнями. Это значит, что необходимо предпринимать меры для снижения
рисков заболеваний.
Особый характер влияния компьютера на человека, состоит прежде всего
в длительной статической нагрузке, как физической, так и интеллектуальной.
Следовательно, главную роль в достижении безопасности пользователя, играют
вопросы комфорта при длительной работе. Этим в частности и занимается
наука эргономика.
Организация рабочего места
Даже самое эргономичное оборудование в мире не поможет вам избежать
заболеваний, если использовать его неправильно. Следуя простым советам по
эргономичной организации рабочего места, можно предотвратить дальнейшее
развитие заболеваний.
Рабочее пространство
Научная организация рабочего пространства базируется на данных о
средней зоне охвата рук человека - 35-40 см. Ближней зоне соответствует
область, охватываемая рукой с прижатым к туловищу локтем, дальней зоне область вытянутой руки.
Работа с клавиатурой
Неправильное положение рук при печати на клавиатуре приводит к
хроническим растяжениям кисти. Важно не столько отодвинуть клавиатуру от
края стола и опереть кисти о специальную площадку, сколько держать локти
параллельно поверхности стола и под прямым углом к плечу. Поэтому
клавиатура должна располагаться в 10-15 см (в зависимости от длины локтя) от
края стола. В этом случае нагрузка приходится не на кисть, в которой вены и
сухожилия находятся близко к поверхности кожи, а на более "мясистую" часть
локтя. Современные, эргономичные модели имеют оптимальную площадь для
82
клавиатуры за счет расположения монитора в самой широкой части стола.
Глубина стола должна позволяет полностью положить локти на стол,
отодвинув клавиатуру к монитору.
Расположение монитора
Монитор, как правило, располагается чрезмерно близко. Существует
несколько научных теорий, по-разному определяющих значимые факторы и
оптимальные расстояния от глаза до монитора. Например, рекомендуется
держать монитор на расстоянии вытянутой руки. Но при этом, что человек
должен иметь возможность сам решать, насколько далеко будет стоять
монитор.
Именно поэтому конструкция современных столов позволяет менять
глубину положения монитора в широком диапазоне. Верхняя граница на уровне
глаз или не ниже 15 см ниже уровня глаз.
Внутренний объем
Значимым фактором является под пространство столешницей. Высота
наших столов соответствует общепринятым стандартам, и составляет 74 см.
Также необходимо учесть, что пространства под креслом и столом должно быть
достаточно, чтобы было удобно сгибать и разгибать колени.
Кресло
Казалось бы, требования к нему сформулировать предельно просто, - оно
должно быть удобным. Но это еще не все. Кресло должно обеспечивать
физиологически рациональную рабочую позу, при которой не нарушается
циркуляция крови и не происходит других вредных воздействий. Кресло
обязательно должно быть с подлокотниками и иметь возможность поворота,
изменения высоты и угла наклона сиденья и спинки. Желательно иметь
возможность регулировки высоты и расстояния между подлокотниками,
83
расстояния от спинки до переднего края сиденья. Важно, чтобы все
регулировки были независимыми, легко осуществимыми и имели надежную
фиксацию. Кресло должно быть регулируемым, с возможность вращения,
чтобы дотянуться до далеко расположенных предметов.
3. 5
ВЫВОДЫ
Разработан и описан графический конструктор модели предметной
области автоматизированного проектирования. Реализована и наполнена
проектным учебным содержанием модель промышленного изделия «Вал»,
разработанного в САПР КОМПАС.
Реализованный графический конструктор модели предметной области
обеспечивает интеграцию с САПР КОМПАС, описание конструкторской
документации конкретного проектного изделия в учебных целях, поддержку
интуитивно понятного графического интерфейса, компонентно-сервисную
архитектуру.
Рассчитана себестоимость, отпускная цена и прибыль от предполагаемой
реализации
графического
конструктора
предметной
области.
рассмотрены правила техники безопасности при работе за компьютером.
Также
84
ЗАКЛЮЧЕНИЕ
В работе все поставленные цели и задачи достигнуты. В результате
проведенных исследований рассчитано, рассмотрено, проведено, разработано и
реализовано следующее:
1. Реализована модель предметной области интеллектуальной АОС САПР
КОМПАС, разработано учебно-методическое наполнение модели предметной
области интеллектуальной автоматизированной обучающей систем на примере
САПР КОМПАС.
2. Проведен научный эксперимент по разработке учебно-методического
наполнения
модели
предметной
области
автоматизированной обучающей системы на примере
интеллектуальной
САПР
КОМПАС
(используя авторскую древовидную модель Войта Н. Н. для представления
знаний).
3. Исследованы продукционная, логическая, фреймовая, древовидная
модели и семантическая сеть.
4. Реализован графический конструктор модели предметной области
САПР.
5. Разработана БД для хранения и обработки компонентов предметной
области на базе MySQL-сервера.
6. Разработан
переносимый
формат
для
представления
модели
предметной области на базе XML.
7. Разработана серверная компонента по технологии Enterprise JavaBeans.
8. Реализована интеграция системы с САПР КОМПАС посредством
COM-интерфейса.
85
9. Рассчитана
себестоимость,
отпускная
цена
и
прибыль
от
предполагаемой реализации графического конструктора предметной области.
10.
Рассмотрены правила техники безопасности при работе за
компьютером.
86
СПИСОК ЛИТЕРАТУРЫ
1. Allen J., Frisch A. What's in a semantic network? //Proceedings of the 20th
annual meeting on Association for Computational Linguistics. – Association for
Computational Linguistics, 1982. – pp 19 – 27.
2. Chaudhri, R. Java & Databases. – London: Hermes Science Publications,
2000. – 139 p.
3. COM: Component Object Model Technologies [Electronic resource]. URL
: http://www.microsoft.com/com/default.mspx
4. EJB 3.0 Specification Final Release [Electronic resource]. URL
:http://java.sun.com/products/ejb/docs.html
5. GaleevI., Tararina L., Kolosov O. Adaptation on the basis of the skills
overlay model. // Procedings of the 4th IEEE International Conference on Advanced
Learning Tecknologies (ICALT 2004). Finland, Jornsuu, 2004. – pp.648 – 650.
6. GaleevI.,
Tararina
L.,
Kolosov
O.,
Kolosov
V.
Structure
and
implementation of partially integrated adoptive learning environment //Procedings of
E-Learn 2003. USA, Arizona, Phoenix, 2003. – pp. 2151 – 2154.
7. Galeev I.K., Chepegin V.I., Sosnovsky S.A. MONAP: Models, Methods
and Applications// Proceedings of the International Conference KBCS 2000.
Mumbai, India, 2000 . – pp. 217 – 228.
8. Greanier, T. Java Foundations. – London: NeilEdde, 2004. – 363pp.
9. Harabagiu, Sanda M. and Dan I. Moldovan. `Knowledge processing on an
extended WordNet. // WordNet: An Electronic Lexical Database. – MIT Press, 1998.
– pp. 289 – 405.
10. Helbig, H. Knowledge Representation and the Semantics of Natural
Language. – Springer-Verlag New York, Inc, 2005. – 647 p.
87
11. Helbig H. Knowledge Representation with Multilayered Extended
Semantic Networks (the MultiNet paradigm) [Electronic resource]. URL:
http://pi7.fernuni-hagen.de/forschung/multinet/multinet_en.html
12. HermanI., Melancon G., Marshall S. Graph Visualization and Navigation
in Information Visualization: A Survey // IEEE Transactions on Visualization and
Computer Graphics. – No. 6. – 2000. – pp. 24 – 43.
13. Kaufmann M., Dorothea W. Drawing graphs: methods and models.Springer-Verlag, 2001. – 312 p.
14. McLaughlin B. Java and XML. – United States of America: O’Reilly,
2000. – 361p.
15. Mitrovic, A. NORMIT, a Web-enabled tutor for database normalization .
In: Kinshuk, R. Lewis, K. Akahori, R. Kemp, T. Okamoto, L. Henderson, C-H Lee
(eds) Proc. ICCE 2002, Auckland, 2002. – pp. 1276 – 1280.
16. MySQL 5.0 Reference Manual [Электронный ресурс]. — Электрон, дан.
—
[Б.м],
[1997-2010].
—
Режим
доступа:
http://dev.mysql.com/doc/refman/5.0/en/index.html, свободный. – Загл. С экрана. –
Яз. англ.
17. Sowa
J.
Semantic
Networks
[Electronic
resource].
URL:
[Electronic
resource].
URL
http://www.jfsowa.com/pubs/semnet.htm
18. The
Java
EE
5
Tutorial
:http://java.sun.com/javaee/6/docs/tutorial/doc/docinfo.html
19. Tollis I., Battista G., Tamassia R., Graph Drawing: Algorithms for the
Visualization of Graphs. - Prentice Hall, 1998. – 432 p.
20. Азбука КОМПАС [Электронный ресурс]. – Электрон, дан. – [Б.м]:
Аскон, 2008. – Загл. с экрана. – Яз. рус.
88
21. Анурьев, В.И. Справочник конструктора-машиностроителя: В 3 т. Т.1.
– 8-е изд., перераб. и доп. – М.: Машиностроение, 2001. – 920 с.
22. АСКОН — комплексные решения для автоматизации инженерной
деятельности и управления производством. CAD/AEC/PLM [Электронный
ресурс]. – Электрон, дан. – [Б.м], [1998?]. – Режим доступа: http://ascon.ru/,
свободный. – Загл. с экрана. – Яз.рус.
23. Атанов Г.А., Локтюшин В.В. Фреймовая организация знаний в
интеллектуальной обучающей системе // Образовательные технологии и
общество. - 2001. - № 1. – С.137 – 149.
24. Афанасьев А.Н., Войт Н.Н., Канев Д.С. разработка учебнометодического наполнения модели предметной области интеллектуальной
обучающей систем на примере САПР КОМПАС // Информатика и
вычислительная техника: сборник научных трудов. - Ульяновск: УлГТУ, 2010.
– С. 410 – 413.
25. Афанасьев
А.Н.,
Войт
Н.Н.
Организация
когнитивной
автоматизированной обучающей системы (КАОС) промышленных пакетов
САПР // Обозрение прикладной и промышленной математики. – 2009.– Т. 16. В.
5. – С. 804 – 805.
26. Афанасьев А.Н., Войт Н.Н. Разработка и исследование моделей
автоматизированной обучающей системы САПР // Автоматизация процессов
управления. – 2009 – №4(18). – С. 77 – 85.
27. Башмаков, А.И., Башмаков И.А. Разработка компьютерных учебников
и обучающих систем. - М.: Информационно-издательский дом "Филинъ", 2003,
– 616 с.
89
28. Башмаков И.А., Рабинович П.Д. Анализ моделей семантических сетей
как математического аппарата представления знаний об учебном материале
// Справочник. Инженерный журнал. – 2002.– №7. – С.55 – 60.
29. Башмаков И.А., Рабинович П.Д. Модель семантической сети для
представления учебного материала в компьютерных обучающих средствах
// Справочник. Инженерный журнал. – 2002. – №8. – С.61 – 64.
30. Брусиловский, П. Л. Адаптивные обучающие системы в World Wide
Web: обзор имеющихся в распоряжении технологий [Электронный ресурс] / П.
Л.
Брусиловский
–
http://ifets.ieee.org/russian/depository/WWWITS.html,
Режим
доступа:
свободный. — Загл. с
экрана. — Яз.рус.
31. Буч Г.,Рамбо Д., Джекобсон А. Язык UML. – М.: ДМК, 2000. – 432с.
32. Войт Н.Н., Канев Д.С. Графический конструктор модели предметной
области САПР // Информатика и вычислительная техника: сборник научных
трудов. - Ульяновск: УлГТУ, 2010. – С. 410 – 413.
33. Войт
Н.Н.,
Канев
Д.С.
Интеллектуальная
автоматизированная
обучающая система в САПР КОМПАС // Труды Всероссийской конференции с
элементами научной школы для молодежи «Проведение научных исследований
в области обработки, хранения, передачи и защиты информации». – Ульяновск:
сборник научных трудов. В 4 т. Т. 3. УлГТУ, 2009. – С. 410 – 413.
34. Войт Н. Н. Разработка методов и средств адаптивного управления
процессом обучения в автоматизированном проектировании: автореф. дис.
канд. техн. наук. - Ульяновск, 2009. – 18 с.
35. Вудс У.А. Основные проблемы представления знаний // ТИИЭР. 1986. – Т. 74. – № 10. – С. 32 - 47.
90
36. Вышнепольский
И.С.
Техническое
черчение:
Учебник
для
профессиональных учебных заведений – 6-е изд., испр – М.: Высш. шк., 2003. –
219 с.
37. Ганин Н. Б. Современный самоучитель работы в КОМПАС-3D V10:
Учебник для вузов. – М.: ДМК-Пресс, 2009. – 560 с.
38. Ганин Н. Б. Создаем чертежи на компьютере в KOMIIAC-3D LT. —
М.:ДМК Пресс, 2005. – 184 с: ил. (Серия «Проектирование»).
39. Грекул, Владимир Иванович. Проектирование информационных
систем:
курс
лекций:
учеб.
пособие.
–
М.:
Интернет-Университет
Информационных Технологий: Бином, Лаборатория знаний, 2005. – (Основы
информационных технологий). – 299 с.: табл. – ISBN 5-9556-0033-7.
40. Дейтел, Харви М. Как программировать на Java / Дейтел Х. М.,
Дейтел П. Дж.; пер. с англ. под ред. В. В. Тимофеева. - М.: БИНОМ, 2006. – Кн.
2: Файлы, сети, базы данных. 663 с.: ил. - ISBN 5-9518-0127-3.
41. Заказчики АСКОН [Электронный ресурс]. — Электрон, дан. – [Б.м],
[1998]. — Режим доступа: http://ascon.ru/clients/, свободный. – Загл. с экрана. –
Яз.рус.
42. Иванова Н.Ю.,Романова Е.Б. Проектирование печатных плат в САПР
p-cad-2002. – Санкт-Петербург: СПб: СПбГУИ ТМО,2007. – 118с.
43. Кидрук М. И. Компас-3D V10 на 100% (+ CD-ROM). – СПб. :Питер,
2009. – 560 с.
44. Крисилов В.А., Побережник С.М., Тарасенко Р.А. Сравнительный
анализ моделей представления знаний в интеллектуальных системах // Труды
ученых Одесского политехнического университета. – Одесса, 1998 – №2(6).
http://www.nbuv.gov.ua/Articles/OSPU/opu_98_2/1_14.htm
91
45. Кудрявцев Е.М. КОМПАС-3D. Проектирование в машиностроении:
Учебник для вузов. – М.: ДМК-Пресс, 2009. – 440 с.
46. Минский, Марвин. Фреймы для представления знаний: пер. с англ. /
Минский М.; под ред. Ф. М. Кулакова. – М.: Энергия, 1979. – 151 с.: черт.
47. Норенков, И П. Основы автоматизированного проектирования:
Учебник для вузов. – М.: МГТУ, 2000. – (Информатика в техническом
университете). – 360 с.
48. Ноутон П., Шилдт Г. Java 2. – СПб.: БХВ-Петербург, 2008. – 1072 c.
49. Олкконен Е. А. Модели
интеллектуальных обучающих
представления
системах //
знаний
Прикладная
в
языковых
математика
и
информатика: труды Петрозаводского государственного университета. 1997.
№6. – С. 168 – 182.
50. Рабинович П. Д. Исследование и разработка моделей, алгоритмов и
программного обеспечения в компьютерных обучающих системах: автореф.
дис. канд. техн. наук. – М., 2005. – 24 с.
51. Российская Федерация. Законы. Об информации, информационных
технологиях и о защите информации [Электронный ресурс]: федер. закон от 27
июля 2006 г. N 149-ФЗ: [принят Гос. Думой 8 июля 2006 г.: одобр. Советом
Федерации
14
июля
2006
г.].
–
Режим
доступа:
http://www.complexdoc.ru/ntdpdf/543161/ob_informatsii_informatsionnykh_tekhnol
ogiyakh_i_o_zashchite_informatsii.pdf, свободный.
52. Рыбина Г. В. Обучающие интегрированные экспертные системы:
некоторые итоги и перспективы // Искусственный интеллект и принятие
решений. – 2008. – № 1. – С.22 – 46.
53. Скрэгг Г. Семантические сети как модели памяти // Новое в
зарубежной лингвистике. - М.: Радуга, 1983. - Вып. 12. – С. 228 - 271.
92
54. Стелтинг С., Маасен О. Применение шаблонов в Java. – М.: Вильямс,
2002. – 576 c.
55. Фаулер, Мартин. UML. Основы: краткое рук. по стандартному языку
объектного моделирования. – 3-е изд. – СПб.: Символ, 2005. – 184 с.: ил., диагр.
- ISBN 5-93286-060-X.
56. Шлеер
С.,
Меллор
С.
Объектно-ориентированный
анализ:
моделирование мира в состояниях. – Пер. с англ. – Киев.: Диалектика, 1993. –
240 c.
57. Экспертные системы: принципы работы и прим.: пер. с англ. / А.
Брукинг [и др. ]; под ред. Р. Форсайта. - М.: Радио и связь, 1987. –
(Кибернетика). – 220 с.:
58. Элти, Джим. Экспертные системы: концепции и примеры: пер. с англ.
– М.: Финансы и статистика, 1987. – 190 с.: ил.
59. РОСПАТЕНТ: СВИДЕТЕЛЬСТВО о государственной регистрации
программы для ЭВМ № 2010613515 «Графический конструктор модели
предметной области САПР», Москва. 2010.
93
Приложение
ImportXML.java
//Класс для импорта модели предметной области из XML файла.
package IAOS;
import java.awt.Point;
import java.io.File;
import java.util.Hashtable;
import java.util.Vector;
import java.util.logging.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class ImportXML {
//Имяфайла
String xmlFile;
// Модельназаначения
Model model;
public ImportXML(String xmlfile)
{
this.xmlFile = xmlfile;
}
//Информация о ассоциативной памяти
class AssInfo {
public int NodeId;
public int ParentId;
public int Count;
}
Hashtable<Object, ModelNode> dictNode = new Hashtable<Object, ModelNode>();
Vector<ModelNode> topNodes = new Vector<ModelNode>();
Vector<Point> args = new Vector<Point>();
Vector<AssInfo> ass = new Vector<AssInfo>();
//Получение параметров объекта проектирования
String param(Element e) {
String s = "<br/><br/>";
94
NodeList list = e.getElementsByTagName("Params");
list = ((Element)list.item(0)).getElementsByTagName("Param");
if (list.getLength() == 0) return s;
Node n = list.item(0);
while(n != null) {
if (n.getNodeType() == Node.ELEMENT_NODE) s += n.getTextContent() + "<br/>";
n = n.getNextSibling();
}
return s;
}
//Парсерузлов
void ParseNode(Node n, ModelNode node) {
while (n != null) {
if (n.getNodeType() != Node.ELEMENT_NODE) {
n = n.getNextSibling();
continue;
}
if (n.getNodeName().equals("Nodes"))
ParseNode(n.getChildNodes(), node.getChildNodesThis());
n = n.getNextSibling();
}
}
//Разбормассиваузлових XML файла
void ParseNode(NodeList list, Vector<ModelNode> nodes) {
for(int i = 0; i < list.getLength(); i++) {
Node n = list.item(i);
if (n.getNodeType() != Node.ELEMENT_NODE) continue;
Element e = (Element)n;
int id = Integer.parseInt(e.getAttribute("Id"));
int next = Integer.parseInt(e.getAttribute("Next"));
String name = (String)e.getAttribute("Name");
ModelNode node = model.addNode(0, 0);
if (next != 0)
95
node.Tag = next;
node.setName(name);
nodes.add(node);
dictNode.put(id, node);
//e.getChildNodes()
String descr =
e.getElementsByTagName("Description").item(0).getTextContent().replaceAll("\n",
"<br/>");
node.setContent(descr + "\n\n" + param(e));
ParseNode(n.getFirstChild(), node);
}
}
//Построениеспискакорневыхузлов
void extractNodes(Vector<ModelNode> list, ModelNode top) {
for(ModelNode node : list) {
if (top != null) {
AggregationRelation ar = new AggregationRelation(node, top);
model.getAggregationRelations().add(ar);
}
extractNodes(node.getChildNodesThis(), node);
}
}
//Конечная обработка импортируемых узлов
void Finish() {
extractNodes(topNodes, null);
for (ModelNode node : model.getNodes()) {
if (node.Tag != null) {
node.setArrowRelation(dictNode.get(node.Tag));
}
node.Tag = null;
}
for(Point p : args) {
ModelNode from = dictNode.get(p.x);
ModelNode to = dictNode.get(p.y);
96
from.setAggregationRelation(to);
}
for(AssInfo p : ass) {
ModelNode parent = dictNode.get(p.NodeId);
ModelNode node = parent.getChildNodesThis().elementAt(0);
//dictNode.get(p.NodeId);
int count = p.Count - 1;
AssoctiationRelation as =
model.addAssotionRelationType(parent.getName());
as.addNode(node);
for(int i = 0; i < count; i++) {
ModelNode cp = model.addNode(0, 0, node.getName());
cp.setContent(node.getContent());
as.addNode(cp);
cp.setAggregationRelation(parent);
}
}
PlanerModel pm = new PlanerModel(model);
pm.doPlaner();
}
// Импортиерархическихсвязей
void parseAggrRelations(NodeList list) {
for(int i = 0; i < list.getLength(); i++) {
Node n = list.item(i);
if (n.getNodeType() != Node.ELEMENT_NODE) continue;
Element e = (Element)n;
int x = Integer.parseInt(e.getAttribute("From"));
int y = Integer.parseInt(e.getAttribute("To"));
args.add(new Point(x, y));
}
}
// Импортассоциативныхсвязей
97
void parseAssocRelations(NodeList list) {
for(int i = 0; i < list.getLength(); i++) {
Node n = list.item(i);
if (n.getNodeType() != Node.ELEMENT_NODE) continue;
Element e = (Element)n;
AssInfo a = new AssInfo();
a.NodeId = Integer.parseInt(e.getAttribute("Node"));
a.Count = Integer.parseInt(e.getAttribute("Count"));
a.ParentId = Integer.parseInt(e.getAttribute("Parent"));
ass.add(a);
}
}
// Парсер XML документа
void parseDoc(Document doc) {
Element e = doc.getDocumentElement();
parseAggrRelations(e.getElementsByTagName("Aggregations").item(0).getChildNodes
());
parseAssocRelations(e.getElementsByTagName("Assoces").item(0).getChildNodes());
NodeList list = e.getElementsByTagName("Nodes");
ParseNode(list.item(0).getChildNodes(), topNodes);
Finish();
}
// Импортмодели
public String Import(Model model) {
try {
this.model = model;
DocumentBuilderFactory factory
DocumentBuilderFactory.newInstance();
=
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File(xmlFile));
parseDoc(document);
return null;
} catch (Exception ex) {
Logger.getLogger(ImportXML.class.getName()).log(Level.SEVERE, null, ex);
98
return ex.getMessage();
}
}
}
PlanerModel.java
//Класс обеспечивает удобное расположение узлов на экране
package IAOS;
import java.util.*;
public class PlanerModel {
Model model;
public PlanerModel(Model model) {
this.model = model;
}
//Координатаабциссузла src
public int leftPos(ModelNode src) {
if (src == null) return 20;
return src.getX() + Math.max(src.getWidth(), 7 * src.getName().length()) + 20;
}
public void leftPos(ModelNode src, ModelNode dest) {
int x = leftPos(src);
dest.SetCoord(x, src.getY());
}
//Горизонтальноерасположениеузлов
public ModelNode horisontal(Vector<ModelNode> list, int x, int y) {
ModelNode lastNode = null;
for(ModelNode node : list) {
if (lastNode == null) node.SetCoord(x, y);
else leftPos(lastNode, node);
lastNode = node;
}
return lastNode;
}
99
//Очиститьпозициузлов
public void clearPos() {
for(ModelNode node : model.getNodes()) {
node.SetCoord(0, 0);
node.Tag = new NodeInfo();
}
}
Vector<ModelNode> topList;
//Формирование списка корневых узлов
public void topList() {
topList = new Vector<ModelNode>();
for(AggregationRelation ar : model.getAggregationRelations()) {
info(ar.sourceNode).isChild = true;
}
for(ModelNode node : model.getNodes()) {
if (!info(node).isChild) topList.add(node);
}
}
ModelNode maxNodeHLine(ModelNode n1, ModelNode n2) {
if (leftPos(n1) > leftPos(n2)) return n1;
else return
n2;
}
ModelNode minNodeHLine(ModelNode n1, ModelNode n2) {
if (leftPos(n1) < leftPos(n2)) return n1;
else return n2;
}
HashMap<Integer, Integer> maxRightOffset = new HashMap<Integer, Integer>();
int maxYg = 0;
int maxXg = 0;
public void setCoord(ModelNode node, int x, int y) {
x -= offsetX;
y += offsetY;
Integer maxX = maxRightOffset.get(y);
100
if (maxX == null) maxX = 0;
if (maxX > x) x = maxX;
node.SetCoord(x, y);
if (maxX < leftPos(node)) maxRightOffset.put(y, leftPos(node));
if (y > maxYg) maxYg = y;
if (x > maxXg) maxXg = x;
}
int levelY = 100;
int levelAsY = 50;
int countPart = 0;
boolean inPart = false;
int offsetX = 0;
int offsetY = 0;
//Расположение узлов в виде дерева
ModelNode planerTree(ModelNode top, int x, int y) {
if (info(top).Set != null ) return info(top).Set;
if (top.getChildNodesThis().isEmpty()) {
AssoctiationRelation as = top.getAssoctiationRelation();
if (as != null && as.getRepresentNode() != top) {
ModelNode pr = as.getRepresentNode();
if (info(pr).nextAssoc != null)
setCoord(top, info(pr).nextAssoc.getX(), info(pr).nextAssoc.getY() + levelAsY);
else if (pr.getChildNodesThis().isEmpty()) {
setCoord(top, pr.getX(), pr.getY() + levelAsY);
}
else
setCoord(top, x, y);
info(pr).nextAssoc = top;
}
else
setCoord(top, x, y);
info(top).Set = top;
101
return top;
}
Vector<ModelNode> list = top.getChildNodesThis();
ModelNode minChildNode = list.get(0);
ModelNode bufNode = minChildNode;
ModelNode maxChildNode = minChildNode;
ModelNode maxNode = minChildNode;
int lx = x;
int i = 0;
boolean sk = top.getName().startsWith("Эскиз");
int countH = (int) Math.round(Math.sqrt(list.size() / 0.75));
for(ModelNode node : list) {
boolean part = false;
if (!inPart) {
part = node.getContent().startsWith("Чтобыначатьпостроение");
if (part) {
inPart = true;
countPart++;
if (countPart == 5) {
//offsetY = maxYg;
//offsetX = maxXg;
maxXg = 0;
}
}
}
if (sk)
bufNode = planerTree(node, lx, y + levelY + (2 * levelY * (i / countH)));
else
bufNode = planerTree(node, lx, y + levelY);
if (sk && (i % countH == countH - 1)) lx = x;
else
lx = leftPos(bufNode);
102
if (part)
inPart = false;
maxChildNode = maxNodeHLine(maxChildNode, node);
minChildNode = minNodeHLine(minChildNode, node);
maxNode = maxNodeHLine(maxNode, bufNode);
i++;
}
int rx = maxChildNode.getX() + maxChildNode.getWidth();
int mx = rx - minChildNode.getX();
setCoord(top, minChildNode.getX() + mx / 2 - top.getWidth() / 2 , y);
//top.SetCoord(minChildNode.getX() , y);
info(top).Set = maxNode;
return maxNode;
}
//Расположениеузловввидедерева
void planerTree(Vector<ModelNode> list, int x, int y) {
if (list.isEmpty()) return;
ModelNode first = list.get(0);
ModelNode last = first;
int lx = x;
for(ModelNode node : list) {
last = planerTree(node, lx, y + 100);
lx = leftPos(last);
}
}
NodeInfo info(ModelNode node){
return (NodeInfo)node.Tag;
}
//Начать процесс расположения узлов
public void doPlaner() {
clearPos();
//loadStruct();
103
topList();
planerTree(topList, 20, 20);
for(AssoctiationRelation ar : model.getAssoctiationRelations()) {
ar.sortNode();
}
}
}
WebBrowser.java
//Формирование и просмотр содержимого узла
package IAOS;
import IAOS.Controls.JModelPanel;
import com.hexidec.ekit.EkitCore;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.io.*;
import java.util.Collection;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import org.apache.commons.lang.StringEscapeUtils;
public class WebBrowser extends JFrame {
JEditorPane jEditorPane;
JScrollPane jScrollPane;
Model model;
private JModelPanel panel;
static final String protocolNode = "node://";
public int getNumberNode(ModelNode node) {
return model.getNumberNode(node);
}
//Получениесодрежимогоузла
public String getContentNode(int number) {
ModelNode node = model.getNode(number);
panel.scrollToNode(node);
104
return getContentNode(node);
}
//Получениеструктурыузла
String getNodeStructure(ModelNode parent) {
StringBuilder sb = new
StringBuilder("<h1>").append(parent.getFullName()).append("</h1>");
sb.append("<h3>Структура:</h3>");
if (parent.isChildEmpty()) return sb.toString();
sb.append("\n<ol>\n");
parent.sortChildNodes();
for (ModelNode node : parent.getChildNodes()) {
sb.append("\n<li><a href=\"").append(WebBrowser.protocolNode);
sb.append(getNumberNode(node)).append("\">");
sb.append(node.getFullName()).append("</a>").append("</li>");
}
sb.append("</ol>");
return sb.toString();
}
//Формированиессылки
String getLink(ModelNode node) {
StringBuilder sb = new StringBuilder("<a
href=\"").append(WebBrowser.protocolNode);
sb.append(getNumberNode(node)).append("\">");
sb.append(node.getFullName()).append("</a>");
return sb.toString();
}
//Получение родителй узла
String getNodeParent(ModelNode child) {
StringBuilder sb = new StringBuilder("<h3>Родители:</h3>");
Collection<ModelNode> parentNodes = child.parentNodes();
if (parentNodes.isEmpty()) return sb.toString();
sb.append("\n<ol>\n");
for (ModelNode node : parentNodes) {
sb.append("\n<li><a href=\"").append(WebBrowser.protocolNode);
105
sb.append(getNumberNode(node)).append("\">");
sb.append(node.getFullName()).append("</a>").append("</li>");
}
sb.append("</ol>");
return sb.toString();
}
//Получениесодрежимогоузла
String getNodeContent(ModelNode parent) {
String dir = System.getProperty("user.dir").replace('\\', '/') + "/";
return "<h3>Содержание:</h3>" + parent.getContent().replaceAll("src=\"",
"src=\"file://localhost/" + dir);
}
//Описаниеассоциативнойсвязиузла
String getNodeAssociationContent(ModelNode parent) {
if (parent.getAssoctiationRelation() == null) {
return "<h3>Ассоциация: </h3>";
}
AssoctiationRelation ar = parent.getAssoctiationRelation();
StringBuilder sb = new StringBuilder("<h3>Ассоциация:
").append(ar.getName()).append("</h3>");
sb.append("\n<ol>\n");
for (ModelNode node : ar) {
sb.append("\n<li><a href=\"").append(WebBrowser.protocolNode);
sb.append(getNumberNode(node)).append("\">");
sb.append(node.getFullName()).append("</a>").append("</li>");
}
sb.append("</ol>");
return sb.toString();
}
//Описаниеиерархическихсвязейузла
String getNodeAggregationContent(ModelNode node) {
if (node.getPreviousNode() == null &&
node.getNextNode() == null) return "";
StringBuilder sb = new StringBuilder("<br/><hr/>");
if (node.getPreviousNode() != null) {
106
sb.append("Предыдущий: ").append(getLink(node.getPreviousNode()));
if (node.getNextNode() != null) sb.append("<br/>");
}
if (node.getNextNode() != null) {
sb.append("Следующий: ").append(getLink(node.getNextNode()));
}
return sb.toString();
}
//Описание порядковых связей узла
String getNodeStepContent(ModelNode parenNode) {
if (parenNode.isChildEmpty()) return "";
ModelNode node = parenNode.getChildNodes().firstElement();
if (node.getNextNode() == null && node.getPreviousNode() == null) return "";
ModelNode bufNode = node;
while (bufNode != null && parenNode.getChildNodes().contains(bufNode)) {
node = bufNode;
bufNode = bufNode.getPreviousNode();
}
StringBuilder sb = new StringBuilder("<br/>Выполнитеследующиепункты:
<br/><ol>\n");
while(node != null) {
sb.append("<li>").append(getLink(node)).append("</li>");
node = node.getNextNode();
}
sb.append("</ol>");
return sb.toString();
}
//Наполнениеузла
public String getContentNode(ModelNode node) {
StringBuilder sb = new StringBuilder(getNodeStructure(node));
sb.append(getNodeParent(node));
sb.append(getNodeAssociationContent(node));
sb.append(getNodeStepContent(node));
107
sb.append(getNodeAggregationContent(node));
sb.append(getNodeContent(node));
String txt = StringEscapeUtils.unescapeHtml(sb.toString());
try {
FileWriter fw = new FileWriter("1.txt");
fw.write(txt);
fw.close();
} catch (IOException ex) {
Logger.getLogger(WebBrowser.class.getName()).log(Level.SEVERE, null, ex);
}
return txt;
}
public WebBrowser(Model model){
this.model = model;
jEditorPane = new JEditorPane();
jEditorPane.setEditable(false);
jScrollPane = new JScrollPane(jEditorPane);
jEditorPane.setContentType("text/html");
getContentPane().add(jScrollPane);
setTitle("Просмотрконтента");
setSize(800, 600);
setLocationRelativeTo(null);
jEditorPane.addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED) return;
String href = e.getDescription();
if (href.startsWith(protocolNode)) {
String nNode = href.substring(protocolNode.length());
try {
int n = Integer.parseInt(nNode);
jEditorPane.setText(getContentNode(n));
108
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Узелподномером " + nNode + " ненайден",
"Ошибка", JOptionPane.ERROR_MESSAGE);
}
}
}
});
}
public void setHTML(String html) {
String h = html.replaceAll("src=\"", "src=\"file://localhost/");
jEditorPane.setText(h);
}
public void setNode(ModelNode node) {
jEditorPane.setText(getContentNode(node));
}
public static void main(String args[]) throws IOException {
WebBrowser wb = new WebBrowser(null);
wb.setHTML("<img src=\"D:/tmp.gif\"");
wb.setVisible(true);
}
/**
* @return the panel
*/
public JModelPanel getPanel() {
return panel;
}
/**
* @param panel the panel to set
*/
public void setPanel(JModelPanel panel) {
this.panel = panel;
}
}
109
Entity\AssocRelation.java
//Отображение ассоцитивных связей в БД
package IAOS.Entity;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "assocrelation")
@NamedQueries({
@NamedQuery(name = "AssocRelation.findAll", query = "SELECT a FROM
AssocRelation a"),
@NamedQuery(name = "AssocRelation.findById", query = "SELECT a FROM
AssocRelation a WHERE a.id = :id"),
@NamedQuery(name = "AssocRelation.findByName", query = "SELECT a FROM
AssocRelation a WHERE a.name = :name")})
public class AssocRelation implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
110
@Column(name = "name")
private String name;
@OneToMany(mappedBy = "assocId")
private Collection<Node> nodeCollection;
@OneToMany(mappedBy = "assocId1")
private Collection<Node> nodeCollection1;
@JoinColumn(name = "modelId", referencedColumnName = "id")
@ManyToOne(optional = false)
private Model modelId;
@JoinColumn(name = "modelId", referencedColumnName = "id")
@ManyToOne(optional = false)
private Model modelId1;
public AssocRelation() {
}
public AssocRelation(Integer id) {
this.id = id;
}
public AssocRelation(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
111
public Collection<Node> getNodeCollection() {
return nodeCollection;
}
public void setNodeCollection(Collection<Node> nodeCollection) {
this.nodeCollection = nodeCollection;
}
public Collection<Node> getNodeCollection1() {
return nodeCollection1;
}
public void setNodeCollection1(Collection<Node> nodeCollection1) {
this.nodeCollection1 = nodeCollection1;
}
public Model getModelId() {
return modelId;
}
public void setModelId(Model modelId) {
this.modelId = modelId;
}
public Model getModelId1() {
return modelId1;
}
public void setModelId1(Model modelId1) {
this.modelId1 = modelId1;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
112
// TODO: Warning - this method won't work in the case the id fields are
not set
if (!(object instanceof AssocRelation)) {
return false;
}
AssocRelation other = (AssocRelation) object;
if ((this.id == null && other.id != null) || (this.id != null &&
!this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "IAOS.Entity.AssocRelation[id=" + id + "]";
}
}
SessionBean\AssocRelationFacade.java
//Enterprise JavaBean обеспечивающий работу с ассоциатиынми связями.
package IAOS.SessionBean;
import IAOS.Entity.AssocRelation;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
@Stateless
public class AssocRelationFacade implements AssocRelationFacadeLocal,
AssocRelationFacadeRemote {
@PersistenceContext(unitName = "IAOS-ejbPU")
private EntityManager em;
113
//Созданиесвязи
public void create(AssocRelation assocRelation) {
em.persist(assocRelation);
}
//Редактированиесвязи
public void edit(AssocRelation assocRelation) {
em.merge(assocRelation);
}
//Удалениесвязи
public void remove(AssocRelation assocRelation) {
em.remove(em.merge(assocRelation));
}
//Поисксвязи
public AssocRelation find(Object id) {
return em.find(AssocRelation.class, id);
}
//Получениевсехсвязи
public List<AssocRelation> findAll() {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(AssocRelation.class));
return em.createQuery(cq).getResultList();
}
//Получениесвязейиздиапазона
public List<AssocRelation> findRange(int[] range) {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(AssocRelation.class));
Query q = em.createQuery(cq);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
return q.getResultList();
}
//Колтчествосвязей
public int count() {
114
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
Root<AssocRelation> rt = cq.from(AssocRelation.class);
cq.select(em.getCriteriaBuilder().count(rt));
Query q = em.createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
}
}
Download