ipdlogo Softwaretechnik dept-logo unilogo

Beschreibung

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.

Projekte in diesem Bereich

Laufend

Bewerten von Entwicklungstechniken
Bewerten von Entwicklungstechniken
JavaParty
Verteiltes Java für Cluster-Computing
JPlag-Plagiatfinder
JPlag: Finden von Programmähnlichkeiten
Methoden der Software-Zuverlässigkeit
Methoden der Software-Zuverlässigkeit
OASE
Planung von Softwareprojekten
sGrid
Verteiltes Rechnen für Forschungsprojekte durch die Nutzung von bereits vorhandenen, freien IT-Ressourcen
Unterstützung verteilter Softwareentwicklung
Unterstützung verteilter Softwareentwicklung

Abgeschlossen

Leicht
Bewertung, Verbesserung und Unterstützung leichtgewichtiger Softwareprozesse

Beteiligte

Institutsleitung
Prof. Tichy, Walter F.
blank
Wissenschaftliche Mitarbeiter
Dr. Padberg, Frank
Landhäußer, Mathias
Moschny, Thomas
Wachtel, Alexander
blank
Alumni
Prof. Philippsen, Michael
Dr. Haumacher, Bernhard
Dr. Höfer, Andreas
Dr. Malpohl, Guido
Dr. Müller, Matthias
Reuter, Jürgen
blank
Ehemalige Hiwis
Hartmann, Björn-Oliver
Kulla, Fabian
Löfström, Linus
Wonnemann, Claus

Veröffentlichungen im Bereich

2007 - Zeitschriftenartikel
Müller, Höfer, The Effect of Experience on the Test-Driven Development Process

2005 - Dissertation
Haumacher, Parallel Programming Environment for Computer Clusters
2005 - Konferenzartikel
Müller, A Preliminary Study on the Impact of a Pair Design Phase on Pair Programming and Solo Programming

2004 - Konferenzartikel
T. Ragg , R. Schoknecht, Using Machine Learning for Estimating the Defect Content After an Inspection

2003 - Zeitschriftenartikel
Padberg, A Discrete Simulation Model for Assessing Software Project Scheduling Policies
Padberg, Maximum Likelihood Estimates for the Hypergeometric Software Reliability Model
2003 - Konferenzartikel
Padberg, A Software Process Scheduling Simulator (Vorführung und Zusammenfassung)
Müller, Padberg, About the Return on Investment of Test-driven Development
Padberg, Müller, Analyzing the Cost and Benefit of Pair Programming
Padberg, Applying Process Simulation to Software Project Scheduling
Haumacher, Moschny, Reuter, Tichy, Transparent Distributed Threads for Java
2003 - Vortrag
Padberg, On the Economic Evaluation of XP Projects

2002 - Zeitschriftenartikel
Prechelt, Philippsen, Malpohl, Finding Plagiarisms among a Set of Programs with JPlag
2002 - Konferenzartikel
T. Ragg und R. Schoknecht, Applying Machine Learning to Solve an Estimation Problem in Software Inspections.
Padberg, Empirical Interval Estimates for the Defect Content After an Inspection.
Müller, Padberg, Extreme Programming from an Engineering Economics Viewpoint.
Padberg, Using Process Simulation to Compare Scheduling Strategies for Software Projects.

2001 - Konferenzartikel
Padberg, A Fast Algorithm to Compute Maximum Likelihood Estimates for the Hypergeometric Software Reliability Model
Haumacher, Philippsen, Exploiting Object Locality in JavaParty, a Distributed Computing Environment for Workstation Clusters
Padberg, Scheduling Software Projects to Minimize the Development Time and Cost with a Given Staff
Padberg, Tracking the Impact of Design Changes During Software Development

2000 - Zeitschriftenartikel
Haumacher, Philippsen, Locality optimization in JavaParty by means of static type analysis
Christian Nester, More Efficient Serialization and RMI for Java
2000 - Konferenzartikel
Padberg, Padberg, Estimating the Impact of the Programming Language on the Development Time of a Software Project
Padberg, Linking Software Design with Business Requirements - Quantitatively
Padberg, Towards Optimizing the Schedule of Software Projects with Respect to Development Time and Cost
2000 - Technischer Bericht
Padberg, Padberg, Ein Anwendungsbeispiel für ein neues Modell zur Aufwandschätzung
Prechelt, Philippsen, Malpohl, JPlag: Finding plagiarisms among a set of programs

1999 - Konferenzartikel
Padberg, A Fresh Look at Cost Estimation, Process Models and Risk Analysis
Padberg, A Probabilistic Model for Software Projects

1998 - Dissertation
Padberg, Schätzung der Erfolgsaussichten, der Dauer und der Kosten von Softwareprojekten mit strengen wahrscheinlichkeitstheoretischen Methoden

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