Blackbox: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Definition von Blackbox und ein Beispiel)
 
(BlackBox)
Zeile 1: Zeile 1:
 
==BlackBox==
 
==BlackBox==
Eine BlackBox beschreibt im Technischen Gebiet eine Schaltung deren wirkung nur bekannt ist und daraus schlussfolgerungen auf den Inhalt gemacht werden.
+
Eine BlackBox beschreibt im Technischen Gebiet eine Schaltung deren Wirkung nur bekannt ist und daraus Schlussfolgerungen auf den Inhalt gemacht werden.
In der Programmierung ist es so ähnlich, man hat eine Funktion oder ein Ablauf und versucht dann durch Reverse Engeniering den Inhalt selber zu verwirklichen.
+
 
 +
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:
 
Ein Beispiel wäre folgendes:

Version vom 1. Juni 2005, 11:16 Uhr

BlackBox

Eine BlackBox beschreibt im Technischen Gebiet eine Schaltung deren Wirkung nur 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;