Continuous software integration and deployment

Software engineering branches focused on increasing the quality and frequency of the iteration in the developed solutions and on having greater control over all the stages that comprise the software's life cycle.


Timeline

2017-2023

Sector

Software engineering

Scope

Software development: integration and deployment
PDF

BACKGROUND

The tasks of developing and operating software are candidates for analysis and automation, thus detecting and correcting errors quickly and reducing the complexity and costs associated with added modifications. The basis is a strategy focused on software version control, adding the development and execution environments required for implementing the processes that can be automated without human intervention. SOLUTE carries out these tasks, validating the solutions implemented in-house and verifying the requirements specified by the customer.

Continuous integration and deployment are branches of software engineering focused on increasing the quality and frequency of the iteration in the developed solutions and on having greater control over all the stages that comprise the software's life cycle. Keeping control of the methods applied in the agile methodologies is required in order to make sure that the implementations are in accordance with their specifications requirements and that these are placed in production under automated supervision. The aim of these CI/CD (Continuous Integration/Continuous Delivery) practices is to reduce the iteration times of versions, detect possible problems in the developed solutions before being delivered to the customer and make their unit tests more efficient.


RESULTS

The DevOps automation tasks allow the development team to focus their efforts on the implementation of critical software modules for the applications, detecting possible errors ahead of time and without needing to intervene, while allowing these errors to be corrected before the software delivery dates set by the organisation together with the customer. This results in more efficient workflows, prioritising the delivery of value and reducing uncertainty in the development cycle.

EXPERIENCE

SOLUTE participates in the software development processes for several customers focused on data analytics, in its internal projects as well as in other contracts, thus getting involved directly with the development and supervision teams. Also, SOLUTE incorporates these tested procedures into their own developments, and thus offering these tasks to other customers.

The implementation of CI/CD systems begins with an analysis of the needs of the software project, determining what modules are critical to its operation and can be subjected to scrutiny by automated testing systems. 

METHODOLOGY

Different automation platforms are available to implement the CI/CD processes in a standardised manner and with the application of the latest communication standards. Tools are available that integrate software and automation repositories (GitLab, Jira, Bitbucket) and dedicated to programming tasks (Jenkins, CircleCI, TeamCity).

The implementation of CI/CD systems begins with an analysis of the needs of the software project, determining what modules are critical to its operation and can be subjected to scrutiny by automated testing systems. The design of these latter ones is a task that must be done together with the software project stakeholders, prioritising the listed tests in a closer manner with the defined quality attributes and with the compatibility and/or performance restrictions.

The deployment requirements of the organisation itself must be taken into consideration, evaluating the problems that may appear in the integrations to production of the developments and the technical restrictions of the systems in operation. Pipelines must be created that allow conducting unit tests, collection and packaging processes and finally, ensure a controlled deployment of the applications. The versioning of these applications, along with their generated artifacts, must be made available to the work team as part of the delivery results along with the results of the tests that have been executed.

The output of these automation processes will be adapted to the needs of the project, the available infrastructures, and the organisation, for example, generating artifacts for different platforms in use. These artifacts will be arranged in the software distribution platforms if all the workflow, from the addition of software changes to its packaging has been successful. This way, the development team is relieved from having to carry out manual procedures that lead to errors and use up time that could be spent on other more important tasks.

According to the agile development principles of Agile Manifesto, the aforementioned tasks must result in delivering value to the customer, delivering changes more efficiently, supporting the changes, collaborating and motivating the work teams, and giving them freedom to act independently.

Solar

Structural systems design for PV plants

Structural systems design phase analysis for calculating the generation of solar energy using photovoltaic panels in demanding environments such as with winds or earthquakes.

Wind

Energy and weather forecast for renewable operators

Weather and energy forecast service through the training of artificial intelligence algorithms.