You are here: Wiki>SE Web>ThesesHome>ThesisDasA (19 Mar 2009, LutzPrechelt)Edit

Das "a" (Bachelorarbeit oder Studienarbeit)

Worum geht es hier?

Angenommen, Sie haben auf einem Linux-Rechner die Anwendung OpenOffice Writer mit einem leeren Dokument geöffnet und betätigen nun die Taste "A" auf Ihrer Tastatur. Das Zeichen "a" erscheint auf dem Bildschirm. Preisfrage: Was ist seit dem Tastendruck intern in der Software alles abgelaufen?

Die Aufgabe dieser Arbeit besteht darin, eine verständliche und anschauliche Beschreibung dieser Abläufe anzufertigen:
  • Welche Subsystemen/Funktionseinheiten/Komponenten/Module sind an der Abarbeitung des Tastaturereignisses beteiligt?
  • Wie spielen sie hier zusammen?
  • Was ist darüber hinaus allgemein deren Rolle?
  • Was läuft im vorliegenden Fall konkret in ihnen ab? (Die wichtigsten Unterprogrammaufrufe und Erläuterung ihrer Bedeutung)

Zweck der Arbeit

Die Beschreibung soll zu verschiedenen Zwecken verwendet werden:
  • In der Vorlesung "Softwaretechnik" als ein Beispiel zur Illustration einer komplexen Softwarearchitektur, das einmal vorab ausführlich eingeführt wird, und auf das man sich im Verlauf der Veranstaltung immer mal wieder beziehen kann zur Verdeutlichung verschiedener Ideen und Probleme in den Bereichen Architektur, Modularität, Qualitätssicherung, Wiederverwendung und Projektmanagement.
  • Für einen Vortrag, der sich an Laien richtet, um ihnen zu verdeutlichen, wie ungeheuer komplex moderne Software ist (und dass sie, daran gemessen, z.B. gar nicht unzuverlässig, sondern im Gegenteil verblüffend zuverlässig ist).

Arbeitsweise

Diese Arbeit hat zwei Teile:
  • Herausfinden des Ablaufs
  • Darstellen des Ablaufs

Herausfinden des Ablaufs

Das Herausfinden erfordert jemanden, der sich am wohlsten fühlt, wenn er oder sie in Massen von Quellcode quasi baden kann: Die Arbeit gibt die Gelegenheit, einige Teile des Linux-Betriebssystemkerns (geschrieben in C) aus der Nähe kennen zu lernen, ferner einige Teile von X-Windows (ebenfalls C), KDE (C++) und natürlich OpenOffice (Java).

Aber man kann die Teile nicht nur kennen lernen, man muss es auch. Es wird vermutlich nötig sein, die Software geeignet zu instrumentieren und dann selbst zu übersetzen, damit man die Abläufe von außen dynamisch verfolgen kann und nicht darauf angewiesen ist, seinen Weg durch den Quellcode durch Lesen ganz alleine zu finden.

Eine Reihe kniffliger technischer Detailprobleme wird zu bewältigen sein, z.B.: Wie läßt man das Fenstersytem im Debugger laufen, um die Abläufe zu verfolgen, wenn der Debugger selbst seine Ausgaben über dieses Fenstersystem anzeigen soll? (Lösung ist vermutlich: Debugger auf einem zweiten X-Window-Server anzeigen).

Es gilt hier, herauszufinden:
  • Welche einzelnen Softwareroutinen werden in welcher Reihenfolge aufgerufen?
  • Welche Argumente werden Ihnen übergeben und was bedeuten Sie?
und dabei unwichtige und vor allem wiederholte Aufrufe so weit auszublenden, dass man nicht in Informationen ertrinkt.

Hat man dies geleistet, geht es ans Darstellen dieses Ablaufs.

Darstellen des Ablaufs

  • In der Rohversion sollte man jeden verbliebenen Aufruf durch eine kurze Erläuterung beschreiben
  • In der langen Schriftform fasst man diese Aufrufe soweit in Gruppen zusammen, dass die einzelnen Funktionsbausteine (Module) in ihren Aufgaben noch erkennbar bleiben, deren Innenleben aber zusammengefasst wird.
  • In der kürzeren Form wird daraus ein Foliensatz, der nur noch so viel Detail enthält, dass man ihn in ca. 60 Minuten vortragen kann und auch ohne Vorkenntnisse über die Systeme ein Verständnis für deren Aufbau und Funktionsweise erwirbt. Hierzu sollte auch eine schematische Visualisierung (vermutlich ein Kästchen-und-Pfeile-Bild) als eine Art Skelett für die Erklärung entwickelt werden.

Die eigentliche Studien- oder Bachelorarbeit, die man abgibt, besteht zum Großteil aus diesen obigen Dokumenten, plus zusätzlich einer Beschreibung des Vorgehens, wie man zu ihnen gelangt ist.

Grundsätzliches

Quellenhinweise

Comments

 
Topic revision: r4 - 19 Mar 2009, LutzPrechelt
 
  • Printable version of this topic (p) Printable version of this topic (p)