SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
In the following pages we will discuss the approach and systems that together make up the process called Continuous
Integration. This document is written for IT management who are looking to improve the quality of the software product or
application their teams build.
Code
01 02 03 04
05 06 07
Unit
Test
Code
Review
Check-
In
Build Deploy Test
Software development continues to grow increasingly more complex. Even when dealing with dynamic languages like PHP, the
systems being built today dwarf the systems of even five years ago. Many development teams however have not upgraded their
development process and systems to meet the new demands. Today’s teams must be well versed in the best practices of
software development like source code control, unit testing, integration testing and documentation. These practices, when
coupled together, form the basis of a Continuous Integration (CI) system.
Continuous Integration is a term coined by Martin Fowler in a paper by the same name.
When multiple developers work in an integrated environment for the same software, it is obvious that the code can be messed
up or overwritten by other people and hence the functionality can be broken.
The developers will generally take a copy of source code into their systems for further development. On a defined timeframe
developers will check in their files. This may result in code complication problems, source code conflict and unit test failure in the
repository.
Continuous Integration is a software development practice where members of a team integrate their work
frequently; usually each person integrates at least daily - leading to multiple integrations per day. Every integration
is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams
find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive
software more rapidly"- Martin Fowler
Introduction
Ideally each developer should check-out the latest code from repository, integrate it with their source code, build and run all unit
tests before they check-in any code into the repository to ensure the stability of the build. This is an unorganized process with
respect to the developers. They may miss to do the build every time. To avoid the manual errors, automated builds have been
introduced.
Delivering Quality Software with Continuous Integration
CI helps in such scenario to ensure that the checked-in source code doesn't make any problems like broken code, unit test failure
etc. Below are the potential problems that may occur if CI is not there in a project:
Code
Broken code injection – there may be
broken code in the repository which
may merge to the developer’s
machine while synchronize with
repository and this results in injection
of defects.
Unit Test
Unit test failure – Test cases fail if
somebody check-in improper code.
Synchronization
Code Merge – Developer may not
realize the code checked-in by them is
having compilation error.
Build
Broken build – It is a serious issue
when there is code checked-in to
repository with compilation errors.
Nobody will be able to run the appli-
cation unless and until the compila-
tion issue is resolved. But they will
only come to know when individual
do the build.
The diagram below shows the product life cycle after the successful implementation of Continuous Integration.
Code
Quality
Product
Stability
Cost per
feature
Development
Cost per Bug
Availability of
Latest Build
Frequency of
Realease
Productivity
ProductVersion
0
10
10
30
50
70
20 30 40 50 60 70 80 90 100
Product Size (KLOC)
Product Complexity
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Agile Development and CI
In agile development, developers develop and check-in very frequently and it demands availability of working software every
time. Agile equip to build the product incrementally and improve it as move on.
CI in Agile development is helpful to minimize the duration and effort required by each integration episode and will be able to
deliver "at any moment" a product version suitable for release.
CI is more suitable for agile development and is introduced to address few problems in agile development.
Key Elements of CI
A CI system usually consists of the following key elements:
Maintain a single repository
All developers check in code to a
single repository from where the build
has been taken periodically and look
for errors.
Automate the build
The build process is automated to
avoid manual errors in taking build.
This helps people to get a better,
faster and periodic build.
Dashboard display on build
reports to everybody
All the builds happening on the server
will be tracked and logged along with
build report. This can be made
available on a public dashboard
where all the relevant people can have
look at the reports.
Self-tested builds
A good way to catch bugs more
quickly and efficiently is to include
automated tests in the build process.
The automated tests will run along
with the build so that the builds
become self-tested.
Each developer commits the code
to main repo every day
The developers practice daily check-in
to the repository at the end of the day.
This helps other developers to
integrate the code on a daily basis
which more efficient than one time
integration.
Latest deployable build is available
to everyone all the time
A periodic build happens from the
latest available source code and it
creates deployable build which is
available to everyone.
Code quality is one of the major areas of concern in many of the software products. The quality issues results in huge mainte-
nance activities which consumes lot of time and cost. To resolve this, code review is being practiced in the development phase
of software. However, manual review has its own disadvantages like issues in documentation of code, lack of visibility of the code
issues to all stakeholders, challenges in maintaining history of code quality and last but not the least the time consuming process
which leads to delay in delivery.
To avoid the above stated problems, continuous code review process can be automated. There are tools like PMD, FindBugs
available in the market to automate code review.This can be plugged into the CI process so that source code will be automatical-
ly reviewed along with build process.
Automated Code review
The Add-on’s of CI
Test driven development is one the important factor of extreme programming. Developers write test first and then develop code
until all the written test cases are passed. This improves the code quality to a great extent and ensures that all the developed
functionalities in the software are fully functional. TDD also helps to identify the defects faster. Automated test cases can be
hooked into the CI process and it runs on every build.
Automated test case execution
The working software should be released on the desired environments properly with all the parameters accurately configured.
This is another error-prone area where deployment can be broken because of the wrong configuration of parameters or improp-
er deployment.
Release Automation
--------------------------------------------------------------------------------------------------------------------------------------------------------------
http://www.aspiresys.com/aspire-Producteering
Tools and frameworks that supports CI
The deployment process can be automated and plugged to the CI so that once after the successful build, it will be deployed into
the provided environment.
Hudson is a continuous integration (CI) tool written in Java, which runs in a servlet container, such as ApacheTomcat or the Glass-
Fish application server. It supports SCM tools including CVS, Subversion, Git, Perforce, Clearcase and RTC, and can execute
Apache Ant and Apache Maven based projects, as well as arbitrary shell scripts and Windows batch commands.
Hudson
CruiseControl is a Java-based framework for a continuous build process. It includes, but is not limited to, plugins for email notifi-
cation, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds. It
allows one to perform a continuous integration of any software development process.
CruiseControl
Jenkins provides continuous integration services for software development. It is a server-based system running in a servlet
container such as Apache Tomcat. The project was forked from Hudson.
Jenkins
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Aspire follows an approach called “Producteering
TM
” to build products better, faster and
innovate continuously. CI is one of the elements of Producteering that helps the team to
excel on the engineering side.
Aspire uses CI for the projects effectively. We also integrate automated code review, test cases and deployment along with CI. We
ensure that every deliverable to the customer is processed through CI. Aspire uses the following tools to perform Continuous
Integration:
CI - Aspire’s approach
Using as CI Tool and integration platform for all other tools for code review, unit test etc., Jenkins also provides
plugins to deploy the build to different servers.
Jenkins
Sonar is the automated code review tool which has built-in PMD and FindBugs tools integrated. Sonar generates an
extensive code review report and dashboard of information about code quality and test coverage.
Sonar
Creates unit tests using JUnits and automate it along with build process to ensure the functional coverage.
The diagram below represents the process of Aspire’s approach to CI using the tools mentioned above and ourTechnical Health
Index process.
JUnits
Code Review
Build
Unit Testing
THICI
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Producteering
TM
approach has a
set of principles and practices,
driven by the right people and
supported by the right platforms.
-
-
-
Conclusion
About Author
From a technical perspective, CI helps teams work more efficiently. These teams can be cross-functional and develop software
that works together. They can be geographically distributed, because the constant integration work will ensure that you don't
get deviating codes. People can work on a large team, because the different components of a complex system will more assured-
ly work together. It solves many of the early pitfalls that these non-traditional agile teams might have experienced without CI.
From a business perspective, CI offers better business results by allowing teams to have their cake and eat it too. That is, they can
bring products to market faster, by finding issues early rather than at a later stage when they are large and more difficult to fix.
They can also respond better to requirements that are introduced while the product is being developed. This creates a better
product for the customer, which is the real promise of agility.
Sajeev Sreekantan is part of Java delivery unit. He has over 10 years of experience in IT industry and has performed various roles
that cover complete software development life-cycle, and has also been consultant on Java/J2EE solutions to multinational
companies. He is highly passionate about technologies and tools.
--------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Aspire Systems is a global technology services firm serving as a trusted technology partner for our customers. We work with
some of the world's most innovative enterprises and independent software vendors, helping them leverage technology and
outsourcing in our specific areas of expertise. Our services include Product Engineering, Enterprise Transformation, Indepen-
dent Testing Services and IT Infrastructure Support services
Our core philosophy of "Attention. Always." communicates our belief in lavishing care and attention on our customers and
employees.
USA
Aspire Systems, Inc.
1200 Harger Road
Suite 602,Oak Brook, IL - 60523, USA
Tel: +1-630-368-0970, +1-630-368-0973
Fax: +1-408-904-4591
E-mail: info@aspiresys.com
INDIA
Aspire Systems (India) Pvt. Ltd.
1/D-1, SIPCOT IT PARK
Siruseri, Chennai - 603 103
Tamil Nadu, India
Tel: +91-44-6740 4000
Fax: +91-44-6740 4234
E-mail: info-india@aspiresys.com
UK
Aspire Systems
1, Lyric Square, Hammersmith
London - W6 0NB, UK
Tel: +44 203 170 6115
E-mail: info@aspiresys.com
------------------------------
------------------------------
About Aspire

Contenu connexe

Tendances

Enabling Continuous Quality in Mobile App Development
Enabling Continuous Quality in Mobile App DevelopmentEnabling Continuous Quality in Mobile App Development
Enabling Continuous Quality in Mobile App Development
Matthew Young
 
Ranjith kumar Nagisetty(AndiordApp and PostSiliconTest Engineer)_Resume
Ranjith kumar Nagisetty(AndiordApp and PostSiliconTest Engineer)_ResumeRanjith kumar Nagisetty(AndiordApp and PostSiliconTest Engineer)_Resume
Ranjith kumar Nagisetty(AndiordApp and PostSiliconTest Engineer)_Resume
ranjith nagisetty
 
Arun Prasad-R.DOCX
Arun Prasad-R.DOCXArun Prasad-R.DOCX
Arun Prasad-R.DOCX
Arun R
 

Tendances (20)

kishore
kishorekishore
kishore
 
Cloud Testing Research
Cloud Testing ResearchCloud Testing Research
Cloud Testing Research
 
Upstream testing.
Upstream testing.Upstream testing.
Upstream testing.
 
Continuous Integration vs Continuous Delivery vs Continuous Deployment
Continuous Integration vs Continuous Delivery vs Continuous Deployment Continuous Integration vs Continuous Delivery vs Continuous Deployment
Continuous Integration vs Continuous Delivery vs Continuous Deployment
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
 
Continuous Integration using Jenkins
Continuous Integration using Jenkins Continuous Integration using Jenkins
Continuous Integration using Jenkins
 
Continuous integration with Jenkins
Continuous integration with JenkinsContinuous integration with Jenkins
Continuous integration with Jenkins
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Enabling Continuous Quality in Mobile App Development
Enabling Continuous Quality in Mobile App DevelopmentEnabling Continuous Quality in Mobile App Development
Enabling Continuous Quality in Mobile App Development
 
Devops | CICD Pipeline
Devops | CICD PipelineDevops | CICD Pipeline
Devops | CICD Pipeline
 
SCALABLE CI CD DEVOPS
SCALABLE CI CD DEVOPSSCALABLE CI CD DEVOPS
SCALABLE CI CD DEVOPS
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HERE
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020
 
Ranjith kumar Nagisetty(AndiordApp and PostSiliconTest Engineer)_Resume
Ranjith kumar Nagisetty(AndiordApp and PostSiliconTest Engineer)_ResumeRanjith kumar Nagisetty(AndiordApp and PostSiliconTest Engineer)_Resume
Ranjith kumar Nagisetty(AndiordApp and PostSiliconTest Engineer)_Resume
 
Quality Assurance Guidelines
Quality Assurance GuidelinesQuality Assurance Guidelines
Quality Assurance Guidelines
 
Jenkins Test Automation with codeBeamer ALM
Jenkins Test Automation with codeBeamer ALMJenkins Test Automation with codeBeamer ALM
Jenkins Test Automation with codeBeamer ALM
 
DevSecOps
DevSecOpsDevSecOps
DevSecOps
 
TestingWhiz Webinar: Codeless Test Automation for Web & Cloud Apps
TestingWhiz Webinar: Codeless Test Automation for Web & Cloud AppsTestingWhiz Webinar: Codeless Test Automation for Web & Cloud Apps
TestingWhiz Webinar: Codeless Test Automation for Web & Cloud Apps
 
Mobile Monitoring Best Practices
Mobile Monitoring Best PracticesMobile Monitoring Best Practices
Mobile Monitoring Best Practices
 
Arun Prasad-R.DOCX
Arun Prasad-R.DOCXArun Prasad-R.DOCX
Arun Prasad-R.DOCX
 

En vedette

Techcello at a glance
Techcello at a glanceTechcello at a glance
Techcello at a glance
Techcello
 

En vedette (7)

9 Quotable Quotes About Multi Tenancy
9 Quotable Quotes About Multi Tenancy9 Quotable Quotes About Multi Tenancy
9 Quotable Quotes About Multi Tenancy
 
Cello Saas Brochure
Cello Saas BrochureCello Saas Brochure
Cello Saas Brochure
 
Techcello at a glance
Techcello at a glanceTechcello at a glance
Techcello at a glance
 
Mendix Factsheet
Mendix  FactsheetMendix  Factsheet
Mendix Factsheet
 
Webinar How to Achieve True Scalability in SaaS Applications
Webinar How to Achieve True Scalability in SaaS ApplicationsWebinar How to Achieve True Scalability in SaaS Applications
Webinar How to Achieve True Scalability in SaaS Applications
 
Recipe for Successful SaaS Company - Part 1
Recipe for Successful SaaS Company - Part 1Recipe for Successful SaaS Company - Part 1
Recipe for Successful SaaS Company - Part 1
 
Webinar Series Part 2 -Recipe for a Successful SaaS Company - Migrating Sing...
Webinar Series Part 2 -Recipe for a Successful SaaS Company -  Migrating Sing...Webinar Series Part 2 -Recipe for a Successful SaaS Company -  Migrating Sing...
Webinar Series Part 2 -Recipe for a Successful SaaS Company - Migrating Sing...
 

Similaire à Delivering Quality Software with Continuous Integration

Software engineering
Software engineeringSoftware engineering
Software engineering
bartlowe
 
Continuous Integration and development environment approach
Continuous Integration and development environment approachContinuous Integration and development environment approach
Continuous Integration and development environment approach
Aleksandr Tsertkov
 
White-Paper-Continuous-Delivery
White-Paper-Continuous-DeliveryWhite-Paper-Continuous-Delivery
White-Paper-Continuous-Delivery
alkhan50
 
Using Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health NewUsing Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health New
bartlowe
 
PratheshBV_Resume
PratheshBV_ResumePratheshBV_Resume
PratheshBV_Resume
pradeesh bv
 

Similaire à Delivering Quality Software with Continuous Integration (20)

Software engineering
Software engineeringSoftware engineering
Software engineering
 
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loop
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Continuous Integration and development environment approach
Continuous Integration and development environment approachContinuous Integration and development environment approach
Continuous Integration and development environment approach
 
1506.08725v1
1506.08725v11506.08725v1
1506.08725v1
 
DevOps CI Automation Continuous Integration
DevOps CI Automation Continuous IntegrationDevOps CI Automation Continuous Integration
DevOps CI Automation Continuous Integration
 
Cloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct servicesCloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct services
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
White-Paper-Continuous-Delivery
White-Paper-Continuous-DeliveryWhite-Paper-Continuous-Delivery
White-Paper-Continuous-Delivery
 
Flight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewFlight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An Overview
 
How To Implement Continuous Integration And Delivery In Software Development.pdf
How To Implement Continuous Integration And Delivery In Software Development.pdfHow To Implement Continuous Integration And Delivery In Software Development.pdf
How To Implement Continuous Integration And Delivery In Software Development.pdf
 
Software Lifecycle Management
Software Lifecycle ManagementSoftware Lifecycle Management
Software Lifecycle Management
 
Using Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health NewUsing Continuous Integration To Ensure Project Health New
Using Continuous Integration To Ensure Project Health New
 
DevOps & DevEx
DevOps & DevExDevOps & DevEx
DevOps & DevEx
 
Automated Build using teamcity
Automated Build using teamcityAutomated Build using teamcity
Automated Build using teamcity
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Continuous Integrations & Deployments
Continuous Integrations & DeploymentsContinuous Integrations & Deployments
Continuous Integrations & Deployments
 
PratheshBV_Resume
PratheshBV_ResumePratheshBV_Resume
PratheshBV_Resume
 

Plus de Aspire Systems

Plus de Aspire Systems (20)

Enhancing QA Strategy to Achieve Agile Quality Engineering
Enhancing QA Strategy to Achieve Agile Quality Engineering Enhancing QA Strategy to Achieve Agile Quality Engineering
Enhancing QA Strategy to Achieve Agile Quality Engineering
 
End to End IT infrastructure management and support for a canada based leadin...
End to End IT infrastructure management and support for a canada based leadin...End to End IT infrastructure management and support for a canada based leadin...
End to End IT infrastructure management and support for a canada based leadin...
 
Increased IT infrastructure effectiveness by 80% with Microsoft system center...
Increased IT infrastructure effectiveness by 80% with Microsoft system center...Increased IT infrastructure effectiveness by 80% with Microsoft system center...
Increased IT infrastructure effectiveness by 80% with Microsoft system center...
 
Business Application Support and Automation for a Government Organization
Business Application Support and Automation for a Government OrganizationBusiness Application Support and Automation for a Government Organization
Business Application Support and Automation for a Government Organization
 
7 flavours of devops implementation
7 flavours of devops implementation7 flavours of devops implementation
7 flavours of devops implementation
 
Integrating cognitive services in to your devops strategy
Integrating cognitive services in to your devops strategyIntegrating cognitive services in to your devops strategy
Integrating cognitive services in to your devops strategy
 
Docker implementation on aws cloud for ict solution supplier client
Docker implementation on aws cloud for ict solution supplier clientDocker implementation on aws cloud for ict solution supplier client
Docker implementation on aws cloud for ict solution supplier client
 
Devops implementation for a leading education company
Devops implementation for a leading education companyDevops implementation for a leading education company
Devops implementation for a leading education company
 
Devops led infrastructure transformation for a leading medical imaging soluti...
Devops led infrastructure transformation for a leading medical imaging soluti...Devops led infrastructure transformation for a leading medical imaging soluti...
Devops led infrastructure transformation for a leading medical imaging soluti...
 
Dynamic environment provisioning portal for a US based insurance solutions pr...
Dynamic environment provisioning portal for a US based insurance solutions pr...Dynamic environment provisioning portal for a US based insurance solutions pr...
Dynamic environment provisioning portal for a US based insurance solutions pr...
 
Support offering for a California based products and services provider
Support offering for a California based products and services providerSupport offering for a California based products and services provider
Support offering for a California based products and services provider
 
DevOps implementation for a leading global consulting Company
DevOps implementation for a leading global consulting CompanyDevOps implementation for a leading global consulting Company
DevOps implementation for a leading global consulting Company
 
How CAF aided in saving cost and signing a billion dollar contract for a BFS ...
How CAF aided in saving cost and signing a billion dollar contract for a BFS ...How CAF aided in saving cost and signing a billion dollar contract for a BFS ...
How CAF aided in saving cost and signing a billion dollar contract for a BFS ...
 
The Rise of NeoBanks with the Power of Technology
The Rise of NeoBanks with the Power of Technology The Rise of NeoBanks with the Power of Technology
The Rise of NeoBanks with the Power of Technology
 
Incremental test automation for Retailers to save money
Incremental test automation for Retailers to save moneyIncremental test automation for Retailers to save money
Incremental test automation for Retailers to save money
 
Embedding Quality Engineering in DevOps pipeline
Embedding Quality Engineering in DevOps pipelineEmbedding Quality Engineering in DevOps pipeline
Embedding Quality Engineering in DevOps pipeline
 
Role of AI in Banking’s  “Red Queen Race”
Role of AI in Banking’s  “Red Queen Race” Role of AI in Banking’s  “Red Queen Race”
Role of AI in Banking’s  “Red Queen Race”
 
Test Automation in the Cloud - Key to Accelerated Development
Test Automation in the Cloud - Key to Accelerated DevelopmentTest Automation in the Cloud - Key to Accelerated Development
Test Automation in the Cloud - Key to Accelerated Development
 
Aligning Software Testing With Modern Age Development Practices
Aligning Software Testing With Modern Age Development PracticesAligning Software Testing With Modern Age Development Practices
Aligning Software Testing With Modern Age Development Practices
 
Digital Banking Case Study for Asian Millennials – Financial Advice for Mille...
Digital Banking Case Study for Asian Millennials – Financial Advice for Mille...Digital Banking Case Study for Asian Millennials – Financial Advice for Mille...
Digital Banking Case Study for Asian Millennials – Financial Advice for Mille...
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Delivering Quality Software with Continuous Integration

  • 1. In the following pages we will discuss the approach and systems that together make up the process called Continuous Integration. This document is written for IT management who are looking to improve the quality of the software product or application their teams build. Code 01 02 03 04 05 06 07 Unit Test Code Review Check- In Build Deploy Test Software development continues to grow increasingly more complex. Even when dealing with dynamic languages like PHP, the systems being built today dwarf the systems of even five years ago. Many development teams however have not upgraded their development process and systems to meet the new demands. Today’s teams must be well versed in the best practices of software development like source code control, unit testing, integration testing and documentation. These practices, when coupled together, form the basis of a Continuous Integration (CI) system. Continuous Integration is a term coined by Martin Fowler in a paper by the same name. When multiple developers work in an integrated environment for the same software, it is obvious that the code can be messed up or overwritten by other people and hence the functionality can be broken. The developers will generally take a copy of source code into their systems for further development. On a defined timeframe developers will check in their files. This may result in code complication problems, source code conflict and unit test failure in the repository. Continuous Integration is a software development practice where members of a team integrate their work frequently; usually each person integrates at least daily - leading to multiple integrations per day. Every integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly"- Martin Fowler Introduction Ideally each developer should check-out the latest code from repository, integrate it with their source code, build and run all unit tests before they check-in any code into the repository to ensure the stability of the build. This is an unorganized process with respect to the developers. They may miss to do the build every time. To avoid the manual errors, automated builds have been introduced. Delivering Quality Software with Continuous Integration
  • 2. CI helps in such scenario to ensure that the checked-in source code doesn't make any problems like broken code, unit test failure etc. Below are the potential problems that may occur if CI is not there in a project: Code Broken code injection – there may be broken code in the repository which may merge to the developer’s machine while synchronize with repository and this results in injection of defects. Unit Test Unit test failure – Test cases fail if somebody check-in improper code. Synchronization Code Merge – Developer may not realize the code checked-in by them is having compilation error. Build Broken build – It is a serious issue when there is code checked-in to repository with compilation errors. Nobody will be able to run the appli- cation unless and until the compila- tion issue is resolved. But they will only come to know when individual do the build. The diagram below shows the product life cycle after the successful implementation of Continuous Integration. Code Quality Product Stability Cost per feature Development Cost per Bug Availability of Latest Build Frequency of Realease Productivity ProductVersion 0 10 10 30 50 70 20 30 40 50 60 70 80 90 100 Product Size (KLOC) Product Complexity -------------------------------------------------------------------------------------------------------------------------------------------------------------- Agile Development and CI In agile development, developers develop and check-in very frequently and it demands availability of working software every time. Agile equip to build the product incrementally and improve it as move on. CI in Agile development is helpful to minimize the duration and effort required by each integration episode and will be able to deliver "at any moment" a product version suitable for release. CI is more suitable for agile development and is introduced to address few problems in agile development.
  • 3. Key Elements of CI A CI system usually consists of the following key elements: Maintain a single repository All developers check in code to a single repository from where the build has been taken periodically and look for errors. Automate the build The build process is automated to avoid manual errors in taking build. This helps people to get a better, faster and periodic build. Dashboard display on build reports to everybody All the builds happening on the server will be tracked and logged along with build report. This can be made available on a public dashboard where all the relevant people can have look at the reports. Self-tested builds A good way to catch bugs more quickly and efficiently is to include automated tests in the build process. The automated tests will run along with the build so that the builds become self-tested. Each developer commits the code to main repo every day The developers practice daily check-in to the repository at the end of the day. This helps other developers to integrate the code on a daily basis which more efficient than one time integration. Latest deployable build is available to everyone all the time A periodic build happens from the latest available source code and it creates deployable build which is available to everyone. Code quality is one of the major areas of concern in many of the software products. The quality issues results in huge mainte- nance activities which consumes lot of time and cost. To resolve this, code review is being practiced in the development phase of software. However, manual review has its own disadvantages like issues in documentation of code, lack of visibility of the code issues to all stakeholders, challenges in maintaining history of code quality and last but not the least the time consuming process which leads to delay in delivery. To avoid the above stated problems, continuous code review process can be automated. There are tools like PMD, FindBugs available in the market to automate code review.This can be plugged into the CI process so that source code will be automatical- ly reviewed along with build process. Automated Code review The Add-on’s of CI Test driven development is one the important factor of extreme programming. Developers write test first and then develop code until all the written test cases are passed. This improves the code quality to a great extent and ensures that all the developed functionalities in the software are fully functional. TDD also helps to identify the defects faster. Automated test cases can be hooked into the CI process and it runs on every build. Automated test case execution The working software should be released on the desired environments properly with all the parameters accurately configured. This is another error-prone area where deployment can be broken because of the wrong configuration of parameters or improp- er deployment. Release Automation --------------------------------------------------------------------------------------------------------------------------------------------------------------
  • 4. http://www.aspiresys.com/aspire-Producteering Tools and frameworks that supports CI The deployment process can be automated and plugged to the CI so that once after the successful build, it will be deployed into the provided environment. Hudson is a continuous integration (CI) tool written in Java, which runs in a servlet container, such as ApacheTomcat or the Glass- Fish application server. It supports SCM tools including CVS, Subversion, Git, Perforce, Clearcase and RTC, and can execute Apache Ant and Apache Maven based projects, as well as arbitrary shell scripts and Windows batch commands. Hudson CruiseControl is a Java-based framework for a continuous build process. It includes, but is not limited to, plugins for email notifi- cation, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds. It allows one to perform a continuous integration of any software development process. CruiseControl Jenkins provides continuous integration services for software development. It is a server-based system running in a servlet container such as Apache Tomcat. The project was forked from Hudson. Jenkins -------------------------------------------------------------------------------------------------------------------------------------------------------------- Aspire follows an approach called “Producteering TM ” to build products better, faster and innovate continuously. CI is one of the elements of Producteering that helps the team to excel on the engineering side. Aspire uses CI for the projects effectively. We also integrate automated code review, test cases and deployment along with CI. We ensure that every deliverable to the customer is processed through CI. Aspire uses the following tools to perform Continuous Integration: CI - Aspire’s approach Using as CI Tool and integration platform for all other tools for code review, unit test etc., Jenkins also provides plugins to deploy the build to different servers. Jenkins Sonar is the automated code review tool which has built-in PMD and FindBugs tools integrated. Sonar generates an extensive code review report and dashboard of information about code quality and test coverage. Sonar Creates unit tests using JUnits and automate it along with build process to ensure the functional coverage. The diagram below represents the process of Aspire’s approach to CI using the tools mentioned above and ourTechnical Health Index process. JUnits Code Review Build Unit Testing THICI -------------------------------------------------------------------------------------------------------------------------------------------------------------- Producteering TM approach has a set of principles and practices, driven by the right people and supported by the right platforms. - - -
  • 5. Conclusion About Author From a technical perspective, CI helps teams work more efficiently. These teams can be cross-functional and develop software that works together. They can be geographically distributed, because the constant integration work will ensure that you don't get deviating codes. People can work on a large team, because the different components of a complex system will more assured- ly work together. It solves many of the early pitfalls that these non-traditional agile teams might have experienced without CI. From a business perspective, CI offers better business results by allowing teams to have their cake and eat it too. That is, they can bring products to market faster, by finding issues early rather than at a later stage when they are large and more difficult to fix. They can also respond better to requirements that are introduced while the product is being developed. This creates a better product for the customer, which is the real promise of agility. Sajeev Sreekantan is part of Java delivery unit. He has over 10 years of experience in IT industry and has performed various roles that cover complete software development life-cycle, and has also been consultant on Java/J2EE solutions to multinational companies. He is highly passionate about technologies and tools. -------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------- Aspire Systems is a global technology services firm serving as a trusted technology partner for our customers. We work with some of the world's most innovative enterprises and independent software vendors, helping them leverage technology and outsourcing in our specific areas of expertise. Our services include Product Engineering, Enterprise Transformation, Indepen- dent Testing Services and IT Infrastructure Support services Our core philosophy of "Attention. Always." communicates our belief in lavishing care and attention on our customers and employees. USA Aspire Systems, Inc. 1200 Harger Road Suite 602,Oak Brook, IL - 60523, USA Tel: +1-630-368-0970, +1-630-368-0973 Fax: +1-408-904-4591 E-mail: info@aspiresys.com INDIA Aspire Systems (India) Pvt. Ltd. 1/D-1, SIPCOT IT PARK Siruseri, Chennai - 603 103 Tamil Nadu, India Tel: +91-44-6740 4000 Fax: +91-44-6740 4234 E-mail: info-india@aspiresys.com UK Aspire Systems 1, Lyric Square, Hammersmith London - W6 0NB, UK Tel: +44 203 170 6115 E-mail: info@aspiresys.com ------------------------------ ------------------------------ About Aspire