powerpoint - Laurent Dami

whooploafΛογισμικό & κατασκευή λογ/κού

13 Δεκ 2013 (πριν από 3 χρόνια και 6 μήνες)

83 εμφανίσεις

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

2

/ 18

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






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



3

/ 18

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






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 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

6

/ 18

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






What: "People by Temperament"

Registration for community portal


7

/ 18

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






What (2):

Trivial Temperament Test (TTT)


After registration, members can take the TTT personality test


to determine their MBTI personality type

8

/ 18

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






What (3):

Search for members


Search for members by complex criteria

9

/ 18

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






What (4):

Member list (e.g. for search results)


10

/ 18

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






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_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
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

http://www.plat
-
forms.org/2007/blog

13

The report

118 pages !


published on www.plat
-
forms.org

also source code

14

/ 18

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






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)

15

/ 18

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






16

/ 18

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






Results 2:

Size of solution

source lines
-
of
-
code

Note:

Further manually written

source code resides in

modified reused files.

17

/ 18

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






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


18

/ 18

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






Estimations post
-
hoc

19

/ 18

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






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

1
Member
TTT
Member_interest
Interest
Login
Contact_status
*
1
1
1
*
*
*
*
1
1
*
contact
member
like/dislike
tests
0..1
active_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 */
]);