Mur chiński (informatyka)

Z Wikipedii, wolnej encyklopedii
(Przekierowano z Mur Chiński (informatyka))

Mur chiński – pojęcie z zakresu informatyki, odnoszące się do sposobu tworzenia oprogramowania z wykorzystaniem inżynierii wstecznej.

Polega on na stworzeniu dwóch niezależnych grup programistów, z których pierwsza tworzy dokumentację na podstawie kodu źródłowego odzyskanego za pomocą inżynierii wstecznej, a druga pisze nowy program na podstawie utworzonej dokumentacji[1].

Pierwsza grupa nigdy nie pisze nowego kodu, a druga nigdy nie widzi kodu pierwotnego. Metoda ta oddziela nowy kod od starego, przez co są to całkowicie niepowiązane programy.

Dzięki zastosowaniu tej techniki można odeprzeć zarzuty o wykorzystanie fragmentów kodu źródłowego dotychczasowych programów w nowych projektach[2], co jest dość częstym zarzutem wobec otwartego oprogramowania stawianym przez firmy informatyczne tworzące oprogramowanie zamknięte, jak np. Microsoft.

W celu dodatkowego zabezpieczenia przed tego typu zarzutami niektórzy tworzący oprogramowanie tą metodą, np. twórcy systemu operacyjnego ReactOS, przeprowadzają również audyt swojego kodu źródłowego.

Przypisy[edytuj | edytuj kod]

  1. Mathew Schwartz. Reverse-Engineering. „Computerworld”, 2001-11-12. [dostęp 2013-06-23]. Cytat: To protect against charges of having simply (and illegally) copied IBM's BIOS, Phoenix reverse-engineered it using what's called a 'clean room,' or 'Chinese wall,' approach. First, a team of engineers studied the IBM BIOS—about 8KB of code—and described everything it did as completely as possible without using or referencing any actual code. Then Phoenix brought in a second team of programmers who had no prior knowledge of the IBM BIOS and had never seen its code. Working only from the first team's functional specifications, the second team wrote a new BIOS that operated as specified.. (ang.). 
  2. Sean Hogle: Clean Room Defeats Software Infringement Claim in U.S. Federal Court. 2008-10-23. [dostęp 2013-05-23]. Cytat: [...] dirty room reverse engineering should be done in conjunction with clean room development by using two physically and electronically isolated teams where one team does dirty room reverse engineering and the other does clean room development. If a dirty room team exists, the clean room engineers can write a description of the portion of the specification that needs elaboration or clarification. The dirty room engineers then use that request to create additional functional specifications or tests. (ang.).