5. Problem Illustration
Release Engineer
Deployment
weeks, happen once per iteration
Proj. Manager
Stakeholders
Test Engineer
Developers
Bug
Management
6. Solution Illustration
Source Control
Deployment
Proj. Manager
CI Server
Stakeholders
Test Automation
Developers
Bug
Management
7. Implementing Continuous
Integration
Define Select Extend
Developers
build the best CI
engagement
strategy. tools feature
10. Above all
freedom to
organize
flexible
loosely- specific
coupled
less
dependent
11. Experience in Applying Continuous
Integration - Education
Top-down Bottom-up
approach approach
Resources are Freedom in
available. defining practice.
Plenty of time to
Easier roll out
work on.
Pronto Empowerment
12. Experience in applying Continuous
Integration - Project Setup
S E
T N Focused setup
A D
R
T
Shorter timeline
Days
Longer timeline
S E
T N
A D
R Adaptive setup
T
13. Impact of Continuous Integration
Transparent Changes
Real time Integration
Automation
Education and Empowerment
14. Future work
Build
Isolated integrity
Efficiency CI
Shared
Vision
Tools
15. Conclusion
• Implementing Continuous Integration depends heavily
on the selection of tools and the discipline of the
team.
• Continuous Integration helps to screen out
defect, checking for quality, save time and increases
efficiency
• More importantly the team still need to deliver great
code to produce a quality build and had a shared
vision in implementing it.
• The implementation impacts the whole project team
member.
To illustrate the strategy and experience in Implementing Continuous Integration in application development process in an organization and describe the impact it brings toward Rapid Application Development
Originally introduced by Martin Fowler .Emphasizes on rapid integration of all modules being developed to incrementally form a finished product.The integration happen continuously without a planned date. Multiple integrations might happen in the same day.Each integration is verified by an automated build to detect integration errors as quickly as possible.Goal: capitalize on developer productivity while reducing integration risk by making integration easy and part of the cycle.
People are working on specific tasks leaving small amount of developers really focus on working on developmentProject managers have to intervene to put the phase/process in orderThe process may took weeks from development phase until the deployment.This process happen only once per iteration.
Introduction of the CI server.All developers are sitting at development side and maximize development contribution.Project manager could monitor the progress of the deliverables.The whole process could take around 1 hour to complete the iteration
Define build strategy.Select the best tools to aid process of developing build.Extend Continuous Integration feature by having static analysis, testing, bug tracking, deployment, etc.Developers can now totally engage to development and coding tasks while the rest of engineering process is being handled automatically.
This illustration explains the interaction between each machine and what is being delivered throughout the process.Developer machine are the computers developers use to develop codesVersion control system is the central place to store latest code, the machine also have previous version of the codes for reference/retrievalBuild machine usually the one that orchestrate the process of continuous integration and process the code to become a deliverable package.Deployment machines are computer where the project might be made to run for demo purpose/ test/ evaluation.
*Gather resource – get the latest codes and important files from Version Control servers*Compile – from the written code, compilation turn the code into something the computer could read and run the coded programs**Unit test – an early testing activity where the developers tries his work with giving various input to the program and getting the expected outputs**Obfuscation – get the program to be more secure by having the program difficult to reverse-engineer.**Static Analysis – get the source codes to be analyzed for the efficiency of the code written.*Packaging – get the executable and related documents together and ready to be delivered.
Getting ready for continuous integration.Scripts should beI ) flexible and less dependent to each other.II) represent specific modules it is trying to execute.These scripts are like building bricks, loosely-coupled bricks gives us freedom to organize the flow of each process.
Top-down approach (management-driven)Most resources are made available.Easier to roll out practice.Engineers are expected to use immediately.Bottom-up approach (developer initiative)Freedom in defining the practice.May have plenty of time to work on the Continuous Integration setup.May have to convince top level management about the empowerment in applying Continuous Integration.
Difference in setting up the project for an ad-hoc development and a full-fledge project with long development timeline.ad-hocless pluginsFocus: core functionalities of CIExclude: good to have features (to be discussed on next slide)enterprise-wideflexibility in build strategy.Able to adopt to build strategies.Ready for having more functionalities through plugin. (to be discussed on next slide)Highly recommended.
ManagersAble to see incrementalproduct (software being built) changes.DevelopersAble to see integration of their modules in the product.TestersAble to enjoy the luxury of automating their task to test the application.SCMHave to be able to configure the project to run for various environment.Is the one to educate every party about what is happening in the build phases.
Have right set of tools.Keep on looking for tools that able to perform better, suggesting open source tools as it usually have open input and could integrate with each otherGet everyone to use the tools and share the same vision.If everyone recognize the benefit they can get from continuous integration, they would have the idea of how to work with Continuous Integration.Ensure the project is developed efficientlyHaving the project to be developed efficiently would train the developers.Encourage the use of local integration serverHaving to own personal integration server is beneficial if the development team spans globally with different timezone, so we could have multiple layer of integration in order to ensure our integration reliable to be integrated to other global level.Have a mechanism to check integration testIn order for developer to submit/commit their code, we have an pre-emptive check that the code could be able to integrate with the current code. The code a developer has might have been outdated.
Important: selection of tools and the discipline of the team.CIhelps to: screen out defect, checking for quality, save time and increases efficiencyMake an inception about this: the team still need to deliver great code to produce a quality build and had a shared vision in implementing it. This makes CI works in harmonyThe implementation impacts the whole project team member.