SlideShare uma empresa Scribd logo
1 de 45
Meine Plattform ist besser
als Deine Plattform???


Prof. Dr. Lutz Prechelt
Freie Universität Berlin
Die Frage (1)



Welches ist die beste
Web-Entwicklungsplattform?

Wer hat dazu eine klare Meinung?
Bitte mal melden


                                   2
Die Frage (2)


Sie da hinten mit den roten Haaren:
Welche ist das?

Aha.
Ist irgend jemand anderer Meinung?
Bitte mal melden.


                                  3
Die Frage (3)
Dieser Vortrag handelt von:
Und woher wissen Sie das?

Vergleichbare(!) persönliche Erfahrungen mit
vielen Plattformen hat kaum jemand.




                                  4
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
Jetzt aber mal echt: Die Frage



Besitzen unterschiedliche
Webentwicklungsplattformen typische aber
unterschiedliche Eigenschaften?

Welche?



                                 6
Wie bekommt man sowas raus?
Man verkleidet eine wissenschaftliche Studie als Wettbewerb:




                                             7
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
Plat_Forms 2007
9 Teams: 3 Java, 3 Perl, 3 PHP
Mit Teilnehmern aus Deutschland, Österreich, Schweiz, Litauen, USA




                                                     9
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
Sponsoren




            2007   2011




                          11
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
Browsing the Portal (Team Ps Solution)




                                13
Signing Up




             14
A Member‘s Status Page




                         15
Searching for Conferences




                            16
Conference Summary Page




                          17
Searching for Members




                        18
Web Service Schnittstelle


RESTful Web Service mit JSON
als Datenaustauschformat



Stellt fast alle Funktionalität der
HTML- Benutzeroberfläche bereit.




                                      19
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
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
Java, Perl, PHP 2007: Größe in LOC?
                            R: Reused
                            M: Manual or modified
                            G: Generated




                                 22
Java, Perl, PHP 2007: Größe in LOC?

                            Perl kleiner als Java
                            Perl kleiner als PHP




                                  23
Java, Perl, PHP 2007: Produktivität

                              Nur UI-Anforderungen

                              PHP > Perl (p = 0.02)




                              Java 9: Framework unreif
                              Java 4: Ärger mit Server




                                   24
Java, Perl, PHP 2007: relative Größe
          Java
          PHP
                                                  Regression ergibt:
          Perl
                                                  Java groß
                                                  PHP mittel
                                                  Perl klein




        number of implemented requirements



                                             25
HTML UI und Webservice
                                            143 UI + 32 WS Anforderungen, 185 total
Java, Perl, PHP, Ruby 2011: Produktivität




                                                                                      Ruby
                                                                                             26
                                                                                      PHP
                                                                                      Perl
                                                                                      Java
Produktivität 2007 vs. 2011




Ohne JavaScript (außer Konkurrenz)
                                     27
Java, Perl, PHP, Ruby 2011: relative Größe
                                  Ruby und Perl eher
                                  kompakt

                                  Java eher weniger
                                  kompakt

                                  PHP gemischt




                                 28
Robustheit 2011




                  29   Ruby
                       PHP
                       Perl
                       Java
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
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
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
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
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
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
Vielen Dank!

www.plat-forms.org




                 36
Participant Experience
„I […] have X years of experience as a professional software developer“




                                                            37
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
2007: Uneinigkeit der 2 Gutachter
beim Funktionstest der Anforderungen

                                    Moral:
                                    very expensive,
                                    but careful
                                    judging procedure




                               39
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
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
Interviews: Ergebnis




                       42
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
Die Teams 2011                    PHP
Java                               - F: TYPO3 Association
 - A: Crealogix (ehemals abaXX)    - G: Mayflower
 - D: SIB Visions                  - L: Globalpark
 - E: Kayak.com                    - M: mindworks
 - I: Accenture
JavaScript                        Ruby
 - B: Upstream Agile               - H: Makandra
Perl                               - K: tmp8
 - C: #austria.pm                  - N: LessCode
 - J: Perl Ecosystem Group         - P: Infopark
 - O: Shadowcat Systems



                                               44
Frameworks und Bibliotheken 2011

Java:                              PHP:
 - I: Spring Roo, Hibernate         - F: FLOW3
 - A: abaXX.Components              - G: Zend Framework
   including Hibernate              - L: Zend Framework
 - D: JVx and JVx WebUI             - M: Symfony
 - E: Spring MVC, Hibernate        Ruby:
Perl:                               - P: Infopark: Rails
 - C: Catalyst, DBIx::Class         - N: LessCode: Rails
 - J: Catalyst                      - H: makandra: Rails
 - O: Task::Kensho (built on top    - K: tmp8: Rails
   of Catalyst and
                                   JavaScript:
  others)                           - B: Node.js, express.js,
                                      sammy.js

                                                 45

Mais conteúdo relacionado

Destaque

Las mejores fotos de pixdaus
Las mejores fotos de pixdausLas mejores fotos de pixdaus
Las mejores fotos de pixdausDomingo Riera
 
Lettre Exprimeo : les nouvelles fonctions des sondages (3/3)
Lettre Exprimeo : les nouvelles fonctions des sondages (3/3)Lettre Exprimeo : les nouvelles fonctions des sondages (3/3)
Lettre Exprimeo : les nouvelles fonctions des sondages (3/3)Newday
 
Schulsachen
SchulsachenSchulsachen
Schulsachenanchenek
 
14 adn
14 adn14 adn
14 adny1r2m
 
C:\documents and settings\administrador\escritorio\ludmila tp.
C:\documents and settings\administrador\escritorio\ludmila tp.C:\documents and settings\administrador\escritorio\ludmila tp.
C:\documents and settings\administrador\escritorio\ludmila tp.Lei Lum
 
La música
La músicaLa música
La músicaZoe Toro
 
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...BurdaForward Advertising
 
Iep presentaciòn
Iep presentaciònIep presentaciòn
Iep presentaciònfranciperez
 
Ley de-la-procuraduria-para-la-defensa-de-los-derechos-humanos
Ley de-la-procuraduria-para-la-defensa-de-los-derechos-humanosLey de-la-procuraduria-para-la-defensa-de-los-derechos-humanos
Ley de-la-procuraduria-para-la-defensa-de-los-derechos-humanosSave Solutions
 

Destaque (20)

Las mejores fotos de pixdaus
Las mejores fotos de pixdausLas mejores fotos de pixdaus
Las mejores fotos de pixdaus
 
Lettre Exprimeo : les nouvelles fonctions des sondages (3/3)
Lettre Exprimeo : les nouvelles fonctions des sondages (3/3)Lettre Exprimeo : les nouvelles fonctions des sondages (3/3)
Lettre Exprimeo : les nouvelles fonctions des sondages (3/3)
 
Schulsachen
SchulsachenSchulsachen
Schulsachen
 
Paper 4 2010 a
Paper 4  2010 aPaper 4  2010 a
Paper 4 2010 a
 
Expocision liderazgo
Expocision liderazgoExpocision liderazgo
Expocision liderazgo
 
Sopas colombinas
Sopas colombinasSopas colombinas
Sopas colombinas
 
14 adn
14 adn14 adn
14 adn
 
C:\documents and settings\administrador\escritorio\ludmila tp.
C:\documents and settings\administrador\escritorio\ludmila tp.C:\documents and settings\administrador\escritorio\ludmila tp.
C:\documents and settings\administrador\escritorio\ludmila tp.
 
Bpm’s
Bpm’sBpm’s
Bpm’s
 
La música
La músicaLa música
La música
 
Componentes Red
Componentes RedComponentes Red
Componentes Red
 
Intervention Sophie Marnier - Metteur en scène de territoire - INTERPATT 2012
Intervention Sophie Marnier - Metteur en scène de territoire - INTERPATT 2012Intervention Sophie Marnier - Metteur en scène de territoire - INTERPATT 2012
Intervention Sophie Marnier - Metteur en scène de territoire - INTERPATT 2012
 
Clinique
CliniqueClinique
Clinique
 
Buen día de trabajo
Buen día de trabajoBuen día de trabajo
Buen día de trabajo
 
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...
 
Iep presentaciòn
Iep presentaciònIep presentaciòn
Iep presentaciòn
 
Ley de-la-procuraduria-para-la-defensa-de-los-derechos-humanos
Ley de-la-procuraduria-para-la-defensa-de-los-derechos-humanosLey de-la-procuraduria-para-la-defensa-de-los-derechos-humanos
Ley de-la-procuraduria-para-la-defensa-de-los-derechos-humanos
 
Info VII jornadas
Info VII jornadasInfo VII jornadas
Info VII jornadas
 
Ley de-notariado
Ley de-notariadoLey de-notariado
Ley de-notariado
 
Webquesjairoborja
WebquesjairoborjaWebquesjairoborja
Webquesjairoborja
 

Semelhante a Lutz Prechelt - Keynote: "Meine Plattform ist besser als Deine Plattform???"

10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks 10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks Ralf Eggert
 
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Rubyvesparun
 
9 Tipps für die Modernisierung von PHP-Anwendungen
9 Tipps für die Modernisierung von PHP-Anwendungen9 Tipps für die Modernisierung von PHP-Anwendungen
9 Tipps für die Modernisierung von PHP-AnwendungenRalf Eggert
 
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Ralf Eggert
 
Reif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-ApplikationenReif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-Applikationenadesso AG
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerNETUserGroupBern
 
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichOracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichDierk Lenz
 
Mein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein BackendMein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein BackendRalf Eggert
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsStephan Kaps
 
Alexander Pohl Performance meßbar machen
Alexander Pohl   Performance meßbar machenAlexander Pohl   Performance meßbar machen
Alexander Pohl Performance meßbar machenStephan Trahasch
 

Semelhante a Lutz Prechelt - Keynote: "Meine Plattform ist besser als Deine Plattform???" (17)

Workshopergebnisse
WorkshopergebnisseWorkshopergebnisse
Workshopergebnisse
 
Ruby on Rails SS09 02
Ruby on Rails SS09 02Ruby on Rails SS09 02
Ruby on Rails SS09 02
 
Die Java Plattform Strategie
Die Java Plattform StrategieDie Java Plattform Strategie
Die Java Plattform Strategie
 
PHPblue LOS!NRW
PHPblue LOS!NRWPHPblue LOS!NRW
PHPblue LOS!NRW
 
PHP5 und Oracle
PHP5 und OraclePHP5 und Oracle
PHP5 und Oracle
 
10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks 10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks
 
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
 
PHP auf IBM Plattformen
PHP auf IBM PlattformenPHP auf IBM Plattformen
PHP auf IBM Plattformen
 
9 Tipps für die Modernisierung von PHP-Anwendungen
9 Tipps für die Modernisierung von PHP-Anwendungen9 Tipps für die Modernisierung von PHP-Anwendungen
9 Tipps für die Modernisierung von PHP-Anwendungen
 
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
 
.NET zu .NET Core
.NET zu .NET Core.NET zu .NET Core
.NET zu .NET Core
 
Reif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-ApplikationenReif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-Applikationen
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
 
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichOracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
 
Mein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein BackendMein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein Backend
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
 
Alexander Pohl Performance meßbar machen
Alexander Pohl   Performance meßbar machenAlexander Pohl   Performance meßbar machen
Alexander Pohl Performance meßbar machen
 

Mais de DeveloperConference

Survival of the fittest - Alexander Jäger
Survival of the fittest - Alexander JägerSurvival of the fittest - Alexander Jäger
Survival of the fittest - Alexander JägerDeveloperConference
 
Eine Website in einer Stunde mit TYPO3 bauen
Eine Website in einer Stunde mit TYPO3 bauenEine Website in einer Stunde mit TYPO3 bauen
Eine Website in einer Stunde mit TYPO3 bauenDeveloperConference
 
Leichtgewichtige API-Dokumentation – Ein Paradoxon?
Leichtgewichtige API-Dokumentation – Ein Paradoxon?Leichtgewichtige API-Dokumentation – Ein Paradoxon?
Leichtgewichtige API-Dokumentation – Ein Paradoxon?DeveloperConference
 
Eine Website in einer Stunde mit TYPO3 bauen, Gernot Ploiner
Eine Website in einer Stunde mit TYPO3 bauen, Gernot PloinerEine Website in einer Stunde mit TYPO3 bauen, Gernot Ploiner
Eine Website in einer Stunde mit TYPO3 bauen, Gernot PloinerDeveloperConference
 
Developer Conference Hamburg 2012
Developer Conference Hamburg 2012Developer Conference Hamburg 2012
Developer Conference Hamburg 2012DeveloperConference
 

Mais de DeveloperConference (8)

Survival of the fittest - Alexander Jäger
Survival of the fittest - Alexander JägerSurvival of the fittest - Alexander Jäger
Survival of the fittest - Alexander Jäger
 
Eine Website in einer Stunde mit TYPO3 bauen
Eine Website in einer Stunde mit TYPO3 bauenEine Website in einer Stunde mit TYPO3 bauen
Eine Website in einer Stunde mit TYPO3 bauen
 
Leichtgewichtige API-Dokumentation – Ein Paradoxon?
Leichtgewichtige API-Dokumentation – Ein Paradoxon?Leichtgewichtige API-Dokumentation – Ein Paradoxon?
Leichtgewichtige API-Dokumentation – Ein Paradoxon?
 
Keynote: O PHP, Where Art Thou?
Keynote: O PHP, Where Art Thou?Keynote: O PHP, Where Art Thou?
Keynote: O PHP, Where Art Thou?
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Eine Website in einer Stunde mit TYPO3 bauen, Gernot Ploiner
Eine Website in einer Stunde mit TYPO3 bauen, Gernot PloinerEine Website in einer Stunde mit TYPO3 bauen, Gernot Ploiner
Eine Website in einer Stunde mit TYPO3 bauen, Gernot Ploiner
 
Hdc2012 cordova-präsi
Hdc2012 cordova-präsiHdc2012 cordova-präsi
Hdc2012 cordova-präsi
 
Developer Conference Hamburg 2012
Developer Conference Hamburg 2012Developer Conference Hamburg 2012
Developer Conference Hamburg 2012
 

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
  • 11. Sponsoren 2007 2011 11
  • 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
  • 13. Browsing the Portal (Team Ps Solution) 13
  • 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
  • 27. Produktivität 2007 vs. 2011 Ohne JavaScript (außer Konkurrenz) 27
  • 28. Java, Perl, PHP, Ruby 2011: relative Größe Ruby und Perl eher kompakt Java eher weniger kompakt PHP gemischt 28
  • 29. Robustheit 2011 29 Ruby 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
  • 37. Participant Experience „I […] have X years of experience as a professional software developer“ 37
  • 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
  • 44. Die Teams 2011 PHP Java - F: TYPO3 Association - A: Crealogix (ehemals abaXX) - G: Mayflower - D: SIB Visions - L: Globalpark - E: Kayak.com - M: mindworks - I: Accenture JavaScript Ruby - B: Upstream Agile - H: Makandra Perl - K: tmp8 - C: #austria.pm - N: LessCode - J: Perl Ecosystem Group - P: Infopark - O: Shadowcat Systems 44
  • 45. Frameworks und Bibliotheken 2011 Java: PHP: - I: Spring Roo, Hibernate - F: FLOW3 - A: abaXX.Components - G: Zend Framework including Hibernate - L: Zend Framework - D: JVx and JVx WebUI - M: Symfony - E: Spring MVC, Hibernate Ruby: Perl: - P: Infopark: Rails - C: Catalyst, DBIx::Class - N: LessCode: Rails - J: Catalyst - H: makandra: Rails - O: Task::Kensho (built on top - K: tmp8: Rails of Catalyst and JavaScript: others) - B: Node.js, express.js, sammy.js 45