1 www.plat-forms.org Web programming competition report from the Geneva team 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 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 2 / 18 Who: Teams • Team 3 Java: abaXX Technology (abaxx.de) • Team 4 Java: Accenture Technology Solutions (accenture.de) • Team 9 Java: Innoopract Informationssysteme (innoopract.de) • Team 1 Perl: Etat de Genève/Optaros (ge.ch, optaros.com). • Team 2 Perl: plusW (plusw.de) • Team 5 Perl: Revolution Systems (revsys.com) • Team 6 PHP: OXID eSales (oxid-esales.com) • Team 7 PHP: Globalpark (globalpark.de) • Team 8 PHP: Zend Technologies (zend.com) LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 3 / 18 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 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 6 / 18 What (2): Trivial Temperament Test (TTT) • After registration, members can take the TTT personality test • to determine their MBTI personality type LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 7 / 18 What (3): Search for members • Search for members by complex criteria LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 8 / 18 What (4): Member list (e.g. for search results) LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 9 / 18 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 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 10 / 18 LD, PJ-GE, juin 07 PbT Architecture PbT application PbT DataModel PbT Controllers HTML templates Javascript, CSS, etc. External components DBIx::DataModel Catalyst Perl DBI mod_perl2 DBD::MySQL Apache2 MySQL Template toolkit Graph::Plot prototype.js 11 LD, PJ-GE, juin 07 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 http://www.plat-forms.org/2007/blog 12 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) LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 14 / 18 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 15 / 18 Results 2: Size of solution source lines-of-code Note: Further manually written source code resides in modified reused files. LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 16 / 18 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 LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 17 / 18 Estimations post-hoc LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 18 / 18 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: OXID eSales (team6) • in particular for highest robustness LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de 19 / 18 LD, PJ-GE, juin 07 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 20 LD, PJ-GE, juin 07 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 21 LD, PJ-GE, juin 07 PbT Data Model TTT tests * Login * 1 0..1 acti ve_test 1 1 Member 1 1 * * member contact Contact_status * Member_interest * like/dislike 1 Interest 22 package PlatForms::Model::PbT; use DBIx::DataModel; LD, PJ-GE, juin 07 23 DBIx::DataModel->Schema('PbT'); Exemple de contrôleur Catalyst PbT->Table(qw/PbT::Member PbT->Table(qw/PbT::TTT PbT->Table(qw/PbT::Login PbT->Table(qw/PbT::Interest PbT->Table(qw/PbT::Contact_status PbT->Table(qw/PbT::Member_interest member ttt login interest contact_status member_interest member_id/); ttt_id/); login_id/); interest_id/); member_id contact_id/); member_interest_id/); PbT->Composition([qw/PbT::Member [qw/PbT::TTT member tests 1/], */]); PbT->Composition([qw/PbT::Member [qw/PbT::Member_interest member 1/], member_interests */]); PbT->Association([qw/PbT::Interest [qw/PbT::Member_interest interest 1/], member_interests */]);