4. Салибекян С.М., Панфилов П.Б. ОА-архитектура - новый подход к созданию объектных систем // Объектные системы - 2011: материалы III Международной научно-практической конференции (Ростов-на-Дону 10-12 мая 2011 г.) / Под общ. ред. П.П. Олейника. - Ростов-на-Дону, 2011. - С. 73-79 URL: http://objectsystems.ru/files/Object_Systems_20n_Proceedings.pdf
5. Салибекян С.М., Панфилов П.Б. Перспективная суперкомпьютерная система на основе объектно-атрибутной модели вычислений с управлением потоком данных / Международная конференция «Развитие суперкомпьютерных и грид-технологий в России» в рамках «Второго Московский Суперкомпьютерного форума» Россия, Москва, ВВЦ 26-27 октября 2011 года URL: http://www.hpc-platform.ru/tiki-download_file.php?fileId=82
6. Салибекян С.М., Панфилов П.Б. Объектно-атрибутный подход к построению интеллектуальных систем // Нейрокомпьютеры: разработки и применение. 2
УДК 004.4
ИЕРАРХИЯ КЛАССОВ МЕТАМОДЕЛИ ОБЪЕКТНОЙ СИСТЕМЫ
Олейник Павел Петрович, к.т.н., Системный архитектор программного обеспечения, ОАО «Астон»,
Россия, Ростов-на-Дону, [email protected]
В настоящее время наиболее часто используемыми являются объектноориентированные языки программирования, популярность которых обусловлена наличием ряда хорошо известных преимуществ [ 1].
В данной статье подробно рассматривается иерархия классов, используемая для представления метамодели объектной системы, которая была апробирована и успешно применяется в корпоративном решении, ключевой особенностью которого является предоставление возможности добавления новых классов, описывающих сущности предметной области, без перекомпиляции приложения. Данная задача возникла из-за необходимости самостоятельного расширения функционала (путём добавления как новых атрибутов существующих классов, так и добавлением производных классов) опытными пользователями системы. Для решения задачи потребовалось разработать ряд структур, которые бы позволили сохранять информацию об имеющихся классах предметной области и о наличии в них атрибутов. Т.е. необходим механизм представления метамодели объектной системы для создаваемой среды разработки приложений.
Решение любой задачи начинается с формирования критериев оптимальности (КО), которым должна соответствовать полученная реализация. Для рассматриваемой задачи были сформулированы следующие критерии:
1. Разработать единую иерархию, позволяющую представить ключевые элементы объектно-ориентированной парадигмы, такие как классы, атрибуты, наследование (одиночное и множественное), ассоциации и т.п.
2. Предусмотреть возможность предоставления базовых (системных) классов, в которых реализован наиболее общий функционал
3. Разработать иерархию атомарных литеральных типов, которые представляют наиболее распространенные типы данных современных объектно-ориентированных языков программирования.
Рассмотрим требования каждого критерия более подробно. Реализация требования КО1 позволит унифицировано обрабатывать все элементы метамодели (которые представляются в виде экземпляров выделенных классов) с помощью различных структур данных, например с помощью итераторов при формировании цикла. При этом пользователю предоставляется возможность применять хорошо зарекомендовавшие себя объектно-ориентированные подходы, как например, наследование и организация ассоциаций.
КО2 требует наличия системных (встроенных) классов. В общем случае пользователи не могут модифицировать поведение этих классов, но имеют возможность наследоваться от
37
них. При этом наличие множественного наследования предоставляет широкие возможности моделирования задач прикладной предметной области.
Современные объектно-ориентированные языки программирования имеют в своем арсенале богатый набор встроенных атомарных литеральных типов. Поэтому необходимо предоставить подобный функционал в разрабатываемой системе, что соответствует требованию КО3. Так как добавлять атрибуты классов будут опытные пользователи, которые имеют слабые представления о принципах проектирования информационных систем, имеет смысл сократить количество атомарных встроенных типов данных, что позволит упростить процесс проектирования и уменьшить количество проблем, возникающих при рефакторинге [6], когда пользователь изменяет тип данных атрибута.
Сама идея представления метамодели объектной системы не нова. Так, в работах, посвященных стандарту объектно-ориентированных баз данных ODMG 3.0 [2,3], и в работах, описывающих язык запросов SQL:2003 [4] имеются определённые решения. Но первый стандарт (ODMG 3.0) в значительной степени ориентирован лишь на удобство обработки метамодели с помощью встроенных коллекций и итераторов, а второй (SQL:2003) ориентирован на представление сложных типов данных в ячейках таблицы, что обусловлено его направленность на реляционные БД.
По выше описанным причинам было принято решение самостоятельно разработать иерархию классов, полностью удовлетворяющую поставленной задаче. На рисунке 1 в виде диаграммы классов унифицированного языка UML [5] представлена разработанная иерархия.
CaptionedMetaModelRem
Abstract Class -fr MetaModelltem
T ~J
©" \A
MetaModelltem
Abstract Class ■+ TypedNameObject
Class
Abstract Class -fc CaptionedMetaModelltem
Simplelnh еfit ал се Class © 1 SystemAttribute ©
Abstract Class J Class
Class i ■+ AbstractAttribute
l )
"2Г
• AbstractAttrijute ©
| Abstract Class I -*■ CaptionedMetaModelltem
■
Association ©
Class
^"CaptionedMetaModelltem
RightEnd ^ LeftEnd
V ' ^ '
CustomAttrfbute,,, ©
Abstract Class ! W Attributes
-*■ Class j---------
Сол crete A {tribute ©
_ Abstract Class ■+ AbstractAttribute
LanguageConstructionClass
Class
■+ SimplelnheritanceClass
©
FileDataAttribute £
Class
■+ SimpleTypedAttribute-=I...__
\ \ * BaseClasses '
DomainClass © Class ■+ CustomAttributedC... v J
.
AssociationEnd ©1
Class
-*■ RootObject
J
■ Typ e dA ttrsb ute < TDefa uit Value> ©
j Generic Abstract Class 3 ConcreteAttribute
1_
Simple TypedAttribute <TDefauftVakje>
Generic Abstract Class ^TypedAttributec:TDeFaultValue>
©
DateTimeAttribute ©"^
Class
■+ SimpleTypedAttribUte*:..
ImageAttribute
Class
■+ SimpleTypedAttribute<I...
V J
SymbolAttribute ©
Class
■+ SimpleTypedAttribute<c...
I
Ciasse dValueA ttrib ute < TVafue Ciass>
Generic Abstract Class
^"TypedAttribute<IBaseR.unTimeDomainClass>
TypeAttribute
Class
-fr T ypedAttribute<T ype>
©
© 1
^ Attribute
( TypedVaiueRttgedAttriitite<„r © DomainClassAttribute ©
■ Generic Abstract Class Class
! -t1 SimpleTypedAttribute<TDefaultValue> ~t> ClassedValueAttribute<Doma...
1 J
LogicalAttribute ©
Class
-fc SimpleTypedAttribute-=b...
StringAttribute ©j
Class
SimpleTypedAttribute«s...
N. J
DecimalAttribute ©
Class
-t TypedValueRangedAtbi...
IntAttribute G
Class
■+ TypedValueRangedAHr..
Рис. 1 - Иерархия классов метамодели объектной системы
38
Базовым классом рассматриваемой иерархии является MetaModelltem, который содержит общие свойства и методы, характерные для всех элементов метамодели. Основное свойство описываемого класса содержит тип самого элемента и используется многократно для получения метаинформации. Элементы метамодели, которые должны иметь название и заголовок (класс, атрибут класса, ассоциация и т.п.), должны быть унаследованы от CaptionedMetaModelItem. Для представления различных классов системы используется корневой абстрактный класс Class.
В системе предусмотрено два вида наследования. Первое предполагает простое наследование классов без возможности добавления атрибутов пользователем. Данный тип наследования может использоваться классами лингвистического транслятора, который предполагает создание иерархии классов, представляющей элементы русского языка (например, морфемы). Для решения описанной задачи используется абстрактный класс SimpleInheritanceClass.
Для реализации классического наследования, предполагающего добавление, как унаследованных классов, так и определения имеющихся атрибутов, используются производные от CustomAttributedClass классы. В частности, реализованный (неабстрактный) DomainClass класс используется для реализации сущностей предметной области, каждая из которых может быть унаследована от нескольких базовых. Множественное наследование позволяет проектировать более гибкие системы, автоматизирующие широкий спектр прикладных предметных областей. Например, при проектировании классов, представляющих некоторые товары, может потребоваться представить их структуру в виде дерева. Т.е. необходимо одновременно наследоваться от базового класса, представляющего товар, и от системного класса древовидной структуры.
При проектировании иерархии атомарных литеральных типов (целых чисел, строк, дробных чисел и т.п.) использовался общий подход, подробно описанный в работе [7]. Однако с целью упрощения процесса рефакторинга было принято решение о сокращении набора классов и применение параметризованных типов (Generic в языке C#). Корневым является класс AbstractAttribute, от которого унаследованы SystemAttribute и ConcreteAttribute. Первый используется для описания атрибутов системных классов, которые не могут редактироваться или добавляться пользователем. Второй представляет непосредственно атрибуты, добавляемые пользователем в режиме выполнения приложения.
Базовый параметризованный класс TypedAttribute является корневым для всех атрибутов, у которых параметр типа выступает в качестве типа данных для значения атрибута. Абстрактный класс SimpleTypedAttribute является корнем иерархии атомарных литеральных типов. В свою очередь, ClassedValueAttribute является корнем для всех атрибутов, значениями которых выступает объект определенного класса.
Для представления связей между классами используется механизм ассоциаций языка UML[5], для реализации которого выделен класс Association. В системе предусмотрена возможность описания только бинарных связей, т.к. для них проще всего определить кратность каждого участника. Поэтому для представления отдельного края ассоциации используется экземпляр класса AssociationEnd.
Рассмотрим соответствие данной иерархии выделенным ранее критериям оптимальности. Иерархия соответствует требованиям КО1, т.к. она содержит все ключевые элементы объектно-ориентированной парадигмы, такие как классы, атрибуты, ассоциации и предоставляет возможность реализации наследования (как одиночного, так и множественного). Также выполнены требования КО2, т.к. имеется возможность предоставления базовых (системных) классов, в которых реализован наиболее общий функционал. Разработанная иерархия классов, представляющая атомарные литеральные типы, которые представляют наиболее распространенные типы данных современных объектно-ориентированных языков программирования. Поэтому можно утверждать, что выполнены требования КО3.
39
В заключение отметим, что дальнейшим развитием описанной метамодели может являться добавление классов, предоставляющих механизмы фильтрации данных и элементов, позволяющих описать элементы поведения (например, правила валидации) и принципы отображения (подходы формирования графических форм приложения). Также необходимо предусмотреть возможность добавления пользователем программного кода, реализующего бизнес-логику предметной области, т.к. невозможно предусмотреть заранее весь функционал, который потребуется в прикладной предметной области.
Литература
1. Грэхем И., Объектно-ориентированные методы. Принципы и практика. 3-е издание.: Пер. с англ. - М.: Издательский дом «Вильямс», 2004. - 880 с.: ил. - Парал. тит. англ.
2. Cattell R.G., Barry D.K. The Object Data Standard:ODMG 3.0, Morgan Kaufmann Publishers,
2000, 288p.
3. Джордан Д. Обработка объектных баз данных на C++. Программирование по стандарту ODMG. : Пер. с англ. : Уч. пос. - М.:Издательский дом "Вильямс", 2001.-384с.:ил.-Парал. тит. англ.
4. Calero C., Ruiz F. and oth. An ontological approach to describe the SQL:2003 ob-ject-relational features, Ontologies for Software Engineering and Software Technology, Springer Berlin Heidelberg, 2006, 197-215pp.
5. Новиков Ф.А., Иванов Д.Ю. Моделирование на UML. Теория, практика, видеокурс. - СПб.: Профессиональная литература, Наука и Техника, 2010. - 640 с.: ил. + цв. Вклейки (+ 2 DVD).
6. Фаулер М., Бек К., Брант Д., Робертс Д., Апдайк У. Рефакторинг: улучшение существующего кода. - М: Символ-Плюс, 2008. - 432 с.: ил. - Парал. тит. англ.
7. Олейник П.П. Принципы организации иерархии атомарных литеральных типов объектной системы на основе РСУБД Microsoft SQL Server 2005, http://citforum.ru/database/articles/oleynick/
УДК 519.711
АНАЛИЗАТОР ДИАГРАММНЫХ ЯЗЫКОВ ДЛЯ MICROSOFT VISIO1
Гайнуллин Ринат Фаязович, аспирант, Ульяновский государственный технический университет,
Россия, Ульяновск, [email protected]
Брагин Дмитрий Геннадьевич, аспирант, Ульяновский государственный технический университет,
Россия, Ульяновск, [email protected]
Введение
При концептуальном проектировании автоматизированных систем широкое применение находят различные графические спецификации: сети Петри, диаграммы переходов состояний, блок-схемы и другие. В сфере разработки программного обеспечения особое место заняли методологии Rational Unified Process (RUP) и Structured Analysis and Design Technique (SADT). При проектировании в соответствии с данными методологиями активно используются графические спецификации UML и IDEF.
В проектном моделировании применяются различные графические редакторы, которые можно разделить на универсальные и специализированные. Применение универсальных редакторов сводится к созданию неформализованных схем и диаграмм, чаще всего в демонстрационных целях. К таковым можно отнести Microsoft Visio и Dia. Специализированные редакторы входят в состав инструментальных средств реализации той или иной технологии. Так, Rational Suite, Visual Paradigm for UML, ArgoUML представляют собой специализированные графические редакторы для методологии UML. Примерами редакторов семейства графических спецификаций IDEF являются BPWin, ERWin, Business Studio. Общим недостатком как универсальных, так и специализированных редакторов
1 Статья рекомендована к опубликованию в журнале "Информационные технологии"
40