In his Behaviorally Speaking series, Bob Aiello discusses hands-on software configuration management best practices within the context of organizational and group behavior.
Status accounting is following the evolution of a configuration item through its lifecycle. Using application lifecycle management along with agile helps prevent mistakes, but lets you have the minimum amount of red tape; the team achieves an acceptable velocity without being unduly burdened with too much process.
Configuration management experts have long defined CM in terms of four key functions: configuration identification, status accounting, change control, and configuration audit. Configuration identification focuses on naming conventions and ensuring that you can select the correct configuration items. Change control is most commonly associated with changes to production being reviewed and occurring within the change window. And configuration audits confirm the integrity of a systems product before delivery.
The one technical term that always baffled me was status accounting, which is defined as “following the evolution of a configuration item” through its lifecycle. In practice, this is done using a robust software development lifecycle (SDLC), which most of us today call application lifecycle management (ALM) to indicate a more comprehensive approach than the SDLCs of long ago. I have always believed that this terminology came about in the days when we could track COBOL modules and copy books on the back end of a napkin as we had lunch with our customer who was asking for a new feature or report. Times have changed, but status accounting is nonetheless very important, even, for many, a regulatory (or contractual) requirement. The good news is that you can implement effective status accounting using agile ALM.
The key to an effective software development methodology is to have just enough process so that you do not make a mistake, with the absolute minimum amount of red tape—or, as the agile folks like to say, “ceremony.” But how much process is enough? Are there times you should scale up or scale down?
The agile ALM should align with the Agile Manifesto and agile principles, ensuring that your team can achieve an acceptable velocity without being unduly burdened with too much process. Creating user stories, test plans, and scripts are all must-have practices that require flexible tools. Your agile ALM should have an effective change-control process along with completely automated application build, package, and deployment. Most teams these days are thriving on continuous integration servers and working to implement effective continuous delivery practices.
When you define your processes, make sure you identify the tasks that really need to be tracked. Providing transparency and traceability helps everyone on the team understand what needs to be completed on a daily basis, and especially how their work affects others. It also plays a key role in communicating when deliverables will be met by alerting senior management to any potential risks that need to be addressed.
It is always best to automate your ALM using a workflow automation tool. Folks will likely bypass processes if there is no traceability or reporting on whether each step was completed. But be careful here, because many companies have such time-consuming and onerous processes that everyone tries to find excuses to bypass the established IT controls. Soon, these steps are rendered meaningless.
If you are in a bank or other financial services firm, you are likely familiar with adhering to IT controls that are established to comply with federal regulatory requirements as well as commonly acceptable IT audit practices. The ITIL v3 framework, ISACA COBIT, and industry standards from the IEEE and ISO are commonly used to determine exactly what controls are required for a particular industry. The only reasonable way to make this all happen is with an effective workflow automation tool that communicates the next steps for each stakeholder while providing transparency into what tasks have been completed. Software development is a complicated endeavor for most organizations, but the reward is highly effective systems that provide robust features and can scale to meet the peak usage.
Successful organizations establish their processes initially and continually evolve them as needed. It is common for processes to be very light, with few IT controls in the beginning, but then for processes to become much more structured as the project advances and delivery dates approach. Agile should provide guidance for all the activities required for the success of the project, without being overly burdensome in terms of rigid rules and ticketing systems. Workflow automation is essential, and so is the selection of easy-to-use and flexible tools.
The integrated service desk should streamline internal requests and also provide a front line to handle customer calls and requests. When your help desk runs well, problems are typically solved quickly. More critical issues should be handled by your incident response team, which should provide a feedback loop to your QA and testing function.
Continuous testing requires effective processes and the right tools to enable robust automated testing, including the use of virtualized test assets. Release and deployment automation are also key ingredients and, when implemented correctly, improve reliability and security.
Status accounting may be a rather dry and innocuous term, but the agile ALM itself is an exciting approach that can empower your team to achieve its goals and ensure business success.
See Bob Aiello at Agile Dev West 2016. Click here to view the program schedule.