Software churn is a byproduct of the software development process where frequent updates often lead to technical debt, where technical debt is the act of leaving issues, efforts, or refactoring for later and can easily result in a significant amount of time spent resolving those issues. However, when development teams are creating separate features in parallel then intentional churn can drive necessary updates between teams, thereby leading to a more useful and resilient end product especially when not all requirements have been sufficiently-defined prior to the development cycle. This paper focuses on the interplay between two project features, each developed independently, where intentional updates to one feature drive changes in the other feature.
This project was constructed as a research collaboration between two Master's students for their final project with the intent of creating two separate features for a simulated drone application in a short amount of time. The first aspect of the project was the development of a resilient, autonomous drone controller that would successfully navigate to a specified location in uncertain scenarios. The second aspect was to create a framework for procedurally creating environmental scenarios that the drone must successfully navigate. Development was split into two separate teams with antagonistic goals towards each other: robot control and procedural content generation. Each team's overarching goal was to "break" the other's system via forward progress with their own goal(s), where progress was tracked in public open-source repositories. This paper reports on an educational experience involving intentional software churn to aid development in a collaborative software engineering project.
Are you a researcher? Would you like to cite this paper? Visit the ASEE document repository at peer.asee.org for more tools and easy citations.