1 www.plat-forms.org Web programming competition report from the Geneva team Laurent Dami, Etat de Genève (Etat de Genève) Cédric Bouvier (Optaros) Jean-Christophe Durand (Optaros) together since oct. 2006 to build the new business application for Geneva Justice
How? • 9 Teams of 3 meet in one place • January 25-26 2007, Congress Center Nürnberg • Each builds the same system within 30 hours 2 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
Who: Teams • • Team 3 Java : Team 1 Perl : abaXX Technology (abaxx.de) Etat de Genève/ Optaros (ge.ch, optaros.com). • Team 4 Java : • Accenture Technology Team 2 Perl : Solutions (accenture.de) plusW (plusw.de) • • Team 9 Java : Team 5 Perl : I nnoopract I nform ations- Revolution System s system e (innoopract.de) (revsys.com) • Team 6 PHP : OXI D eSales (oxid-esales.com) • Team 7 PHP : Globalpark (globalpark.de) • Team 8 PHP : Zend Technologies ( zend.com) 3 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
LD, PJ-GE, juin 07 4 Why did we go ? � Help the Perl community � Perl losing visibility � yet the technology is excellent and competitive � � needs marketing � Opportunity � teams of 3 : not frequent for Perl � Geneva not too far from Nuremberg � modest investment � Expected benefits for our internal project � credibility of the team � credibility of the technology � risky challenge !
5 Task : People By Temperament PDF intro PDF requirements
What: "People by Temperament" Registration for community portal 6 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
What (2): Trivial Temperament Test (TTT) • After registration, members can take the TTT personality test • to determine their MBTI personality type 7 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
What (3): Search for members • Search for members by complex criteria 8 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
What (4): Member list (e.g. for search results) 9 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
What (6): Further requirements • The above screenshots showed a solution for the 108 Web GUI requirements • the one delivered by team3 Java (abaXX Technology) in addition, there were • 19 requirements regarding a SOAP webservice interface • 19 non-functional requirements • browser compatibility, performance, etc. • 5 rules describing the form of solution delivery • Each requirement was marked with priority MUST, SHOULD, or MAY 10 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
LD, PJ-GE, juin 07 11 PbT Architecture PbT application Javascript, PbT DataModel PbT Controllers HTML templates CSS, etc. External components Catalyst DBIx::DataModel Template toolkit prototype.js mod_perl2 Perl DBI Apache2 DBD::MySQL MySQL Graph::Plot
LD, PJ-GE, juin 07 12 Our experience � started very fast → public releases at 18:30 and 22:30 � late evening : got stuck → no Perl support for WSDL requirements → lost time to choose/install plotting package → complexity of search request � early morning : panic mode → lack of concertation for architectural changes → regression bugs � afternoon : final release OK but buggy ht t p: / / www. pl at - f or m s. or g/ 2007/ bl og
13 The report 118 pages ! published on www.plat-forms.org also source code
Results 1: Completeness of solutions GUI requirements Note: - Team Java 4 was hampered by a huge VMware setup problem for almost a full day - Team Java 9 used a framework still in alpha development (RAP) 14 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
15 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
Results 2: Size of solution source lines-of-code Note: Further manually written source code resides in modified reused files. 16 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
Results: Other • Many other aspects were compared • Ease-of-use • Correctness/ reliability • Modifiability, solution structure • Team behavior during the development process • Teams' self-reported subjective experience • Some of them exhibit further platform differences • in particular often smaller variance among the PHP teams 17 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
Estimations post-hoc 18 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
Winning teams • We do not have an overall winner • because people would readily infer a "best platform" from it But we do have a winner per platform: • Java: abaXX Technology (team3) • in particular for highest completeness • Perl: Etat de Genève/ Optaros (team1) • for best balance of characteristics • PHP: OXI D eSales (team6) • in particular for highest robustness 19 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
LD, PJ-GE, juin 07 20 Thoughts about the report � results reflect teams more than platforms � no distinction DHTML / platform language � maintainability � no measure of "understandability" � "modifiability" : simplistic scenario � robustness → programming best practice / platform � some aspects not taken into account → script for populating the database
LD, PJ-GE, juin 07 21 Lessons � Happy about → team (common culture, complementary skills) → technology (Apache, Perl, Catalyst, TT2, DBIx::DataModel) → tools (XEmacs, vim, subversion) � To improve → planning, priorization, estimates → preparation
LD, PJ-GE, juin 07 22 PbT Data Model TTT tests acti ve_test 0..1 * 1 1 1 1 * * * Login Member Member_interest Interest like/dislike 1 1 member contact * * Contact_status
package Pl at For m s: : M odel : : PbT; use DBI x: : Dat aM odel ; LD, PJ-GE, juin 07 23 DBI x: : Dat aM odel - > - >Schem a( ' PbT' ' PbT' ) ; ) ; Exemple de contrôleur Catalyst PbT- > - >Tabl e( qw/ PbT: : M qw/ PbT: : M em em ber ber m m em em ber ber m m em em ber _i d/ ber _i d/ ) ; ) ; PbT- > - >Tabl e( qw/ PbT: : TTT qw/ PbT: : TTT t t t t t t t t t _i d/ t t t _i d/ ) ; ) ; PbT- > - >Tabl e( qw/ PbT: : Logi n qw/ PbT: : Logi n l ogi n l ogi n l ogi n_i d/ l ogi n_i d/ ) ; ) ; PbT- > - >Tabl e( qw/ PbT: : I nt er est qw/ PbT: : I nt er est i nt er est i nt er est i nt er est _i d/ i nt er est _i d/ ) ; ) ; PbT- > - >Tabl e( qw/ PbT: : Cont act _st qw/ PbT: : Cont act _st at us cont act _st at us at us cont act _st at us m m em em ber _i d cont act _i d/ ber _i d cont act _i d/ ) ; ) ; PbT- > - >Tabl e( qw/ PbT: : M qw/ PbT: : M em em ber _i nt er ber _i nt er est m est m em em ber _i nt er est ber _i nt er est m m em em ber _i nt er est _i d/ ber _i nt er est _i d/ ) ; ) ; PbT- > - >Com posi t i on( [ ( [ qw/ PbT: : M qw/ PbT: : M em em ber ber m m em em ber ber 1/ 1/ ] , ] , [ qw/ PbT: : TTT qw/ PbT: : TTT t est s t est s * / * / ] ) ; ] ) ; PbT- > - >Com posi t i on( [ ( [ qw/ PbT: : M qw/ PbT: : M em em ber ber m m em em ber ber 1/ 1/ ] , ] , [ qw/ PbT: : M qw/ PbT: : M em em ber _i ber _i nt er est m nt er est m em em ber _i nt er est s * / ber _i nt er est s * / ] ) ; ] ) ; PbT- > - >Associ at i on( [ ( [ qw/ PbT: : I nt er est qw/ PbT: : I nt er est i nt er est i nt er est 1/ 1/ ] , ] , [ qw/ PbT: : M qw/ PbT: : M em em ber _i ber _i nt er est m nt er est m em em ber _i nt er est s * / ber _i nt er est s * / ] ) ; ] ) ;
Recommend
More recommend