Masterarbeit: Entwicklung von Softwaremetriken für verteilte Systeme und Integration in eine Robotik-Middleware |
Die Realisierung von Robotiksystemen mit Hilfe verteilter Architekturen stellt eine komplexe Aufgabe dar, bei der viele Entscheidungen getroffen werden müssen. Neben der Spezifikation und Architektur zur Realisierung einzelnen Komponenten eines Gesamtsystems, müssen auch die Aufteilung in eben diese Komponenten und deren Kommunikationsmechanismen gewählt werden.
Für all diese Designentscheidungen ist es wichtig Maße zu finden, die die Qualität der gefällten Entscheidungen belegen oder in Relation setzen. Diese Maße werden als Softwaremetriken bezeichnet. Der IEEE Standard 106 definiert diesen Begriff wie folgt:
"Eine Softwaremetrik ist eine Funktion, die eine Software-Einheit in einen Zahlenwert abbildet. Dieser berechnete Wert ist interpretierbar als der Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit"
Während sich zur statischen Analyse des Quelltextes von einzelnen Komponenten inzwischen ein Satz an Standardmetriken, wie z. B. die McCabe-Metrik (auch zyklomatische Komplexität) herauskristallisiert hat, sieht die Situation zur Analyse von verteilten Systemen anders aus. Für diese Systeme wird in der Regel eine Middleware als Kommunikationsmechanismus zwischen den verschiedenen Komponenten eingesetzt. Sie bietet daher gute Möglichkeiten, um gezielt Daten aufzuzeichnen. Auf Grundlage dieser Daten lassen sich Metriken entwickeln, welche die Kommunikation von Komponenten beschreiben.
Ziel dieser Arbeit ist daher der Entwurf von generischen Metriken (also unabhängig vom konkreten Robotiksystem), die auf Basis von Daten, die in der Middleware aufgezeichnet wurden, die Qualität von gewählten Kommunikationsstrukturen beschreiben. Hierzu müssen zum einen neue Metriken entwickelt oder existierende adaptiert werden und zum anderen die Middleware um eine Schnittstelle ergänzt werden, die die Berechnung dieser Metriken ermöglicht.
Zur Bearbeitung sind Interesse an Software Engineering Techniken, sowie Erfahrung in der Entwicklung mit C/C++ hilfreich. Alternativ kann die Entwicklung auch in Python oder Java erfolgen.