Практика реалізації модуля інтеграції для Rational Software Architect. Частина 1

Введення


Постійна практика роботи з інструментом управління змінами IBM Rational ClearQuest виявила як його позитивні, так і негативні сторони. При безперечно сильному і гнучкому механізмі формування та редагування схем управління змінами – від створення екранних форм до програмування станів та переходів для запитів на зміни (ЗІ) – можна відзначити недолік, пов'язаний саме з програмуванням матриці переходів при програмуванні життєвого циклу (ЖЦ) проходження запиту на зміна.


У простому прикладі менеджер з управління конфігураціями (КК) або менеджер з управління змінами (УІ) повинен сформувати склад ЗИ і описати їх життєвий цикл у діаграмах UML (це так званий абстрактний, описовий рівень, Малюнок 1). Після циклу узгоджень і тверджень діаграма передається реалізатору (можливо, адміністратору УІ), який, базуючись на моделі, створює низькорівневий набір команд для реалізації в IBM Rational ClearQuest.


Даний приклад показує ідеальну модель, яка в недостатній мірі застосовується на практиці. Найчастіше модель не набуває електронного виду, а відразу переноситься (програмується) в IBM Rational ClearQuest.


Малюнок 1. Представлення життєвого циклу проходження запиту на зміну "Defect" у вигляді діаграми UML

Як правило, процеси в організаціях не "костенеют" і розвиваються подібно до живого організму, проходячи складний еволюційний шлях. Розвиток процесів пов'язано з внесенням змін як у фізичну схему робіт (У ClearQuest), так і в модель процесу. Обидві операції ручні, тобто Того ж адміністратор повинен внести зміни спочатку в модель, А потім в схему ClearQuest (Або навпаки). Ось тут і проявляється головний людський чинник: оскільки обидві операції ручні, то людина може допустити помилку, причому помилки можуть бути різної тяжкості. Сама банальна може полягати в тому, що важливий перехід не отримав свого відображення або в схемі, або в описі процесу. На жаль, на практиці таке трапляється доволі часто: неузгодженість документованого процесу і реальної схеми може досягати 30% і більше. Іншими словами, процес продовжує розвиватися, а опис процесу або серйозно відстає, або зовсім загальмовується.


Малюнок 2. Матриця переходів в IBM Rational ClearQuest
 

Тут визначається послідовність переходів запитів на зміну між станами. Матриця являє собою фізичний, низькорівневе подання процесу. Скріншот показує матрицю станів запиту на зміну "Defect".


Рішення задачі лежить на поверхні:



  1. взяти IBM Rational ClearQuest;
  2. взяти засіб моделювання UML, наприклад, IBM Rational Software Architect;
  3. створити Plug-Ins для RSA, який дозволить імпортувати життєвий цикл запиту на зміну з ClearQuest і представляти його у вигляді діаграми UML.

Це рішення дозволяє вносити зміни одразу до фізичне уявлення і тут же отримувати модель UML.


У даній статті докладно пояснюється, яким чином можна створити Plug-Ins для RSA, що виконує дані дії.


Подальший розвиток Plug-Ins – це формування повністю замкнутого циклу опису процесу, при якому можна з моделі RSA отримати фізичне представлення в ClearQuest, але це тема окремої статті.

Модель процесу може бути представлена у двох видах:


Загальне уявлення про RSA


IBM Rational Software Architect – Це сучасна інтегрована середовище розробки на основі Eclipse.


Сам по собі Eclipse є інтегрованою розширюваної середовищем розробки; можна сказати, що саме широкі можливості розширення Eclipse виділяють його серед інших сучасних середовищ розробки. Архітектура, відповідно до якої побудований Eclipse (і, як наслідок, RSA) називається Rich Client Platform (RCP). По суті, дана архітектура має на увазі наявність мікроядра, яке управляє життєвим циклом програми та низки допоміжних служб, які можна використовувати, інтегруючись з архітектурою.


За фактом, RSA – це базовий Eclipse з великим числом додаткових plug-in "ов, які забезпечують розширені можливості розробки кінцевого додатки, а також надають зовнішній доступ до свого функціоналу, використовуючи який можна створювати подальші розширення RSA.


Розробка plug-in "а для RSA

Центральний елемент розширення RSA (і Eclipse) – plug-in. Функціональність plug-in "а може бути будь-який – все, що можна описати на Java, може бути plug-in" ом.


Plug-in "и часто бувають дуже складними, а оскільки середовище складається з величезної кількості plug-in" ов, які необхідно ініціалізувати, вона, як правило, запускається досить довго, з-за цього виникають певні труднощі при налагодженні plug-in "ів (особливо якщо врахувати, що оновлення встановленого plug-in до нової версії теж може зайняти тривалий час). Щоб протестувати працездатність власного plug-in" а, який працює всередині RSA, використовується Runtime Workbench.


У Runtime Workbench є всі необхідні для роботи RSA сервіси, але, як правило, їх там помітно менше, ніж в робочій версії RSA, в якій ведеться розробка (точні налаштування використовуваної конфігурації plug-in "ов для Runtime Workbench можна знайти в Window – Preferences – Plug-in development – Target platform).


Навіть з спрощеннями Runtime Workbench ініціалізація RSA все одно може зайняти досить багато часу. Щоб простіше було налагоджувати функціональність plug-in "ів, у RSA є таке поняття як Pluglet – Він працює схоже з plug-in "ом, але запускається прямо з робочого RSA, в якому ведеться розробка.


На жаль, Pluglet підходить не для всіх цілей; в поточній версії IBM Rational Software Architect (На момент написання статті – 7.0.0) неможливо без перезапуску середовища два рази виконати Pluglet, якщо він містить Native-виклики.


Java дозволяє завантажити native-бібліотеку в один Classloader, і при другому запуску Pluglet вважає, що native-бібліотека вже завантажена в іншому Classloader "е, але не має до нього доступу. Оскільки в цій статті ми зробимо акцент на використання native-бібліотек для взаємодії з IBM Rational ClearQuest, Більш детально розглядати Pluglets не будемо.


Загальні принципи


Plug-in "и можуть як розширювати інтерфейс, так і виконувати якісь фонові завдання або надавати деякі служби іншим plug-in" ам. Це налаштовується при створенні plug-in "а.


Plug-in "и можуть вбудовуватися в інтерфейс RSA практично в будь-яке місце: в контекстне меню, в Menu Bar, вони можуть створювати власний View. При цьому можна досить гнучко задавати умови, при яких plug-in стає видимим (наприклад, якщо він вбудовується в контекстне меню, можна задати, щоб цей пункт меню з'являвся тільки при виділенні файлів якогось розширення).


Далі в цій статті ми побачимо, як вмонтувати plug-in в Menu Bar, створивши свою власну групу меню.


Установка plug-in "а в RSA


У RSA, як і в Eclipse, є уніфікована система встановлення нових plug-in "ов – через так звані Update Site.


Update Site – це колекція Features, які в свою чергу зберігають набір plug-in "ов.


Ми розглянемо це докладніше після того як складемо plug-in.


Інтеграція RSA і ClearQuest


Є як мінімум два варіанти інтеграції RSA і ClearQuest.



  1. Використання COM.
  2. Використання native-функцій, через які працює сам ClearQuest. Один з можливих клієнтів ClearQuest – оболонка над Eclipse, і має сенс скористатися вже виконану низькорівневої роботою по інтеграції ClearQuest з Eclipse.

У даній статті ми будемо розглядати інтеграцію тільки через native-функції.


ClearQuest JNI


Для початку нам потрібно бібліотека для Java, яка викликатиме native-функції ClearQuest "а через Java Native Interface. Вона поставляється разом з ClearQuest, у вигляді скомпільованого. Jar.


У каталозі, в який встановлено IBM Rational ClearQuest (в Windows за замовчуванням це каталог C: Program FilesRationalClearQuest), Знаходиться файл cqjni.jar.


Можна було б його додати в Build Path проекту, і в звичайних додатках вже був би доступ до CQ через JNI. Але тоді процес налагодження plug-in "а може бути незручним – при запуску Runtime Workbench, native-виклики, які намагаються працювати з скомпільованого. jar, можуть не спрацьовувати (на них буде перериватися виконання завдання plug-in "а, помилки виводитися не будуть). Тому, щоб бути впевненими в результатах, ми спочатку декомпіліруем cqjni.jar.


Якщо ж ви вирішите включити. Jar в Build Path, не забудьте, що це native-бібліотека, і тому необхідно прописати її Native Path. До статті додається вже декомпільовану набір класів з cqjni.jar, так що самостійно їх видобувати не обов'язково.


Для Java є досить багато декомпілятором; в цій статті ми будемо використовувати jad, безкоштовний для некомерційного використання. Робота з ним йде через консоль. У ряду інших безкоштовних декомпілятором немає можливості декомпілювати відразу безліч файлів, особливо часто таке буває серед декомпілятором з графічним інтерфейсом без консольного аналога.


У принципі, в нашому випадку підійде практично будь-який декомпілятор – для нас не принципово, щоб код був читабельним, потрібно тільки, щоб він працював.


Отже, jad можна завантажити, наприклад, тут: http://www.varaneckas.com/jad (EN). Після того як він скочується, його слід розпакувати і додати в PATH (або при подальшій роботі з ним переконатися, що до нього є доступ).


Далі буде потрібно взяти раніше згаданий cqjni.jar, і витягти з нього все. Class-файли (з допомогою будь-якого розпаковують, який вміє розпаковувати. Zip). З теки з витягнутими. Class-файлами для декомпіляції можна запустити команду:


jad -d CQJNI -s .java *.class

У результаті в папці CQJNI з'являться декомпільовану файли, щоправда, з деякими несуттєвими помилками, які можна швидко виправити вручну.


Щоб необхідні ручні зміни застосувати та перевірити їх працездатність, створимо тестовий проект через File – New – Other, Java Project. Назвемо його CQJNITest.


Далі, імпортуємо наші декомпільовану класи. З контекстного меню нашого проекту вибираємо Import, потім File System (Малюнок 3).


Малюнок 3. Вікно імпорту в проект IBM Rational Software Architect  файлів, що знаходяться на файловій системі

 
Читати частина 2

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*