Summary: | Processes to develop and deliver software have been evolved over the years. One of the primary motivations of this evolution, is gaining the benefits of shorter time-to-market. Continuous deployment is a recent trend to deploy software to the customers automatically and in continuous fashion. Organizations adopting this trend could reach the customers faster through quick deliveries and improve the quality and productivity of the delivered product by an early feedback, and hence achieve increased customer satisfaction. Complex software intensive industrial systems are large-scale, distributed over heterogeneous platforms and interact with several sensors and actuators. Enabling continuous deployment for these industrial systems needs a stable deployment process able to cope with domain specific requirements and challenges. Notably, the required quality attributes of the deployed software product as well as the challenges introduced by the customer-specific nature of the domain. In this thesis, we formalize continuous deployment for industrial systems by identifying the main factors of an appropriate deployment process. In particular, we investigate high-level requirements, required quality attributes of the software product, and challenges in the deployment. Based on this, we propose a continuous deployment pipeline and a set of activities incorporated in the stages of the pipeline, in particular deployment and post-deployment stages. Moreover, we suggest automation support for the activities to both shorten the delivery time and to preserve repeatability and reliability of the deployment process. The aim of such a process is to maintain the quality attributes of the deployed software. We perform a case study to validate the proposed model by implementing a prototype in an industrial system
|