Cyndi Mitchell, managing director of Thought-Works Studios, recently talked about Agile development and application life-cycle management with Dr. Dobb's editor in chief Jonathan Erickson.
Dr. Dobb's: Does Agile make it more difficult to achieve effective ALM?
Mitchell: No, Agile engineering practices, when applied effectively, make it easier to know what's really going on in a project or within a code base. Agile does place heavier demands on ALM tool providers. Most tools are too prescriptive to support the adaptive nature of Agile once the application life cycle gets under way. Still others cover only one aspect of the application life cycle, leaving end users to cobble together disparate tools to support the entire application life cycle.
Dr. Dobb's: Is it really possible to automate all or part of the ALM process?
Mitchell: Yes, though it may not always be desirable. Any place in the application life cycle where humans are required to repeatedly perform manual steps will create an opportunity to introduce errors and waste valuable resources, and these are all strong candidates for automation. Of course, there may be corner cases where the cost/benefit trade-off of automating a particular aspect of a particular stage in the life cycle doesn't make sense.
Dr. Dobb's: Do ALM and Web 2.0 butt heads, or are they simpatico in terms of life-cycle management?
Mitchell: They're largely simpatico, but one area where they often butt heads is around the rich user experience of many Web 2.0 apps. Many of the dynamic "Ajax-ey" toolkits are difficult to test with current automated functional testing approaches, and this can make automating some aspects of of the application life cycle very painful.
Dr. Dobb's: What's been the biggest change in ALM the last few years?
Mitchell: There is a growing recognition that the scope of ALM is far broader than just project, program, and requirements management; it must extend to development, deployment, support, and maintenance. Of course, ALM tools need to support this entire scope as well, including a holistic approach to good Agile engineering practices.
Dr. Dobb's: Are we missing any steps?
Mitchell: In an Agile environment, it's helpful to think of the ALM process not at as sequential phases or steps, but rather as a series of short work increments, each including just enough analysis, design, development, testing, and deployment to deliver a bit of business value. The right processes and best practices are continuously discovered and improved.
Dr. Dobb's: Is any one phase/category of ALM more important/critical than any other?
Mitchell: In an Agile world, the traditional "phases" of ALM are much shorter and much more tightly dependent upon each other. The application of good engineering practice to all aspects of development, testing, build, deployment and release management is highly critical as this is what makes projects and systems reliable and predictable regardless of stage in the life cycle. It is also critical that your chosen ALM tool holistically supports good engineering practice across each of these areas.
Dr. Dobb's: Does parallelism/multicore complicate ALM?
Mitchell: It doesn't have to. Parallellism/multicore brings huge benefits to the automated testing, build, deployment, and release management aspects of the application life cycle -- the right ALM tool will allow companies to explicitly take advantage of this, while hiding the complexity.