Как из исходного кода сделать программу

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

  • Операционная система: Windows / Mac OS X / Linux
  • Java (рекомендуется версия 1.7)
  • IDE (Eclipse, IntelliJ IDEA, Android Studio)
  • Android SDK (https://developer.android.com/sdk/index.html?hl=i)
  • APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
  • Устройство / эмулятор на базе Android
  • Dex2Jar (https://code.google.com/p/dex2jar/)
  • JD-GUI (http://jd.benow.ca/)

В статье будет использоваться следующая конфигурация: Windows 8, Android Studio и IntelliJ IDEA. Устройство: Nexus 4 с Android версии 4.4.4. Рекомендую все утилиты добавить в переменную окружения PATH, чтобы облегчить и ускорить доступ к этим инструментам.

Android application package (APK), используемый в статье, можно скачать отсюда: com.netspi.egruber.test.apk.

5 причин научиться собирать софт из исходников

Настройка устройства

Инструкция ниже поможет вам подготовить устройство для экспериментов.

Активация раздела Developer Options

Для начала на Android-устройстве должна быть разрешена отладка через USB (опция USB debugging), что позволит «общаться» с девайсом при помощи инструментов из набора Android SDK. Однако перед этим необходимо активировать раздел Developer options. На устройстве зайдите в раздел Settings > About Phone и кликните несколько раз на пункт Build Number, после чего должно появиться сообщение о том, что раздел Developer options активирован.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab23d04aadb.png

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab23efed362.png

Рисунок 1: Для того чтобы активировать раздел Developer options, необходимо несколько раз кликнуть на Build number

Разрешение отладки через USB

Чтобы разрешить отладку через USB-порт, зайдите в раздел Settings > Developer options и отметьте флажок напротив USB debugging.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab245453b30.png

Рисунок 2: Включение опции USB debugging

Подключение устройства и запуск ADB

После подключение устройства к компьютеру через USB-порт, должно появиться сообщение «USB debugging connected on the device». Также следует проверить, можно ли подключиться к устройству при помощи приложения Android Debug Bridge (ADB), входящего в состав Android SDK (пакет Android SDK Platform-tools). В командной строке введите следующую команду:

Устройство должно отобразиться в списке.

Научись Linux: сборка программ из исходников (эпизод 13)

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20b6a88b8.jpeg

Рисунок 3: Список подключенных устройств

Если устройство не отобразилось в списке, то наиболее вероятная причина в некорректно установленных драйверах (в Windows). В зависимости от устройства драйвер можно найти либо в Android SDK, либо на сайте производителя.

Проверка приложения на возможность отладки

Перед отладкой Android-приложений вначале необходимо проверить, есть ли такая возможность. Проверку можно выполнить несколькими способами.

Первый способ – запустить Android Device Monitor, входящий в состав Android SDK (в папке tools). В Windows файл называется monitor.bat. При открытии Android Device Monitor устройство отобразится в разделе Devices.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20cb0ee69.jpeg

Рисунок 4: Приложение Android Device Monitor

Если какое-либо приложение на устройстве можно отлаживать, это приложение также отобразится в списке. Я создал тестовую программу, но список пуст, поскольку программу отлаживать нельзя.

Второй способ проверить приложение на возможность отладки – исследовать файл AndroidManifest.xml из пакета приложения (APK, Android application package). APK представляет собой zip-архив, содержащий всю информацию, необходимую для запуска приложения на Android-устройстве.

Всякий раз, когда приложения загружается из Google Play Store, также загружается и пакет приложения. Все загруженные APK-файлы обычно хранятся на устройстве в папке /data/app. Если у вас нет прав суперпользователя, вы не сможете получить список файлов из директории /data/app. Хотя, если вы знаете имя APK-файла, можете скопировать его при помощи утилиты adb. Чтобы узнать имя APK-файла, введите следующую команду:

Появится командная строка устройства. Затем введите следующую команду:

pm list packages -f

Отобразится список всех пакетов на устройстве.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20e0c5cc5.jpeg

Рисунок 5: Перечень пакетов на устройстве

Глядя на список, находим тестовое приложение.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20e6154fe.jpeg

Рисунок 6: Пакет созданного тестового приложения (выделено белым)

Теперь необходимо скопировать файл пакета. Открываем шелл и вводим следующую команду:

adb pull /data/app/[.apk file] [location]

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20eb8d72e.jpeg

Рисунок 7: Копируем APK-файл с устройства в систему

Теперь нужно открыть файл пакета и исследовать содержимое AndroidManifest.xml. К сожалению, мы не можем просто так распаковать архив, поскольку APK-файл закодирован в бинарном формате. Для раскодировки чаще всего используется утилита apktool, хотя я использую APK Studio, поскольку у этого приложения дружелюбный графический интерфейс. Далее в статье будет рассказываться об APK Studio.

В APK Studio кликните на маленькую зеленую иконку, задайте имя проекту и укажите путь к APK файлу. Затем укажите пусть для сохранения проекта.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20f0921cb.jpeg

Рисунок 8: Создание нового проекта в APK Studio

После открытия APK выберите файл AndroidManifest.xml и посмотрите параметры тега application. Если флаг android:debuggable отсутствует (или присутствует, но установлено значение false), значит, приложение отлаживать нельзя.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20f7d225c.jpeg

Рисунок 9: Содержимое файла AndroidManifest.xml

Модификация файла AndroidManifest.xml

При помощи утилиты apktool или APK Studio мы можем модифицировать файлы и упаковывать содержимое обратно в пакет. Сейчас мы изменим файл AndroidManifest.xml так, чтобы приложение можно было отлаживать. Добавляем внутрь тега application строчку android_debuggable=»true».

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20fc42d15.jpeg

Рисунок 10: Изменяем содержимое тега application

После добавления флага кликаем на иконку «молоток» и заново собираем пакет. Пересобранный пакет будет находиться в директории build/apk.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21012ace5.jpeg

Рисунок 11: Повторная сборка пакета завершилась успешно

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

Теперь нужно установить пересобранный пакет. Вначале удаляем старое приложение при помощи следующей команды:

adb pm uninstall[package name]

Затем устанавливаем новый пакет:

adb install [.apk file]

Также можно удалить и установить пакет одной командой:

adb install -r [.apk file]

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210595029.jpeg

Рисунок 12: Установка пересобранного пакета

Проверьте, чтобы переустановленное приложение корректно запускалось на устройстве. Если все работает, переходим обратно в Android Device Monitor, где должно появиться тестовое приложение.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210a2d024.jpeg

Рисунок 13: Теперь пересобранное приложение можно отлаживать

Читайте также:
С какими программами работают автосканеры

Настройка среды разработки (IDE)

Теперь к пересобранному приложению можно подцепить отладчик, но вначале нужно создать проект в среде разработки (в статье используется IntelliJ IDEA). Создаем новый проект. В поле Application name указываем произвольное имя. В поле Package name указываем имя, в точности совпадающее с иерархией папок пересобранного пакета.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210f9153d.jpeg

Рисунок 14: Создание нового проекта в IntelliJ IDEA

Обычно имя APK-файла совпадает со структурой папок, хотя, если вы не уверены, в APK Studio проверьте иерархию директорий до папки, где находятся файлы приложений. В моем случае имя и структура папок полностью совпадают (com.netspi.egruber.test).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21133b456.jpeg

Рисунок 15: Иерархия директорий тестового приложения

Снимите флажок «Create Hello World Activity» и завершите создание проекта (все остальные параметры остаются по умолчанию). Новый проект должен выглядеть примерно так:

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21173f8b3.jpeg

Рисунок 16: Иерархия папок и файлов нового проекта

После создания проекта нужно добавить исходный код из APK-файла для того, чтобы отладчик «знал» имена символов, методов, переменных и т. д. Хорошая новость в том, что Android-приложения можно декомпилировать практически без потери качества (исходный код будет совпадать с оригиналом). После декомпиляции исходный текст импортируется в среду разработки (IDE).

Получение исходных текстов из пакета приложения

Для начала необходимо преобразовать APK в jar-файл. Затем мы при помощи java-декомпилятора получим исходный текст приложения. Преобразование в jar будем делать при помощи утилиты dex2jar. У dex2jar есть файл d2j-dex2jar.bat, используемый для конвертирования APK в jar. Синтаксис команды довольно прост:

d2j-dex2jar.bat [.apk file]

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab211c465e4.jpeg

Рисунок 17: Преобразование APK в jar

Затем открываем или перетаскиваем полученный файл в JD-GUI (это java-декомпилятор).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab211fdc6b0.jpeg

Рисунок 18: Структура jar-файла

Jar-файл должен отобразиться в виде иерархической структуры, внутри которой находятся java-файлы с читабельным исходным кодом. Заходим в File > Save All Sources, чтобы упаковать все исходные тексты в zip-архив.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab2122f1cbe.jpeg

Рисунок 19: Сохранение исходных текстов декомпилированного файла

После сохранения исходных текстов распаковываем архив в отдельную директорию.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21261c3a2.jpeg

Рисунок 20: Распакованный архив

Теперь нужно импортировать обе директории в созданный ранее проект в IDE. В IntelliJ заходим в папку src и копируем туда содержимое распакованного архива (две директории).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab212a14ab6.jpeg

Рисунок 21: Обе папки скопированы в директорию src

Возвращаясь в Intellij, видим обновленный проект.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21326c1b7.jpeg

Рисунок 22: В проекте появились исходные тексты

Если мы кликнем на какой-нибудь элемент из списка, то увидим исходный текст. Как видно на скриншоте ниже (исходный текст класса LoginActivity), исходный код обфусцирован при помощи ProGuard.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab214b5e308.jpeg

Рисунок 23: Обфусцированный исходный текст класса LoginActivity

Подключение отладчика

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

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21a0f27d5.jpeg

Рисунок 24: Поставлена точка останова на обфусцированный метод

Как только появилась точка останова, подключаем отладчик к процессу на устройстве, кликнув на иконку с экраном в правом верхнем углу (на вашей IDE иконка может отличаться).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab215912595.jpeg

Рисунок 25: Подключаем отладчик к процессу

Далее вам будет предложено выбрать процесс, к которому нужно подключиться. Будут отображены только процессы с флагом android_debuggable=»true».

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab215c736db.jpeg

Рисунок 26: Перечень процессов для подключения отладчика

После выбора процесса отладчик подсоединится к устройству.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21655a386.jpeg

Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве

В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab24710eb8e-614x1024.png

Рисунок 28: В текстовое поле вводим число 42

После нажатия на кнопку «Enter Code» выполнение приложения прервется на точке останова, поскольку отладчик «осведомлен», какой метод вызывается на устройстве. Скомпилированное Android-приложение содержит отладочную информацию (например, имена переменных), доступную любому отладчику, совместимому с Java Debug Wire Protocol (JDWP). Если в приложении разрешена отладка, отладчик, совместимый с JDWP (в эту категорию попадает большинство отладчиков идущих в составе сред разработки для Java), сможет подсоединиться к виртуальной машине Android-приложения, а затем считывать и выполнять отладочные команды.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab216beec16.jpeg

Рисунок 29: Сработала точка останова

На скриншоте ниже видно число, которое ранее мы ввели в текстовом поле.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21711a588.jpeg

Рисунок 30: Перечень переменных текущего экземпляра класса

Как устанавливать из исходников

За свою короткую историю индустрия производства программного обеспечения претерпела множество изменений. Так, еще совсем недавно разработка и распространение программ с открытым исходным кодом считалось уделом энтузиастов. Сегодня на базе Open Source свой бизнес строят многие корпорации. В мире становится все больше программного обеспечения, распространяемого в виде исходного кода, причем бесплатно. Многие пользователи предпочитают подобное ПО решениям «из коробки», так как устанавливать из исходников программы не так уж и сложно.

Как устанавливать из исходников

Статьи по теме:

  • Как устанавливать из исходников
  • Как установить драйвера на linux
  • Как создавать Windows-приложения

Вам понадобится

  • Права администратора на локальной машине. Навыки чтения технической документации. Компилятор. Опционально: доступ в интернет для загрузки дополнительных программ, библиотек.

Инструкция

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

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

Загрузите и установите дополнительное программное обеспечение. Если это необходимо, осуществите загрузку и установку недостающих компонентов, необходимых для сборки приложения из исходных кодов. Так, при сборке приложений в операционных системах семейства Linux, может потребоваться пакет autotools и компилятор gcc определенной версии.

Читайте также:
Программа Телеграмм на русском установить

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

Произведите сборку проекта. Точные инструкции по инициализации процесса сборки приводятся в документации. Как правило, для его начала достаточно выполнить всего одну команду. В Linux-подобных системах сборка проектов обычно осуществляется при помощи инструмента типа make, использующего файлы директив с именем makefile.

Поэтому для начала сборки достаточно выполнить команду make в каталоге проекта. При сборке под windows могут использоваться дополнительные скрипты или командные файлы. Однако часто в каталогах проекта присутствуют версии сборочных файлов для компиляторов типа nmake и сборка может быть выполнена путем запуска компилятора с указанием подобного файла в качестве параметра командной строки.

Установите программное обеспечение, собранное из исходных кодов. Произведите установку в соответствии с инструкциями из документации. В системах семейства Linux для установки результатов сборки проекта, как правило, достаточно выполнить команду «make install». При сборке под Windows для инсталляции может использоваться отдельный командный файл.

Обратите внимание
При большом объеме исходного кода, сборка проекта может занять очень много времени.
Полезный совет

Запустите конфигурирующие скрипты с параметрами —help или /? для получения справки о параметрах конфигурации.

Совет полезен?
Статьи по теме:

  • Как установить пакет Debian
  • Как создать файл установки
  • Как скомпилировать проект

Добавить комментарий к статье
Похожие советы

  • Как подключить библиотеку в Microsoft Visual Studio ??
  • Как собрать deb пакет
  • Как скомпилировать файл exe
  • Как скомпилировать исходники
  • Как создать свой дистрибутив Linux
  • Как просмотреть код программы
  • Как в Linux установить программу
  • Как установить ядро Linux
  • Как создать установочный файл
  • Как собрать линукс
  • Как создать скомпилированный файл
  • Как встроить программу в Windows
  • Как получить исходник
  • Как создать exe-приложения
  • Как подключить библиотеку
  • Как сделать bin файл
  • Как создать exe-файл
  • Как установить сборку Windows
  • Как создавать bin файл
  • Как установить оболочку Gnome в Ubuntu
  • Что такое ЭВМ
  • Как создать repack игры
  • Как посмотреть код программы
  • Как танцевать макарену

Новые советы от КакПросто
Рекомендованная статья
Как происходит заражение компьютера вирусом

Наиболее слабое звено в цепи компьютерной безопасности — это сам пользователь. Наличие установленного на компьютере.

Источник: www.kakprosto.ru

Преобразование исходного кода программ

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

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

С технической точки зрения реинжениринг — это решение «второго сорта» проблемы системной эволюции. Если учесть, что архитектура системы не изменяется, то сделать централизованную систему распределенной представляется делом довольно сложным. Обычно нельзя изменить язык программирования старых систем на объектно-ориентированные языки (например, Java или C++). Эти ограничения вводятся для сохра­нения архитектуры системы.

Однако с коммерческой точки зрения реинжениринг часто принимается за единст­венный способ сохранения наследуемых систем в эксплуатации. Другие подходы к эволю­ции системы либо слишком дорогостоящие, либо рискованные. Чтобы понять причины такой позиции, следует рассмотреть проблемы, связанные с наследуемыми системами.

Код эксплуатируемых в настоящее время программных систем чрезвычайно огромен. В 1990 году Улрич насчитал 120 млрд. строк исходного кода эксплуатируе­мых в то время программ. При этом большинство программ были написаны на языке COBOL, который лучше всего подходит для обработки данных в деловой сфере, и на язы­ке FORTRAN. У этих языков достаточно ограниченные возможности в плане структуриза­ции программ, a FORTRAN к тому же отличается ограниченной поддержкой структуриро­вания данных.

Несмотря на постоянную замену подобных систем, многие из них все еще используют­ся. С 1990 года отмечается резкое возрастание использования вычислительной техники в деловой сфере. При грубом подсчете можно говорить о 250 млрд. строк исходного кода, которые нуждаются в сопровождении. Большинство создано отнюдь не с помощью объ­ектно-ориентированных языков программирования, многие из них функционируют все еще на мэйнфреймах.

Программных систем настолько много, что говорить о полной замене или радикаль­ной реструктуризации их в большинстве организаций не приходится. Сопровождение старых систем действительно стоит дорого, однако реинжениринг может продлить время их существования. Реинжениринг систем выгоден в том случае, если система обладает определенной коммерческой ценностью, но дорога в сопровожде­нии. С помощью реинжениринга совершенствуется системная структура, создается новая документация и облегчается сопровождение системы.

По сравнению с более радикальными подходами к совершенствованию систем реин­жениринг имеет два преимущества.

1. Снижение рисков. При повторной разработке ПО существуют большие риски — вы­сока вероятность ошибок в системной спецификации и возникновения проблем во время разработки системы. Реинжениринг снижает эти риски.

2. Снижение затрат. Себестоимость реинжениринга значительно ниже, чем разработ­ка нового программного обеспечения. Считается, что реинжениринг в четыре раза дешевле, чем повторная разработка системы.

Реинжениринг ПО тесно связан с реинженирингом деловых процессов. По­следний означает преобразование бизнес-процессов для снижения количества излишних видов деятельности и повышения эффективности делового процесса. Обычно реинжени­ринг бизнес-процессов предполагает внедрение новых программ для поддержки деловых процессов или модификацию существующих программ, при этом наследуемые системы существенно зависят от делового процесса. Такую зависимость следует выявлять как мож­но раньше и устранять, прежде чем начнется планирование каких-либо изменений в самом бизнес-процессе. Поэтому решение о реинжениринге ПО может возникнуть, если насле­дуемую систему не удается адаптировать к новым деловым процессам путем изменений в обычном сопровождении системы.

Читайте также:
Закрывается программа adobe reader

Основное различие между реинженирингом и новой разработкой системы связано со стартовой точкой начала работы над системой. При реинжениринге вместо написания системной спецификации «с нуля» старая система служит основой для разработки специ­фикации новой системы.

Традиционная разработка ПО называется разработкой вперед (forward engineering), чтобы подчеркнуть различие между ней и реинженирингом. Это различие проиллюстрировано на рис. 1. Традиционная разработка начинается с этапа создания системной спецификации, за которой следует проектирование и реализа­ция новой системы. Реинжениринг основывается на существующей системе, которая раз­работчиками изучается и преобразуется в новую.

Рис.1. Традиционная разработка и реинжиниринг ПО

На рис. 2 показан возможный процесс реинжениринга. В начале этого процесса имеем наследуемую систему, а в результате — структурированную и заново скомпонован­ную версию той же системы. Перечислим основные этапы этого процесса.

1. Перевод исходного кода. Конвертирование программы со старого языка программи­рования на современную версию того же языка либо на другой язык.

2. Анализ программ. Документирование структуры и функциональных возможностей программ на основе их анализа.

3. Модификация структуры программ. Анализируется и модифицируется управляющая структура программ с целью сделать их более простыми и понятными.

4. Разбиение на модули. Взаимосвязанные части программ группируются в модули; там, где возможно, устраняется избыточность. В некоторых случаях изменяется струк­тура системы.

5. Изменение системных данных. Данные, с которыми работает программа, изменяются с тем, чтобы соответствовать нововведениям.

Рис.2. Процесс реинжиниринга

При реинжениринге программ необязательно проходить все стадии, показанные на рис.2. Например, не всегда нужно переводить исходный код, если язык программиро­вания, на котором написана программа, все еще поддерживается разработчиком компиля­тора. Если реинжениринг проводится с помощью автоматизированных средств, то не обязательно восстанавливать документацию на программу. Изменение системных данных необходимо, если в результате реинжениринга изменяется их структура. Однако реструк­туризация данных в процессе реинжениринга требуется всегда.

Стоимость реинжениринга обычно определяется объемом выполненных работ. На рис. 3 показано несколько различных подходов к процессу реинжениринга и динамика изменения стоимости работ для этих подходов.

Рис.3. Стоимость реинжиниринга

Кроме объема выполняемых работ, есть и другие факторы, обусловливающие стои­мость реинжениринга.

1. Качество программного обеспечения, которое подвергается реинженирингу. Чем ниже каче­ство программ и их документации (если она есть в наличии), тем выше стоимость реинжениринга.

2. Наличие средств поддержки процесса реинжениринга. Обычно реинжениринг экономи­чески выгоден, если применяются CASE-средства для автоматизированного внесе­ния изменений в программы.

3. Объем необходимого преобразования данных. Стоимость процесса реинжениринга воз­растет при увеличении объема преобразуемых данных.

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

Основным недостатком реинжениринга принято считать то, что с его помощью сис­тему можно улучшить только до определенной степени. Например, с помощью реинжени­ринга невозможно функционально-ориентированную систему сделать объектно-ориен­тированной. Основные архитектурные изменения или полную реструктуризацию прог­рамм невозможно выполнить автоматически, что также увеличивает стоимость реинже­ниринга. И, несмотря на то что реинжениринг поможет улучшить сопровождение систе­мы, все равно она будет намного хуже в сопровождении, чем новая, созданная с помощью современных методов инженерии ПО.

Преобразование исходного кода программ

Самый простой способ реинжениринга программ — это автоматический перевод исход­ного кода с одного языка программирования на другой, более современный. При этом структура и организация программ остаются неизменными. Программа может переводиться как на обновленную версию исходного языка (например, с языка COBOL-74 на язык COBOL-85), так и на другой «не родственный» язык (например, с языка FORTRAN на С).

Причины перевода на другой язык могут быть следующие.

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

2. Недостаток квалифицированного персонала. Бывает, что для сопровождения программ на исходном языке невозможно найти достаточно квалифицированный персонал, особенно это касается программ, написанных на специфических языках, давно вы­шедших из употребления.

3. Изменения политики организации. Организация может принять решение о переходе на общий стандартный язык программирования, чтобы снизить затраты на сопро­вождение программных систем, поскольку сопровождение большого количества версий старых компиляторов невыгодно.

4. Недостаточно средств поддержки старого ПО. Поставщик компиляторов для старого языка программирования может уйти с рынка программных продуктов или прекра­тить поддержку своего продукта.

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

Рис.4. Процесс преобразования программ

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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru