1 web programming competition report from the geneva team together since oct. 2006 to build the new...

23
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

Upload: stewart-terry

Post on 01-Jan-2016

215 views

Category:

Documents


0 download

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 !

5

Task : People By Temperament

PDF intro

PDF requirements

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

13

The report

118 pages !

published on www.plat-forms.orgalso source code

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]

15 / 18

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]

18 / 18

Estimations post-hoc

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 */]);