Lutz Prechelt - Keynote: "Meine Plattform ist besser als Deine Plattform???"
1. Meine Plattform ist besser
als Deine Plattform???
Prof. Dr. Lutz Prechelt
Freie Universität Berlin
2. Die Frage (1)
Welches ist die beste
Web-Entwicklungsplattform?
Wer hat dazu eine klare Meinung?
Bitte mal melden
2
3. Die Frage (2)
Sie da hinten mit den roten Haaren:
Welche ist das?
Aha.
Ist irgend jemand anderer Meinung?
Bitte mal melden.
3
4. Die Frage (3)
Dieser Vortrag handelt von:
Und woher wissen Sie das?
Vergleichbare(!) persönliche Erfahrungen mit
vielen Plattformen hat kaum jemand.
4
5. Die Frage (4)
Und was heißt das überhaupt, "die beste"?
• produktiv bei Erstentwicklung?
• gute Wartbarkeit und Erweiterbarkeit?
• hohe Effizienz, hohe Skalierbarkeit?
• wenig Defekte im eigenen Code?
• wenig Defekte in der Infrastruktur?
• führt zu hoher Sicherheit?
• intelligente nette Kollegen? etc…
5
6. Jetzt aber mal echt: Die Frage
Besitzen unterschiedliche
Webentwicklungsplattformen typische aber
unterschiedliche Eigenschaften?
Welche?
6
7. Wie bekommt man sowas raus?
Man verkleidet eine wissenschaftliche Studie als Wettbewerb:
7
8. Plat_Forms: Das Format
• 3er-Teams professioneller Webentwickler
• jedes Team benutzt seine Lieblingsplattform
• 3 oder 4 Teams pro Plattform, ausgewählt nach Qualifikation
• alle zur gleichen Zeit am gleichen Ort
• 2 Tage: 9-24 Uhr und 8-18 Uhr
• d.h. ca. 25h ca. 2 Personenwochen Aufwand
• alle Teams implementieren die selbe, detaillierte Spezifikation
• anschließend 6 Monate wissenschaftliche Auswertung
2 mal durchgeführt: 2007 und 2011
8
9. Plat_Forms 2007
9 Teams: 3 Java, 3 Perl, 3 PHP
Mit Teilnehmern aus Deutschland, Österreich, Schweiz, Litauen, USA
9
10. Plat_Forms 2011
16 Teams: 4 Java, 4 PHP, 3 Perl, 4 Ruby, (1 JavaScript)
Mit Teilnehmern aus Deutschland, Österreich, Großbritannien, Litauen
(4 Teams in einem Nebenraum)
10
12. Die Aufgabe
2007:
PbT – People by Temperament
2011:
CaP – Conferences and Participants hierzu gleich Details
beides sind Community-Portale
(mit ein paar nicht soooo gängigen Anforderungen)
mit HTML-UI und Webservice-Schnittstelle
12
19. Web Service Schnittstelle
RESTful Web Service mit JSON
als Datenaustauschformat
Stellt fast alle Funktionalität der
HTML- Benutzeroberfläche bereit.
19
20. Das Anforderungsdokument
• 9 Anwendungsfälle
• Sehr detailliert beschrieben
• Unterteilt in 204 Anforderungen
• 185 funktionale, 23 nicht-
funktionale, 6 Regeln
• Priorisiert nach Wichtigkeit
• MUST: essentiell wichtig,
Defekt wenn nicht
vorhanden
• SHOULD: wichtig, aber
akzeptabel wenn nicht
vorhanden
• MAY: nice to have
20
21. Die Auswertung
Größe der Lösungen Wartbarkeit?
Vollständigkeit der Lösungen Produktivität
Robustheit der Lösungen Sicherheit
Entwicklungsprozess (ist einfach interessant)
21
22. Java, Perl, PHP 2007: Größe in LOC?
R: Reused
M: Manual or modified
G: Generated
22
23. Java, Perl, PHP 2007: Größe in LOC?
Perl kleiner als Java
Perl kleiner als PHP
23
24. Java, Perl, PHP 2007: Produktivität
Nur UI-Anforderungen
PHP > Perl (p = 0.02)
Java 9: Framework unreif
Java 4: Ärger mit Server
24
25. Java, Perl, PHP 2007: relative Größe
Java
PHP
Regression ergibt:
Perl
Java groß
PHP mittel
Perl klein
number of implemented requirements
25
26. HTML UI und Webservice
143 UI + 32 WS Anforderungen, 185 total
Java, Perl, PHP, Ruby 2011: Produktivität
Ruby
26
PHP
Perl
Java
30. Robustheit 2007 und 2011
2007
2011: Nur noch eine
Lösung nach naivem Test
möglicherweise anfällig für
SQL Injection.
Insgesamt bessere
Robustheit (weniger rosa
und rot).
2011
30
31. Anzahl gestellter Fragen 2011
Die Teilnehmer konnten einem On-Site Customer Fragen zum
Anforderungsdokument stellen.
Ruby Teams stellen
im Mittel so viele
Fragen wie Java,
Perl und PHP Teams
zusammen.
Java auf Rang 2,
genau wie bei der
Produktivität!
31
32. Mit Testen verbrachte Zeit 2011
Ruby Teams häufiger als alle anderen zusammen beim
Schreiben automatisierter Tests angetroffen.
Java Teams häufiger als alle anderen zusammen beim
manuellen Testen angetroffen.
32
33. Zusammenfassung
• Vermutlich ist die Sprache gar kein sinnvolles Kriterium mehr
• Perl-Lösungen und Ruby-Lösungen sind eher klein (in LOC)
• Java-Lösungen sind eher groß
• Rails (Ruby) und das verwandte Symfony (PHP) sind hier sehr produktiv
• Produktivität bei Java ist sehr uneinheitlich
• Die Robustheit scheint wenig sprachabhängig (evtl. bei Java schwächer)
• ist 2011 besser als 2007
• Die Teams der produktivsten Plattformen stellen mehr Fragen
• Die Teams der produktivsten Plattformen testen mehr
• aber: Ruby-Teams testen automatisch, Java-Teams vor allem manuell
• Ursache/Wirkung liegt nicht auf der Hand
33
34. Mein persönliches Fazit
• Ein besseres Team hilft oft mehr als eine "bessere" Plattform
• Bring die passenden Leute ins Projekt ( Perl O),
• beherrsche Deine Plattform ( Java A)
• und bleibe ihr lange genug treu dafür ( Java I).
• Vorurteile sind wenig verlässlich
• Wir brauchen mehr solche direkt vergleichbaren Daten
Ausblick:
34
35. Plat_Forms 2012
Plat_Forms 2012 findet statt am 9.-10. Oktober 2012 (Di/Mi)
in Berlin.
Anreise und Aufbauen am Mo 8.10.
Bewerbungen sind noch möglich bis Fr 14.09.2012
Wer will vermutlich kommen?
www.plat-forms.org
35
38. Participant Capability
„Among all professional programmers creating web applications, I consider myself
among the most capable X%.“
correlation mean cap ~ compl (BCa); 0.95 :
-0.79216 , -0.060967
38
39. 2007: Uneinigkeit der 2 Gutachter
beim Funktionstest der Anforderungen
Moral:
very expensive,
but careful
judging procedure
39
40. 2011: Umfang der Gutachterprüfung
beim Funktionstest der Anforderungen
143 UI Anforderungen, jede wurde von zwei Gutachtern aus dem Plat_Forms
Forschungsteam bewertet
- Gutachter verglichen tatsächliches Verhalten mit dem Anforderungsdokument
- 5 mögliche Ergebnisse: 0 – fehlt, 1 – teilweise vorhanden, 2 – funktioniert
aber eher schlecht, 3 – funktioniert, 4 – funktioniert und besonders gut
- 16 Lösungen * 143 Anforderungen * 2 Gutachter = 4576 Anforderungen wurden
begutachtet
- In 19% der Fälle Uneinigkeit zwischen den beiden Gutachtern
- Zusätzliche Abstimmung nötig
32 Anforderungen für die RESTful Web Service Schnittstelle
- Wurden von automatisierten Client getestet
40
41. Prozessbeobachtung
Eine Frage alle 15 Minuten: Was machst Du gerade?
97 Fragezeitpunkte pro Teilnehmer, 3 Teilnehmer pro Team, 16 Teams
- insgesamt 4656 Antworten
Jede Antwort kodiert mit einem von 21 Codes, bspw. "readtask", "design", "code",
"manualtest", "codeautotest", "runautotest", "debug"
41
43. Die Teams 2007
Team 3 Java: Team 1 Perl:
abaXX Technology (abaxx.de) Etat de Genève/Optaros
(ge.ch, optaros.com).
Team 4 Java:
Accenture Technology Solutions Team 2 Perl:
(accenture.de) plusW (plusw.de)
Team 9 Java: Team 5 Perl:
Innoopract Informationssysteme Revolution Systems (revsys.com)
(innoopract.de)
Team 6 PHP:
OXID eSales (oxid-esales.com)
Team 7 PHP:
Globalpark (globalpark.de)
Team 8 PHP:
Zend Technologies (zend.com)
Lutz Prechelt, prechelt@inf.fu-berlin.de 43