Inżynieria Wsteczna
Współdziałanie systemów
Osiągnięcie współpracy pomiędzy dwoma systemami nigdy nie było i nadal nie jest łatwy zadaniem nawet, jeżeli oba te programy zostały wytworzone przez jednego producenta. Najczęściej spotykanym problemem jest integracja interfejsów, aby współpracowały. Większość programów jest bardzo wrażliwa na wszelkie próby integracji i niezwykle rzadko udaje się doprowadzić do współdziałania przy pierwszej próbie tak przewrotna może być natura technologii. Teraz wyobraźmy sobie sytuację, w której jedna firma chcę stworzyć program, który współpracowałby z oprogramowaniem innej firmy, taka integracja wymagałaby udostępnienia przez pierwsza firmę wielu informacji, do których normalnie nikt nie ma dostępu. Platforma sprzętowa to każdy system operacyjny lub architektura sprzętowa, na które można uruchamiać inne programy. Za przykład możemy wziąć Microsoft Windows oraz XBOX oba te produkty są platformami sprzętowymi, na której można uruchamiać pewnie programy. Teraz producenci muszą podjąć bardzo istotną decyzję, jeżeli udostępnia specyfikację innym firmą mogą one stworzyć programy, które będą działały na ich platformach. Decyzja ta może zaważyć nad poziomem sprzedaży systemów czy oprogramowania producenta, lecz może również zwiększyć poziom konkurencji na różnego rodzaju programy użytkowe, jak chociaż by programy biurowe. Udostępnienie danych wiąże się oczywiście z wieloma problemami prawymi jak ochrona praw autorskich ochrona praw do patentów czy praw majątkowych. W przypadku, gdy specyfikacja została udostępniona przez producenta możemy bez żadnych przeszkód ją wykorzystywać zgodnie z licencją, na jakiej została ona udostępniona problem pojawia się, gdy nikt nie udostępnił nam żadnych danych a my zdobyliśmy je sami. Wielu przeciwników inżynierii odwrotnej uważa, iż jest ona tylko i wyłącznie sposobem na łamanie praw autorskich i okradanie twórców różnych produktów. I niestety jest to w większości przypadków prawda, aby pozostań konkurencyjnymi na rynku często różne firmy uciekają się do kradzieży patentów firm trzecich w celu stworzenia lepszego lub identycznego produktu. W niektórych przypadkach bardzo ciężko udowodnić jest przypadki takiej kradzieży chyba że kopiujemy bezpośrednio kod źródłowy programu, co można bardzo łatwo udowodnić.