18 Ekim 2015 Pazar

Tersine Mühendislik

İster bir araba motorunu yeniden inşa etmeye çalışın isterseniz kendi oyuncak arabanızı. İnsanlar birçok bilgiyi; bir aletin nasıl çalıştığını, onu parçalarına ayırıp sonra bunları birleştirerek öğrenebilir. Tersine mühendisliğin (Reverse Engineering) ardında yatan konsept de budur.

Tersine mühendislik; bir aygıtın, objenin veya sistemin temel parçalarına ayrılarak, yapısının, işlevinin veya çalışmasının çıkarımcı bir akıl yürütme analiziyle keşfedilmesi işlemidir. Tersine mühendislik uygulamaları, birçok farklı amaca hizmet etmektedir; ama sonuçta öğrenilmek istenen bilgiler ortaktır: Bu cihazın yapımında neler kullanıldı? Hangi parçalar nerelerde kullanılıyor? Parçaların fiziksel özelleri neler? Hangi olaylar ne zaman gerçekleşiyor?...



Tersine mühendislik birçok amaca yönelik olarak uygulanabilir:
  • Piyasada mevcut olarak bulunan bir ürünün iyi ve kötü özelliklerini analiz edip, ondan daha iyi özelliklere sahip ve/veya daha ucuz ürünler tasarlamak için
  • Ticari bir ürünün belgelenmemiş, bilgi verilmemiş özelliklerini ortaya çıkarmak için
  • El yapımı parçaların bilgisayar ortamına aktarılmasında ya da hasar görmüş parçaların yeniden işlenmesinde
  • Bir eğitim aracı olarak
  • Daha efektif yazılımlar yazmak için
  • Farklı işletim sistemleri veya veritabanları arasında köprü kurup bilgi aktarmak için


Xerox firması ilk fotokopi makinasını piyasaya sürdüğünde ilk iki ürünün IBM ve Kodak tarafından satın alındığına dair bir dedikodu dönmüştür. Bu olay günümüzde de geçerliliğini korumaktadır. Firmalar rakiplerinin ürünlerini takip eder ve detaylı olarak inceler. Firmalar Ar-Ge departmanlarında tersine mühendislik yaparak rakiplerin neler yaptıklarını, tasarımlarını bilerek; uzun araştırmalara gerek duymadan ve daha az maliyetle yeni bir sektöre girmenin yolunu bulmuş olurlar. (2003 yapımı “Paycheck” filminde de bu konunun bir örneğine rastlayabilirsiniz.)

Tersine mühendislik yapılan ürünün birebir kopyası başka bir marka adı altında çıkartılmadıkça kanunen bir sakınca doğurmamaktadır. Özellikle tekellerden kaçınmak ve rekabetçi bir piyasa oluşturulması için tersine mühendislik, yasalar çerçevesinde serbest bırakılmıştır. Ürünün birebir benzer olmasını engellemek ve telif hakları ihlali davalarından kaçınmak için “Clean Room” vb. yaklaşımlar mevcuttur. Aşağıda link sayesinde tersine mühendisliğin hukuka aykırı olup olmadığı hakkında daha fazla bilgi mevcuttur.


Tersine mühendislik işlemi aslında genellikle donanıma uygulanmakta iken artık yazılıma, veritabanına ve hatta insan DNA’sına bile uygulanmaktadır. Mesela C programı ile yazılmış bir kod compiler yardımıyla makinenin anlayabileceği bir dile çevrilir. O dili direkt olarak anlamak çok zor görünse de artık decompiler programları sayesinde bu kodu tekrar kullanıcı dostu dillere dönüştürmek mümkün olmuştur.

Phoenix Technologies Ltd.’nin 1980li yıllarda bilgisayarlar için yaptığı BIOS, tersine mühendisliğe güzel bir örnek olarak gösterilebilir. (BIOS: Basic Input Output System. Sistemin giriş ve çıkış aygıtlarını kontrol ederek sistemin açılmasını sağlayan kalıcı bir yazılımdır. Onun sayesinde anakartın birçok özelliğini kullanmamıza olanak sağlayan yazılım, sistem ve donanımlarımız arasında bağlantı kurmuş oluruz.)

Bu iş için IBM’in BIOS’u incelenmiştir. Patent yasalarından korunmak için de “Clean Room” ya da “Chinese Wall” isimli yaklaşım uygulanmıştır. İlk olarak bir mühendis grubu IBM BIOS’unu (yaklaşık 8KB’lık bir kod) incelemiş ve onu gerçek koddan hiçbir alıntı yapmadan tanımlamış ve anlatmıştır. Sonrasında IBM BIOS’u hakkında hiçbir bilgisi olmayan ve kodları hiç görmemiş ikinci bir takım mühendis, sadece ilk takımın verdiği tanımlamaları kullanarak çalışan bir BIOS yazmıştır. Sonuçta oluşan Phoenix BIOS kodu IBM’inkinden farklıydı ama çalışma gayeleri tamamen aynıydı. Clean Room yaklaşımı ile yazılan kodun bazı kısımları tamamen aynı olmasına rağmen hiçbir telif hakkı ihlaline yol açmamıştır.


Aşağıdaki linkte bir Furby oyuncağına yönelik tersine mühendislik işlemlerini ve uygulamalarını, hem yazılımsal hem donanımsal açıdan detaylarıyla görebilirsiniz.


Ülkemiz birçok sektörde sadece üretici konumundan çıkmakta ve artık ürün geliştiren bir konuma gelmektedir. Türk Cumhuriyetlerinde, Orta Doğu’da, Arap ülkelerinde ve iç pazarlarımızda, Türkiye’de üretilen ve tasarlanan ürünler artık daha çok tercih edilmeye başlanmıştır. Yerli firmalarımızın küresel rekabette çok daha kuvvetli olabilmek için yaratıcılığa, ürün tasarımına ve üretimine ihtiyacı var. Bunlar için de zaman ve finansal kaynağa ihtiyaç duyulmaktadır. Tersine mühendislik sayesinde bu ihtiyaçlar en aza indirgenebilir.

Aşağıdaki pdf’lerde konu ile ilgili daha detaylı bilgilere ulaşabilirsiniz:





Konu tavsiyesi için Akif Akkaya’ya teşekkürler…


1 yorum:

  1. selam cok guzel yazi ama guncellesenize biraz yil olmus 2019

    YanıtlaSil