SlideShare a Scribd company logo
Making software
development
processes to
work for you
Optimizing investments to balance between bureaucracy and
total liberalism in software development
Mikko Paukkila – 9-Oct-2014
Background
• Mikko Paukkila is a Principal Systems Engineer in software build, release,
testing and integration area. He has experience of multiple software
development environments like Linux, Mac, Windows, Android, Qt, Symbian
etc. He has also wide knowledge of agile & lean processes and related tools
from small 10-20 people software&hardware development product projects
to very large programs of 1000+ developers. He has been driving deployment
of continuous integration processes in an international environment and has
been administrating related tools like Jenkins and Gerrit. Expert of SCM
tools like git. Mikko currently for Nokia Technologies for imaging technology
business.
• Disclaimer:
The presentation will contain a lot of opinions that are mine, not company’s.
Some words about software
development processes
From need to product
Purpose of software development processes&tools should be enabled smooth
flow between these phases:
1. From (customer) need to requirement
2. From requirement to a software change
3. From software change to high quality product
4. Product creation/finalization process
Requirement
management
Product
creation
Software
development
And not forgetting feedback loop.
Continuous Integration enables fast and
extensive feedback of software changes that
are in our release chain. This is done by
automated tools, but it requires that
developer commits software change(s) often
and react fast if there are problems in
builds.
CI is done to enable errors and integration
problems to be found earlier. This eventually
leads us to produce better quality software
already from the beginning and enables also
us to get our products and solutions faster to
the market.
Basic Continuous Integration system:
Continuous Integration
Developer practices:
1. Commit changes often
2. Follow the status
(build & test results)
3. React when needed
(debug, fix, merge etc.)
Automated
testingFast builds
Enablers of Continuous
Integration
Version control
system (git,…)
Build system
(e.g. Jenkins)
Test automation
system
Developers
+ other linked practices: Test Driven Development, …
Instant feedback and easy
access to the latest
environment and results
What? Why?
Error cost curve:
CI
Continuous Integration tools
Tool selections: SCM
• git is my option
• git is the most powerful SCM tool, but requires time to learn even most
important tricks of it
• Use that SCM tool that developers have mostly got used it or if you some
other specific requirements (like that your customers requires so)
• git submodules solution sucks – If you need hierarchy of repositories then
use for example Google’s repo tool
• What to consider?
 Distributed development – central SCM vs. distributed one?
 A lot of open source alternatives vs. commercial ones
commit e83c5163316f89bfbde7d9ab23ca2e25604af290
Author: Linus Torvalds <torvalds@ppc970.osdl.org>
Date: Thu Apr 7 15:13:13 2005 -0700
Initial revision of "git", the information manager from hell
Tool selections: repository hosting
• Host yourself or outside?
 Security
 Performance
 Price (also internal workforce costs)
• Gerrit
 Open source alternative with code review solution
 Qt and Google are using too, but have intenal forked versions
 Access management on quite detailed level and requires some learning
 git is the only supported version control tool
 https://android-review.googlesource.com/ , https://codereview.qt-project.org/
• Github
 SAAS or Github Enterprise
 Git only
• Gitorious
• Bitbucket by Atlassian
• Deveo
 Finnish version supporting git, Mercurial, Subversion
Continuous Integration system
• If your project is not having an automated build&test
system, then make sure you get it!
• Quite many open source alternatives:
 Buildbot
 Cruisecontrol
 Jenkins
 And commercial solutions too, like ElectricCommanders, Team
Foundation Server, Bamboo by Atlassian
• Unless you totally hate graphical interfaces or Java or
open source software, then Jenkins is your choice.
• Jenkins has probably the biggest Continuous Integration solution user space
and very wide support for multiple tools via plugins
• At least 61000 installations globally and 730+ plugins
(information from May 2013, Cloudbees)
• Java based, you can develop own plugins if needed
• Master – slave architecture
 You can have how many (slave) build machines that you like.
Operations are run normally via ssh.
 Commercial additions like Jenkins Enterprise by Cloudbees
http://pages.cloudbees.com/rs/cloudbees/images/Jenkins-Enterprise-by-
CloudBees.pdf
Software change flows
Code reviews! Code reviews! Code reviews!
• If you are running a project in which there is no code review practice, then think it again!
• Code review is one of the most valuable part of steps in release chain.
 Fast feedback
 One of the best ways to prevent quality to drop
• By code review (tool) you can:
 Get feedback from your colleagues
 Make better visible what changes are coming and prepare testing
 Run what ever prechecks that you need
 Visualize your changes
• What can go wrong?
 You code review tool is not part of chain – requires that developer need to do many additional steps to
get a change under review.
• Tool & practice recommendations
 http://en.wikipedia.org/wiki/Gerrit_%28software%29
 http://en.wikipedia.org/wiki/Crucible_%28software%29
 http://en.wikipedia.org/wiki/List_of_tools_for_code_review
Qt contribution model
Picture from: http://qt-project.org/wiki/Qt-Contribution-Guidelines
1)2)
3)
4) 5) 6)
Another release model
Reviewer
(approval,
optional verification)
Developer
New
commit Gerrit
Pre-build
&
test
Commit
Verification
Submit
CI build
& test
Environment
file for CI
built
environment
Ok?
Environment
file for
verified
environment
Ok?
Release verification
(manual testing)
Ok?
Developers
Commit gets already
available for other developers
CI version for
developers
Stable version for
developers
Longer build
& test
Testing
Development environment
levels
Bleeding edge Stable
Build phase
1. Fetch source code
2. Run checks that you can run already at this phase and which are not taking too
much time
 Like lint, sonar, valgring etc.
 Commercial options: Coverity etc.
3. Compile it
 Not only for your main target, but to all of your product’s target environments:
Linux? Windows? iOS? Mobile Platforms?
4. Provide feedback to the review system and directly to the developer if build fails
• Package your code & binaries if those are reusable in another continuation steps
• Run additional analyzer that are taking long time separately, like performance tools
Test phase
• Do you have already automated tests in place?
• Do you have already automated tests in place?
• Do you have already automated tests in place?
• There is a huge amount of test frameworks and test runners available for
various use cases. Choose what fits best for your technologies and processes.
• Normally test automation is not enough, but you need also some manual
testing
Places for optimization
CI
CI
Too complex and slow models
Applications
Middleware
OS
Adaptation
Chipset
CI for
platform
CI for
adaptation
(CI for Chipset SW)
CI
CI
CI
CI for
package /
package
wrapper
CI
Packag
e
CI for
package /
package
wrapper
CI
CI for
package /
package
wrapper
CI
CI for
package /
package
wrapper
CI
Deliveries via
packages
Package
• Gating is done for package or package wrapper depending on teams
• Multiple concurrent configurations shall be supported in all CI systems
• Asset Creation environment is set up as is reasonable for the program
Common CI
environments
CI Build & test setup
Package
CI
Package
CI
Package CI
Package
CI
Package
CI
Package
CI
Package
CI
Package CI
Package CI
Package
CI
Package
CI
Package
CI
Quality Gating level
(package)
CI
AssetCreationCIsetups
CI
CI for sub-release verification:
Package / Package wrapper
CI for pre-verification:
Asset Creation / Team CI
CI for release
verification
Developers
Software changes
Team
CommitGate
CI
Team
CI
Daily/weekly
releases
Daily/weekly
releases
Process optimizations
• How long it takes from software change to get the change into a product?
 Worse example: 1-2 weeks
 Best example: less than 15 minutes
 Optimizations:
 Build time
 Review time
 Too many steps in the process?
• Quality Gating
 Too heavy?
 Not at all?
• Test automation
 Do you really have it in place?
Requirements / Errors / User Stories /
Tasks / Defects / Epics / handling ’needs’
• We use Atlassian Jira
 Together with Agile plugin
• Various available solutions
 I have experince on Bugzilla, Rally, ScrumWorks, Lotus Notes, ...
• ”We have to use Scrum to be Agile?” – really?
 Are you solving your problems by forcing team(s) to use specific model?
 Agile/Scrum came with quite big hype
 There is no single right way to deploy agile processes
 You must be agile also by taking processes in use in an agile way.
Not only forcing the same way as those are defined in books.
 When Scrum is good? How about Kanban?
Scrum Continous
Integration
DevOps
Startup way of
working in big
companies
Waterfall
Lean
Agile
Kanban
Other communication solutions for
developers
• Messaging:
 Do you have a solution for developers to use for communication?
 Hipchat, IRC+Quassel (one to many and one to one)
 Lync, Skype (one to one + meetings)
 Important especially if working on multiple locations
• Information management
 Do developers have a solution to share instructions etc.
 TWiki, Concluence, Sharepoint, (Lotus Notes) etc.
Developer environment
• Can any developer repeat your product build?
• If not, then make it happen.
• It is better to package all tool that you need for compile
 Put those into git reposity or package those otherwise
 Support by installation scripts
• Do developers have a working IDE package and don’t need to spend hours in
installing & updating applications?
Technical Optimizations
• Speed?
 Put more money to build machines
 Start from changing from HDD to SDD -> normally huge improvement
 What steps can be run in parallel?
 Or reduce some step?
 Some technical optimizations: ccache, icecc, ElectricCloud, btrfs, network optimizations
• Money?
 Are you investment on okay level?
 Consider using more open source tools
• Maintenance
 Virtualization
 Automatic ’installation’: puppet, netboot
• Do you have all you tools integrated to your CI system?
 Also requirement and error management systems
Bureaucrazy or enhancement?
• Are your software development processes and tools more supporting
management?
• Or
• Are your software development processes and tools supporting software
development?
• Yes, visibility is important and tools for that, but not those tools that are
bringing still more steps for developer to get changes in.
Do you have the culture in place?
• Continuous Integration developer practices:
1. Commit changes often
2. Follow the status
(build & test results)
3. React when needed
(debug, fix, merge etc.)
• Do you have code review practice in use?
• Do you have practices for test automation?
• Do you allow others to touch ’any’ components?

More Related Content

PDF
Continuous integration (eng)
PPTX
DevOps and Tools
PDF
The Continuous delivery Value @ codemotion 2014
PPTX
ISTQB Agile Tester - Agile Test Tools
PDF
Continuous delivery @wcap 5-09-2013
PPTX
Critical Capabilities to Shifting Left the Right Way
PDF
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
PPTX
An introduction to DevOps
Continuous integration (eng)
DevOps and Tools
The Continuous delivery Value @ codemotion 2014
ISTQB Agile Tester - Agile Test Tools
Continuous delivery @wcap 5-09-2013
Critical Capabilities to Shifting Left the Right Way
Agile Software Factory - Cloud Expo / DevOps Summit 2014 demo
An introduction to DevOps

What's hot (19)

PDF
The Continuous delivery value - Funaro
PDF
Continuous Integration Practices
PPTX
How Microsoft ALM Tools Can Improve Your Bottom Line
PPTX
The Challenges & Pitfalls of Database Continuous Delivery
PDF
Top DevOps tools
PPTX
Continuous Integration
PPTX
#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma
PPTX
Project Management With Scrum
PDF
Agile Software Development Process Practice in Thai Culture
PDF
Ci tips and_tricks_linards_liepins
PDF
Continuous Delivery at Oracle Database Insights
PDF
Agile Software Development in Practice - A Developer Perspective
PPTX
Continuous Delivery: why ? where to start ? how to scale ?
PDF
Agile Adoption Story in LGE (Aps2010)
PDF
Agile Testing Introduction
PDF
Dev ops tutorial for beginners what is devops &amp; devops tools
PPTX
Building an automated database deployment pipeline
PPTX
Dev ops is more than CI+CD tools
PDF
New trends in testing automation
The Continuous delivery value - Funaro
Continuous Integration Practices
How Microsoft ALM Tools Can Improve Your Bottom Line
The Challenges & Pitfalls of Database Continuous Delivery
Top DevOps tools
Continuous Integration
#ATATalk - Episode 1 : Session on Selenium Exceptions by Pallavi Sharma
Project Management With Scrum
Agile Software Development Process Practice in Thai Culture
Ci tips and_tricks_linards_liepins
Continuous Delivery at Oracle Database Insights
Agile Software Development in Practice - A Developer Perspective
Continuous Delivery: why ? where to start ? how to scale ?
Agile Adoption Story in LGE (Aps2010)
Agile Testing Introduction
Dev ops tutorial for beginners what is devops &amp; devops tools
Building an automated database deployment pipeline
Dev ops is more than CI+CD tools
New trends in testing automation
Ad

Viewers also liked (7)

PPT
Part 2 improving your software development v1.0
PPT
Presentation 1 open source tools in continuous integration environment v1.0
PDF
Designing OpenStack Architectures
PDF
Deep dive into highly available open stack architecture openstack summit va...
PPTX
OpenStack Architecture and Use Cases
PPTX
Delivering IaaS with Open Source Software
PDF
OpenStack Architecture
Part 2 improving your software development v1.0
Presentation 1 open source tools in continuous integration environment v1.0
Designing OpenStack Architectures
Deep dive into highly available open stack architecture openstack summit va...
OpenStack Architecture and Use Cases
Delivering IaaS with Open Source Software
OpenStack Architecture
Ad

Similar to Making software development processes to work for you (20)

PDF
Agile Engineering Best Practices by Richard Cheng
PDF
Continuous integrations - Basics
PDF
Continuous Testing
PPT
Continuous deployment steve povilaitis
PDF
Delivering Quality Software with Continuous Integration
PDF
Agile Bodensee - Testautomation & Continuous Delivery Workshop
PPTX
(Agile) engineering best practices - What every project manager should know
PDF
TMF2014 CI-CD Workshop Michael Palotas
 
PPTX
Continuous Integration & the Release Maturity Model
PPTX
Continuous integration
PPTX
Agile Engineering Sparker GLASScon 2015
PPT
Continuous Integration
PPTX
Continuous Integration
PDF
Agile & ALM tools
PPTX
OVerview of Jenkins - A WIP pPT that needs to be refined
ZIP
Introduction To Continuous Integration
PPTX
Devops Journey - internet tech startup
PPT
Continuous Integration
PDF
Continuous Integration (CI) - An effective development practice
PPTX
Introduction to Continuous Integration
Agile Engineering Best Practices by Richard Cheng
Continuous integrations - Basics
Continuous Testing
Continuous deployment steve povilaitis
Delivering Quality Software with Continuous Integration
Agile Bodensee - Testautomation & Continuous Delivery Workshop
(Agile) engineering best practices - What every project manager should know
TMF2014 CI-CD Workshop Michael Palotas
 
Continuous Integration & the Release Maturity Model
Continuous integration
Agile Engineering Sparker GLASScon 2015
Continuous Integration
Continuous Integration
Agile & ALM tools
OVerview of Jenkins - A WIP pPT that needs to be refined
Introduction To Continuous Integration
Devops Journey - internet tech startup
Continuous Integration
Continuous Integration (CI) - An effective development practice
Introduction to Continuous Integration

More from Ambientia (20)

PPTX
Itms atlassian way-final-2017-10
PPTX
Dev ops atlassianway-final-2017-10
PPTX
Insight Asset Management for JIRA Service Desk
PPTX
APIen hallinnalla uutta liiketoimintaa
PDF
Miten API management toimii
PDF
Tunnistamalla asiakaspolut tehostat asiakaspalvelusi toimintaa
PPTX
OpenShift-webinaari 31.1. / Ambientian esitykset
PPTX
ITSM & JIRA Service Desk
PDF
Ambientia Service Design -työpaja SYTYKE
PPTX
Liferayn rooli Valtorin palveluvalikoimassa
PPTX
Digitaalinen asiakaskokemus ja palvelumuotoilu
PPTX
Liferay Audience Targeting
PDF
Case Procountor: Zephyr test tool deployment
PDF
JIRA Portfolio
PDF
Case Containerships JIRA Service Desk
PDF
Jira 7
PPT
Liferay Road Show Sosiaali- ja terveysministeriö
PPTX
Liferay Road Show Responsiivinen suunnittelu
PPTX
Liferay Road Show Linnunmaa LEX
PPTX
Liferay Road Show Rolf van der Steen
Itms atlassian way-final-2017-10
Dev ops atlassianway-final-2017-10
Insight Asset Management for JIRA Service Desk
APIen hallinnalla uutta liiketoimintaa
Miten API management toimii
Tunnistamalla asiakaspolut tehostat asiakaspalvelusi toimintaa
OpenShift-webinaari 31.1. / Ambientian esitykset
ITSM & JIRA Service Desk
Ambientia Service Design -työpaja SYTYKE
Liferayn rooli Valtorin palveluvalikoimassa
Digitaalinen asiakaskokemus ja palvelumuotoilu
Liferay Audience Targeting
Case Procountor: Zephyr test tool deployment
JIRA Portfolio
Case Containerships JIRA Service Desk
Jira 7
Liferay Road Show Sosiaali- ja terveysministeriö
Liferay Road Show Responsiivinen suunnittelu
Liferay Road Show Linnunmaa LEX
Liferay Road Show Rolf van der Steen

Recently uploaded (20)

PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
cuic standard and advanced reporting.pdf
PPT
Teaching material agriculture food technology
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Modernizing your data center with Dell and AMD
GamePlan Trading System Review: Professional Trader's Honest Take
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Big Data Technologies - Introduction.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Review of recent advances in non-invasive hemoglobin estimation
Reach Out and Touch Someone: Haptics and Empathic Computing
cuic standard and advanced reporting.pdf
Teaching material agriculture food technology
The Rise and Fall of 3GPP – Time for a Sabbatical?
Diabetes mellitus diagnosis method based random forest with bat algorithm
Advanced Soft Computing BINUS July 2025.pdf
Spectral efficient network and resource selection model in 5G networks
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
NewMind AI Monthly Chronicles - July 2025
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Modernizing your data center with Dell and AMD

Making software development processes to work for you

  • 1. Making software development processes to work for you Optimizing investments to balance between bureaucracy and total liberalism in software development Mikko Paukkila – 9-Oct-2014
  • 2. Background • Mikko Paukkila is a Principal Systems Engineer in software build, release, testing and integration area. He has experience of multiple software development environments like Linux, Mac, Windows, Android, Qt, Symbian etc. He has also wide knowledge of agile & lean processes and related tools from small 10-20 people software&hardware development product projects to very large programs of 1000+ developers. He has been driving deployment of continuous integration processes in an international environment and has been administrating related tools like Jenkins and Gerrit. Expert of SCM tools like git. Mikko currently for Nokia Technologies for imaging technology business. • Disclaimer: The presentation will contain a lot of opinions that are mine, not company’s.
  • 3. Some words about software development processes
  • 4. From need to product Purpose of software development processes&tools should be enabled smooth flow between these phases: 1. From (customer) need to requirement 2. From requirement to a software change 3. From software change to high quality product 4. Product creation/finalization process Requirement management Product creation Software development And not forgetting feedback loop.
  • 5. Continuous Integration enables fast and extensive feedback of software changes that are in our release chain. This is done by automated tools, but it requires that developer commits software change(s) often and react fast if there are problems in builds. CI is done to enable errors and integration problems to be found earlier. This eventually leads us to produce better quality software already from the beginning and enables also us to get our products and solutions faster to the market. Basic Continuous Integration system: Continuous Integration Developer practices: 1. Commit changes often 2. Follow the status (build & test results) 3. React when needed (debug, fix, merge etc.) Automated testingFast builds Enablers of Continuous Integration Version control system (git,…) Build system (e.g. Jenkins) Test automation system Developers + other linked practices: Test Driven Development, … Instant feedback and easy access to the latest environment and results What? Why? Error cost curve: CI
  • 7. Tool selections: SCM • git is my option • git is the most powerful SCM tool, but requires time to learn even most important tricks of it • Use that SCM tool that developers have mostly got used it or if you some other specific requirements (like that your customers requires so) • git submodules solution sucks – If you need hierarchy of repositories then use for example Google’s repo tool • What to consider?  Distributed development – central SCM vs. distributed one?  A lot of open source alternatives vs. commercial ones commit e83c5163316f89bfbde7d9ab23ca2e25604af290 Author: Linus Torvalds <torvalds@ppc970.osdl.org> Date: Thu Apr 7 15:13:13 2005 -0700 Initial revision of "git", the information manager from hell
  • 8. Tool selections: repository hosting • Host yourself or outside?  Security  Performance  Price (also internal workforce costs) • Gerrit  Open source alternative with code review solution  Qt and Google are using too, but have intenal forked versions  Access management on quite detailed level and requires some learning  git is the only supported version control tool  https://android-review.googlesource.com/ , https://codereview.qt-project.org/ • Github  SAAS or Github Enterprise  Git only • Gitorious • Bitbucket by Atlassian • Deveo  Finnish version supporting git, Mercurial, Subversion
  • 9. Continuous Integration system • If your project is not having an automated build&test system, then make sure you get it! • Quite many open source alternatives:  Buildbot  Cruisecontrol  Jenkins  And commercial solutions too, like ElectricCommanders, Team Foundation Server, Bamboo by Atlassian • Unless you totally hate graphical interfaces or Java or open source software, then Jenkins is your choice.
  • 10. • Jenkins has probably the biggest Continuous Integration solution user space and very wide support for multiple tools via plugins • At least 61000 installations globally and 730+ plugins (information from May 2013, Cloudbees) • Java based, you can develop own plugins if needed • Master – slave architecture  You can have how many (slave) build machines that you like. Operations are run normally via ssh.  Commercial additions like Jenkins Enterprise by Cloudbees http://pages.cloudbees.com/rs/cloudbees/images/Jenkins-Enterprise-by- CloudBees.pdf
  • 12. Code reviews! Code reviews! Code reviews! • If you are running a project in which there is no code review practice, then think it again! • Code review is one of the most valuable part of steps in release chain.  Fast feedback  One of the best ways to prevent quality to drop • By code review (tool) you can:  Get feedback from your colleagues  Make better visible what changes are coming and prepare testing  Run what ever prechecks that you need  Visualize your changes • What can go wrong?  You code review tool is not part of chain – requires that developer need to do many additional steps to get a change under review. • Tool & practice recommendations  http://en.wikipedia.org/wiki/Gerrit_%28software%29  http://en.wikipedia.org/wiki/Crucible_%28software%29  http://en.wikipedia.org/wiki/List_of_tools_for_code_review
  • 13. Qt contribution model Picture from: http://qt-project.org/wiki/Qt-Contribution-Guidelines 1)2) 3) 4) 5) 6)
  • 14. Another release model Reviewer (approval, optional verification) Developer New commit Gerrit Pre-build & test Commit Verification Submit CI build & test Environment file for CI built environment Ok? Environment file for verified environment Ok? Release verification (manual testing) Ok? Developers Commit gets already available for other developers CI version for developers Stable version for developers Longer build & test Testing Development environment levels Bleeding edge Stable
  • 15. Build phase 1. Fetch source code 2. Run checks that you can run already at this phase and which are not taking too much time  Like lint, sonar, valgring etc.  Commercial options: Coverity etc. 3. Compile it  Not only for your main target, but to all of your product’s target environments: Linux? Windows? iOS? Mobile Platforms? 4. Provide feedback to the review system and directly to the developer if build fails • Package your code & binaries if those are reusable in another continuation steps • Run additional analyzer that are taking long time separately, like performance tools
  • 16. Test phase • Do you have already automated tests in place? • Do you have already automated tests in place? • Do you have already automated tests in place? • There is a huge amount of test frameworks and test runners available for various use cases. Choose what fits best for your technologies and processes. • Normally test automation is not enough, but you need also some manual testing
  • 18. CI CI Too complex and slow models Applications Middleware OS Adaptation Chipset CI for platform CI for adaptation (CI for Chipset SW) CI CI CI CI for package / package wrapper CI Packag e CI for package / package wrapper CI CI for package / package wrapper CI CI for package / package wrapper CI Deliveries via packages Package • Gating is done for package or package wrapper depending on teams • Multiple concurrent configurations shall be supported in all CI systems • Asset Creation environment is set up as is reasonable for the program Common CI environments CI Build & test setup Package CI Package CI Package CI Package CI Package CI Package CI Package CI Package CI Package CI Package CI Package CI Package CI Quality Gating level (package) CI AssetCreationCIsetups CI CI for sub-release verification: Package / Package wrapper CI for pre-verification: Asset Creation / Team CI CI for release verification Developers Software changes Team CommitGate CI Team CI Daily/weekly releases Daily/weekly releases
  • 19. Process optimizations • How long it takes from software change to get the change into a product?  Worse example: 1-2 weeks  Best example: less than 15 minutes  Optimizations:  Build time  Review time  Too many steps in the process? • Quality Gating  Too heavy?  Not at all? • Test automation  Do you really have it in place?
  • 20. Requirements / Errors / User Stories / Tasks / Defects / Epics / handling ’needs’ • We use Atlassian Jira  Together with Agile plugin • Various available solutions  I have experince on Bugzilla, Rally, ScrumWorks, Lotus Notes, ... • ”We have to use Scrum to be Agile?” – really?  Are you solving your problems by forcing team(s) to use specific model?  Agile/Scrum came with quite big hype  There is no single right way to deploy agile processes  You must be agile also by taking processes in use in an agile way. Not only forcing the same way as those are defined in books.  When Scrum is good? How about Kanban? Scrum Continous Integration DevOps Startup way of working in big companies Waterfall Lean Agile Kanban
  • 21. Other communication solutions for developers • Messaging:  Do you have a solution for developers to use for communication?  Hipchat, IRC+Quassel (one to many and one to one)  Lync, Skype (one to one + meetings)  Important especially if working on multiple locations • Information management  Do developers have a solution to share instructions etc.  TWiki, Concluence, Sharepoint, (Lotus Notes) etc.
  • 22. Developer environment • Can any developer repeat your product build? • If not, then make it happen. • It is better to package all tool that you need for compile  Put those into git reposity or package those otherwise  Support by installation scripts • Do developers have a working IDE package and don’t need to spend hours in installing & updating applications?
  • 23. Technical Optimizations • Speed?  Put more money to build machines  Start from changing from HDD to SDD -> normally huge improvement  What steps can be run in parallel?  Or reduce some step?  Some technical optimizations: ccache, icecc, ElectricCloud, btrfs, network optimizations • Money?  Are you investment on okay level?  Consider using more open source tools • Maintenance  Virtualization  Automatic ’installation’: puppet, netboot • Do you have all you tools integrated to your CI system?  Also requirement and error management systems
  • 24. Bureaucrazy or enhancement? • Are your software development processes and tools more supporting management? • Or • Are your software development processes and tools supporting software development? • Yes, visibility is important and tools for that, but not those tools that are bringing still more steps for developer to get changes in.
  • 25. Do you have the culture in place? • Continuous Integration developer practices: 1. Commit changes often 2. Follow the status (build & test results) 3. React when needed (debug, fix, merge etc.) • Do you have code review practice in use? • Do you have practices for test automation? • Do you allow others to touch ’any’ components?