Infrastructure Refactoring


working after each small refactoring, reducing the chances that an infrastructure can get broken during the restructuring and ergo injuring the ability to support the existing streams of development for the product.

The goal of infrastructure refactoring is to take the existing infrastructure that may be more complex and supports a phased approach and instead streamline and simplify it so that in supports a more incremental and agile approach.

Infrastructure Challenge

First, let's define what infrastructure means in the context of this article. Infrastructure refers to the technical structures such as environments, tools, and the processes that are used to support the product. Examples of infrastructure related components include the servers, network, and build tools used within the product development context. Infrastructure for a product typically gets defined and established in the first release of the new product. In the past, most project teams have used more traditional methodology approaches that follow a phased approach.

What happens if that product line wants to move away from a phased methodology to a move iterative methodology like Agile? Can the exact same infrastructure be used? To a great extend yes, but what becomes apparent is that many of the processes built into the infrastructure are built to support a more phased or waterfall approach. A refactoring change approach to infrastructure implies small continuous changes in order to reduce the chances of something going wrong, versus attempting to make all infrastructure changes at once with the potential of numerous problems occurring as a result.

What areas of change in the infrastructure must be considered when moving from a phased approach to an Agile approach? In following a project lifecycle, the infrastructure may require changes to the requirements, configuration management (CM), testing, development, architecture, database, release management, and other engineering spaces. In tackling this challenge, an approach that focuses on small continuous changes will be advantageous to ensure that the existing product maintenance and support continues while adjustments are made to the new development model. Infrastructure refactoring applies the Agile approach of continuous change and integration to improve an existing infrastructure while maintaining the integrity of the current support and maintenance line that must occur.

About the author

Mario  Moreira's picture Mario Moreira

Mario Moreira is a Columnist for the CM Journal, a writer for the Agile Journal, an Author, an Agile and CM expert for CA, and has worked in the CM field since 1986 and in the Agile field since 1998. He has experience with numerous CM technologies and processes and has implemented CM on over 150 applications/products, which include establishing global SCM infrastructures. He is a certified ScrumMaster in the Agile arena having implemented Scrum and XP practices. He holds an MA in Mass Communication with an emphasis on communication technologies. Mario also brings years of Project Management, Software Quality Assurance, Requirement Management, facilitation, and team building skills and experience. Mario is the author of a new book entitled “Adapting Configuration Management for Agile Teams” (via Wiley Publishing). It provides an Agile Primer and a CM Primer, and how to adapt CM practices for Agile Teams. Mario is also the author of the CM book entitled, “Software Configuration Management Implementation Roadmap.” It includes step-by-step guidance for implementing SCM at the organization, application, and project level with numerous examples. Also consider visiting Mario’s blog on CM for Agile and Agile adoption at

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, is the place to go for what is happening in software development and delivery.  Join the conversation now!