1 web programming competition report from the geneva team together since oct. 2006 to build the new...
TRANSCRIPT
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
LD, PJ-GE, juin 07Lutz Prechelt, [email protected]
2 / 18
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, [email protected]
3 / 18
Who: Teams
• Team 3 Java: abaXX Technology (abaxx.de)
• Team 4 Java: Accenture Technology Solutions (accenture.de)
• Team 9 Java: Innoopract Informations-systeme (innoopract.de)
• Team 6 PHP: OXID eSales (oxid-esales.com)
• Team 7 PHP: Globalpark (globalpark.de)
• Team 8 PHP: Zend Technologies (zend.com)
• 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)
LD, PJ-GE, juin 07 4
Why did we go ? Help the Perl community
Perl losing visibilityyet the technology is excellent and competitive needs marketing
Opportunityteams of 3 : not frequent for PerlGeneva not too far from Nurembergmodest investment
Expected benefits for our internal projectcredibility of the teamcredibility of the technology
risky challenge !
LD, PJ-GE, juin 07Lutz Prechelt, [email protected]
6 / 18
What: "People by Temperament" Registration for community portal
LD, PJ-GE, juin 07Lutz Prechelt, [email protected]
7 / 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, [email protected]
8 / 18
What (3):Search for members
• Search for members by complex criteria
LD, PJ-GE, juin 07Lutz Prechelt, [email protected]
9 / 18
What (4):Member list (e.g. for search results)
LD, PJ-GE, juin 07Lutz Prechelt, [email protected]
10 / 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 07 11
PbT Architecture
Apache2
External
components
Catalyst
mod_perl2Perl DBI
DBD::MySQL
DBIx::DataModel
MySQL
Template toolkit
HTML templates Javascript, CSS, etc.
PbT ControllersPbT DataModel
PbT
application
prototype.js
Graph::Plot
LD, PJ-GE, juin 07 12
Our experiencestarted 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
LD, PJ-GE, juin 07Lutz Prechelt, [email protected]
14 / 18
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, [email protected]
16 / 18
Results 2:Size of solution
source lines-of-code
Note:Further manually writtensource code resides inmodified reused files.
LD, PJ-GE, juin 07Lutz Prechelt, [email protected]
17 / 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, [email protected]
19 / 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 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
1Member
TTT
Member_interest InterestLogin
Contact_status
*
1 1 1* *
**
1 1
*
contactmemberlike/dislike
tests 0..1 acti ve_test
LD, PJ-GE, juin 07 23
Exemple de contrôleur Catalyst
1 package PlatForms::Model::PbT; 2 use DBIx::DataModel; 3 4 DBIx::DataModel->Schema('PbT'); 5 6 PbT->Table(qw/PbT::Member member member_id/); 7 PbT->Table(qw/PbT::TTT ttt ttt_id/); 8 PbT->Table(qw/PbT::Login login login_id/); 9 PbT->Table(qw/PbT::Interest interest interest_id/); 10 PbT->Table(qw/PbT::Contact_status contact_status member_id contact_id/); 11 PbT->Table(qw/PbT::Member_interest member_interest member_interest_id/); 12 13 PbT->Composition([qw/PbT::Member member 1/], 14 [qw/PbT::TTT tests */]); 15 16 PbT->Composition([qw/PbT::Member member 1/], 17 [qw/PbT::Member_interest member_interests */]); 18 19 PbT->Association([qw/PbT::Interest interest 1/], 20 [qw/PbT::Member_interest member_interests */]);