Title: www.plat-forms.org Web programming competition
1www.plat-forms.org Web programming competition
- report from the Geneva team
- together since oct. 2006 to build the new
business application for Geneva Justice
2How?
- 9 Teams of 3 meet in one place
- January 25-26 2007, Congress Center Nürnberg
- Each builds the same system within 30 hours
3Who 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)
4Why 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 !
5Task People By Temperament
- PDF intro
- PDF requirements
6What "People by Temperament" Registration for
community portal
7What (2)Trivial Temperament Test (TTT)
- After registration, members can take the TTT
personality test - to determine their MBTI personality type
8What (3)Search for members
- Search for members by complex criteria
9What (4)Member list (e.g. for search results)
10What (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
11PbT Architecture
12Our experience
- started very fast
- public releases at 1830 and 2230
- 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
13The report
- 118 pages !
- published on www.plat-forms.org
- also source code
14Results 1Completeness 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)
15(No Transcript)
16Results 2Size of solution
source lines-of-code
NoteFurther manually writtensource code
resides inmodified reused files.
17Results 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
18Estimations post-hoc
19Winning 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
20Thoughts 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
21Lessons
- Happy about
- team (common culture, complementary skills)
- technology (Apache, Perl, Catalyst, TT2,
DBIxDataModel) - tools (XEmacs, vim, subversion)
- To improve
- planning, priorization, estimates
- preparation
22PbT Data Model
23Exemple de contrôleur Catalyst
1 package PlatFormsModelPbT 2 use
DBIxDataModel 3 4 DBIxDataModel-gtS
chema('PbT') 5 6 PbT-gtTable(qw/PbTMe
mber member member_id/)
7 PbT-gtTable(qw/PbTTTT ttt
ttt_id/) 8 PbT-gtTable(qw/PbTLogin
login login_id/)
9 PbT-gtTable(qw/PbTInterest interest
interest_id/) 10 PbT-gtTable(qw/PbTContac
t_status contact_status member_id
contact_id/) 11 PbT-gtTable(qw/PbTMember_int
erest member_interest member_interest_id/)
12 13 PbT-gtComposition(qw/PbTMember
member 1/, 14
qw/PbTTTT tests /)
15 16 PbT-gtComposition(qw/PbTMember
member 1/, 17
qw/PbTMember_interest member_interests
/) 18 19 PbT-gtAssociation(qw/PbTInt
erest interest 1/, 20
qw/PbTMember_interest
member_interests /)