25
Technische Universität München Empirisches Software Engineering Methoden und Relevanz Stefan Wagner Technische Universität München Dr. Stefan Wagner 31.10.2007 Fakultät für Informatik Lehrstuhl für Software & Systems Engineering

Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Empirisches Software EngineeringMethoden und Relevanz

Stefan Wagner

Technische Universität München

Dr. Stefan Wagner

31.10.2007

Fakultät für Informatik Lehrstuhl für Software & Systems Engineering

Page 2: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Definition Software Engineering

Software engineering means application of a systematic, disciplined, quantifiable approach to development, operationand maintenance of software. (IEEE 1990)

• Impliziert einen Entwicklungsprozess

• Systematisch und diszipliniert

• Quantifizierung

Empirisch!

Page 3: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Wissenschaftliche Methoden

• The Scientific Method: Die Welt wird beobachtet und auf Basis der Beobachtung wird, beispielsweise, ein Simulationsmodell gebaut

• The Engineering Method: Die aktuellen Lösungen werden studiert, Änderungen vorgeschlagen und evaluiert

• The Empirical Method: Ein Modell wird vorgeschlagen und durch empirische Studien, wie Fallstudien und Experimente, evaluiert.

• The Analytical Method: Eine formale Theorie wird vorgeschlagen und mit empirischen Beobachtungen verglichen

Empirisch: auf Erfahrung basierend

[Basili (1993), Gilb (1994)]

Page 4: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Realität?

Page 5: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Anwendung und VeröffentlichungMessen/Metriken

Empirisches/Experimentelles Software Engineering

Strategien

Page 6: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Anwendung und VeröffentlichungMessen/Metriken

Empirisches/Experimentelles Software Engineering

Strategien

Page 7: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Messung

Messen

Empirische Welt Formale Welt

MessenAttribut

MaßEntität

Page 8: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Skalen

• Nominal (Anforderungsfehler, Entwurfsfehler, Codierfehler)

• Ordinal (niedrig, mittel, hoch)

• Intervall (Temperatur; Projekttag 1, 2, 3, 4, …)

• Verhältnis (LOC)

• Absolut (Zahl der Zeichen in einer Quelldatei)

Page 9: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Goal-Question-Metric

• Ansatz von Basili und Rombach

• „Measurement requires bothgoals and models“

• Steht dem „planlosen“Sammeln von Daten entgegen

• Verfeinerung erfordert Modelle der Artefakte oder Qualitätsaspekte

Goal

Question Question Question

Metric Metric Metric Metric

Wie verbessere ich meine QS?

Wie effektiv ist die QS?

Wie effizient ist die QS?

# der gefundenen

FehlerSchwere

gefundenen Fehler

Gefundene Fehler /

Personentag

Page 10: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Anwendung und VeröffentlichungMessen/Metriken

Empirisches/Experimentelles Software Engineering

Strategien

Page 11: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Anwendung und VeröffentlichungMessen/Metriken

Empirisches/Experimentelles Software Engineering

Strategien

Page 12: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Studien-Strategien

• Formales/kontrolliertes Experiment : Laborumgebung, Einflussfaktoren werden kontroliert

• Fallstudie: Untersuchung realer Industrieprojekte

• Umfrage: offenes Interview, Fragebogen

• Qualitativ vs. quantitativ

Strategien ersetzen sich nicht, sondern ergänzen sich!

[Wohlin et al. (2000)]

Page 13: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Umfrage

• Qualitative und quantitativ

• Ziel– Deskriptiv

– Erklärend

– Explorativ

• Fragebögen und Interviews

• Ordinal- und Likert-Skalen

• Möglichkeit viele Variablen zu untersuchen

• Aber: subjektiv

Page 14: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Fallstudie

• Qualitative und quantitativ

• Pilotprojekt

• Industrielle Evaluierung

• Realistisch

• Umgebungsfaktoren normalerweise vorgegeben

• Aber: schwer zu generalisieren

Page 15: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Kontrolliertes Experiment

• Direkt, präzise, systematisch

• Wichtig: möglichst alle Faktoren kontrollieren

• Meist nur mit Studenten in Laborumgebung möglich

• Beliebte Untersuchungsgegenstände

– Effektivität von Inspektionen

– Multi-Version Programming

• Aber: Verhältnis Laborumgebung zu Industrieprojekt unklar

Page 16: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Studien-Design

• Planung ist entscheidend

• Ziele identifizieren

• Notwendige Subjekte, Objekte, Variablen, Resourcen

• Analyseverfahren

Page 17: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Studien-Durchführung

Prozess

Des

ign

Treatment

Unabhängige Variablen mit festen Werten

Unabhängige Variable

Abhängige Variable

Page 18: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Analyseverfahren

• Korrelation

• Regression

• Statistische Tests

Die klassische Statistik-Werkzeugkiste!

Page 19: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Anwendung und VeröffentlichungMessen/Metriken

Empirisches/Experimentelles Software Engineering

Strategien

Page 20: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Anwendung und VeröffentlichungMessen/Metriken

Empirisches/Experimentelles Software Engineering

Strategien

Page 21: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Dokumentieren

• Sorgefältige Dokumentation der Studien enorm wichtig

• Begleitend zur Studie

• Hypothesen / Forschungsfragen vorher überlegen

Page 22: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Veröffentlichen

• Die Zahl der empirischen ICSE-Papiere steigt…

• … was sogar empirisch nachgewiesen wurde (Zannier, Melnik, Maurer 2006)

• Außerdem ESEM-Konferenz, EMSE-Journal, …

• Oft werden empirisch sauber ausgewertete Fallstudien oder Experimente erwartet

Page 23: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Typische Gliederung

• Motivation– Problem Statement

– Research Objectives

– Context, environmental factors

• Related work

• Experimental design– Goals, Hypotheses and Variables

– Design, which type

– Subjects, population samplingand group allocation

– Objects, what and why selected

– Instrumentation, material, toolsand how used

– Data Collection Procedure

– Analysis Procedure

– Evaluation of Validity

• Execution– Sample, what does it look like

– Preparation, for experimentexecution

– Data Collection Performed, actual process used

– Validity Procedure, how was datavalidated

[Kitchenham et al. (2006)]

Page 24: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Typische Gliederung (2)

• Analysis– Descriptive statistics, results

– Data set reduction, why and how

– Hypothesis testing, how analysismodel and data were validated

• Interpretation– Evaluation of results and

implications

– Limitations of Study, i.e. validitythreats

– Inferences, i.e. generalizations

– Lesson learnt, experiencescollected during experiment

• Conclusions and Future work– Relation to Existing Evidence

– Impact

– Limitations

– Future work

Mittelwert, Median,

Extremwerte, Boxplots

Threats to Validity:InternalExternal

[Kitchenham et al. (2006)]

Page 25: Empirisches Software Engineering Methoden und Relevanz · Technische Universität München Definition Software Engineering Software engineering means application of a systematic,

Technische Universität München

Zusammenfassung

• Empirische Studien sind ein unverzichtbares Werkzeug in der SE-Forschung

• Zunehmend in renommierten Konferenzen gefordert

• Eigene Konferenzen/Journale

• Gibt bereits relativ klare Vorgaben für Studie und Veröffentlichung

Wir sind auf dem Weg zur Mitgliedschaft in ISERN