Reactive Plan: A Tool for Continuous Software Release Planning
Responsible Scientist: Carles Farré
Entrepreneur Scientist: David Ameller
Software engineering has always aimed to identify separate engineering activities and assign different responsibilities to each of them as a way to produce a clear path to produce or maintain software products. An extreme example is the (deprecated) waterfall development process that required the current activity to be completely finished in order to start the following one. However, this process has been proved inadequate in most cases due to the instability of the software requirements. To tackle this problem, several iterative software development processes emerged in the last fifteen years (e.g., Agile, XP, etc.), which still keep the activities apart but is organized into smaller iterations that facilitate the incorporation of changes in the initial activities.
Continuous software engineering is going one step beyond by establishing strong connections between software engineering activities. The objective of this continuity is to accelerate and increase the efficiency of the software engineering process; for example, continuous integration is one of the best established continuous approaches in which the development and deployment activities are keep linked and synchronized. In this sense, continuous engineering can be also related to DevOps, a movement that encourages the collaboration between development, operations and testing. Given its complexity, continuous software engineering requires advanced tool support that help to maintain the link between the connected activities. For instance, Jenkins is a very popular tool that supports continuous integration. The need for such tool is the main motivation of the Reactive Plan tool.
Our solution, Reactive Plan, focuses on the reinforcement of the connection between software development and release planning activities. Software development is the task of producing the implementation of the software (e.g., writing the source code) while release planning is deciding what is to be implemented, when and by whom. In order to fully support the continuous planning of releases, the Reactive Plan tool will: 1) monitor the real progress of the ongoing release (by connecting with developer tools like JIRA or Slack); and 2) re-plan the current release when necessary (e.g., some activity is delayed or a developer takes a sick leave).
We are in TRL 1, basic principles observed, because we currently have the preliminary idea of the product and the release planning algorithm, but it is worth noting that this algorithm is not yet ready to be used with the continuous engineering ideas. In fact, the grant will be dedicated to the design and implementation of a prototype of the Reactive Plan tool. In particular, the developer will have to adapt our algorithm and integrate it with at least one of the commonly used developer tools (i.e., JIRA, Slack, etc.). Therefore, with this grant we expect to move from TRL 1 to TRL 3, experimental proof of concept. The money of the grant will be mainly allocated to hiring technical staff for the TRL transition and to subcontracting a market analysis to help in the marketization of the solution.