Grin logo
de en es fr
Shop
GRIN Website
Publish your texts - enjoy our full service for authors
Go to shop › Computer Science - Software

Analyse, Design und Implementierung einer aspektorientierten Erweiterung der Programmiersprache nesC im Besonderen für das Logging in Sensornetzen

Title: Analyse, Design und Implementierung einer aspektorientierten Erweiterung der Programmiersprache nesC im Besonderen für das Logging in Sensornetzen

Diploma Thesis , 2008 , 119 Pages , Grade: 1,15

Autor:in: Christoph Tornau (Author)

Computer Science - Software
Excerpt & Details   Look inside the ebook
Summary Excerpt Details

Sensornetze sind drahtlos verbundene Netze bestehend aus Knoten, die über eine CPU, Sensoren und ein Netzinterface verfügen. Die Knoten dieser Netze haben starke Ressourenbeschränkungen. Aus diesem Grunde sind eXziente Programme notwendig, deren Programmierung schwierig ist. Um diesem zu begegnen wurde die Programmiersprache nesC zusammen mit einem in ihr geschriebenen Betriebssystem TinyOS entwickelt. Die Sprache nesC baut dabei auf C auf und unterstützt einen komponentenbasierten Aufbau von Programmen. Die Entwicklung der Programme für die Knoten erfolgt in drei Phasen: Für die Simulation, für das Testbed und für den Einsatz eines Sensornetzes in seinem Deployment. Logging ist eine Methode, um Programme während ihrer Ausführung zu prüfen. Es muss jedoch für jede der drei Phasen der Entwicklung der Knotensoftware eine unterschiedliche Loggingfunktion aufgerufen werden. Aspektorientierte Programmierung ermöglicht es nun, zu einem bestehenden Basisprogramm mithilfe von Aspekten neue Funktionalitäten hinzuzufügen. Die Diplomarbeit entwickelt eine aspektorientierte Spracherweiterung für die Sprache nesC, um in den drei Phasen unterschiedliche Funktionalitäen durch Aspekte hinzufügen zu können, um beispielsweise die unterschiedlichen Loggingfunktionen einzufügen. Die Arbeit umfasst sowohl das Design als auch die Durchführung der Implementierung der aspektorientierten Spracherweiterung innerhalb des originalen nesC-Compilers. Interessante neue Konzepte für die Änderung der KonVgurationen der Komponenten eines nesC-Programmes mithilfe der aspektorientierten Spracherweiterung werden entwickelt. Die Implementierung einer Spracherweiterung innerhalb eines Compilers wird untersucht.

Excerpt


Inhaltsverzeichnis

1 Einleitung

1.1 Motivation

1.2 Aufgabenstellung dieser Arbeit

1.3 Überblick über die Arbeit

2 Grundlagen

2.1 Drahtlos verbundene Sensornetze

2.1.1 Motes als Knoten eines Sensornetzes

2.1.2 Anforderungen an Sensornetze

2.1.3 Anwendungsgebiete von Sensornetzen

2.1.4 Weitere Miniaturisierung bis hin zum Smart Dust

2.1.5 Neue Anwendungsgebiete durch Miniaturisierung

2.1.6 Die Sprache nesC und das Betriebssystem TinyOS

2.2 Tools zur Unterstützung des Programmierers

2.2.1 Tools zur Programmprüfung

2.2.2 Logging und Debugging

2.3 Aspektorientierte Programmierung

2.3.1 Überblick über die aspektorientierte Programmierung

Weben von Aspekten bestehend aus Pointcuts und Advices

Crosscutting Concerns und Obliviousness

Nachteile der aspektorientierten Programmierung

2.3.2 Motivation des aspektorientierten Loggings für Sensormotes

2.3.3 Weitere Möglichkeiten für die Anwendung von Aspekten auf Sensormotes

3 Analyse von Logging-Frameworks und aspektorientierten Spracherweiterungen und deren Implementierungen

3.1 Verwandte Arbeiten

3.2 Logging-Frameworks

3.2.1 Loggingansätze für die PC-Umgebung

3.2.2 Loggingansätze in nesC für die Sensornetzumgebung

3.3 Das Weaving unterschiedlicher Implementierungen aspektorientierter Sprachen

3.3.1 Zeitpunkte des Weavings

3.3.2 Bytecode-Weaving in der AspectJ-Implementierung

3.3.3 Loadtime Weaving und Runtime Weaving

3.3.4 LogicAJ als Beispiel einer Implementierung als Precompiler

3.3.5 Weitere Implementierungen als Precompiler

3.3.6 Einweben von Aspekten ohne Implementierung einer Spracherweiterung

3.3.7 Schlussfolgerungen für die Erweiterung von nesC

3.4 Sprachdefinition von AspectJ

3.4.1 AspectJ als Vorreiter

3.4.2 Pointcutdeklarationssprache

Aufruf-Pointcuts

Zustandsbasierte Pointcuts

Dynamische Pointcuts

Pointcuts auf Programmcode

3.4.3 Advices

3.4.4 Introductions

3.5 Composition Filters

4 Entwurf der aspektorientierten Sprache für nesC

4.1 Die Sprache nesC

4.1.1 Komponentenbasierter Aufbau von nesC

4.1.2 Als asynchron gekennzeichnete Funktionen

4.1.3 Das Taskkonzept

4.1.4 Quellcode eines nesC-Programmes

4.2 Pointcuts und Advices für nesC

4.2.1 Zusätzliche Sprachkonzepte von nesC führen zu zusätzlichen Joinpointmöglichkeiten

Einfache Funktionspointcuts

Introductions

Command- und Event-Joinpoints

Task-Joinpoints

Änderungen von Konfigurationen

4.2.2 Definition der Pointcutdeklarationssprache für nesC

Allgemein

Pointcuts für private Funktionen

Pointcuts für Events und Commands

Pointcuts für Tasks

Hilfspointcut zur Übernahme von Argumenten

Hilfspointcut zum Einschränken des Einwebens auf bestimmte Module

Konfigurationsverändernde Anweisungen

4.2.3 Definition der Advicedeklarationssprache

Before, After und Around-Advices

Zugriff auf Variablen und Joinpointinformationen

Benutzung von konfigurationsverändernden Anweisungen

5 Analyse des Aufbaus des nesC-Compilers und seines Frameworks

5.1 Das Build-Framework um den nesC-Compiler

5.2 Der nesC-Compiler

5.2.1 Aufbau

5.2.2 Lexer

5.2.3 Parser

5.2.4 Markieren der Module anhand der Konfigurationen

5.2.5 Generierung des Ausgabe-C-Codes

5.3 Die Eingabedatei des Parsergenerators yacc

6 Arbeitsweise der Compilererweiterung der aspektorientierten Spracherweiterung von nesC

6.1 Designentscheidung für eine Implementierung der Spracherweiterung innerhalb des nesC-Compilers

6.2 Die Compilererweiterung für Pointcuts und Advices

6.2.1 Der Weg eines Aspektes

6.2.2 Überblick über die Arbeit der Compilererweiterung

6.3 Die Arbeit der Compilererweiterung für Pointcuts und Advices im Detail

6.3.1 Schritt 1: Laden der Aspekte

6.3.2 Schritt 2: AST-Aufbau für Aspekte

Arbeit des Lexers

Erweiterte und neue Knotentypen für den AST

Arbeit des Parsers

6.3.3 Schritt 3: Verbinden der Pointcuts mit ihren einzuwebenden Advices

6.3.4 Schritt 4: Weben

6.3.5 Schritt 5: Generierung der Ausgabedatei

6.4 Die Compilererweiterung für konfigurationsverändernde Anweisungen

6.5 Die Arbeit der Compilererweiterung für konfigurationsverändernde Anweisungen im Detail

6.5.1 Arbeit des Lexers

6.5.2 Erweiterte und neue Knotentypen für den AST

6.5.3 Arbeit des Parsers

6.5.4 Durchführen der Änderungen der Konfigurationen

6.5.5 Übernahme des Wirings des Aspektes

7 Evaluation der Compilererweiterung

7.1 Zur Evaluation verwendeter Basiscode

7.2 Funktionalität der Aspekte

7.2.1 Logging durch die printf-Bibliothek

7.2.2 Logging durch Ausgabe von Informationen auf die Leds des Motes

7.2.3 Konfigurationsverändernde Anweisungen

7.3 Quellcode der Aspekte

7.3.1 Logging durch die printf-Bibliothek

7.3.2 Logging durch Ausgabe von Informationen auf die Leds des Motes

7.3.3 Konfigurationsverändernde Anweisungen

7.4 Ergebnisse der Evaluation

7.4.1 Einwebhäufigkeit und Anzahl der gewebten Programmzeilen

7.4.2 Laufzeitverhalten der Compilererweiterung

7.4.3 Konfigurationsverändernde Anweisungen

8 Zusammenfassung und Ausblick

8.1 Zusammenstellung der Ergebnisse der Diplomarbeit

8.2 Ausblick

Zielsetzung & Themen

Die vorliegende Diplomarbeit befasst sich mit der Entwicklung und Implementierung einer aspektorientierten Spracherweiterung für die Programmiersprache nesC, um insbesondere das Logging in Sensornetzen effizienter und flexibler zu gestalten. Dabei wird untersucht, wie Aspekte direkt innerhalb des nesC-Compilers eingewebt werden können, um Ressourcenbeschränkungen auf Sensorknoten (Motes) optimal zu berücksichtigen.

  • Grundlagen der Sensornetz-Programmierung mit nesC und TinyOS.
  • Analyse aspektorientierter Programmierkonzepte (Pointcuts, Advices, Weaving).
  • Design einer aspektorientierten Spracherweiterung für nesC zur Modifikation von Funktionen und Konfigurationen.
  • Implementierung der Spracherweiterung im nesC-Compiler mittels AST-Manipulation.
  • Evaluation anhand von Logging-Szenarien und Analyse der Compile-Laufzeit.

Auszug aus dem Buch

2.1.1 Motes als Knoten eines Sensornetzes

Drahtlos verbundene Sensornetze (Wireless Sensor Networks) [30] sind Netze bestehend aus einzelnen Knoten, welche Motes genannt werden. Das Netz wird mit Hilfe von Funkverbindungen aufgebaut. Ein Mote stellt ein kleines autarkes Computersystem dar. Ein Mote besteht – wie Abbildung 2.1 veranschaulicht – aus einer CPU mit nicht-flüchtigem und flüchtigem Speicher für Programm und Daten. Diese CPU hat Zugriff auf einen oder mehrere Sensoren als Eingabegeräte und auf ein Funkinterface, über welches der Mote mit anderen Motes Nachrichten austauschen kann. Zusätzlich kommt eine Energieversorgung meist in Form einer Batterie hinzu. Von diesem Standardaufbau kann es Abweichungen geben. Beispielsweise ist es möglich, dass ein Mote als ein Gateway für Nachrichten innerhalb des Sensornetzes nach außen dienen soll und deswegen über keine Sensoren verfügt; dafür jedoch meist über ein zweites Netzinterface. Auch gibt es Spezialanwendungen, in welchen Motes über Steuerungshardware verfügen oder eine Ausgabehardware verwenden, mit der sie auf ihre Umwelt Einfluss nehmen können. So ist eine Steuerung z.B. von Ventilen durch ein Mote durchführbar oder ein Mote kann selbständig seine Position ändern [66]. Auch kann eine simple Darstellung von Daten über die Ausgabe-Leds von einem Mote durchgeführt werden [1]. Abbildung 2.2 zeigt das Foto eines Motes. Der dargestellte Mote, welcher von Ambient Systems B.V. vertrieben wird, kommt in Sensornetzen zur Verfolgung von Warenströmen im Handel zum Einsatz. Es handelt sich dabei um einen Mote von normaler Größe. Es ist auch möglich, kleinere Motes herzustellen.

Zusammenfassung der Kapitel

1 Einleitung: Dieses Kapitel führt in die Thematik der Sensornetze ein und motiviert die Notwendigkeit einer aspektorientierten Spracherweiterung für nesC zur effizienten Testbarkeit.

2 Grundlagen: Es werden die Funktionsweise von Sensornetzen, das Betriebssystem TinyOS sowie die Konzepte der aspektorientierten Programmierung (AOP) umfassend theoretisch dargelegt.

3 Analyse von Logging-Frameworks und aspektorientierten Spracherweiterungen und deren Implementierungen: Dieses Kapitel analysiert verwandte Arbeiten und Implementierungen, um fundierte Entscheidungen für das Design der eigenen Spracherweiterung zu treffen.

4 Entwurf der aspektorientierten Sprache für nesC: Hier wird das spezifische Sprachdesign entworfen, inklusive der Definition von Pointcuts und Advices, die auf die Besonderheiten von nesC zugeschnitten sind.

5 Analyse des Aufbaus des nesC-Compilers und seines Frameworks: Es erfolgt eine detaillierte technische Analyse der Compiler-Interna, wie Lexer, Parser und dem zugrundeliegenden Abstract Syntax Tree (AST).

6 Arbeitsweise der Compilererweiterung der aspektorientierten Spracherweiterung von nesC: Das Kapitel beschreibt konkret, wie die Compiler-Erweiterung Aspekte in den Code einwebt und wie konfigurationsverändernde Anweisungen umgesetzt werden.

7 Evaluation der Compilererweiterung: Die Implementierung wird anhand praktischer Logging-Beispiele evaluiert und hinsichtlich ihrer Auswirkungen auf die Kompilierzeit untersucht.

8 Zusammenfassung und Ausblick: Die Ergebnisse der Arbeit werden resümiert und zukünftige Forschungs- und Entwicklungsmöglichkeiten aufgezeigt.

Schlüsselwörter

nesC, TinyOS, Sensornetze, Motes, Aspektorientierte Programmierung, AOP, Pointcuts, Advices, Compilererweiterung, Weaving, Logging, Debugging, AST, Konfigurationsänderung, Embedded Systems

Häufig gestellte Fragen

Worum geht es in dieser Diplomarbeit grundsätzlich?

Die Arbeit beschäftigt sich mit der Implementierung einer aspektorientierten Spracherweiterung für nesC, um die Entwicklung und Prüfung (insbesondere Logging) von Software für Sensornetz-Knoten (Motes) zu vereinfachen und effizienter zu gestalten.

Welche zentralen Themenfelder werden behandelt?

Die zentralen Themenfelder sind die aspektorientierte Programmierung, die Programmiersprache nesC, das Betriebssystem TinyOS und die Optimierung der Software-Entwicklung für ressourcenbeschränkte eingebettete Systeme.

Was ist das primäre Ziel der Arbeit?

Das Ziel ist der Entwurf und die praktische Implementierung einer aspektorientierten Spracherweiterung, die es erlaubt, Funktionalitäten wie Logging modular hinzuzufügen und später restlos aus dem Binärcode zu entfernen, um Ressourcen zu schonen.

Welche wissenschaftliche Methode wurde verwendet?

Es wurde eine theoretische Analyse bestehender AOP-Ansätze durchgeführt, gefolgt von einem Design- und Implementierungsprozess innerhalb des existierenden nesC-Compilers. Die Funktionalität wurde anschließend durch eine systematische Evaluation an verschiedenen Applikationen geprüft.

Was wird im Hauptteil der Arbeit behandelt?

Der Hauptteil umfasst die Analyse des nesC-Compilers, das Design der Spracherweiterung, die konkrete Beschreibung des Weaving-Prozesses durch Compilererweiterungen sowie die Implementierung von Mechanismen für konfigurationsverändernde Anweisungen.

Welche Schlüsselwörter charakterisieren die Arbeit?

Die Arbeit ist durch Begriffe wie nesC, TinyOS, Sensornetze, AOP, Compilererweiterung, Weaving, Logging, Motes und AST charakterisiert.

Warum ist das Logging in Sensornetzen besonders herausfordernd?

In Sensornetzen müssen Programme extrem ressourceneffizient sein. Traditionelles Logging belastet den Speicher und die CPU dauerhaft. Die Arbeit löst dies durch aspektorientiertes Logging, bei dem der Logging-Code zur Compilezeit bei Bedarf vollständig entfernt werden kann.

Was sind "konfigurationsverändernde Anweisungen" in dieser Arbeit?

Dies ist eine Neuentwicklung der Arbeit, die es ermöglicht, per Aspekt nicht nur Code in Funktionen einzufügen, sondern auch die Komponentenarchitektur und das Wiring eines nesC-Programms dynamisch während der Kompilierung anzupassen.

Excerpt out of 119 pages  - scroll top

Details

Title
Analyse, Design und Implementierung einer aspektorientierten Erweiterung der Programmiersprache nesC im Besonderen für das Logging in Sensornetzen
College
University of Bonn  (Institut für Informatik IV: Kommunikation und Verteilte Systeme)
Grade
1,15
Author
Christoph Tornau (Author)
Publication Year
2008
Pages
119
Catalog Number
V181505
ISBN (eBook)
9783656047223
ISBN (Book)
9783656047490
Language
German
Tags
Sensornetze AOP Aspektorientierung nesC
Product Safety
GRIN Publishing GmbH
Quote paper
Christoph Tornau (Author), 2008, Analyse, Design und Implementierung einer aspektorientierten Erweiterung der Programmiersprache nesC im Besonderen für das Logging in Sensornetzen, Munich, GRIN Verlag, https://www.grin.com/document/181505
Look inside the ebook
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
  • Depending on your browser, you might see this message in place of the failed image.
Excerpt from  119  pages
Grin logo
  • Grin.com
  • Shipping
  • Contact
  • Privacy
  • Terms
  • Imprint