SlideShare a Scribd company logo
Software Dev. Practices – Continuous IntegrationAgile Mëtteg – June 16th, 2011
ABOUT US16 June 2011Agile Mëtteg – Continuous Integration2
PROFILECreated in 2004Independent Software Development Company16 June 2011Agile Mëtteg – Continuous Integration3
FIGURES16 June 2011Agile Mëtteg – Continuous Integration42,5M€ en 201032 in 2011
MISSIONDesign, Develop and Customize “Software as Business & Operational Enabler” Fast & flexible solutions business value orientedHelp IT and all Business & Operational Organizations to adopt the culture of “Software as Business & Operational Enabler”Simple & pragmatic methods making effective the collaboration of the actors of a projectEasy and powerful tools for follow-up of relevant KPI16 June 2011Agile Mëtteg – Continuous Integration5
OUR SERVICESMgtTeamServices4Applications enabling productivityBespoke applicationMobile applicationBased on packageConsulting services Coaching & SupportTrainingResource delegation1SoftwareDevelopmentOpsTeamServicesDev Team ServicesAgilityAgility231Agility16 June 2011Agile Mëtteg – Continuous Integration6234
OUR MEANS16 June 2011Agile Mëtteg – Continuous Integration780% > 4 years56% > 8 years31% > 12 yearsAgilityAuthorized Training Center in Luxembourg
OUR MAIN CUSTOMERS16 June 2011Agile Mëtteg – Continuous Integration8
SPEAKERS16 June 2011Agile Mëtteg – Continuous Integration9
About you16 June 2011Agile Mëtteg – Continuous Integration10
PARTICIPANTSWho are you ?What is your role ?What do you know about agility ?16 June 201111Agile Mëtteg – Continuous Integration
INTRODUCTION16 June 2011Agile Mëtteg – Continuous Integration12
CONTINUOUS INTEGRATIONContinuous Integration in a few questionsWhy do I need it ?What is it ?What does it require ?How does it relate to the Agile principles ?16 June 2011Agile Mëtteg – Continuous Integration13
SOFTWARE DEVELOPMENT: INDUSTRY? PROCESSES?What is Software Development?an industry mining, farming, construction, manufacturing, …etc.with clearly identified and well-defined processes, i.e. easily reproducible	Really?	No failed project?	A lot of…16 June 2011Agile Mëtteg – Continuous Integration14
SOFTWARE DEVELOPMENT: A LOT OF FAILED PROJECTS16 June 2011Agile Mëtteg – Continuous Integration15
SOFTWARE DEVELOPMENT: A LOT OF FAILED PROJECTS16 June 2011Agile Mëtteg – Continuous Integration16
« Houston, we’ve got a problem! »16 June 2011Agile Mëtteg – Continuous Integration17
AGILE MANIFESTO vs SOFTWARE INDUSTRIALIZATION ?Agile ManifestoIndividuals and interactions overprocesses and toolsWorking softwareovercomprehensive documentationCustomer collaboration overcontract negotiationResponding to change overfollowing a plan16 June 2011Agile Mëtteg – Continuous Integration18
SOFTWARE CRAFTSMANSHIP vs SOFTWARE INDUSTRIALIZATION?Manifesto for Software CraftsmanshipNot onlyworking software, but alsowell-crafted softwareNot onlyresponding to change, but alsosteadily adding valueNot onlyindividuals and interactions, but alsoa community of professionalsNot onlycustomer collaboration, but alsoproductive partnerships16 June 2011Agile Mëtteg – Continuous Integration19
SOFTWARE DEVELOPMENT: AN ART?Agile Manifesto and Manifesto for Software Craftsmanship were created by veterans of the software industryHowever, when summed up, one can conclude software development is more an art than an industrial processSo, let’s compare with music…16 June 2011Agile Mëtteg – Continuous Integration20
SOFTWARE DEVELOPMENT: AN ART?16 June 2011Agile Mëtteg – Continuous Integration21
SOFTWARE DEVELOPMENT: AN ART?16 June 2011Agile Mëtteg – Continuous Integration22
SOFTWARE DEVELOPMENT IS AN ARTSo, Software Development is an art!But building nearly anything is also an artDon’t you think?And, more importantly,Art is not without rules and best practices16 June 2011Agile Mëtteg – Continuous Integration23
RULES AND BEST PRACTICESWhat’s the worst?Not following therules usually leads to a rather direct and abrupt failureproject fails integration testing project is refused by infrastructureproject fails user acceptance testing…16 June 2011Agile Mëtteg – Continuous Integration24
RULES AND BEST PRACTICESWhat’s the worst?Not following the best practices augments, sometimes dramatically, the risks of failurereduces overall qualityincreases the time to market / time to deliverhas typically a pervasive effect: can be ignored or remains unknown until it becomes really criticalincreases the maintenance and ownership costs16 June 2011Agile Mëtteg – Continuous Integration25
RULES AND BEST PRACTICESWhat’s the worst?Both are terrible: sources of failureBut one is harder to detect than the otherNecessity to put in place and to define the structures and infrastructures required to check the quality at every levelBecause “the earlier, the best” (and less expensive)16 June 2011Agile Mëtteg – Continuous Integration26
SOFTWARE QUALITY16 June 2011Agile Mëtteg – Continuous Integration27
WHAT IS SOFTWARE QUALITY?“Quality is value to some person” (Gerald Weinberg, “Quality Software Management”)i.e. quality is inherently subjective; people experience the quality of the same software very differentlythis applies mainly to the quality of a software product, as perceived from an external view; and it can also comprise the quality of its running environment(s)but the quality of the source code can also have an impact on the efforts needed for having a software product that fulfills the requirements, the intrinsicqualitySteve McConnell defines external and internal quality characteristics (‘”Code Complete”)16 June 2011Agile Mëtteg – Continuous Integration28
IMPLICIT FACTORS FOR SOFTWARE QUALITYThe software projects typically follow rather detailed requirement plansThough a set of characteristics often goes unmentionedThese are the implied requirements that are expected of all professionally developed software16 June 2011Agile Mëtteg – Continuous Integration29
IMPLICIT FACTORS FOR SOFTWARE QUALITYConformance to implied requirements:UnderstandabilityCompletenessConcisenessPortabilityMaintainabilityTestabilityUsabilityReliabilityEfficiencySecurity16 June 2011Agile Mëtteg – Continuous Integration30
GUARANTEEING CODE QUALITYHow can we guarantee the level of quality of software during the « coding » phases?The same ways as in the industryFactory inspections: “static code analysis” in ITIncremental improvements: “release soon, release often” in ITTests, tests, tests, tests, tests, tests, …16 June 2011Agile Mëtteg – Continuous Integration31
GUARANTEEING CODE QUALITYFocus on Unit Tests and Test Driven Development (TDD)Unit TestsThe first tests to writeWritten by the developers before the codeWrite the code afterward to make the tests succeedMust run in isolation, without any infrastructureMust be fast to executeHow many unit tests per method ?One test per degree of “cyclomatic complexity”16 June 2011Agile Mëtteg – Continuous Integration32
GUARANTEEING CODE QUALITYCyclomatic complexity of a method?the number of linearly independent paths in the methodIf .. and .. thenIf .. or .. thenIf .. thenIf .. then .. elseDo .. WhileWhile .. DoSwitch16 June 2011Agile Mëtteg – Continuous Integration33
GUARANTEEING CODE QUALITYNecessity to put in place the supporting Structures (practices):Unit testingIntegration testingPerformance testingRegression testingAcceptance testingInfrastructures (tools):Source Code managementIssue trackingBuild toolsContinuous Integration serverQuality reporting toolsAgilityBuild IndustrializationBuild IndustrializationPlatformAgility16 June 2011Agile Mëtteg – Continuous Integration34
GUARANTEEING CODE QUALITYHow to put in place the supporting Structures (practices):Define and prioritize the quality requirementsRefine and adapt the relevant quality criteria to the objectivesCommunicate rules and best practices: sharing, training and mentoringVerify the correct usage and level of adoptionReview the results and improve the processesInfrastructures (tools):Select the tools adapted to the defined quality requirementsSet them up based on the selected criteria (define measurements)Communicate on their usage: sharing, training and mentoringGenerate quality reports and metricsAnalyze the conformance of the results and adapt the toolsAgilityAgility16 June 2011Agile Mëtteg – Continuous Integration35
Ci Rules and pre-requisites16 June 2011Agile Mëtteg – Continuous Integration36
CI RULES AND PRE-REQUISITES (1/3)maintain a code repositoryautomate the buildthe build must be self-testingregular code sharingi.e. frequent commits16 June 2011Agile Mëtteg – Continuous Integration37
CI RULES AND PRE-REQUISITES (2/3)self-contained modificationsi.e. commits don’t break the build processthe build must be fastintegration tests (for the least) in a clone of the production environment16 June 2011Agile Mëtteg – Continuous Integration38
CI RULES AND PRE-REQUISITES (3/3)latest deliverables easily available to anyone who needs themeasy access to the results of the testsautomated deployments to a live test servercontinous deployment to production is the ideal achievement16 June 2011Agile Mëtteg – Continuous Integration39
BUILD INDUSTRIALIZATION PLATFORM16 June 2011Agile Mëtteg – Continuous Integration40
BUILD INDUSTRIALIZATION PLATFORM16 June 2011Agile Mëtteg – Continuous Integration41
SOURCE CODE MANAGEMENT16 June 2011Agile Mëtteg – Continuous Integration42
SOURCE CODE MANAGEMENTWhat are SCM tools ?Tools that allow sharing and versioning files… but really not their primary interest …… shared folders can do that too !Tools to track and document the changes in the code, in such a way the developers can work in a task or issue oriented mode16 June 2011Agile Mëtteg – Continuous Integration43
SCM RULES FOR CONTINUOUS INTEGRATIONTag your releases
Use branching strategies
Release branches
Feature branches for large changes“branch by abstraction” pattern works well with continuous integration (for non-distributed SCM’s like CVS, SVN, TFS…)16 June 2011Agile Mëtteg – Continuous Integration44
SCM RULES FOR CONTINUOUS INTEGRATIONCommit “atomically”
all the files related to a single task/issue in one operation or, if really not possible, max a few operationsdon’t mix changes from different tasks/issues in the same commit
add a meaningful, standardized comment that (for example) includes:
the task/issue identifier (first line)
status (first line)« completed » or « in progress »short description from the issue tracking system (first line)
eventually a dedicated URL from the issue tracking system (second line)
a meaningful description of what’s been done (subsequent lines)16 June 2011Agile Mëtteg – Continuous Integration45
SCM RULES FOR CONTINUOUS INTEGRATIONThe idea isto be able to easily link back a modification (with all its related changes) to an issue from the issue tracker
to be able to take out easily a modification
that should not be included in a specific release
that breaks the build process
that blocks the other developers
that conflicts with other changes
…
keep your code agile ! 16 June 2011Agile Mëtteg – Continuous Integration46
Continuous Integration
List of tasks from issue tracker[“assigned to me”]
Details of a task
Activate a task
Filter: show only files worked onfor the currently active task
Modified files grouped by tasks (“atomic” commits)
Continuous Integration
Continuous Integration
ISSUE TRACKER16 June 2011Agile Mëtteg – Continuous Integration55
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
AUTOMATED BUILD TOOLS16 June 2011Agile Mëtteg – Continuous Integration60
AUTOMATED BUILD TOOLS16 June 2011Agile Mëtteg – Continuous Integration61
AUTOMATED BUILD TOOLS : REPOSITORIES
AUTOMATED BUILD TOOLS : REPOSITORIES
CONTINUOUS INTEGRATION SERVER16 June 2011Agile Mëtteg – Continuous Integration64
Continuous Integration
Continuous Integration
QUALITY ANALYSIS AND REPORTING16 June 2011Agile Mëtteg – Continuous Integration67

More Related Content

PPT
Agile Software Development Process
PPTX
Introductie slides Software Product Management door het Nederlands Instituut ...
PPTX
Agile software development process
PPTX
Introductie slides Advanced Agile Product Ownership door het Nederlands Insti...
PPTX
SDLC Smashup
PDF
Agile Introduction for newbies by Arokia S Armel
PPTX
Testing Throughout the Software Life Cycle (Chapter 2)
PDF
G0313036040
Agile Software Development Process
Introductie slides Software Product Management door het Nederlands Instituut ...
Agile software development process
Introductie slides Advanced Agile Product Ownership door het Nederlands Insti...
SDLC Smashup
Agile Introduction for newbies by Arokia S Armel
Testing Throughout the Software Life Cycle (Chapter 2)
G0313036040

What's hot (20)

PPT
Sqa V And V Share
PPT
SQA V And V Intro & History
PDF
The Rationale for Continuous Delivery (The culture and practice of good softw...
PPTX
Agile methodology
PPTX
Agile Methodology PPT
PPT
Agile methodology
PDF
How_to_survive
PDF
The (Un) Expected Impact of Tools in Software Evolution
PPTX
Discovery on terra incognita
PDF
Icsme 2021-keynote-creating-usable-and-useful-software-tools
PPT
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
PDF
Implications of Open Source Software Use (or Let's Talk Open Source)
PPTX
Program And Portfolio Management
PPTX
Software Testing with a TDD Application
PDF
What is agile methodology
PDF
Agile methodology
PDF
State of agile development survey 2015
PPSX
SDLC-Waterfall-Model
PDF
Developing Effective Software Productively
PPTX
Agile versus waterfall
Sqa V And V Share
SQA V And V Intro & History
The Rationale for Continuous Delivery (The culture and practice of good softw...
Agile methodology
Agile Methodology PPT
Agile methodology
How_to_survive
The (Un) Expected Impact of Tools in Software Evolution
Discovery on terra incognita
Icsme 2021-keynote-creating-usable-and-useful-software-tools
Lean Implementation of Organizational Process Focus (OPF) and Risk Management...
Implications of Open Source Software Use (or Let's Talk Open Source)
Program And Portfolio Management
Software Testing with a TDD Application
What is agile methodology
Agile methodology
State of agile development survey 2015
SDLC-Waterfall-Model
Developing Effective Software Productively
Agile versus waterfall
Ad

Viewers also liked (15)

PDF
Continuous Integration and Deployment Best Practices on AWS
PPT
Continuous Integration
PPTX
03 - Continuous Integration
PPTX
01 - Introduction to Version Control
PPTX
Integration bwtween Dynamics CRM 2011 and SAP with BizTalk Server 2010
PPTX
Introduction to Continuous Integration with Jenkins
PDF
Introduction to Continuous Integration with Jenkins
PDF
Let’s start Continuous Integration with jenkins
PDF
Enterprise Data Integration for Microsoft Dynamics CRM
PDF
Continuous Integration 101
PPTX
Hadoop and Enterprise Data Warehouse
PPTX
Best Practices for the Hadoop Data Warehouse: EDW 101 for Hadoop Professionals
PPT
Continuous Integration (Jenkins/Hudson)
PDF
Introduction to ETL and Data Integration
PPTX
Data mining
Continuous Integration and Deployment Best Practices on AWS
Continuous Integration
03 - Continuous Integration
01 - Introduction to Version Control
Integration bwtween Dynamics CRM 2011 and SAP with BizTalk Server 2010
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with Jenkins
Let’s start Continuous Integration with jenkins
Enterprise Data Integration for Microsoft Dynamics CRM
Continuous Integration 101
Hadoop and Enterprise Data Warehouse
Best Practices for the Hadoop Data Warehouse: EDW 101 for Hadoop Professionals
Continuous Integration (Jenkins/Hudson)
Introduction to ETL and Data Integration
Data mining
Ad

Similar to Continuous Integration (20)

PDF
GMO'less Software Development Practices
PPTX
Continuos Delivery
PDF
Business Value of Agile Methods: Benefits of Testing Early & Often
PDF
Continuous integration practices to improve the software quality
PDF
Continuous Integration Practices
PPTX
Agile Mëtteg series session 9
PDF
Delivering Quality Software with Continuous Integration
PDF
Business Value of CI, CD, & DevOpsSec: Scaling to Billion User Systems Using ...
PPTX
Agile driven development main principles
PDF
How Do You Build Software? Software Engineering Practices of an Agile Developer
PPTX
Continuous Integration and Quality Development
PDF
Agile Engineering Best Practices by Richard Cheng
PDF
Continuous integration (eng)
PDF
Agile methods cost of quality
PDF
Agile Methods Cost of Quality: Benefits of Testing Early & Often
PDF
An Ultimate Guide to Continuous Testing in Agile Projects.pdf
PDF
Continuous Testing
PPT
Continuous Integration
PDF
Continuous integration
PDF
Agile Simplified
GMO'less Software Development Practices
Continuos Delivery
Business Value of Agile Methods: Benefits of Testing Early & Often
Continuous integration practices to improve the software quality
Continuous Integration Practices
Agile Mëtteg series session 9
Delivering Quality Software with Continuous Integration
Business Value of CI, CD, & DevOpsSec: Scaling to Billion User Systems Using ...
Agile driven development main principles
How Do You Build Software? Software Engineering Practices of an Agile Developer
Continuous Integration and Quality Development
Agile Engineering Best Practices by Richard Cheng
Continuous integration (eng)
Agile methods cost of quality
Agile Methods Cost of Quality: Benefits of Testing Early & Often
An Ultimate Guide to Continuous Testing in Agile Projects.pdf
Continuous Testing
Continuous Integration
Continuous integration
Agile Simplified

Recently uploaded (20)

PPTX
Spectroscopy.pptx food analysis technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
1. Introduction to Computer Programming.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Approach and Philosophy of On baking technology
Spectroscopy.pptx food analysis technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
The Rise and Fall of 3GPP – Time for a Sabbatical?
Assigned Numbers - 2025 - Bluetooth® Document
Mobile App Security Testing_ A Comprehensive Guide.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Empathic Computing: Creating Shared Understanding
1. Introduction to Computer Programming.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Digital-Transformation-Roadmap-for-Companies.pptx
Big Data Technologies - Introduction.pptx
Spectral efficient network and resource selection model in 5G networks
NewMind AI Weekly Chronicles - August'25-Week II
Diabetes mellitus diagnosis method based random forest with bat algorithm
Programs and apps: productivity, graphics, security and other tools
Dropbox Q2 2025 Financial Results & Investor Presentation
Approach and Philosophy of On baking technology

Continuous Integration

  • 1. Software Dev. Practices – Continuous IntegrationAgile Mëtteg – June 16th, 2011
  • 2. ABOUT US16 June 2011Agile Mëtteg – Continuous Integration2
  • 3. PROFILECreated in 2004Independent Software Development Company16 June 2011Agile Mëtteg – Continuous Integration3
  • 4. FIGURES16 June 2011Agile Mëtteg – Continuous Integration42,5M€ en 201032 in 2011
  • 5. MISSIONDesign, Develop and Customize “Software as Business & Operational Enabler” Fast & flexible solutions business value orientedHelp IT and all Business & Operational Organizations to adopt the culture of “Software as Business & Operational Enabler”Simple & pragmatic methods making effective the collaboration of the actors of a projectEasy and powerful tools for follow-up of relevant KPI16 June 2011Agile Mëtteg – Continuous Integration5
  • 6. OUR SERVICESMgtTeamServices4Applications enabling productivityBespoke applicationMobile applicationBased on packageConsulting services Coaching & SupportTrainingResource delegation1SoftwareDevelopmentOpsTeamServicesDev Team ServicesAgilityAgility231Agility16 June 2011Agile Mëtteg – Continuous Integration6234
  • 7. OUR MEANS16 June 2011Agile Mëtteg – Continuous Integration780% > 4 years56% > 8 years31% > 12 yearsAgilityAuthorized Training Center in Luxembourg
  • 8. OUR MAIN CUSTOMERS16 June 2011Agile Mëtteg – Continuous Integration8
  • 9. SPEAKERS16 June 2011Agile Mëtteg – Continuous Integration9
  • 10. About you16 June 2011Agile Mëtteg – Continuous Integration10
  • 11. PARTICIPANTSWho are you ?What is your role ?What do you know about agility ?16 June 201111Agile Mëtteg – Continuous Integration
  • 12. INTRODUCTION16 June 2011Agile Mëtteg – Continuous Integration12
  • 13. CONTINUOUS INTEGRATIONContinuous Integration in a few questionsWhy do I need it ?What is it ?What does it require ?How does it relate to the Agile principles ?16 June 2011Agile Mëtteg – Continuous Integration13
  • 14. SOFTWARE DEVELOPMENT: INDUSTRY? PROCESSES?What is Software Development?an industry mining, farming, construction, manufacturing, …etc.with clearly identified and well-defined processes, i.e. easily reproducible Really? No failed project? A lot of…16 June 2011Agile Mëtteg – Continuous Integration14
  • 15. SOFTWARE DEVELOPMENT: A LOT OF FAILED PROJECTS16 June 2011Agile Mëtteg – Continuous Integration15
  • 16. SOFTWARE DEVELOPMENT: A LOT OF FAILED PROJECTS16 June 2011Agile Mëtteg – Continuous Integration16
  • 17. « Houston, we’ve got a problem! »16 June 2011Agile Mëtteg – Continuous Integration17
  • 18. AGILE MANIFESTO vs SOFTWARE INDUSTRIALIZATION ?Agile ManifestoIndividuals and interactions overprocesses and toolsWorking softwareovercomprehensive documentationCustomer collaboration overcontract negotiationResponding to change overfollowing a plan16 June 2011Agile Mëtteg – Continuous Integration18
  • 19. SOFTWARE CRAFTSMANSHIP vs SOFTWARE INDUSTRIALIZATION?Manifesto for Software CraftsmanshipNot onlyworking software, but alsowell-crafted softwareNot onlyresponding to change, but alsosteadily adding valueNot onlyindividuals and interactions, but alsoa community of professionalsNot onlycustomer collaboration, but alsoproductive partnerships16 June 2011Agile Mëtteg – Continuous Integration19
  • 20. SOFTWARE DEVELOPMENT: AN ART?Agile Manifesto and Manifesto for Software Craftsmanship were created by veterans of the software industryHowever, when summed up, one can conclude software development is more an art than an industrial processSo, let’s compare with music…16 June 2011Agile Mëtteg – Continuous Integration20
  • 21. SOFTWARE DEVELOPMENT: AN ART?16 June 2011Agile Mëtteg – Continuous Integration21
  • 22. SOFTWARE DEVELOPMENT: AN ART?16 June 2011Agile Mëtteg – Continuous Integration22
  • 23. SOFTWARE DEVELOPMENT IS AN ARTSo, Software Development is an art!But building nearly anything is also an artDon’t you think?And, more importantly,Art is not without rules and best practices16 June 2011Agile Mëtteg – Continuous Integration23
  • 24. RULES AND BEST PRACTICESWhat’s the worst?Not following therules usually leads to a rather direct and abrupt failureproject fails integration testing project is refused by infrastructureproject fails user acceptance testing…16 June 2011Agile Mëtteg – Continuous Integration24
  • 25. RULES AND BEST PRACTICESWhat’s the worst?Not following the best practices augments, sometimes dramatically, the risks of failurereduces overall qualityincreases the time to market / time to deliverhas typically a pervasive effect: can be ignored or remains unknown until it becomes really criticalincreases the maintenance and ownership costs16 June 2011Agile Mëtteg – Continuous Integration25
  • 26. RULES AND BEST PRACTICESWhat’s the worst?Both are terrible: sources of failureBut one is harder to detect than the otherNecessity to put in place and to define the structures and infrastructures required to check the quality at every levelBecause “the earlier, the best” (and less expensive)16 June 2011Agile Mëtteg – Continuous Integration26
  • 27. SOFTWARE QUALITY16 June 2011Agile Mëtteg – Continuous Integration27
  • 28. WHAT IS SOFTWARE QUALITY?“Quality is value to some person” (Gerald Weinberg, “Quality Software Management”)i.e. quality is inherently subjective; people experience the quality of the same software very differentlythis applies mainly to the quality of a software product, as perceived from an external view; and it can also comprise the quality of its running environment(s)but the quality of the source code can also have an impact on the efforts needed for having a software product that fulfills the requirements, the intrinsicqualitySteve McConnell defines external and internal quality characteristics (‘”Code Complete”)16 June 2011Agile Mëtteg – Continuous Integration28
  • 29. IMPLICIT FACTORS FOR SOFTWARE QUALITYThe software projects typically follow rather detailed requirement plansThough a set of characteristics often goes unmentionedThese are the implied requirements that are expected of all professionally developed software16 June 2011Agile Mëtteg – Continuous Integration29
  • 30. IMPLICIT FACTORS FOR SOFTWARE QUALITYConformance to implied requirements:UnderstandabilityCompletenessConcisenessPortabilityMaintainabilityTestabilityUsabilityReliabilityEfficiencySecurity16 June 2011Agile Mëtteg – Continuous Integration30
  • 31. GUARANTEEING CODE QUALITYHow can we guarantee the level of quality of software during the « coding » phases?The same ways as in the industryFactory inspections: “static code analysis” in ITIncremental improvements: “release soon, release often” in ITTests, tests, tests, tests, tests, tests, …16 June 2011Agile Mëtteg – Continuous Integration31
  • 32. GUARANTEEING CODE QUALITYFocus on Unit Tests and Test Driven Development (TDD)Unit TestsThe first tests to writeWritten by the developers before the codeWrite the code afterward to make the tests succeedMust run in isolation, without any infrastructureMust be fast to executeHow many unit tests per method ?One test per degree of “cyclomatic complexity”16 June 2011Agile Mëtteg – Continuous Integration32
  • 33. GUARANTEEING CODE QUALITYCyclomatic complexity of a method?the number of linearly independent paths in the methodIf .. and .. thenIf .. or .. thenIf .. thenIf .. then .. elseDo .. WhileWhile .. DoSwitch16 June 2011Agile Mëtteg – Continuous Integration33
  • 34. GUARANTEEING CODE QUALITYNecessity to put in place the supporting Structures (practices):Unit testingIntegration testingPerformance testingRegression testingAcceptance testingInfrastructures (tools):Source Code managementIssue trackingBuild toolsContinuous Integration serverQuality reporting toolsAgilityBuild IndustrializationBuild IndustrializationPlatformAgility16 June 2011Agile Mëtteg – Continuous Integration34
  • 35. GUARANTEEING CODE QUALITYHow to put in place the supporting Structures (practices):Define and prioritize the quality requirementsRefine and adapt the relevant quality criteria to the objectivesCommunicate rules and best practices: sharing, training and mentoringVerify the correct usage and level of adoptionReview the results and improve the processesInfrastructures (tools):Select the tools adapted to the defined quality requirementsSet them up based on the selected criteria (define measurements)Communicate on their usage: sharing, training and mentoringGenerate quality reports and metricsAnalyze the conformance of the results and adapt the toolsAgilityAgility16 June 2011Agile Mëtteg – Continuous Integration35
  • 36. Ci Rules and pre-requisites16 June 2011Agile Mëtteg – Continuous Integration36
  • 37. CI RULES AND PRE-REQUISITES (1/3)maintain a code repositoryautomate the buildthe build must be self-testingregular code sharingi.e. frequent commits16 June 2011Agile Mëtteg – Continuous Integration37
  • 38. CI RULES AND PRE-REQUISITES (2/3)self-contained modificationsi.e. commits don’t break the build processthe build must be fastintegration tests (for the least) in a clone of the production environment16 June 2011Agile Mëtteg – Continuous Integration38
  • 39. CI RULES AND PRE-REQUISITES (3/3)latest deliverables easily available to anyone who needs themeasy access to the results of the testsautomated deployments to a live test servercontinous deployment to production is the ideal achievement16 June 2011Agile Mëtteg – Continuous Integration39
  • 40. BUILD INDUSTRIALIZATION PLATFORM16 June 2011Agile Mëtteg – Continuous Integration40
  • 41. BUILD INDUSTRIALIZATION PLATFORM16 June 2011Agile Mëtteg – Continuous Integration41
  • 42. SOURCE CODE MANAGEMENT16 June 2011Agile Mëtteg – Continuous Integration42
  • 43. SOURCE CODE MANAGEMENTWhat are SCM tools ?Tools that allow sharing and versioning files… but really not their primary interest …… shared folders can do that too !Tools to track and document the changes in the code, in such a way the developers can work in a task or issue oriented mode16 June 2011Agile Mëtteg – Continuous Integration43
  • 44. SCM RULES FOR CONTINUOUS INTEGRATIONTag your releases
  • 47. Feature branches for large changes“branch by abstraction” pattern works well with continuous integration (for non-distributed SCM’s like CVS, SVN, TFS…)16 June 2011Agile Mëtteg – Continuous Integration44
  • 48. SCM RULES FOR CONTINUOUS INTEGRATIONCommit “atomically”
  • 49. all the files related to a single task/issue in one operation or, if really not possible, max a few operationsdon’t mix changes from different tasks/issues in the same commit
  • 50. add a meaningful, standardized comment that (for example) includes:
  • 52. status (first line)« completed » or « in progress »short description from the issue tracking system (first line)
  • 53. eventually a dedicated URL from the issue tracking system (second line)
  • 54. a meaningful description of what’s been done (subsequent lines)16 June 2011Agile Mëtteg – Continuous Integration45
  • 55. SCM RULES FOR CONTINUOUS INTEGRATIONThe idea isto be able to easily link back a modification (with all its related changes) to an issue from the issue tracker
  • 56. to be able to take out easily a modification
  • 57. that should not be included in a specific release
  • 58. that breaks the build process
  • 59. that blocks the other developers
  • 60. that conflicts with other changes
  • 61.
  • 62. keep your code agile ! 16 June 2011Agile Mëtteg – Continuous Integration46
  • 64. List of tasks from issue tracker[“assigned to me”]
  • 67. Filter: show only files worked onfor the currently active task
  • 68. Modified files grouped by tasks (“atomic” commits)
  • 71. ISSUE TRACKER16 June 2011Agile Mëtteg – Continuous Integration55
  • 76. AUTOMATED BUILD TOOLS16 June 2011Agile Mëtteg – Continuous Integration60
  • 77. AUTOMATED BUILD TOOLS16 June 2011Agile Mëtteg – Continuous Integration61
  • 78. AUTOMATED BUILD TOOLS : REPOSITORIES
  • 79. AUTOMATED BUILD TOOLS : REPOSITORIES
  • 80. CONTINUOUS INTEGRATION SERVER16 June 2011Agile Mëtteg – Continuous Integration64
  • 83. QUALITY ANALYSIS AND REPORTING16 June 2011Agile Mëtteg – Continuous Integration67
  • 90. WRAP-UP16 June 2011Agile Mëtteg – Continuous Integration74
  • 91. CONCLUSIONSGuaranteeing code quality is an intensive taskIn timeIn moneyContinuous Integration pays back and offers a lotHas a high ROICost of ownership reduces over timeIt can be applied incrementallyAgility should be the driving backbone for its adoption16 June 2011Agile Mëtteg – Continuous Integration75
  • 92. RESOURCESGartner’s study ID “G00151721” http://condor.depaul.edu/~dmumaugh/readings/handouts/SE477/Gartner%20Reports/from_the_cio_trenches_why_so_151721.pdfStandish Group’s Chaos Reporthttp://www.standishgroup.com/services.php“Quality Software Management : Systems Thinking”Gerald Weinberg, 1991, ISBN 978-0932633729“Code Complete”, Microsoft Programming SeriesSteve McConnell, 1993, ISBN 978-155615484316 June 2011Agile Mëtteg – Continuous Integration76
  • 93. RESOURCESCVS http://www.nongnu.org/cvs/Subversion (SVN) http://subversion.apache.org/Maven http://maven.apache.org/Ant http://ant.apache.org/Nanthttp://nant.sourceforge.net/Ivy http://ant.apache.org/ivy/EasyAnthttp://www.easyant.org/Gradlehttp://www.gradle.org/Buildrhttp://buildr.apache.org/Gant http://gant.codehaus.org/Jenkins CI http://jenkins-ci.org/Hudson CI http://hudson-ci.org/Sonar http://www.sonarsource.org/Microsoft Team Foundation Server http://www.microsoft.com/visualstudio/en-us/products/2010-editions/team-foundation-server/16 June 2011Agile Mëtteg – Continuous Integration77
  • 94. RESOURCESAgile Partner: www.agilepartner.net&Blog: http://blog.agilepartner.netTrainingshttp://www.agilepartner.net/formations/coup-de-projecteur-sur/?lang=frAgile Interest Group LU: www.aiglu.orgAgile Tour Luxembourg8 November 201116 June 2011Agile Mëtteg – Continuous Integration78
  • 95. CONTACTSThank You16 June 2011Agile Mëtteg – Continuous Integration79
  • 96. DEBRIEFINGQuestions ?5 fingers vote1 = useless“I gained nothing. I completely lost my time!”2 = useful“It wasn’t worth all the time spent on it. I lost most of my time”3 = average“I gained enough to justify the time spent on”4 = above average “Good value, I gained more than the time spent”5 = excellent“Really useful session, time well spent”16 June 2011Agile Mëtteg – Continuous Integration80
  • 97. EXTRAS16 June 2011Agile Mëtteg – Continuous Integration81
  • 98. BRANCH BY ABSTRACTION“Branch by abstraction” all the changes are done in the same place, same location in the SCMno need to merge (hazardously) a lot of code from the feature branchhistory of the changes stays easy to follow 16 June 2011Agile Mëtteg – Continuous Integration82
  • 99. BRANCH BY ABSTRACTION“Branch by abstraction”Cookbook:Introduce an abstraction over the core bits of the big thing you are going to changeUpdate all the bits of code that were formerly using the thing directly to use it via the new abstractionMake a second implementation of the abstraction, with unit tests that specifically test its core functionalityUpdate all the code to use the new implementationDeprecate the first implementationDelete the first implementation (there is no need to go back)Remove the abstraction (only if it is inelegant, not often the case)16 June 2011Agile Mëtteg – Continuous Integration83

Editor's Notes

  • #14: That’s the answerswe are trying to give in thispresentation
  • #15: Really? If itis the case, whyfailingprojects?
  • #19: At firstsight, the Agile Manifestoseems to beagainst Software Industrialization and processes.Emphasize must begiven on the « over »: itdoesn’tmean « against ». It rathermeans « in favor of …»
  • #20: The Manifesto for Software Craftmanshipalsoseems to beagainst Software Industrialization and processesEmphasize must begiven on the « not only »: itdoesn’tmean « not ».
  • #22: Jazzmen seem to be totally freeHowever they tend to follow a lot of:Rules:Arrangements and compositionsRhythms, pitches, key signatures, transpositionsImprovisation considerations (context, balance, direction, …) Best practices: Themes: “Blues Form” and “Song Form”Scales: Blues, Bebop, Pentatonic, Symmetric, …Introduction, accompaniment, styles of composition
  • #23: Developers seem to be totally freeHowever they tend to follow a lot of:Rules:Standards (« industry » or « de facto »)Specifications (IETF, W3C, OASIS, ISO …)Company levelBest practices: Design patterns and principles (yagni, kiss, dry, …)Clean code, coding conventionsLow coupling, high cohesion …Yagni: You Ain’tGonna Need itKiss: Keep It Straight SimpleDry: Don’t Repeat Yourself
  • #31: Impliedrequirements (mostly):not oftenstatedexplicitly in the productrequirements
  • #32: Static code analysis: analysis performed on the code without it being executed
  • #33: Static code analysis: analysis performed on the code without it being executed
  • #34: Static code analysis: analysis performed on the code without it being executed
  • #36: Notice eachstep in the « Structures » isalsorelated to the correspondentstep in the « Infrastructures »
  • #42: Source Code Management: CVS, PVCS, SourceSafe, Perforce, SVN, Git, Mercurial, Team Foundation Server uses a database (Microsoft SQL Server)Issue Tracker: JIRA,BugZilla, Trac, Team Foundation Server « Work Item Tracking » (integrated in Visual Studio)AutomatedBuild: Ant, Maven, Apache Ivy, Gradle, Team Foundation Server « AutomatedBuild »ContinuousIntegration Server: Hudson, Jenkins, CruiseControl, AtlassianBamboo, JetBrainsTeamCity, Team Foundation Server « Build Agent »QualityAnalysis and Reporting: Maven reports, Hudson plugins, Sonar, Team Foundation Server « Reporting »
  • #43: Source Code Management: CVS, PVCS, SourceSafe, Perforce, SVN, Git, Mercurial, Team Foundation Server uses a database (Microsoft SQL Server)
  • #45: TFS: Team Foundation Server (Microsoft)
  • #46: Standardized: pick a format that all the developers on your project will use and, if possible, apply it for all the projects in your company.
  • #48: The SCM doesn’t enforces the comments, but IDE tools can help:- In Java under Eclipse, the free Mylyn plugin does that –and more- automatically (shown here and in the next slides)- Similar mechanism in IntelliJ IDEAFocus on:the “Task List” view: shows the tasks from the issue tracking systemthe central view: shows the details of one task (also providing interaction with the issue tracking system from the IDE)The “Synchronize” view: shows only the files modified for the selected issue (in order to prepare a commit)The “Package explorer” view [as cherry on the cake]: shows only the modifications linked to the active task (instead of all the files in the project)
  • #49: The SCM doesn’t enforces the comments, but IDE tools can help:- In Java under Eclipse, the free Mylyn plugin does that –and more- automatically (shown here and in the next slides)- Similar mechanism in IntelliJ IDEAFocus on:the “Task List” view: shows the tasks from the issue tracking systemthe central view: shows the details of one task (also providing interaction with the issue tracking system from the IDE)The “Synchronize” view: shows only the files modified for the selected issue (in order to prepare a commit)The “Package explorer” view [as cherry on the cake]: shows only the modifications linked to the active task (instead of all the files in the project)
  • #50: Double clicking a task in the “Task List” view opens a central view that shows the details of the task, also providing interaction with the issue tracking system directly from the IDE
  • #51: “Round” button to activate/deactivate a task. This button is also present next to each task in the “Task List” view (hard to see on this slide, but the active task is shown in bold)Only one task active at a given time
  • #52: The “Package explorer” view: shows only the modifications linked to the active task (instead of all the files in the project)Filter can be on/off (also with a keyboard shortcut to quickly open a file not yet opened so far in the active task)In Bold, files that have been changed more frequently.
  • #53: The “Synchronize” view: group the changed files by task (in order to prepare a commit in a task based mode)
  • #54: The SCM doesn’t enforces the comments, but IDE tools can help:- In Java under Eclipse, the free Mylyn plugin does that –and more- automatically (shown here and in the next slides)- Similar mechanism in IntelliJ IDEAFocus on:the “Task List” view: shows the tasks from the issue tracking systemthe central view: shows the details of one task (also providing interaction with the issue tracking system from the IDE)The “Synchronize” view: shows only the files modified for the selected issue (in order to prepare a commit)The “Package explorer” view [as cherry on the cake]: shows only the modifications linked to the active task (instead of all the files in the project)
  • #55: The SCM doesn’t enforces the comments, but IDE tools can help:- In Java under Eclipse, the free Mylyn plugin does that –and more- automatically (shown here and in the next slides)- Similar mechanism in IntelliJ IDEAFocus on:the “Task List” view: shows the tasks from the issue tracking systemthe central view: shows the details of one task (also providing interaction with the issue tracking system from the IDE)The “Synchronize” view: shows only the files modified for the selected issue (in order to prepare a commit)The “Package explorer” view [as cherry on the cake]: shows only the modifications linked to the active task (instead of all the files in the project)
  • #56: Issue Tracker: JIRA,BugZilla, Trac, Team Foundation Server « Work Item Tracking » (integrated in Visual Studio)
  • #61: AutomatedBuild: Ant, Maven, Apache Ivy, Gradle, Team Foundation Server AutomatedBuild
  • #62: AutomatedBuild: Ant, Maven, Apache Ivy, Gradle, Buildr (Ruby), A-A-P (Python), Cake (Python), SBT (Scala) Team Foundation Server AutomatedBuild, NANT (.Net ANT)
  • #65: ContinuousIntegration Server: Hudson, Jenkins, CruiseControl, AtlassianBamboo, JetBrainsTeamCity, Team Foundation Server « Build Agent »
  • #68: QualityAnalysis and Reporting: Maven reports, Hudson/Jenkins plugins, Sonar, Team Foundation Server « Reporting »
  • #74: Sonar IDE: Plugin to integrate into IDE (here with Eclipse)
  • #76: In time: employee’s involvement (dev teams, management and administrators for the infrastructures)In money: hardware and serversIntensive task = should not be underestimatedROI: Return On Investment
  • #83: Standardized: pick a format that all the developers on your project will use and, if possible, apply it for all the projects in your company.
  • #84: Standardized: pick a format that all the developers on your project will use and, if possible, apply it for all the projects in your company.