Rational Rose для розробників. Частина 2

Частина 1

"З ким подружився … так тобі й треба …",
– Способи впровадження CASE технологій ….


Вашій увазі пропонується наступна частина статті з Rational Rose, яка, як і раніше, цілком орієнтована на розробників, які використовують у своєму повсякденному житті мову С + +. У даній статті розглянуто: зворотне проектування (спробуємо проаналізувати наявний код і перетворити його в модель на розі). проектування складного класу (для початку), розглянемо деякі моменти в настройках Rose для ефективної кодогенераціі. Спробуємо розглянути лінки для інших (відмінних від С + +) мов програмування.

Так, першу частину ми цілком присвячуємо зворотного проектування.

Одне з безперечних переваг Rational Rose – зворотне проектування, оскільки розробнику і проектувальнику важливо побачити перед змінами вже працюючу систему в нормальному графічному поданні. Як правило, візуально-графічний ряд надає куди більший вплив ніж гортання технічних завдань і програмних текстів. Тим більше, що проект, що піддався зворотного проектування, може бути доопрацьований і знову згенерований (а згодом і скомпільований). Rational Rose надає для цього всі необхідні засоби.


Для здійснення зворотного проектування, в Rational Rose передбачений могутній модуль – Analyzer, чиє основне призначення, що випливає з назви, аналіз програм, написаних на С і С + +. Даний модуль здатний проаналізувати наявний файл на одному з вищезгаданих мов і перетворити його у візуальну модель, присвоївши вихідного файлу розширення mdl. Далі файл можна спокійно відкрити для модифікації з Rational Rose вже у візуальному режимі.

Analyzer представляє собою окремий програмний файл, що викликається як із самої Rose, так і звичайним способом. Модуль входить не в усі поставки Rational Rose, а тільки в Enterprise, Professional і RealTime. У постачання Data Modeler даний модуль не входить, оскільки специфіка поставки не передбачає створення коду та зворотного проектування.

Подальша частина статті буде присвячена саме зворотного проектування. Розглянемо на конкретних прикладах, що розробник отримає від Rational Rose, застосовуючи її як інструмент візуального ГО-проектування.


Приклади будуть містити різні конструкції на мові С + + і результат їх перетворення в модель. Також постараємося приділити достатньо часу деталей трансляції коду програми в модель.

Рис. 1


Для правильного перетворення коду в модель необхідно провести декілька налаштувань, про які ми й поговоримо.

На малюнку 1 показаний зовнішній вигляд програми в стандартних налаштуваннях і з не захаращеним екраном.

Основні поля, що підлягають обов'язковому заповненню (на першому етапі) це:


Для проведення правильного реінжинірінгу необхідно заповнити вищеописані поля. Всі файли, що підлягають реінжиніринг, вказуються в полі "Files". Слід враховувати, що при цьому ви отримуєте візуальну модель взаємодії класів і структур, стало бути не йде ні якої мови про те, щоб на візуальної моделі відбився існуючий код системи. Далі: всі нестандартні конструкції не будуть виведені в модель (аналізатор їх просто проігнорує), це означає, що будь-яке відхилення від заздалегідь відомих конструкцій приводить до того, що в початковому варіанті Rose не зможе правильно проаналізувати код. Цей факт не є недоліком, оскільки в арсеналі Analyser'а є інструменти тонкої настройки, що дозволяють налаштувати все таким чином, щоб специфіка конкретного проекту була б повністю врахована.

Процес реінжинірінгу ділиться на два етапи: аналіз та генерація моделі.

На першому етапі проводяться всі підготовчі операції з аналізу тексту програми на відсутність синтаксичних помилок. Другий етап – це перетворення коду в модель.

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

Відповідно, при відсутності помилок у файлі, можна приступити до генерації моделі. З метою оптимізації часу генерації в Rose передбачено три способи проведення реінжинірінгу, кожен з яких може охопити і чудово виконати певний сегмент робіт. Якщо користувачеві з якихось причин не підходить не один з трьох встановлених способів, то Rose допускає створення власного реверсінженірінга.

Поговоримо докладніше про трьох стандартних способи:


Всі налаштування можуть бути змінені користувачем на розсуд. При збереженні змін можливо вказати нове ім'я шаблону або перезаписати вже існуюче, що дозволить при частому використанні зворотного проектування не втрачати часу на установку потрібного пункту. Вибір відповідного пункту обов'язково позначається на швидкості аналізу, чим більше – тим довше. Ще хочеться відзначити таку особливість модуля Analyzer: після аналізу створюється не тільки модель, але і лог файл з повідомленнями, що виникли в результаті сканування програми. Лог може містити як попередження, так і помилки. А особливість генерації моделі полягає в тому, що вона відбудеться незважаючи ні на що, тобто, незважаючи на помилки в тексті програми. Природно, ніякої мови немає про яку-небудь правильної моделі! Цю особливість слід враховувати і уважно аналізувати файл звіту після генерації моделі.


Ще одна важлива ремарка. Як правило, зворотному проектування піддається повноцінний проектний файл, що містить в собі і директиви # INCLUDE для визначень, і коментарі, а також інші супровідні інструкції. І природно розробнику хочеться мати такий інструмент, який адекватно реагуватиме на всі складові. Поспішаю обрадувати: модуль Analyzer в режимі (DetailedAnalysis) забезпечує наступне:


Тепер від загальних фраз перейдемо до практики (як казав незабутній син турецького підданого: "ближче до тіла … відомості будуть оплачені …"). Для початку спробуємо виконати зворотне проектування з мови С без використання об'єктів. Нашою метою буде отримання графічної моделі зі структури на мові програмування. Чому структури? Даний тип даних все ще широко використовується програмістами мовою С, скидати з рахунків, який трохи передчасно!

Отже, проект для реверсінженірінга представляє собою тільки заголовки з оголошенням наступної структури:


//It”s main structure
struct struct_main{
char *string; //Structure”s pointer
int buffer[100]; //Temporary buffer
char name[10];//Name of data
int a; //Integer
int b; //Integer
};








 

Рис. 8


Як видно з малюнка 8, після операції зворотного проектування відразу стане видно дерево спадкування, що дозволить розробнику дізнатися всю ієрархію, а потім оптимізувати додаток під власні потреби, позбавившись від непотрібної (неефективною) гілки.

Вашій увазі було запропоновано декілька прикладів про використання зворотного проектування. Можна припустити, що Rational Rose припаде до душі не тільки аналітикам, а й проектувальникам і розробникам, оскільки виражальні засоби візуального проектування та аналізу роблять її незамінним інструментом при створенні великих інформаційних систем. Особливо повно Rose розкриває свої можливості при аналізі ефективності не нової системи, а вже існуючої. Приклади вище показують, що дасть інструмент при аналізі проекту на предмет підвищення його ефективності. Дана проблема не є надуманою, оскільки подібний аналіз дуже потрібен компаніям переводять, наприклад, старе програмне забезпечення на нові платформи і нові технології.

Трохи про інші мови програмування.


Rational Rose має в своєму арсеналі можливість прямого і зворотного проектування на: ADA, Java, C + +, COM, DDL, Basic, XML, схеми Oracle і Sql srv … Але як бути тим, хто використовує мови відсутні у списку підтримки? На жаль, компанія Ratoinl не прагне розширювати список підтримуваних мов за свій рахунок, віддавши на відкуп зовнішнім підприємствам можливість заповнення мовних ніш. Це можливо з тієї простої причини, що Rose має відкрите, добре документований API, що дозволяє будь-якій людині створити додатковий модуль (міст) для будь-якої мови! Підкреслюю: ДЛЯ БУДЬ-ЯКОГО. Природно, при цьому людина повинна знати UML і синтаксис мови-джерела і мати якийсь час на дану реалізацію. На сьогоднішній день Rose – це унікальний продукт у плані відкритості архітектури.

На даний момент існують декілька компаній, наприклад, EnsembleSystems (www.ensemble-systems.com), які займаються написанням подібних лінків. Вже є лінки до Delphi, ErWin, Jbuilder, VisualCafe, Jdeveloper, VisualAge SmallTalk…

Погодьтеся, список вселяє оптимізм і вселяє надію, що рано чи пізно буде повністю покритий весь мовний спектр, і Роза почне розуміти всі, включаючи людську мову!

Частина 3


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


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

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

Ваш отзыв

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

*

*