Если вы в детстве любили разбирать игрушки, возможно, что вы прирожденный специалист по реверс-инжинирингу, но пока не догадываетесь об этом. Ведь они занимаются примерно тем же самым, только вместо игрушек у них технические изделия и программное обеспечение.
Процесс реинжиниринга программного обеспечения со стороны выглядит достаточно простым: разработчик получает бинарный файл, который понимает только компьютер; затем он прогоняет этот файл через специальную программу и превращает в код на знакомом ему языке программирования (Java, Python, C++ и др.); дальше программист изучает этот файл и пытается разобраться во внутреннем устройстве программы. Иногда у него это получается «взломать» код, а иногда нет. Даже опытные программисты могут анализировать одну и ту же программу месяцами. И не факт, что ее удастся расшифровать полностью.
С техническими изделиями все еще намного сложнее. Во-первых, даже если мы имеем исходную деталь в руках, то невозможно определить, насколько она «точная». Так как мы снимаем размеры с детали, которая уже была в употреблении. Этих данных часто недостаточно, чтобы определить, в какие границы должны укладываться размеры новой детали или партии деталей. Допустим, мы решили не отступать от размера оригинальной детали и указали в чертеже «точный» размер, но ведь нужно еще поставить допуск, т. е. показать производителю, в какой интервал размеров он должен попасть при изготовлении. Про 3D-сканирование сейчас знает каждый, но эта технология имеет массу ограничений. Самое очевидное ограничение – отсутствие возможности сканировать внутренние полости детали. На помощь нам приходит компьютерная томография, но это дорого и сложно. И это только малая часть проблем. Далее мы рассмотрим причины, побуждающие компании использовать обратное проектирование:
- Компании оригинального производителя больше не существует на рынке, в то время, как клиент нуждается в его продукции, например, в запасных частях самолета, которые необходимо менять по истечении определенного срока эксплуатации.
- Оригинальный производитель больше не выпускает нужный клиенту продукт.
- Конструкторская документация по оригинальному продукту утеряна или отсутствовала изначально.
- Необходимость восстановления или изготовления детали, для которой нет данных САПР, или данные по которой устарели или были утеряны.
- Необходимо устранить какие-либо недостатки изделия, так, например, места сильного износа указывают на то, где нужны улучшения.
- Усиление положительных качеств продукта на основе данных длительного использования.
- Анализ преимуществ и недостатков продукции конкурентов.
- Изучение новых возможностей для улучшения характеристик и функций продукта.
Это далеко не полный список тех причин, по которым может понадобиться обратный инжиниринг.