Schnelle Textsuche mittels regulärer Ausdrücke in umfangreichen Softwareprojekten


Der Quellcode umfangreicher Softwareprojekte kann mehrere Megabyte groß werden. Ohne Werkzeugunterstützung ist es kaum möglich, sich in dieser Datenmenge zurechtzufinden. Schon das Suchen eines Wortes in allen Dateien überfordert herkömmliche Suchwerkzeuge. Es soll daher ein Werkzeug (Retriever) entwickelt werden, das ein Suchmuster in Form eines regulären Ausdrucks in allen oder einigen Quelldateien sucht und alle seine Vorkommen liefert. Das Werkzeug soll folgende Nebenbedingungen erfüllen:

  • Zur Effizienzsteigerung soll ein Suchindex aufgebaut werden, der eine Brute-Force-Suche vermeidet und bei Änderungen der Quelldateien laufend nachgeführt wird. Der Index soll möglichst kompakt sein, sodaß große Teile davon im Hauptspeicher gehalten werden können. Es sind dazu Techniken des Information-Retrieval zu studieren und anzuwenden.
  • Der Retriever soll in der Lage sein, sowohl Programmtexte als auch Prosatexte zu indizieren und nicht auf eine bestimmte Sprache (z.B. Englisch oder Deutsch) zugeschnitten sein.
  • Die Implementierung des Retrievers soll plattformunabhängig und portabel sein.
  • Es sind geeignete Schnittstellen vorzusehen, um den Retriever an die kommerzielle Programmierumgebung SNiFF+ anzuschließen. Insbesondere soll die Suchfunktion des Retrievers von SNiFF+ aus aufrufbar sein. SNiFF+ soll dem Retriever mitteilen können, wann sich eine Quelldatei geändert hat und daher der Index nachgeführt werden muß. Schließlich soll der Retriever Informationen über den Fortschritt der Suche an SNiFF+ melden. Wünschenswert ist auch eine Schnittstelle, die es SNiFF+ erlaubt, teilweise eingetippte Wörter zu vervollständigen, indem der Rest des Wortes aus dem Index des Retrievers ergänzt wird.
  • Für Testzwecke soll eine geeignete grafische Benutzerumgebung entwickelt werden, die die Eingabe von Suchmustern, das Inspizieren der Suchergebnisse, die Spezifikation von Suchparametern und die Anzeige von Suchstatistiken ermöglicht.

Der Fortschritt der Arbeit ist im Rhythmus von 14 Tagen mit dem Betreuer zu besprechen. Bis 1. Oktober 1998 ist ein lauffähiger Prototyp des Retrievers zu liefern. Für die Implementierung des Retrievers sowie für die schriftliche Diplomarbeit sind die Richtlinien des Instituts für Praktische Informatik (Systemsoftware) einzuhalten.


Betreuer: Prof. Dr. H. Mössenböck