Реферат: Разработка case-инструментов как Web-приложений

Разработка CASE-инструментов
как Web-приложений Владимир Юрьевич Романов,
факультет ВМК МГУ им. М.В. Ломоносова,
romsrcc@rom.srcc.msu.su, vladimir.romanov@gmail.com
В статье рассматриваются особенности разработки CASE-инструментов как web-приложений в инфраструктуре Google [1]. Благодаря использованию такой инфраструктуры для взаимодействия пользователя с CASE инструментом используется обычные Интернет браузер, а приложение и данные пользователя инструмента хранятся на сервере инфраструктуры Google. Графическая нотация унифицированного языка UML[2] используется CASE–инструментом для визуализации структуры существующих программных систем в режиме on-line, для их документирования, а также для проектирования систем с помощью графического редактора UML-диаграмм в Интернет браузере.


Введение

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

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

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

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

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

На диаграммах состава пакетов (packages) классов показывается вложенность пакетов в пакеты, а также вложенность классификаторов (классов, интерфейсов, перечислений) в пакеты. На диаграммах взаимозависимости пакетов для каждого пакета показываются все зависимости одного пакета от другого, которые возникают как следствие зависимостей между вложенными в пакеты классами. Строится также UML-диаграмма, которая показывает распределение пакетов системы по уровням. На такой диаграмме пакеты, от которых есть зависимость в других пакетах, располагаются на диаграмме на более низких уровнях иерархии.

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

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

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



Рис.1. Визуализации CASE-инструментом связей класса системы.


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


^ 3. Документирование программных систем

Анализ программной системы с помощью работающего только в режиме on-line сервиса, может быть по каким либо причинам не приемлем для пользователя инструмента. Для таких случаев CASE-инструмент предоставляет возможность генерации, в виде UML-диаграмм, документации о структуре и поведении программной системы.

В последнее время были разработаны основанные на языке XML открытые форматы для хранения документов. Данные форматы, помимо текста, позволяют хранить также в компактной векторной форме и графическую информацию, например, диаграммы на языке UML. Широкое распространение в сети Интернет получил разработанный консорциумом W3C формат векторной графики Scalable Vector Graphics[4] поддерживаемый наиболее популярными Интернет-браузерами Internet Explorer, Opera, Chrome, Mozilla FireFox. Фирмой Microsoft был предложен формат OpenXML[5] поддерживаемый в Microsoft Office. Консорциум фирм, включающий в частности, фирмы IBM и Sun, разработал формат Open Document Format (ODF) [6,7]. Формат ODF поддерживается, в частности, бесплатно распространяемым офисным приложением OpenOffice[8]. На сервере Google Docs[9] также возможно бесплатное хранение, редактирование и просмотр документов в формате ODF.

Особенность указанных форматов состоит в возможности встраивания в основанный на языке XML документ программ, написанных на скриптовых языках, например, на JavaScript. Программы имеют возможность взаимодействия с содержимым XML-документа через интерфейс Document Object Model. Сгенерированные CASE-инструментом документы не только связаны гиперссылками, они предоставляют возможность взаимодействия с пользователем, просматривающим документы с помощью мыши и клавиатуры. Таким образом, UML-диаграммы, содержащиеся в сгенерированных CASE-инструментом документах, также имеют структуру, представленную on-line сервисом CASE-инструмента. Хранение документов - диаграмм на сервере Google в хранилище документов Google Docs позволяет совместное использование единой документации распределенной группой разработчиков программной системы.


^ 4. Проектирование программных систем

Для проектирования программных систем используется редактор UML-диаграмм интегрированный в web-браузер. Для реализации такого web-интерфейса CASE-инструмента использовалась библиотека Google Web Toolkit. Особенность данной библиотеки для построения интерфейса пользователя состоит в том, что клиентская часть web-приложения может разрабатываться на языке Java, также как как и серверная часть приложения. Код клиентской части, разработанный на языке Java, транслируется в текст на языке JavaScript исполняемой на стороне клиента программы. Таким образом реализуются управляющие элементы интерфейса пользователя. Имеется возможность включения в текст клиентской части на языке Java также и native-методов, реализация которых выполнена на языке JavaScript. С помощью native-методов выполняется формирование графических элементов UML-диаграмм как элементов графики в формате SVG.

Для хранения модели проектируемой программной системы в серверной части CASE-инструмента использовалась реализация классов метамодели языка Unified Modeling Language 2.0[2] выполненная в рамках проекта Eclipse Model Development Tools (MDT) [10].

При решении задачи обратного проектирования (reverse engineering) анализ байт-кода программ, написанных на языке Java, выполнялся с помощью поставляемой в исходных текстах библиотеки Byte Code Engineering Library BCEL[11]. Данная библиотека позволяет получить более детальное представление исполняемого на виртуальной машине кода, чем это позволяет стандартный механизм Reflection[12] языка Java. В частности, эта библиотека позволяет проанализировать не только структуру классов, также и исполняемую часть методов классов.

Обратное проектирования для текстов программ на языке JavaScript выполнялось с помощью генератора компиляторов CocoR[13]. С его помощью была описана грамматика языка ECMAScript[14] – стандартизованной версии языка JavaScript. В грамматику были встроены семантические действия и сгенерирован распознаватель языка ECMAScript.

^ 5. Используемые технологий фирмы Google

Для использования инструментария Google Web Toolkit GWT[15] фирмой Google разработано дополнение среды разработки Eclipse для языка Java. Таким образом, при использовании инструментария GWT отладка клиентской и серверной части приложения на языке Java возможна в единой среде разработки.

Фирмой Google предложен инструментарий для разработки приложений расположенных на сервере - Google App Engine[4]. Фирмой Google предлагается также инфраструктура для хранения приложений на серверах Google. Разработка приложений с помощью Google App Engine в инфраструктуре Google имеет ряд достоинств. Нет необходимости сопровождения сервера пользователем приложения. Возможна публикация приложения под собственным именем в бесплатном домене appspot.com. Возможна также публикация web-приложения в собственном домене с помощью служб Google.

Следует отметить также поддержку фирмой Google разработки приложений на начальных этапах разработки web-приложений. Начать использовать App Engine можно бесплатно. Не нужно платить за приложения, использующие менее 500 МБ хранилища, а также ресурсы ЦП и трафик, достаточные для эффективного приложения, обслуживающего до пяти миллионов просмотров страниц в месяц. Включив оплату для приложения, эти ограничения повышаются, а оплата взимается только за ресурсы, использованные свыше бесплатных уровней.

6. Заключение

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

7. Ссылки

1. Инфраструктура Google. http://code.google.com/intl/ru-RU/appengine/

2. Object Management Group, UML 2.1 Superstructure Specification,

OMG document. ptc-06-04-02.pdf http://www.omg.org/uml

3. Платформа Андроид. http://developer.android.com

4. Scalable Vector Graphics (SVG). XML Graphics for the Web.

http://www.w3.org/Graphics/SVG

5. Open XML Standard ECMA-376 Office Open XML File Formats.

http://www.ecma-international.org/publications/standards/Ecma-376.htm

6. OpenDocument Format Alliance. http://www.odfalliance.org/

7. Формат Open Document для офисных приложений v1.0.
http://www.i-rs.ru/Produkty/ODF-ISO-IEC-26300-2006/Dokumentaciya

8. Open Office. http://ru.openoffice.org/

9 Google Docs http://docs.google.com

10. UML2 EMF-based implementation of the Unified Modeling Language (UMLTM) 2.x OMG metamodel for the Eclipse platform. http://www.eclipse.org/modeling/mdt/?project=uml2

11. Byte Code Engineering Library http://jakarta.apache.org/bcel/

12. Java Reflection. http://java.sun.com/developer/technicalArticles/ALT/Reflection/

13. Сompiler generator Coco/R .

http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/

14. Standard ECMA-262, ECMAScript Language Specification. 3rd edition

http://www.ecma-international.org/publications/standards/Ecma-262.htm

15. Google Web Toolkit. http://code.google.com/intl/ru-RU/webtoolkit/



еще рефераты
Еще работы по разное