Introduction - Laurent Dami

advertisement
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
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, prechelt@inf.fu-berlin.de
2 / 18
Who: Teams
• Team 3 Java:
abaXX Technology (abaxx.de)
• Team 4 Java:
Accenture Technology
Solutions (accenture.de)
• Team 9 Java:
Innoopract Informationssysteme (innoopract.de)
• 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)
• Team 6 PHP:
OXID eSales
(oxid-esales.com)
• Team 7 PHP:
Globalpark (globalpark.de)
• Team 8 PHP:
Zend Technologies
(zend.com)
LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
3 / 18
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
What: "People by Temperament"
Registration for community portal
LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
6 / 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, prechelt@inf.fu-berlin.de
7 / 18
What (3):
Search for members
• Search for members by complex criteria
LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
8 / 18
What (4):
Member list (e.g. for search results)
LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
9 / 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 07Lutz Prechelt, prechelt@inf.fu-berlin.de
10 / 18
LD, PJ-GE, juin 07
PbT Architecture
PbT
application
PbT DataModel
PbT Controllers
HTML templates
Javascript,
CSS, etc.
External
components
DBIx::DataModel
Catalyst
Perl DBI
mod_perl2
DBD::MySQL
Apache2
MySQL
Template toolkit
Graph::Plot
prototype.js
11
LD, PJ-GE, juin 07
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
12
13
The report
118 pages !
published on www.plat-forms.org
also source code
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, prechelt@inf.fu-berlin.de
14 / 18
LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
15 / 18
Results 2:
Size of solution
source lines-of-code
Note:
Further manually written
source code resides in
modified reused files.
LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
16 / 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, prechelt@inf.fu-berlin.de
17 / 18
Estimations post-hoc
LD, PJ-GE, juin 07Lutz Prechelt, prechelt@inf.fu-berlin.de
18 / 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 07Lutz Prechelt, prechelt@inf.fu-berlin.de
19 / 18
LD, PJ-GE, juin 07
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
20
LD, PJ-GE, juin 07
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
21
LD, PJ-GE, juin 07
PbT Data Model
TTT
tests *
Login
*
1
0..1 acti ve_test
1
1
Member
1
1
*
*
member
contact
Contact_status
*
Member_interest *
like/dislike
1
Interest
22
package PlatForms::Model::PbT;
use DBIx::DataModel;
LD, PJ-GE, juin 07
23
DBIx::DataModel->Schema('PbT');
Exemple de contrôleur Catalyst
PbT->Table(qw/PbT::Member
PbT->Table(qw/PbT::TTT
PbT->Table(qw/PbT::Login
PbT->Table(qw/PbT::Interest
PbT->Table(qw/PbT::Contact_status
PbT->Table(qw/PbT::Member_interest
member
ttt
login
interest
contact_status
member_interest
member_id/);
ttt_id/);
login_id/);
interest_id/);
member_id contact_id/);
member_interest_id/);
PbT->Composition([qw/PbT::Member
[qw/PbT::TTT
member
tests
1/],
*/]);
PbT->Composition([qw/PbT::Member
[qw/PbT::Member_interest
member
1/],
member_interests */]);
PbT->Association([qw/PbT::Interest
[qw/PbT::Member_interest
interest
1/],
member_interests */]);
Download