These are the slides for the presentation I gave at ESUG 2008, on Continuous Integration in Kapital (the risk management system I work on at J.P. Morgan)
5. Introducing the Beast
Kapital has been actively developed since
1995
Kapital has more than 22000 classes
(VW with ENVY has 2200)
Kapital is more than 70 developers pushing
changes everyday!
Every development cycle we change 5000
classes
Each day, we change from 60 to 150 classes
6. Why Change My Image ?
Resynchronizing the code base with the other
developers
Avoiding important splits from the main branch
Checking prerequesites
Avoiding unknown dependencies
7. Why Change My Image ?
Resynchronizing the code base with the other
developers
Avoiding important splits from the main branch
Checking prerequesites
Avoiding unknown dependencies
8. Resynchronizing the Code
Base
The sooner you merge, the better
Everyday, 60 to 150 classes are changed
Everyday, 25 change sets are applied
Average size of a change set = 5-8 classes
25*5 = 125
25*8 = 200
Avoiding multiple implementations for a single
piece of functionality
9. Why Change My Image ?
Resynchronizing the code base with the other
developers
Avoiding important splits from the main branch
Checking prerequesites
Avoiding unknown dependencies
11. Why Change My Image ?
Resynchronizing the code base with the other
developers
Avoiding important splits from the main branch
Checking prerequesites
Avoiding unknown dependencies
13. Why Change My Image ?
Resynchronizing the code base with the other
developers
Avoiding important splits from the main branch
Checking prerequesites
Avoiding unknown dependencies
29. Identifying the Issue
3 types of failures
Successful build, but failing tests
Uncompleted build
Successful build, but failed load
30. Uncompleted Build
This is Smalltalk, you can debug
Find the offending code change first
Typically its a prerequisite issue. A
method not yet introduced, a class (or
variable) not yet declared
31. Identifying the Issue
3 types of failures
Successful build, but failing tests
Uncompleted build
Successful build, but failed load
32. Successful Build, but Failed
Load
The code didnt load all the way
Revealed by the tests run on the image
(missing code)
Know your SCM system well!
ENVY does this for overrides
33. And Fixing the Build!
Always find the error before fixing it
You must fix the build before you can
validate todays code base
34. And Fixing the Build! (2)
3 types of errors can be introduced by
code changes:
Calling a method not yet present
Depending on code not yet released
Clashing code
35. And Fixing the Build! (2)
3 types of errors can be introduced by
code changes:
Calling a method not yet present
Depending on code not yet released
Clashing code
37. And Fixing the Build! (2)
3 types of errors can be introduced by
code changes:
Calling a method not yet present
Depending on code not yet released
Clashing code
39. And Fixing the Build! (2)
3 types of errors can be introduced by
code changes:
Calling a method not yet present
Depending on code not yet released
Clashing code
40. Clashing Code
a.k.a mismerged code
Because some classes are centers of
high activity