Automation in Software Development

Throughout history, automation has been a great incentive for human beings. Since the beginning of time, man has created a large number of gadgets to facilitate all kinds of work; in addition, he has devised many methods to increase production by reducing costs and effort.

The division of labour of a manufacturing process into independent phases, further developed during the second half of the 18th century, was the first step towards automation.

Mechanisation was the next stage, since, taking advantage of the division of labour, it made it possible to manufacture machines that reproduced the tasks of a worker. Mechanization based on motorization and energy technology gave way to the industrial production system.

Industrial robots are extremely skilled at moving and handling light and heavy parts. There are several separate machines that are integrated in a chain and which at first glance look like one.

In 1920 the automobile industry converted these concepts into an integrated production system with the aim of reducing costs on the assembly line. This is the concept most people associate with automation.

Many industries are highly automated, almost all use automation technology to perform some stage of their activities. Now, it is common knowledge that the computer industry is no different from the rest. The rise of new technologies has made it a very important and constantly changing industry.

Software is a crucial element that has allowed a great saving in costs and a great increase in productivity when carrying out simple and repetitive tasks such as sending an e-mail or even more complex tasks such as invoicing a company.

Automation in Software Development

Just as all factories have implemented technology to save costs, be more productive and obtain quality products, software development is immersed in such a demanding environment that it has to adapt, it is obliged to meet the demands of the market, to deliver quality applications and as soon as possible if it does not want to become obsolete.

Therefore, implementing automation tools in the software development process is very important. Speeding up the delivery of a software product is vital and the reduction of development time is an increasingly requested requirement. In addition, the added value of delivering a quality product with less effort is essential.

Therefore, the aim of this post is to emphasize the value of automation in application development.

Less and less due to all the tools we have, but until recently the development process was archaic, slow and inefficient. In fact, not too many years ago, and even today, many companies do not even use version control.

Therefore, the flow that followed software development consisted of: requirements taking, analysis, programming of all functionality, manual testing and manual deployment.

One of the main problems came when making modifications in the code to develop a new functionality of the application: when making tests, things that used to work stopped working, and when not having a version control, finding the error was very slow.

On the other hand, after having made tests, a manual deployment was carried out but many times we stopped copying things or executing commands, that is to say, it was another point susceptible to human errors.

Faced with this problem, the concepts of Continuous Integration, Continuous Delivery and Continuous Deployment arise. They provide us with a computer model to distribute applications faster and more securely.

Continuous Integration

The main objective of continuous integration is to implement an automatic and consistent process for compiling, packaging and testing applications. This allows developer teams to upload code more frequently to version control which leads to better team collaboration and better code quality.

In this process an artifact is easily prepared, compiled and automatically run tests. It focuses on checking the application so that it does not “break” when uploading new changes to the main branch of the repository in version control.

Continuous Delivery

Continuous delivery goes one step further: it is the continuation of continuous integration, it allows to generate devices automatically ready to be deployed in production manually. However, sometimes we do not have a device to deliver as in the case of a compiled application, as is the case of a web; in this case the web is deployed in a staging environment or QA to be validated before going into production.

Continuous Deployment

Continuous deployment is the last phase of this application distribution model. This stage focuses on automatically deploying the device or application to production, without human intervention.

In other words, once the code has been sent to version control, the continuous integration will be executed, the device will be generated and automatically deployed in production. Only if a failure occurs in any step of the flow, the deployment will not take place.

It is a very critical step, so it is convenient to make a detailed study of whether it is convenient to apply it or not in an application.