Blackbox: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Komma eingefügt)
K (BlackBox)
 
Zeile 1: Zeile 1:
 
==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.
+
Eine BlackBox beschreibt im technischen Gebiet eine Funktionseinheit, von der nur ihre Wirkung bekannt ist. Eine Schlussfolgerungen auf die konkrete Umsetzung kann nicht gemacht werden und ist auch meist unnötig.
  
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.
+
Blackboxes werden beim Modellieren von komplexen System 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 Engineering==
 
==Reverse Engineering==

Aktuelle Version vom 14. August 2008, 15:10 Uhr

BlackBox

Eine BlackBox beschreibt im technischen Gebiet eine Funktionseinheit, von der nur ihre Wirkung bekannt ist. Eine Schlussfolgerungen auf die konkrete Umsetzung kann nicht gemacht werden und ist auch meist unnötig.

Blackboxes werden beim Modellieren von komplexen System 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 Engineering

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;