Blackbox
BlackBox
Eine BlackBox beschreibt im Technischen Gebiet eine Schaltung, von der nur ihre Wirkung bekannt ist und daraus Schlussfolgerungen auf den Inhalt gemacht werden.
Blackboxes werden benutzt um Informationsmengen einzuschränken. Denn häufig ist es nur wichtig zu wissen was ein Programmteil macht, aber nicht wie. Deshalb werden die betreffenden Teile durch eine Blackbox ersetzt. Von einer Blackbox ist nur bekannt was sie als Eingaben benötigt und was sie bewirkt bzw. welche Ausgaben sie erzeugt.
Reverse Engeniering
Will man den Inhalt einer Blackbox rekonstuieren kann man den Ansatz des Reverse Engenierings versuchen.
Ein Beispiel wäre folgendes:
function extractfilename(file:string):string; begin //Unbekannt result:=rueckgabewert; end;
Nun fangen wir an alles von hinten aufzurollen und eventuell ein grossteil des Codes zu bekommen.
function extractfilename(file:string):string; var //Variable zum zwischenspeichern und bearbeiten des strings filename:string; begin filename:=file; //Unbekannt result:=filename; end;
Wir wissen nun, dass der fehlende Code den Dateinamen aus dem String kopiert. Des weiterem ist uns bekannt das ein Dateiname am Ende einer Pfadhierachy steht und die Pfade durch ein '/' oder '\' Zeichen getrennt werden. Das bedeutet wir suchen das letze '/' oder '\' Zeichen im String und kopieren alles von der Position bis Stringende.
function extractfilename(file:string):string; var filename:string; ind:integer; begin filename:=file; for ind:=high(filename) downto 0 do if (filename[ind]='/') or (filename[ind]='\') then break; copy(filenam,ind,length(file)-ind); result:=filename; end;