Custom Software and Application Lifecycle Management Practices
Any new custom software project can be fraught with risk due to a variety of factors, like misunderstanding the purpose of the project or bad programming. As our team works to provide our customers with the best possible final product for their money, our processes have evolved as well.
One particular process that we have been actively working to implement and improve upon here at Entrance is application lifecycle management (ALM). Microsoft defines ALM as a set of practices and tools that result in “greater waste reduction, faster cycle times, and greater business agility.”
In practice, that means that you get better software in less time.
Building Software to Real Requirements
Many of our ALM practices and tools tie back to our commitment to agile development. For any new project, we focus on user stories as the primary method for understanding the business value behind a new custom software project. We try not to get too focused on specific requirements gathering, however.
As one developer highlighted in a blog about agile requirements gathering, “The reality is that the requirements document is usually insufficient, regardless of how much effort goes into it, the requirements change anyway, and the developers eventually end up going directly to their stakeholders for information.”
To bring it back to ALM, we are rolling out a new tool, Team Foundation Services (TFS), for our clients that uses ALM practices to put them in the driver’s seat for the final product of their software. Clients use this tool to log requirements, add acceptance criteria (i.e. what done means for them), and prioritize backlog items, all in an easy-to-use interface.
A Common Understanding
On our end, we use this requirement and acceptance criteria as the basis for development and testing. This system closes the feedback loop between the developer and the client, which minimizes the opportunity for misunderstanding.
In addition, the client has a lot of visibility into what is happening with their custom software across the entire life cycle. This provides a “window into the machine,” so that there is never any question about how the development process works.
Another advantage to using a tool like TFS is that as a result of being involved with the entire process, our clients are able to be more realistic about their desires. Instead of blue sky ideas that don’t fit the business need, we can work together as a team to develop pragmatic solutions.
Testing to Requirements
One particular benefit to working with a company that has well developed ALM processes is when it comes to testing. TFS can create automated tests that quickly check that the code that has been written matches requirements. The system can also easily tie tests to requirements so that everyone involved knows that the software is headed in the right direction.
In addition, as code is reviewed, we work in teams of two, with one person writing code, and one person performing quality assurance. While this may seem like double the resources to perform one job, this avoids fatigue that might result in errors. In addition, the job actually gets completed faster with two people working in collaboration.
Worth the Time for Great Custom Software
Becoming involved with your software project on the daily and weekly level that TFS requires may seem like a big investment of your time. This involvement protects your investment in the custom application because you are never at a remove from the process.
We believe you won’t regret this investment. Our clients who have made the switch say they would never go back! See how one client made Agile and ALM work for them here.
Or read our series on how Agile can help you get the most from your custom software project…