• Connect with us:

Engineering and Computer Science

Continuous Software Engineering

Continuous Software Engineering

  • Editor
  • Publication Year
  • ISBN
  • Price
  • Publisher
  • Binding Type

This book provides information on the essential approaches of continuous software engineering in which equipment maintains the production of software in short cycles of time, ensuring that the product can be released reliably and in real time. A case study-like discussion on the adoption of modern software engineering practices at large companies that produce software-intensive systems, where hundreds or even thousands of engineers collaborate to deliver on new systems is given to provide context to students and professionals alike.

At present, most of the software projects that are developed, are run using methodologies and procedures, which causes the team in charge of the project end up launching products and services with failures. This is why companies need to consider the quality of software developed from a perspective that covers not only the final quality of the product, but a more general perspective which covers the entire development process. It is necessary to make use of methodologies, procedures and standards to be able to develop and launch a software product of quality, with sufficient certainty to obtain a lower final cost and risk.
The typical software life cycles have processes that isolate the tasks to be carried out by the different teams of the project. These are the development, testing, product (business) administration and operations, so that there is an important barrier between these.
In addition, during the software life cycle, it passes through different environments (the development, testing, production, etc.), so that it is a source of errors that are common to produce software in an environment making the software dependent on it and at the time of in the environment in which the users are going to interact with the application or service, this it does not work correctly. One of the intermediate steps between these two environments is the tests, where the correct functioning of the software will be verified, that is why it is it is advisable to carry them out in an environment as close as possible to that of production to mitigate the possible errors produced by the difference of scenarios.
In addition to this scenario difference problem, this process of bringing the software to the production environment, commonly referred to as production start-up, is completely manual, of errors, unreliable and difficult to repeat.
All these disadvantages cause that this process that goes from the software development until its production can lead to take in most cases weeks, delay that for some companies can translate into a high cost of opportunities, or what is the same a high economic cost.
To overcome all these problems, new methodologies and software development:
DevOps defined as a new working philosophy in which barriers are broken previously discussed by the different software project teams, through the creation of an ecosystem that favors the communication, collaboration and integration of all these equipment.
Continuous delivery or continuous supply [1] as a form of software development that makes use of good practices for the software to be built so that it can be put into production in an agile and less risky way, carrying out frequent launches that allow the cycle between the development of the software and the supply of this to the user is as short as possible, allowing even daily deployments to be carried out faster feedback from users. Throughout the text will be used indistinctly, as being synonymous, the terms continuous delivery and continuous supply.
One way to facilitate the implementation of the continuous delivery model is to integrate of an automated, repeatable and reliable process that encompasses the set of common tasks involved in the deployment and development of software. Tasks ranging from the developer uploads to the software repository of the project until it is put into production, producing a rapid feedback, so that the developments that are not valid for production be discarded as quickly as possible.
In addition, this automation allows to solve in part the barrier previously commented between the different project teams, reducing the delay between phases that depend on different groups, making the process tasks carried out by these groups can be performed with the press of a button.
Continuous software engineering is an approach in which equipment maintains the production of software in short cycles of time, ensuring that the product can be released reliably in any moment. Today, this approach is increasingly being used in organizations, especially those that develop web or mobile. However, by releasing versions of the product with greater frequency, more defects emerge in the same. This is mainly due to that the time to perform the test cycles are very short. One of the challenges that currently exists is the acceleration of testing on the interface such as web compatibility. A technique used in a large software development company is presented to automate web compatibility testing, automation image comparison when doing cross-tests between different browsers. The results indicate that the proposed technique adapts to the requirements of the processes of continuous development, increasing the performance and speed of this type of tests.

Ivan Stanimirovic

Ivan Stanimirovic

Ivan Stanimirovic gained his PhD from University of Niš, Serbia in 2013. His work spans from multi-objective optimization methods to applications of generalized matrix inverses in areas such as image processing and computer graphics and visualisations. He is currently working as an Assistant professor at Faculty of Sciences and Mathematics at University of Niš on computing generalized matrix inverses and its applications.