Instrumentierung (Softwareentwicklung)
Mit Instrumentierung wird in der Softwaretechnik das Ergänzen von Computerprogrammen mit speziellem Code bezeichnet, um ihr Verhalten untersuchen zu können. Dieser kann in den Quellcode, den Binärcode oder einen Zwischencode eingefügt und mit Hilfe von Werkzeugen ausgewertet werden. Instrumentierung kommt bei Softwaretests zur Ermittlung der Testabdeckung und bei Profilern zum Einsatz. Die Instrumentierung kann dabei sowohl halbautomatisch (GNU C/C++ Compiler -finstrument-functions
[1]) als auch durch spezielle Programme (Tru64 UNIX atom, Pin für x64-Architekturen[2]) automatisch durchgeführt werden. Es gibt dabei statische, dynamische und hybride Ansätze mit je unterschiedlichen Vor- und Nachteilen. Auch existieren Programmierschnittstellen-Standards wie das Application Response Measurement zur Antwortzeit-Messung für Java und C.
Manuelle Instrumentierung
Zur Veranschaulichung ein Quelltext-Ausschnitt in der Programmiersprache Java vor und nach der Instrumentierung.
public boolean istGerade(int zahl) {
if (zahl % 2 == 0) {
return true;
} else {
return false;
}
}
Durch Instrumentierung wird Quelltext folgender Form hinzugefügt:
[...]
private void protokolliereIstGeradeBetreten() {
// Zähler "istGeradeBetreten" in einer Log-Datei hochzählen
[...]
}
private void protokolliereIfBetreten() {
// Zähler "ifBetreten" in einer Log-Datei hochzählen
[...]
}
private void protokolliereElseBetreten() {
// Zähler "elseBetreten" in einer Log-Datei hochzählen
[...]
}
[...]
public boolean istGerade(int zahl) {
protokolliereIstGeradeBetreten();
if (zahl % 2 == 0) {
protokolliereIfBetreten();
return true;
} else {
protokolliereElseBetreten();
return false;
}
}
Das Programm wird anschließend ausgeführt. Danach kann die Log-Datei ausgewertet und beispielsweise ermittelt werden, ob alle drei Zähler erhöht wurden.
Einzelnachweise
- ↑ gcc/g++ -finstrument-functions Compiler-Option gcc.gnu.org, abgerufen am 5. Februar 2016. (englisch)
- ↑ Pin - A Dynamic Binary Instrumentation Tool software.intel.com, abgerufen am 5. Februar 2016. (englisch)