ipdlogo Projekt 'JPlag-Plagiatfinder'
Achtung: Es gibt eine neue Webseite des Lehrstuhls
dept-logo unilogo
JPlag: Finden von Programmähnlichkeiten

Mit JPlag lassen sich Ähnlichkeiten zwischen Programmen finden. Es wird üblicherweise in Programmierkursen verwendet um sicherzustellen, dass die Studenten nicht voneinander abgeschrieben haben. Unterstützte Programmiersprachen sind: Java, C, C++, C# und Scheme. Darüberhinaus kann JPlag auch auf natürliche Sprachen angewandt werden. JPlag wird als Online-Service angeboten und hat momentan über 1000 Benutzer in aller Welt.

Projektbeteiligte

Institutsleitung
Prof. Tichy, Walter F.
blank
Wissenschaftliche Mitarbeiter
Landhäußer, Mathias
blank
Alumni
Dr. Malpohl, Guido

Publikationen zum Projekt

2002 - Zeitschriftenartikel
Prechelt, Philippsen, Malpohl, Finding Plagiarisms among a Set of Programs with JPlag

2000 - Technischer Bericht
Prechelt, Philippsen, Malpohl, JPlag: Finding plagiarisms among a set of programs

Teil des Gebiets

Softwaretechnik

Empirische Softwaretechnik

Im Jahr 2002 verglichen wir mit einem kontrollierten Experiment Paare von Programmierern mit einzelnen Entwicklern. Letztere wurden durch eine zusätzliche anonyme Durchsicht ihres Programmtextes unterstützt. Motiviert wurde diese Studie durch das Ziel, eine Technik zu finden, die nur 20% der Kosten von Programmiererpaaren hat, aber 80% der Qualität liefert. Da Inspektionen eine anerkannte Technik zur Qualitätssicherung sind, lag es nahe, den Vorbereitungsprozess auf Inspektionen, die Durchsichten, als potentiellen Kandidaten zu untersuchen. Teilnehmer waren 20 Studenten des XP-Praktikums.

Zwei erste Resultate konnten festgehalten werden: Erstens, wenn gleiche Qualität erreicht werden soll, so sind einzelne Entwickler fast genauso teuer wie Entwicklerpaare. Zweitens, wenn gleiche Qualität nicht gefordert ist, sondern nur das Fertigstellen der Aufgabe, so sind die Programme der Paare im Mittel 7 - 13% zuverlässiger bei durchschnittlich jedoch 24% höheren Kosten. Beide Ergebnisse konnten jedoch nicht statistisch untermauert werden.

Planung und Steuerung von Softwareprojekten

Es ist eine schwierige Aufgabe in der Praxis, die verfügbaren Entwickler den Aufgaben in einem Softwareprojekt so zuzuordnen, dass das Projekt möglichst schnell abgeschlossen wird. Die Zuordnung muss berücksichtigen, welche Aufgaben gerade in Arbeit sind, welche Entwickler gut für eine unerledigte Aufgabe geeignet sind, welchen Entwicklungsaufwand die Aufgaben haben und welchen weiteren Verlauf das Projekt nehmen könnte. Eine optimale Zuordnungs-Strategie ist daher schwer zu finden. Manager behelfen sich oft mit einfachen Regeln, z.B. große Komponenten zuerst zu entwickeln.

Aufbauend auf unserem wahrscheinlichkeitstheoretischen Modell für Software-Projekte haben wir ein Werkzeug entwickelt, mit dem man den Verlauf eines Projekts simulieren kann. Aus den Ergebnissen der Simulationsläufe kann man die Wahrscheinlichkeitsverteilung und den Erwartungswert für die Dauer des Projekts berechnen. Beispiele zeigen, dass die Wahl der Strategie einen großen Einfluss auf die Projektdauer hat. Außerdem zeigt sich, dass die Qualität einer Strategie von den Kenndaten des Projekts abhängt, etwa von der Stärke der Kopplung zwischen den Komponenten der Software.

Unsere Forschung wird von der DFG unter dem Projektnamen OASE (Optimale Ablaufsteuerung für die Software-Entwicklung) gefördert.

Leichtgewichtige Software-Prozesse

Extreme Programming und andere leichtgewichtige Software-Prozesse werden viel diskutiert, aber es mangelt an Modellen, mit denen sich der Nutzen und die Kosten dieser Prozesse gegeneinander abwägen lassen. Dazu müssen zunächst einzelne Techniken, z.B. die Paarprogrammierung beim Extreme Programming, bewertet werden. Bei der Paarprogrammierung arbeiten je zwei Entwickler gemeinsam an einer Aufgabe, so dass sich die Personalkosten im Vergleich zur herkömmlichen Entwicklung verdoppeln. Ein Paar von Programmierern ist aber schneller als ein einzelner Programmierer und der entstehende Code meist von höherer Qualität.

Die Frage ist, ob der Nutzen der Paarprogrammierung die erhöhten Personalkosten ausgleicht. Um diese Frage zu untersuchen, haben wir ein Kosten-Nutzen-Modell für Paarprogrammierung entwickelt. Es stellt sich heraus, dass der ökonomische Kontext, in dem ein Projekt abläuft, von entscheidender Bedeutung ist. Ist der Marktdruck besonders hoch, dann kann sich Paarprogrammierung finanziell lohnen. Ist der Marktdruck hingegen niedrig, werden im allgemeinen die Kosten der Paarprogrammierung ihren Nutzen übersteigen.

Methoden der Software-Zuverlässigkeit

Software-Inspektionen sind eine wichtige Technik zur Qualitätssicherung in der Software-Entwicklung. Inspektionen lassen sich auf praktisch alle Dokumente anwenden, die bei der Software-Entwicklung entstehen, also auch Pflichtenhefte oder Entwürfe. Dadurch ist es möglich, Fehler schon weit vor dem Testen zu finden. Um zu entscheiden, ob ein Software-Dokument in die nächste Entwicklungsphase übernommen werden kann oder erst weiter verbessert werden muss, wird anhand der Ergebnisse der Inspektion (z.B. gefundene Fehler je Inspektor) geschätzt, wieviele Fehler noch in dem Dokument enthalten sind.

Bisherige Methoden zum Schätzen der Fehleranzahl nach einer Inspektion sind viel zu ungenau, um in der Praxis brauchbar zu sein. Wir haben einen neuen Ansatz entwickelt, der im Gegensatz zu den bekannten Methoden nicht nur die Ergebnisse der Inspektion selbst, sondern auch die Ergebnisse früherer Inspektionen zur Schätzung ausnutzt. Unser neuer Ansatz liefert auf dem Standardbenchmark für Software-Inspektionen sehr gute Schätzergebnisse: unser Ansatz ist um einen Faktor 4 bis 5 genauer als die bekannten Methoden.


blank
 Login
Login: 
Passwort: 
 Links
  » IPD Tichy
  » JavaParty
  » JPlag
  » ClusterOS
  » Jamaica
  » Education Support Centre
  » CHIL
blank up