1. The document discusses how all software teams eventually move towards zero innovation speed due to increasing maintenance needs and code obsolescence over time.
2. It recommends writing less code, writing better code, and reducing code by using domain specific languages, driving quality culture, and performing model-based legacy transformation.
3. Model-based legacy transformation involves refactoring legacy code with test harnesses, migrating to models, and performing continuous refactoring to reduce code size by 30-40% over multiple years.
A healthy diet for your Java application Devoxx France.pdf
How software teams move towards zero innovation speed
1. Dirk-Jan Swagerman
Senior Director Imaging Chain Cluster
September 2017
Why all software teams move
towards zero innovation speed.
And what to do about it
2. Our businesses in 20161
38% of Group sales 18% of Group sales41% of Group sales
Sales of EUR 17.4 billion
Diagnosis & Treatment
businesses
Connected Care & Health
Informatics businesses
Personal Health
businesses
1 As per Q2 2017, Other accounts for 3% of sales and includes HealthTech Other and Legacy Items
3. We address customer and consumer needs along
the health continuum
Healthy living Prevention Diagnosis Treatment Home care
Connected care and health informatics
4. We address customer and consumer needs along
the health continuum
Healthy living Prevention Diagnosis Treatment Home care
Connected care and health informatics
7. All teams move to zero productivity
𝑃𝑡 = 𝑃0 × 𝑒−𝛼𝑡
α is the rate of maintenance
(non-quality + obsolescence)
The lower your quality, the quicker
you move to zero productivity
8. What can we do?
• Write less code
• Write better code
• Reduce code
9. What can we do? – Be brief
“I didn't have time to write a short
letter so i wrote a long one instead”
Mark Twain
Succinctness
1.expressed in few words; concise; terse.
2.characterized by conciseness or verbal brevity.
3.compressed into a small area, scope, or compass.
10. What can we do? - Greenfield
Write less code
Write better code
Less code = less bugs
Less ways to express it wrong
= less bugs
1. Use domain specific languages
12. Succinctness
Getting closer to Kolmogorov complexity
Kolmogorov complexity: The length of the shortest computer program that
produces the desired output
You cannot get closer to low Kolmogorov complexity than with a well
designed DSL
Assembly 3GL 4GL UML DSL
13. ComMA
Component Modeling & Analysis
Design better interfaces faster and concisely
Comma is a DSL where the ‘particular aspect’ happens to be
software interface design
Co-owned and created by Philips and TNO-ESI
14. SellerBuyer
What is the problem with software interfaces?
Give contracts
Wants car
Signs contract
Contract
Clause A: Seller delivers car to Buyer
Clause B: Buyer pays Seller 100 k€
Interface between parties
15. What are interfaces?
In which order are Clause A and Clause B executed?
What is the time between the execution of the clauses?
SellerBuyer SellerBuyer
Pays amount
Orders
Signs contract
Delivers Car
Signs contract
Delivers Car
Pays amountTime
Contract
Clause A: Seller delivers car to Buyer
Clause B: Buyer pays Seller 100 k€
16. What are software interfaces?
Software interface are like contracts. In software interfaces specifications: We describe
the clauses, We do not describe the order, We do not describe the timing
SellerBuyer SellerBuyer
Pays amount
Orders
Signs contract
Delivers Car
Signs contract
Delivers Car
Pays amountTime
Contract
Clause A: Seller delivers car to Buyer
Clause B: Buyer pays Seller 100 k€
Described
Non
Described
17. What is the proposed solution?
We created a toolset called: Component Modeling & Analysis (ComMA)
With ComMA interfaces can be described properly, ComMA checks interface conformance
SellerBuyer SellerBuyer
Pays amount
Orders
Signs contract
Delivers Car
Signs contract
Delivers Car
Pays amountTime
Contract
Clause A: Seller delivers car to Buyer
Clause B: Buyer pays Seller 100 k€
Described
W ComMa
Described
W ComMa
18. ComMA: Component Modeling & Analysis
interface ICamera {
types
enum Status {OnOK OnFailed}
commands
Status PowerOn
void PowerOff
void Click
int GetPictureNumber
notifications
CameraStatus(Status s)
LowBattery
EmptyBattery
}
Signature
behavior
machine camera provides ICamera {
init
count := 0
initial state Off {
transition trigger: ICamera::PowerOn
do: reply(ICamera::Status::OnOK)
next state: SwitchingOn
OR
do: reply(ICamera::Status::OnFailed)
next state: Off
}
TR1 in state SwitchingOn
command ICamera::PowerOff - [ .. 32.0 ms ]
-> reply
TR2 in state On
command ICamera::Click - [ 10.0 ms .. 100.0 ms ]
-> notification ICamera::PictureTaken
TR5 notification ICamera::LowBattery
then notification ICamera::LowBattery
with period 750.0 ms jitter 50.0 ms
until notification ICamera::EmptyBattery
Behavior Constraints
Design
documentation
Interface
code
Model based
Test Suite
Executable
Simulator
Interface
Conformance Check
19. Design for Six Sigma integration
The performance timing of an
implementation can monitored
and checked statistically.
ComMA will check
conformance against spec.
20. ComMA is free to use and download…
for non-competitors
We are interested in strengthening the ecosystem!
Contact jozef.hooman@tno.nl
21. Positioning DSL: Collision prevention
restriction VeryCloseTableTopAndBeam
activation
distance (TableTop, Beam) < 20 mm
effects
userGuidance “TableTop and Beam very close”
relative limit TableTop*[Rotation, Translation],
Beam*[Rotation, Translation]
User input on real hardware Poosl simulation System Simulator
User
Input
System
Commands
22. What can we do? - Maintenance
2. Drive quality cultureDrive quality culture
23. There is too much code in high-
tech systems that is not of
economic value
24. Over-production
Your software stack is bigger than needed
2
4
Confidential – For Internal Use Only
Over-abstraction
Over-processing
Over-branching
Conway's law
Your team needs a code down target!
https://www.linkedin.com/pulse/why-your-team-needs-code-down-target-dirk-jan-swagerman
26. Your team needs a code down target!
Credits: https://twitter.com/BrennaIvyArt
https://www.linkedin.com/pulse/why-your-team-needs-code-down-target-dirk-jan-swagerman
4M Lines of code
30. Step 1 – Refactor with confidence
Gherkin/Specflow to capture legacy behavior in rigorous test harness
1.8M
31. Step 2 - Model-based migration
Opportunity
• New field service framework
• Collaboration with TNO
1.8M
1.2 M
Results
• 70% smaller code base than legacy software
• 80% effort reduction over manual migration
32. Step 2 – HW Obsolescence as opportunity
Opportunity
• Introduction of state of the art hardware
IGCIGC
FrontEnd Adapter
Application State
Controller
Scenario Controller
Image Generation
Controller (IGC)
Beam Limitation
Controller (BLC)
BackEnd Controller
(BEC)
Generator
Service
Image
Detection
Service
Collimator
Service
Sequencer
Service
Misc. IO
Service
SIB Certeray FDC
0.8M
1.2 M
Results
• 30% reduction of the code
33. Step 3 – Continuous ‘refactoring’
Opportunity
• Smaller continuous model based
refactoring's
• State machines modeled in state of the
art model based tools
0.8M
0.5 M
Results
• 40% reduction of the code
• Typically using modeling
reduces defects found during
integration with a factor of 10.
35. Culture before result
Create pull before push
Management
• Vision – Explain ‘why’
• Support
Success Chance = Vision x Support x Skills x Openness x Opportunity
Team will identify opportunities!
Team
• Open to explore
• Technical Skills
36. Summary
• Culture before result
• Pull before push
• Have a code down target!
• Interface semantics &
timing
• State machines
• Positioning DSL’s
Less code
Better code
1. Use domain
specific languages
Reduce code 2. Drive quality culture
3. Model based legacy
transformation
• Create a test harness first
• Replace legacy with models
• Manual
• Automated