www.plat-forms.org Web programming competition report from the - - PowerPoint PPT Presentation

plat forms org
SMART_READER_LITE
LIVE PREVIEW

www.plat-forms.org Web programming competition report from the - - PowerPoint PPT Presentation

1 www.plat-forms.org Web programming competition report from the Geneva team Laurent Dami, Etat de Genve (Etat de Genve) Cdric Bouvier (Optaros) Jean-Christophe Durand (Optaros) together since oct. 2006 to build the new business


slide-1
SLIDE 1

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

slide-2
SLIDE 2

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

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
slide-3
SLIDE 3

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

3 / 18

Who: Teams

  • Team 3 Java:

abaXX Technology (abaxx.de)

  • Team 4 Java:

Accenture Technology Solutions (accenture.de)

  • Team 9 Java:

I nnoopract I nform ations- system e (innoopract.de)

  • Team 6 PHP:

OXI D 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 System s (revsys.com)

slide-4
SLIDE 4

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 !

slide-5
SLIDE 5

5

Task : People By Temperament

PDF intro PDF requirements

slide-6
SLIDE 6

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

6 / 18

What: "People by Temperament" Registration for community portal

slide-7
SLIDE 7

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

7 / 18

What (2): Trivial Temperament Test (TTT)

  • After registration, members can take the TTT personality test
  • to determine their MBTI personality type
slide-8
SLIDE 8

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

8 / 18

What (3): Search for members

  • Search for members by complex criteria
slide-9
SLIDE 9

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

9 / 18

What (4): Member list (e.g. for search results)

slide-10
SLIDE 10

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

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

slide-11
SLIDE 11

LD, PJ-GE, juin 07 11

PbT Architecture

Apache2

External components

Catalyst mod_perl2 Perl DBI DBD::MySQL DBIx::DataModel MySQL Template toolkit HTML templates Javascript, CSS, etc. PbT Controllers PbT DataModel

PbT application

prototype.js Graph::Plot

slide-12
SLIDE 12

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
slide-13
SLIDE 13

13

The report

118 pages ! published on www.plat-forms.org also source code

slide-14
SLIDE 14

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

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)

slide-15
SLIDE 15

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

15 / 18

slide-16
SLIDE 16

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

16 / 18

Results 2: Size of solution

source lines-of-code

Note: Further manually written source code resides in modified reused files.

slide-17
SLIDE 17

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

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
slide-18
SLIDE 18

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

18 / 18

Estimations post-hoc

slide-19
SLIDE 19

LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de

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:

OXI D eSales (team6)

  • in particular for highest robustness
slide-20
SLIDE 20

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

slide-21
SLIDE 21

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

slide-22
SLIDE 22

LD, PJ-GE, juin 07 22

PbT Data Model

1

Member TTT Member_interest Interest Login Contact_status

* 1 1 1 * * * * 1 1 * contact member like/dislike tests 0..1 acti ve_test

slide-23
SLIDE 23

LD, PJ-GE, juin 07 23

Exemple de contrôleur Catalyst

package Pl at For m s: : M

  • del : : PbT;

use DBI x: : Dat aM

  • del ;

DBI x: : Dat aM

  • del - >
  • >Schem

a( ' PbT' ' PbT' ) ; ) ; PbT- >

  • >Tabl e( qw/ PbT: : M

em ber qw/ PbT: : M em ber m em ber m em ber m em ber _i d/ m em 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 em ber _i d cont act _i d/ m em ber _i d cont act _i d/ ) ; ) ; PbT- >

  • >Tabl e( qw/ PbT: : M

em ber _i nt er qw/ PbT: : M em ber _i nt er est m em ber _i nt er est est m em ber _i nt er est m em ber _i nt er est _i d/ m em ber _i nt er est _i d/ ) ; ) ; PbT- >

  • >Com

posi t i on( [ ( [ qw/ PbT: : M em ber qw/ PbT: : M em ber m em ber m em ber 1/ 1/ ] , ] , [ qw/ PbT: : TTT qw/ PbT: : TTT t est s t est s * / * / ] ) ; ] ) ; PbT- >

  • >Com

posi t i on( [ ( [ qw/ PbT: : M em ber qw/ PbT: : M em ber m em ber m em ber 1/ 1/ ] , ] , [ qw/ PbT: : M em ber _i qw/ PbT: : M em ber _i nt er est m em ber _i nt er est s * / nt er est m em 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 em ber _i qw/ PbT: : M em ber _i nt er est m em ber _i nt er est s * / nt er est m em ber _i nt er est s * / ] ) ; ] ) ;