Выбрать главу

- під час відновлення програмного забезпечення, наприклад, у процесі супроводу;

- у процесі переробки програмного забезпечення, наприклад, під час міграції.

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

5.2.1. Методи оберненої програмної інженерії

Місце методів, використовуваних у рамках оберненої інженерії в життєвому циклі, показано на рис. 5.6.

Рис. 5.6. Методи оберненої інженерії

До цих методів належать такі;

- відновлення проектної інформації;

- реструктуризація;

- редокументування;

- реінженерія.

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

Стосовно програмного забезпечення основні цілі оберненої Ін­женерії полягають не в створенні дубліката системи, а в отриманні інформації для кращого розуміння системи, щоб підвищити ефек­тивність супроводу, переробити систему або виділити з неї певні компоненти, що відповідають заданим вимогам.

Відновлення проектної інформації (design recovery) - це метод оберненої інженерії, у якому разом з початковим кодом під час від­новлення проектної інформації використовуються всі доступні ві­домості про систему: проектна документація, досвід розробників і експлуатаційників, знання про домен. Головна мета відновлення проектної інформації - розроблення структур, які допоможуть ін­женерові програмного забезпечення зрозуміти програму або прог­рамну систему. Отже, кінцевою метою е не специфікація вимог, яка відповідає аналізованому початковому коду, а проектна інфор­мація.

Реструктуризація (restructuring) - це метод трансформації прог­рамного забезпечення на одному рівні його уявлення шляхом вико­ристання інформації, котру отримали в процесі виконання реверси­вної інженерії. Трансформація не приводить до зміни первинних вимог до програмного забезпечення (наприклад, реструктуризація - це перетворення неструктурної форми коду в структурну).

Редокументування (redocumentaiion) - це метод створення або перегляду семантично еквівалентних уявлень програмного забез­печення в рамках одного і того ж рівня. Прикладом може слугувати створення діаграм управління, описи структури програмного за­безпечення у формі зручної для сприйняття людиною. Ключова роль цього методу полягає в тому, щоб забезпечити візуалізацію відношень, що мають місце між програмними компонентами для того, щоб розпізнати їх і управляти ними,

Реінженерія (reengineering) - це метол зміни програмного за­безпечення шляхом використання методів прямої інженерії на ос­нові відновленої (за допомогою оберненої інженерії) проектної ін­формації. До того ж, реінженерія веде до зміни системних і функ­ціональних вимог програмного забезпечення і є методом ного пе­реробки.

5.2.2. Інструменти оберненої інженерії

Усі інструменти оберненої інженерії утворюють інтегроване се­редовище - Computer Aided Reverse Software Environment (CARSE). Загальну архітектуру середовища зображено на рис. 5.7.

Рис. 5.7. Архітектура інструментів оберненої інженерії

5.3. Емпірична інженерія програмного забезпечення

Емпіричні методи досліджень відіграють «впливову» роль в ін­женерії програмного забезпечення і їх застосування складають од­ну з інженерій - емпіричну інженерію програмного забезпечення.

На відміну від прямої та оберненої інженерії мста емпіричної інженерії - не розробка або переробка програмного забезпечення, а здобуття знань про програмне забезпечення. Тому її основу складають два кола методів та засобів. Перше пов'язане із збиранням інформації щодо властивостей програмного забезпечення. Переваж­но це робиться шляхом застосування вимірювань. Друге складають методи та засоби обробки нагромадженої інформації і здобуття знань стосовно програмного забезпечення, що досліджується.

5.3.1. Методи емпіричної інженерії програмного забезпечення

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