Why apply continuous integration, goal of current development teams is plan, code, test and deliver a usable piece of software every two to three weeks. To get it, we automate a good part of the software process by Continuous Integration (IC), so that the team can repeat the code delivery iteratively, but unloading the heavy work on a Continuous Integration server (“CI server”). This is how we manage to deliver large software development projects.
Continuous Integration server automates various steps in the software lifecycle. You cannot help us with business or design requirements, but you can take care of packaging, deployment, inspection and automated software testing. And it does it tirelessly, consistently, robustly and cheaply.
By automating part of the software production process, the Continuous integration It definitely contributes to accelerating the time to market (“time-to-market”) in organizations based on Information Technology (IT).
What are the organizations based on Information Technology? They are those businesses in which Information Technology is critical for the operation. Banks, parcel companies or Internet-based sales channels, for example, are IT-based. Improving your IT plumbing means improving your internal communications, your marketing strategy, and your production costs. That is, they are companies that achieve competitive advantages with the use of technology., without it being exclusive whether or not they sell technology.
Thanks to the promotion of initiatives such as Agile or eXtreme Programming, among others, the Continuous integration Available are numerous: Bamboo, CruiseControl, Jenkins, Team Foundation Server or Solano for example.
However, applying Continuous Integration (CI) is a painful and demanding process that requires a CHANGE IN THE CULTURE of software construction. Constantly we will finally manage to reduce packaging times, increase the number of parallel versions and the robustness of deliveries.
Well, it's going to hurt. But , How can we help you?
- In the first instance it is necessary to verify the Culture from the development team. Usually it is necessary to generate a process of adaptation, enrichment, in which resistance to change is minimized thanks to a gradual improvement approach, based on Lean principles.
- Applying early definition.
- Ensuring communication channels.
- We will also work on defining the Processes which will allow maximize the yield obtained:
- Establishing the lines of automation.
- Determining the "causes" to control.
- Defining execution policies.
- Implementing the information radiators (measurement indicators).
- Finally, use the suite of Tools The most appropriate among the different technological alternatives will be our final contribution.
La Continuous integration it is a means, not an end.
The goal remains maximize the delivered value.
An interesting space for reflection is provided by the frequency. Although we speak of Continuous Integration, it is not a practice that forces a daily integration process. Frequency is an open question and must be defined according to the objectives to be achieved. Thus, in Continuous Integration, the rhythm is set by the «Cause -> Effect» relationships to be controlled.
We can't finish without recopilar the reasons, in the form of benefits, which motivate the application of this demanding practice of Software Engineering:
- Technological risk reduction thanks to a predictable, feedback and transparent construction process. Thus, for example, we can predict the integration time since it is something that is done continuously.
- Minimize anomalies in the final product thanks to the early feedback. By performing frequent automatic tests we enable early detection and correction of anomalies.
- Quality from the beginning and adaptation to change. As it is possible to have a demo environment with any version of the application, it is feasible to show the latest changes frequently. Thus, we seek user acceptance of the new features added to the project and return information to the work team quickly.
- Responsibility and visibility. The software product life cycle becomes explicit, common, independent, and public. Thus, the entire team has accurate information on the actual status of the project, which eases monitoring tasks, fosters a sense of collective ownership of the code and guarantees the transparency of the process.
Without a doubt, an intense journey to a wonderful world in which to delight ourselves observing herds of beautiful unicorns ...
… Is it possible?