Page 1
© 2002 IBM Corporation
Confidential | Date | Other Information, if necessary November 7, 2011 Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
1
Christian Campo EclipseCon Europe 2011
Scrum on steroids - Building the "perfect" Scrum app with Eclipse technology
Page 2
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Scrum on steroids -‐ Overview
• What is Scrumbox ?
• MoIvaIon
• Architecture • ImplementaIon
• Demo
2
Page 3
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Scrumbox
• Scrum planning tool
• created by compeople for our own planning
• based on Eclipse frameworks (as you will see)
• currently internal code but we are planning on open sourcing it • more later.....
3
Page 4
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
MoIvaIon (Riena perspecIve)
• We had mulIple sample apps for Riena before
• Not maintained aRer iniIal creaIon
• Just playgrounds • miss-‐used to reproduce bug reports (became preTy unusable as showcase)
• an alternaIve demo we created was ok but preTy trivial
• demo didnt progress much aRer iniIal creaIon
• customer and community problems used more complex usecases than we did in our demos
4
Page 5
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
MoIvaIon (Scrum perspecIve)
• We tested and used a number of alternaIves
• Excel • some tools with PHP apps
• PHP .... seriously ? • with bugs • 0.3 commiTer working on it (some with no update in the last 6 month or
more)
• the way they used Scrum, Userstories, Tasks did not really fit
• no integraIon with any bugtracker • we finally wanted a tool that WORKED (or if not we could fix it ourselves)
5
Page 6
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
MoIvaIon (compeople perspecIve)
• Have an interesIng project that supplies ideas for students, bachelors etc.
• A project to train new employees with OSGi and Riena etc.
• Get a beTer understanding how we could use other Eclipse frameworks in our projects
• Test and beTer understand how people use Riena • A project that interesIng to many people, and find interest if we open source it
6
Page 7
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Scrum is...
• Teams
• Users (Developers) • Sprints • Userstories • Tasks
• imports Bugs into Userstories
• Burndown charts • Workload charts
• metrics per developer
• availability per developer
7
Page 8
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Analyse the Domain
• Why did the last scrum planning tool not work for you ?
• Are their other (beTer tools) out there ? • Excel, MicrosoR Project ?
• A reoccuring design problem was detected in most tools
8
Products Sprints Userstories Tasks
Products Sprints Userstories Tasks
most scrum planning tools scrumbox
Page 9
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Talk to the People
• Talk to the various user groups and have them describe their top usecases
• developers • project leads • scrum master
• head of department
9
Page 10
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Talk to the People II
10
• developer • see open tasks • track times
• project leads • look at bugtracker • create userstories • plan tasks • look at burndown and workload • check progress in sprint
• scrummaster • overview of planned tasks in a sprint • compare actual against planned burndown • sprint result presentation
• head of department • hours worked per developer • time spent on user stories • time spent on products
• wishes • calculate availability (hours available per developer/project) • print timesheet per month (per project) for everyone
Page 11
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Eclipse Frameworks to use
• Equinox, RCP • Riena • EclipseLink (MySQL)
• Nebula (CompositeTable, Grid, NatTable)
• p2 (sIll to come)
11
Page 12
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Client / Server approach I
• Riena has the client / server approach built-‐in • most other Eclipse frameworks assume everything is in one JVM (in one Ier)
• EclipseLink and persistence layer only on server • no dependency on persistence packages on client
• server stateless • client pulls current state from server whenever a view is acEvated
• no local storage of data, refresh every Ime a view becomes acIve
• always use Jobs/UIProcess to refresh/load data from server
• Security is no issue, same access rights for everybody (has a login process)
12
Page 13
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Scrumbox Server
Architecture I
13
MySQL
EclipseLink Riena
Equinox
Entities DTOs
Services
Scrumbox Client
Riena
Equinox
DTOs
Views/Controllers/Logic Remote Calls over HTTPS
RCP Nebula ...
local Services
Page 14
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Persistence -‐ EclipseLink
• use DTOs between client and server • load defined set of data before it is serialized to client • copy data between DTOs and EnIty models with generic uIlity
• remove internal EclipseLink objects from EnIIes before you copy them to DTOs (i.e. IndirectLists)
• opEmisEc locking
• guaranteed integrity
14
Page 15
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Persistence – EclipseLink II
• PersistenceUnit -‐> EnEtyManagerFactory -‐> EnEtyManager (EM) which is a context for enIIes.
• Client -‐> EclipseLink -‐> DB (1 EM* per Client) (standard scenario)
• Client -‐> Server -‐> EclipseLink -‐> DB (?? EMs) (Scrumbox/Riena) • started with 1 permanent EM per Server
• login to DB with generic userid (not user specific) • created random errors (racecondiIons)
• -‐> EM instances are NOT threadsafe • EclipseLink Team helped and now we pool EMs
• if you think of EnItyManager as “connecIon” then it becomes more obvious...
15
Page 16
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Architecture II
16
MySQL
Scrumbox Server
EclipseLink Riena
Equinox
Entities DTOs
Services
Page 17
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Map Domain to Riena NavigaIon Model
17
Page 18
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Statusmeter SWT Widget
• Did you see the statusmeter ?
• We needed a bar to visualize the progress of a task
• support different colors • that can be displayed as widget or in a table
• Didnt exist in SWT or Nebula
• So we created a new widget and contributed the code to Riena. • SIll a limitaIon in SWT Table only allows it to be displayed in the first column *grrrrr*
18
Note: You can put an image into another column but then SWT Table inserts a blank ident
Page 19
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Tables I
19
Page 20
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
SWT table implementaIons
• We were also looking for the "perfect" SWT Table implementaIons :-‐)
• Requirements for table implementaIon
• Tables where the number of columns could dynamically change
• Tables that could display the statusmeter (in any column)
• Table that supports checkboxes or text fields in cells • Varying height of row
20
Page 21
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Tables II
21
• SWT Table • default + platform look and feel • problem if image is not in the first column • you cannot add widgets into cells or multiple widgets (maybe CellEditors) • same height for all rows
• CompositeTable • header in platform look • repaint issues • does not show selection in row • can have widgets in cells
• NatTable • complex API (different concept) • no support for JFace
• Grid • no platform look • shows selections • varying row height • widgets in cells • can configure Renderers
• Grid • no platform look • shows selections • varying row height • widgets in cells • can configure Renderers
Page 22
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Mylyn
• used as universal API for retrieving bug informaIon
• rather than wriIng accessors for Bugzilla, ManIs etc. Scrumbox
• we programmed against Mylyn code which in turn than access the bugreporIng content
• uses some internal API of Mylyn but works
22
Page 23
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
New Technologies -‐ Testbed
• We made our first steps using Git with the Scrumbox codebase.
• Started using Tycho and Maven with Scrumbox
• for all three plalorms (Windows, Mac, Linux)
• building client and server • We did extensive Performance, Memoryleak analysis based on the Scrumbox client for code in Riena.
• found a few problems when redeploying .WAR archives in running JVMs
• found problems that only occurred when client is running for a longer Ime
23
Page 24
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0 24
Demo
Page 25
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Conclusion • Scrumbox achieved our main goals
• making Riena a beTer framework
• idenIfy pain points in Riena • have a scrum planing tool
• create an environment for people to learn about Riena and Eclipse technology
• Lessons learned: Eat your own dog food • Find out how easy it is to use your API • Find problems, bugs, race condiIons
• Have a product to test your weekly builds against (internally) • We spent a lot of Ime figuring out how some Eclipse frameworks would best work in a client / server environment.
• Plan to open source in the near future
25
Page 26
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0
Q&A
26
• http://www.eclipse.org/riena • http://wiki.eclipse.org/Riena
Page 27
Copyright © 2011 compeople AG, Made available under the Eclipse Public License v 1.0 27