Методы и средства инженерии программного обеспечения

Реверсная инжеиерия


Методы реверсной инженерии разработаны в среде объектно–ориентированного программирования [1]. Они  базируется на выполнении  базовых операций  визуализации (visual) и  измерения метрик (metric) программных систем в рамках модели, которая предлагает следующие цели:

 – обеспечение высокого качества системы и переосвидетельствование ее  размера, сложности и структуры;

– поиск иерархии классов  и  атритутов программных объектов   с целью наследования их в ядре системы;

–  идентификация классов объектов с определением   размера и /или  сложности  всех классов системы;

–   поиск патернов,  их  идентификация, а также  фиксация их места и роли в структуре системы.

Этот подход ориентирован на индустриальные системы в миллион срок кода с использованием метрических оценок  характеристик системы. Он разрешает  генерацию тестов для проверки кодов, а также проведение метрического анализа системы для получения фактических значений внутренних и внешних характеристик системы.

В результате анализа системы строится модель, которая содержит список классов и патернов системы, которые могут модифицироваться и перепроектироваться, а также с помощью  которых можно организовать  процесс эволюции системы. Если некоторый класс плохо спроектирован (например, много методов и  имеются пустые коды) или  система не выполняет нужную работу, то проводится сбор  информации для модели системы.

В данном подходе действия по визуализации системы   освещаются на  двухмерном экране в виде иерархического дерева. В нем узлы отображают  объекты и их свойства, а отношение между ними  задаются контурами команд фрагментов программ.  При этом  применяется таблица метрик, в которой находятся сведения о метриках классов объектов (число классов, методов, атрибутов, подклассов и строк кода), метрик методов объектов (количество параметров, вызовов, сообщений и т.п.), метрик атрибутов объектов (время доступа, количество доступов в классе и подклассе и т.п.).

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

Вывод. Преобразование исходного кода с целью внесения разного рода изменений (реинженерии, рефакторинга, реверсной инженерии)  является эффективным, если основные изменения выполняются  автоматически с помощью специально созданных  систем, либо с помощью программ  конвертирования кода с одного языка на другой с учетом наличия разных типов данных в этих ЯП, либо с помощью  системы сопоставления с образцом, представленным в виде списка команд для описания перевода с одного языкового представления на другое, которое реализуется сравнением и сопоставлением с такими же образцами в новом языке.

Автоматизированный перевод не возможен, если структурные компоненты исходного кода не имеют соответствия в новом языке. Это бывает в том случае, когда исходный язык содержит встроенные условные команды компиляции, которые не поддерживаются в новом языке. В этом случае  совершенствование создаваемой системы выполняется вручную со  значительными  затратами человеческих и финансовых  ресурсов.


Содержание раздела