Today at work I was asked by a friend and colleague about the tools we might need to support an application’s life cycle, which got me thinking “what is an application life cycle?”. We might say this life cycle is the changing from the envisioning of a tool to achieve some business’ goal, to the software artifact deployed to a production environment to moving in constant evolution as it grows on size and features. But, this was hard to picture without an example. So, leaving tools aside and rephrasing a little, this is more or less the story I told in that mail.
It all begins with the need to improve something and the design of the right tool for this purpose. This will guide the whole change, so it’s important the goals to be achieved with this tool are of clear value and not mere embellishments or extra knives just in case. Here begins the work of the engineer guiding the way for a well-done one-purpose tool.
Once goals are clear, time comes to estimate how long and how much for the desired tool, and, to plan when the first usable version will be ready and how often improvements will be available. It’s now when you’ll set the milestones which will allow the micro and macro management of the project.
Once the path is laid the walk begins. One after the other, stories are exemplified, refined and even changed, built and verified against expectations. Engineers work side by side and this work units are continuously integrated into what takes shape more and more as the expected tool. As the theory meets the practice some more tasks are to be scheduled.
While all this happens, some more engineers put some exploratory testing in place to reveal hidden gems and schedule them for correction. This is of most value, because this problems when caught in production are the cause of blown budgets and unmet deadlines.
All the time tasks are created, assigned, updated and resolved defining stories either as complete or incomplete. This focus on the small keeps the big picture updated.
Till one day, is deadline and release must be done. Zones and code bases are declared frozen, branches are merged, tags are created and artifacts are deployed. The cycle is complete. Lessons from the finished cycle must recorded and learned and a new one must begin. A new segment of the path must be walked.
Tools for these stages are what you need, and you need them to work smoothly together.