Генерація коду й зворотний інжиніринг

Короткий огляд програмних засобів для роботи з UML

ArgoUML

Argouml є відкритим програмним забезпеченням(Opensource) і поширюється під ліцензією BSD.

Argouml повністю написаний на Java і для роботи йому підходить будь-яка операційна система із установленою Java 2 JRE або JDK версії 1.4 або вище. Функціональність Argouml містить у собі:

· Підтримку специфікацій UML 1.3, 1.4, XMI(XML Metadata Interchange - стандарт OMG для обміну метаданими за допомогою мови XML) 1.0, 1.1, 1.2

· Підтримку OCL(Object Constraint Language - Об'єктна мова обмежень) для класів

· Генерацію вихідного коду Java, C++, C# і PHP

· Зворотний інжиніринг із вихідного коду й байткода Java

· Автоматичну верифікацію моделі UML (design critics)

Дозволяє працювати з наступними діаграмами:

· класів

· станів

· кооперації

· послідовності

· діяльності

· прецедентів

· об'єктів

· компонентів

· розгортання

AltovaUModel

Програмний продукт Umodel, розроблений компанією Altova, - це Uml-Редактор з функцією замкненого інжинірингу. Він підтримує UML 2.3 і реалізує кодогенерацию й зворотний реінжиніринг для мов програмування C#, VB.NET і Java. Додатково Umodel реалізує діаграми для роботи з Xml-Схемами й нотацією BPMN і реалізує плагины для Microsoft Visual Studio і Eclips.

В Altovaumodel підтримується робота з усіма діаграмами специфікації UML 2.3

Опис интерфеса

Інтерфейс Umodel містить кілька допоміжних панелей. На панелі Model Tree відображається ієрархія елементів поточної Uml-Моделі. Панель дозволяє маніпулювати елементами - видаляти, змінювати елементи, сортувати їх за заданими критеріями й т.п. На панелі Diagram Tree відображається повний список Uml-Діаграм, використовуваних у проекті. Діаграми можна відображати у вигляді загального списку або у вигляді дерева, коли діаграми згруповані по типах. Панель Favorites дозволяє вести список часто використовуваних Uml-Елементів - класів, об'єктів, асоціацій і т.п. - і мати до них швидкий доступ. Панелі Properties і Styles відображають список властивостей і стилів обраного Uml-Елемента, а панель Hierarchy - усі зв'язки обраного елемента в графічному виді або у вигляді дерева. Панель Overview відображає загальну схему поточної діаграми, панель Documentation дозволяє документувати обраний Uml-Елемент. Нарешті, панель Layers дозволяє управляти розміщенням елементів діаграми на різних шарах - точно так само, як це робиться в графічних редакторах, - створювати, видаляти шари, блокувати їх від змін і т.п. Є ще одна допоміжна панель Messages, на якій відображаються повідомлення про помилки, попередження й підказки, які програма генерує в процесі інжинірингу, перевірки синтаксису проекту й т.п.

Елементи додаються на діаграми за допомогою панелі інструментів або через контекстне меню.

Генерація коду й зворотний інжиніринг

Umodel реалізує функції замкненого інжинірингу - дозволяє генерувати код на основі Uml-Діаграм, створювати Uml-Діаграми на основі наявного коду й виконувати автоматичну синхронізацію коду й моделі. Підтримується кодогенерация для Java 1.4, Java 5.0, Java 6.0, C# 1.2, C# 2.0, C# 3.0, VB 7.1, VB8.0 і VB 9.0. Підтримується на гарному рівні - є навіть можливість використовувати узагальнені типи (generics). Для того щоб в Umodel створити новий клас і згенерувати для нього робочий код, досить виконати всього кілька кроків. Насамперед створюємо новий проект і приєднуємо до проекту Uml-Профіль, що описує синтаксис необхідного мови програмування. Далі додаємо в Uml-Модель новий клас і вказуємо його властивості й методи. Після цього створюємо новий компонент і вибираємо для нього робочу директорію - у неї будуть зберігатися файли, сгенерированные для класів цього компонента. Зв'язуємо клас і компонентів, указуючи, що клас повинен бути реалізований у цьому компоненті. У підсумку даємо команду провести перевірку синтаксису в проекті. Umodel перевіряє синтаксис, повідомляє про всі потенційні проблеми (наприклад, тип даних, що вертаються методом, не зазначений) і генерує код.

Код генерується на основі шаблонів кодогенерации, заданих в окремих файлах. Шаблони можна відредагувати - урахувати необхідні угоди про іменування, додати підтримку використання сторонніх бібліотек і т.п. Шаблони реалізовані мовою Spy programming language (SPL).

Підтримується два режими зворотного реінжинірингу - створення нового проекту або відновлення поточного проекту. Можливість відновлення поточної Uml-Моделі уможливлює реалізацію функції замкненого інжинірингу, коли Uml-Модель і код автоматично синхронізуються.

Вихідна Uml-Модель може застосовуватися не тільки для генерації вихідних кодів, але й для генерації документації. Umodel дозволяє згенерувати документацію у форматах Word, RTF і HTML.