Legacy Code Can Hinder Your Agile Transition
Going agile is possibly one of the biggest efforts your team will ever undertake because of the sheer amount of effort required. Not only does it entail a major culture change, but it also significantly changes how developers, testers, and stakeholders are expected to operate. For example, testers now run scripts throughout the process, not just at the end of a project, and they actively collaborate with developers to address defects.
Although there's a lot of practice evolution that happens with agile transitions, legacy code can still be a major obstacle to agile success. A few risks and considerations emerge when scaling agile while still managing legacy code barriers.
Reorganizing Your Software. Over the years, you've likely formed a veritable database of code, but this doesn't necessarily mean that it can just be transferred to agile operations. For one, agile practices entail automating as many tests as possible, but automation integration only works if the test is repeatable and reusable. According to DZone's 2015 Software Quality Survey, 61 percent of respondents noted that legacy code had to be rewritten, limiting their ability to create automated tests. It's not an option to leave the code as-is, because ongoing maintenance could become expensive.
With only the option to modify legacy code, teams should understand that it's significantly difficult to change everything. Objects can't be separated from their dependencies, some objects can't be created at all, and some dependencies are inherited. These issues will make it challenging to reorganize your current software or create new tests.
Older Systems. Many organizations thrive using the same hardware and programs for years on end, possibly even past their expiration dates. Because they continue to use legacy systems, processes that may be decades old become entrenched within these solutions. A whitepaper by CGI found that lack of support for cultural transition could stem from the fact that so many controls and operations are embedded in legacy systems. This could be a major problem when trying to create new apps and tests based on agile software management. Teams must consider what hardware they're working with as well as the mission-critical applications that are used on these systems. These areas could pose major risks to agile transitions and how legacy code is treated.
"Overall, an organization's culture is the end product of its tools, processes and control mechanisms," CGI stated. "Therefore, to successfully change its culture, an organization needs to change, among other things, its tools, processes and control mechanisms."
Testing. For agile and legacy processes alike, testing has always been a major necessity, although it wasn't always treated as such under waterfall methods. In an interview with TechTarget, industry expert Rick Oppedisano noted that applications have been built for a specific reason for a business, and quality testing tools must be able to reflect this type of knowledge. Organizations must be able to test from the perspective of a user, measuring how the app performs, how the functions fit together, and if any compatibility issues spring up. Having a resource on hand to organize, assign, and schedule all test cases across projects will be integral. This tool should also integrate well with automation solutions to get the most value from these efforts.
Legacy code is difficult to work with becuase of the number of considerations you must make. It's so entrenched within its dependencies and other functionality that it will take some time to rework, if it's possible to at all. By understanding the risks attached to moving legacy code to agile operations, teams will be able to create a better plan of action for a successful transition.