Hakkında Künye

Tersine Mühendislik

“Tersine mühendislik bir sistemin daha yüksek bir soyutlama seviyesinde temsilini yaratmak için analiz edilmesi işlemidir.”
                                                                                                            Chikofsky

 

Sevgili e-Bergi okurları bu hafta Tersine Mühendislik olarak da bilinen Reverse Engineering kavramını inceleyeceğiz. Tersine mühendislik temelde çok basit olsa da pek çok dalla bağlantısının olması ve bazı tasarımlarda çözümü sadece bu yöntemle bulabiliyor olmak işe heyecan katıyor.

 

Tersine mühendisliğin biraz daha derinine inmeden önce tersine mühendislik nedir ondan bahsedelim. Tersine mühendislik temelde bir aygıtın, cihazın ya da sistemin çalışmasını, bağlantılarını ve yapısını anlamak için her parçanın teker teker akılcı analizlerinin yapılması ve çalışma prensiplerinin incelenmesi işidir. Kısacası klasik mühendisliğin yöntemi bütünden genele ulaşmakken tersine mühendislik tekten bütüne ulaşmaya çalışır.

 

Bir sistemi ters mühendislikle yaratmak dört basamaktan oluşur:

1.  Tersine mühendize edilecek olan bileşeni ya da ürünü tanımlamak ve incelemek
2.  Ürünün çalışma sistemini ve yöntemini belirlemek.
3.  Tersine mühendislikle elde edilen teknik veriyi bir başka benzere uygulamak.
4.  Yeni bir ürün üretmek( Tercihe göre piyasaya sürmek ).

 

Tersine mühendislik pek çok alanda uygulanıyor. Bir aygıtı tam anlamıyla öğrenmek, piyasada olan üründen daha ucuz ve daha uyumlu ürünler yaratmak, farklı işletim sistemlerindeki veriler arasında köprü kurmak ya da arayüz kullanıcı ilişkisini daha etkili yapmak tersine mühendislikle mümkündür. Ayrıca bilgisayar destekli tasarım, bilgisayar destekli üretim gibi alanlarda da tersine mühendislik sıkça kullanılır.

 


Daha önceleri sadece donanım konularında kullanılabilen tersine mühendislik şimdi veriler, yazılım ve hatta insan DNA’sı için bile kullanılabiliyor. Tersine mühendislik yazılım ve donanım için ayrıca bir önem taşıyor. Java ya da C++ dillerinde yazılan programlar diğer programlar tarafından algılanabilir, ancak bu programları bilgisayarda yürütebilmek için derleyici dediğimiz yazılımlara ihtiyaç duyulur. Derleyici(compiler)  kodu çoğu programcı için anlaşılmaz olsa da kodu daha insan dostu bir seviyeye getirmek için decompilerlar kullanılabilir.

 

Tersine mühendislik özellikle bilgisayar biliminde çok önemli bir yere sahiptir. Eğer kod yazmaya ilgi duyuyorsanız, bu işe ilgi duyan hemen hemen herkes gibi bazen bir programı daha iyi anlamak, ya da sadece merakınızı gidermek için onun kaynak kodunu incelemişsinizdir. İşte tam burada tersine mühendisliğin en çarpıcı örneklerinden biri geliyor. Phoenix Technologies Ltd. 1980'lerin ortalarında IBM’in mülkü olan BIOS’un diğer PC'lerle de uyumlu olan bir sürümünü çıkarmak istedi. Ama kodu tamamen kopyalayamayacağı için (illegal olurdu) tersine mühendislikte “Çin Seddi” ya da “Temiz oda” da denilen yöntemi kullandılar. Bu yöntemi uygulamak için iki grup insandan yararlanıldı. Birinci grupta IBM’in kodunu ve işleyişini anlamak için her bir yapıyı teker teker inceleyerek ikinci gruba herhangi bir kod veya teknik bilgi vermeden anlatan insanlar bulunuyordu. Bunun sonucunda Phoenix, kodu IBM’in BIOS’undan farklı, ama neredeyse birebir işlem yapan bir BIOS üretti. Kodun bazı bölümleri IBM’in koduyla benzer olsa da herhangi bir telif hakkı sorunuyla karşılaşmadılar.
Advanced Micro Devices Inc. ve Cyrix Corp. İntel’in mikro ilşemcilerini tersine mühendislikle analiz edip çok daha ucuz ve diğer bilgisayarlara da uyumlu çalışan çipler oluşturdular.

Telif hakları savaşlarının heyecanı arasında insanlar ucuz işlemciler sayesinde bilgisayarları daha çok alıyordu ve yepyeni bir pazar oluşuyordu.

Tersine mühendislik uygulamalarının hızlanmasıyla firmalar arası rekabet bir anlamda yaratıcılığı doğuruyor ve tersine mühendisliği hiç olmadığı kadar önemli kılıyor. 

 

Kaynakça:

1.  http://www.computerworld.com/s/article/65532/Reverse_Engineering?taxonomyId=11&pageNumber=1

2.  http://chillingeffects.org/reverse/faq.cgi

3.  http://en.wikipedia.org/wiki/Reverse_engineering

Cansu Cemre Yeşilçimen
- 1 -