Крім моделі процесів розробки програмного забезпечення CASE повинна включати інструменти розробки і модель програмного продукту (рис. 5.4).
Очевидно, що
5.2. Обернена інженерія
Виконання процесів супроводу програмного забезпечення і виділення з нього програмних компонентів призвело до необхідності реконструювання програм і розробки відповідного розділу програмної інженерії, який називається реверсивною
Завдання оберненої інженерії протилежне прямій і полягає в забезпеченні процесів низькорівневого представлення програмного забезпечення (частіше початкового і рідше об'єктного коду), високо рівневого його уявлення, наприклад, проектної інформації або специфікацій вимог
Загалом, обернена інженерія забезпечує два такі процеси:
- ідентифікацію системних компонентів і відношень між ними;
- створення високорівневих представлень компонентів і програмного продукту в цілому.
- Тому в оберненій інженерії доводиться вирішувати два завдання;
- вибір відповідного рівня представлення абстракцій, стандартів і уявлень дня інформації про програмну інженерію;
- створення інструментів, що полегшують розпізнавання відповідної інформації в існуючому початковому коді.
Досвід показує, що тієї інформації, яка є в низькорівневому представленні програмного забезпечення, як правило, недостатньо для побудови високорівневого опису, тому процеси оберненої інженерії складні і потребують значного інформаційного і інструментального забезпечення,
На рис. 5.5 показано принципову відмінність процесів прямої і оберненої інженерії. Якщо для процесів прямої інженерії в разі створення програмного забезпечення характерне цілеспрямоване звуження області ухвалюваних рішень, то для процесів оберненої інженерії характерне розширення області рішень, що виводяться, яку постійно доводиться звужувати для того, щоб вийти на такс високорівневе уявлення програмного забезпечення.
Потреба в оберненій інженерії натепер виникає в трьох випадках:
- у разі створення компонентів з існуючого програмного забезпечення;
- під час відновлення програмного забезпечення, наприклад, у процесі супроводу;
- у процесі переробки програмного забезпечення, наприклад, під час міграції.
Обернена інженерія не веде до зміни наявного програмного забезпечення і використовується лише, для того, щоб тримати інформацію про його низькорівневі уявлення. Тому за винятком декількох завдань (наприклад, завдання розуміння програмного забезпечення) обернена інженерія зазвичай використовується у поєднанні з методами прямої інженерії,
Місце методів, використовуваних у рамках оберненої інженерії в життєвому циклі, показано на рис. 5.6.
До цих методів належать такі;
- відновлення проектної інформації;
- реструктуризація;
- редокументування;
- реінженерія.
Поняття реверсивної інженерії стосовно технічних систем використовується для визначення процесів розробки специфікацій системи шляхом дослідження її задля створення безлічі подібних систем.
Стосовно програмного забезпечення основні цілі оберненої Інженерії полягають не в створенні дубліката системи, а в отриманні інформації для кращого розуміння системи, щоб підвищити ефективність супроводу, переробити систему або виділити з неї певні компоненти, що відповідають заданим вимогам.