Доктор Ph.D. Зиятбекова Г.З.

Университет «Туран», Казахстан

 

Моделирование компонентного программного обеспечения

Объектно-ориентированное визуальное моделирование – молодая и бурно развивающаяся область компьютерной инженерии. В начале 90-х годов по этой теме появилось много фундаментальных работ. Наибольшее влияние на формирование этой области оказали исследования Г.Буча, И. Джакобсона, Д. Рэмбо, П.Коуда, Д.Харела, Б.Селика и др., усилиями которых был создан стандарт в этой отрасли – язык UML (Unified Modeling Language) [1].

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

Главная проблема заключается в принципиальной трудности адекватной формализации процесса создания программного обеспечения (ПО). Программирование является в большой степени творчеством [2]. Буч в своей знаменитой монографии [3] часто повторяет, что его метод – не поваренная книга, имея в виду уникальность каждого проекта. Объектно-ориентированное визуальное моделирование призвано понизить сложность создания ПО, повысить удельный вес и качество анализа и проектирования. Однако, столкнувшись с проблемой формализацию процесса разработки ПО, методологи, фактически переадресовали ее создателям CASE-пакетов.

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

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

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

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

Общие методы объектно-ориентированного анализа и проектирования программного обеспечения существенно повлияли на более специализированную область компьютерной инженерии – компонентный подход к созданию ПО. Компонентность, будучи специальным частным случаем объектной ориентированности, успешно решает проблему инкапсуляции сложности. На уровне платформ программирования компонентность поддерживается широко: можно назвать ActiveX-технологии, Java Beans и т.д. Но на уровне средств визуального моделирования, предназначенных для анализа и проектирования таких систем, компонентность поддерживается слабо и неполно. В UML компонента отождествляется с классом или элементом физической структуры ПО, в ROOM (Real-Time Object-Oriented Modeling) компонента рассматривается в очень узком смысле – как “черный ящик”, способный взаимодействовать с внешним миром только через сообщения, в то время как компоненты реального ПО могут вызывать также методы друг друга и т.п.

В 1968 году на одной из конференций НАТО по проблемам разработки программного обеспечения был предложен термин “Software Engineering”. Так была названа новая научная дисциплина, объектом исследования которой являются проблемы создания больших компьютерных систем.

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

Specification and Description Language (SDL) в переводе с английского – язык спецификаций и описаний. Под спецификацией понимается точное формальное определение системы или ее части, под описанием – неформальная спецификация, иллюстрирующая тот или иной аспект системы. Описания используются на ранних этапах разработки системы или для ее документирования, спецификации – на стадии детального проектирования, и по ним предполагается автоматическая генерация программного кода. Тот факт, что для этих разных этапов разработки системы предлагается один язык, является несомненным достоинством SDL, поскольку в этом случае преодолевается проблема семантических разрывов.

Язык SDL предназначен для разработки событийно-ориентированных распределенных систем. Он развивается международным комитетом ITU с 1976 года и является одним из долгожителей в компьютерной инженерии. Есть два варианта этого языка – текстовый (SDL/PR) и графический (SDL/GR), семантика которых, за исключением некоторых тонкостей, совпадает. Основным документом по SDL является [4]. Изложение основ этого языка можно найти в русскоязычных работах [5], [6]. Кроме того имеется русский вариант сжатого изложения языков SDL и MSC (Message Sequence Chart) в [7].

Более десяти фирм в Европе (Telelogic, Verilog и т.д.) разрабатывают CASE-средства на основе SDL. Эти продукты используются многими крупными европейскими фирмами-производителями телекоммуникационных систем.

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

В работах [8], [9] вводятся дополнительные графические нотации для использования на более ранних этапах разработки системы, а также описывается процесс разработки ПО на основе SDL. Однако в настоящее время эти нотации заменены языком UML, который потеснил также и SDL. Но признано [10], что SDL языком программирования типа Java, C++ и т.д. Таким образом, SDL становится в большей степени языком спецификаций, чем описаний. Но при этом возникает проблема сосуществования UML-описаний и SDL-спецификаций.

Основными результатами данной работы являются:

o       разработка сквозного подхода к созданию программного обеспечения с помощью объектно-ориентированных CASE-пакетов – от общей методологии до технологических решений в конкретных проектов;

o       расширение модели классов UML – введение портов, добавление сообщений и атрибутов в интерфейсы с целью применения модели для проектирования компонентных систем различных видов (систем реального времени и приложений, использующих распределенные компонентные архитектуры типа COM, CORBA и т.д.);

o       апробация методологии и CASE-пакета в реальных проектах.

 

Литература:

[1] OMG Unified modeling language spesification (draft). Version 1.3R. http://www.rational.com/uml. 1999.

[2] Ф.П.Брукс мл. Как проектируются и создаются программные комплексы. Мифический человеко-месяц. М. 1979, 150 с.

[3] Booch G. Object-Oriented Analysis And Design With Application, second edition. The Benjamin/Cummings Publishing Company, Inc. 1994.

[4] ITU Recommendation Z.100: Specification and Description Language. 1993. 204 p.

[5] Бардзинь Я.М., Калкиньш А.А., Стродс Ю.Ф., Сыцко В.А. Язык спецификаций SDL/PLUS и его применения. Рига 1988, 313 с.

[6] Карабегов А.В., Тер-Микаэлян Т.М. Введение в язык SDL. Москва, Радио и связь, 1993, 184 с.

[7] Мансуров Н.Н., Майлингова О.Л. Методы формальной спецификации программ: языки MSC и SDL. Издательство АОДиалог-МГУ ”, 1998, 125 с.

[8] ITU Recommendation Z.100 – Appendices I and II: SDL Methodology Guidelines, SDL Bibliography. 1993. 129 p.

[9] Braek F., Haugen Th. Engineering Real Time Systems. Prentice Hall International (UK) Ltd. 1993. p. 398.

[10] A. Flodin. Full power with SDL and UML. Telelogic Signals N 2, 1998, www.telelogic.com