Defining the software development lifecycle (SDLC) is essential if you hope to have a repeatable and sustainable approach to creating large scale enterprise software systems. Years ago, we focused on defining an SDLC that was clear and practical. Application Lifecycle Management taken this effort to an entirely new level. ALM has both a wider focus and an implicit connection to effective tools to support the entire lifecycle. Your ALM should provide guidance for everything from defining requirements to application deployment (and even retiring assets that are no longer needed). Agile ALM defines just enough process to get the job done of course with an appropriate focus on rapid iterative development. Tools and effective techniques are essential in this effort. Read on if you want to be able to be successful in implementing ALM tools and techniques!
Process and Methodology Defining a methodology can be very challenging. You need to start by identifying the tasks that need to be completed along with the respective roles that will be responsible for each task. Methodologies enable your team to have a repeatable process that will help improve both quality and productivity. But you need to start by defining the scope of your process.
Scope of the ALM Application Lifecycle Management has largely widened the scope of the software development process. Tracking requirements to changesets, incidents to test cases and tracing the release process are just a few examples of common ALM use cases that I have seen implemented using large scale ALM solutions. In my opinion, ALM has widened the scope of the software development process as compared to what we considered with creating SDLC process models year ago. The scope of the process model is important, but ALM also has a strong focus on integrating various tools into comprehensive toolchains.
Toolchains Integrating requirements tracking tools, test case management and test executions tools with automated workflow and source code management solution provide powerful ALM toolchains. There is considerable debate as to whether open source toolchains or robust commercial solutions are the best choice.
Open Source Toolchains There are open source workflow automation tools that integrate nicely with commercial source code management solutions as well as open source subversion and Git. You need to carefully evaluate the features that you require before you choose to implement an open source toolchain. There also excellent commercial solutions that facilitate toolchains including the Jazz platform and Open Services for Lifecycle Collaboration (OSLC) from IBM.
Jazz and OSLC IBM Jazz provides a comprehensive platform for integrating both commercial and open source solutions. IBM’s OSLC also defines a common set of specifications for Linked Lifecycle Data. Tools are essential for successfully implementing an ALM. You should try to position yourself to be able to work with both commercial and open source solutions. You also need to consider process improvement as an ongoing task.
Traceability Traceability has to be implicit in all of these tools and techniques, especially when supporting Agile ALM. For example, many ALM solutions trace requirements to test cases to specific releases. You always want to be able to ascertain what has changed, who changed it and when the change was made. Your focus should always be on improving productivity and quality.
Productivity and Quality ALM tools and techniques need to always support better productivity and improved quality. This means that you need to stay practical and lean in terms of how much ceremony is included in your process. When selecting these tools you also need to consider total cost of ownership.
Total Cost of Ownership The purchase cost of a tool is not the only expense. Maintenance and support along with training need to be part of your evaluation of the total cost of ownership. You may find that using open source results in much higher costs in terms of your own time to support and customize a useable solution. Part of this evaluation should include defining the usage model that you and your team will employ on a day to day basis.
Defining the Usage Model You need to define the way in which your toolsets will be used. Make sure that you plan to provide training. I have seen many teams implement a source code management solution without taking the time to document the way in which the tools will be used. You also need to place a strong focus on creating automation when necessary.
Automation is Essential ALM tools and techniques need to be part of an comprehensive effort to create automation to support the entire Agile ALM. Good automation saves time and improves the overall usage experience. You should also embrace Agile principles when implementing Agile tools and techniques.
Agile for ALM Make sure that you practice what you preach. Implementing ALM tools and techniques should employ Agile principles, described in the Agile manifesto, that place the right focus on:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Placing the right focus will help you be successful.
Conclusion ALM tools and techniques provide valuable support to help create large scale enterprise applications. Placing the right focus on defining process that improves both quality and productivity will help you and your team achieve. Please share your best practices for implementing ALM tools and techniques!
About the Author Bob Aiello is a Consultant, Editor-in-Chief for CM Crossroads and the author of CM Best Practices: Practical Methods that Work in the Real World, Addison-Wesley Professional ( http://cmbestpractices.com). Mr. Aiello has over 25 years experience as a technical manager in several top NYC Financial Services firms where he had company-wide responsibility for CM, often providing hands-on technical support for enterprise Source Code Management tools, SOX/Cobit compliance, build engineering, continuous integration and automated application deployment. Bob has served as the Vice Chair of the IEEE 828 Standards working group (CM Planning) and is a member of the IEEE Software and Systems Engineering Standards Committee (S2ESC) Management Board. Mr. Aiello holds a Masters in Industrial Psychology from NYU and a B.S. in Computer Science and Math from Hofstra University. You may contact Mr. Aiello at bob.aiello@ieee.org, link with him at http://www.linkedin.com/in/bobaiello or visit his corporate website http://yellowspiderinc.com
Trackback(0)
Comments 
Write comment
 |