Back to Research

ICESI University   University of Victoria  

Project 1068 - Reverse Engineering Deployment Specifications from Running Systems


Running from 2018 to 2021

Reverse Engineering Deployment Specifications from Running Systems

Infrastructure-as-Code enables provisioning and managing dynamic resources through machine-readable configuration. Changes to the infrastructure are made in a structured way through reliable and established processes. Therefore, tools that are alien to such processes hinder the repeatability of the provisioning tasks. This posits a challenge for organizations maintaining legacy systems that have already developed hundreds of scripts and tools. The lack of repeatability in their deployment practices makes it difficult to adopt tools such as IBM Cloud Automation Manager.

Public Impact Statement:

  1. Investigate the state of the art to study current approaches in cloud orchestration on methods, techniques, and tools for round-trip engineering.

    We investigated current approaches for round-trip engineering in cloud orchestration. However, we found that these approaches are technology-dependent and do not follow any practice that allow us to extrapolate their implementation to other domains or even notations/tools. We found relevant articles in the modelling domain to implement round-trip mechanisms by creating and transforming models to keep dependant models up to date upon changes in their source models.
  2. Investigate reverse engineering practices on software engineering applications to adapt or extend them to the Deployment domain.

    We found that round-trip engineering tools are most used in the design of development diagrams, such as UML. Unfortunately, their application throughout the development process is very limited.
  3. Develop mechanisms/tools for deriving Terraform templates given a deployed infrastructure.

    We proposed a model-driven framework to keep an up-to-date model of the resources deployed to any target cloud. Our framework generates historian monitors that track the state of cloud resources based on the cloud API. Based on the model instance, we created a set of model transformations that derive a base Terraform template and the corresponding CAM deployment stack.
  4. Develop software agents to automate the process of synchronization between the deployed system and the corresponding Terraform templates.

    We created a two-way continuous integration framework for DevOps that enables bidirectional traceability of changes and transformation between a running system and its deployment specifications. We created a proof of concept implementation that updates version-controlled Terraform specifications according to changes in a systems running on OpenStack and VMware. Our proof of concept includes a monitoring framework to identify resource changes on any target cloud using its API.
  5. Implement a prototype for round-trip engineering cloud orchestration on IBM CAM.

    We proposed two integration scenarios of our two-way continuous integration framework into IBM CAM. The proof of concept mentioned in objective 4 updates concrete values to a particular deployment stack. It also allows to create a deployment stack based on a set of deployed resources.
  6. Extend the notion of two-way continuous integration to automated improvement of the software architecture and the computing infrastructure.

    We proposed an architecture comprising three management cycles for run-time adaptation, evolution and experimentation. Moreover, we implemented two prototypes and case studies demonstrating its effectiveness and feasibility. The first prototype generates architectural variants at run-time based on a library of design patterns for distributed execution. Using statistical analysis, we showed how different workload conditions are better satisfied by different architectures. In a similar way, the second prototype generates infrastructure variants at run-time based on different configuration options.

    Learn More about the Research Team.  

    Explore the product that harvests this research results  

Research team:

  • IBM Project Lead (RCL): Joe Wigglesworth, IBM
  • IBM Sponsor (RCS): Joe Wigglesworth, IBM
  • IBM Sponsor (RCS): Oleg Barenboim, IBM
  • IBM Sponsor (RCS): Jason Frey, IBM
  • IBM Contributor (RCC): Ian Watts, IBM
  • IBM Contributor (RCC): Radu Mateescu, IBM