|
|
|
|
At work I’m a Software Development Manager. Two decades of studying and applying a variety of methods in computing (Prince2, DSDM, Extreme Programming (XP), Personal Software Process, CMM, ISO9000, SSADM, UML, JAD, RAD, UI Design, and more) haven't actually left me with many artifacts to offer the IT industry - but it has left with with strong views about what works. (CV available)
Agile Development is about light and fast application development. Use it if you've got a short timeframe with a hard deadline and/or your requirements are soft (i.e. ill defined or changeable). If you've a comfortable timeframe and stable requirements then Agile won't add much value - personally I haven't had such a project yet.
There are lots of Agile methods in use now days including eXtreme Programming otherwise known as XP, Scrum, the Crystal family of methods, and DSDM, plus others. Scrum is probably the oldest (c. 1994) and XP the newest (c. 2000). Some big names use Agile methods for example XP was first used at Chrysler, and DSDM has been used at BT and Orange. Most of the methods originated in the US, but DSDM is British - not that that makes a difference to where they are used. All these methods have been used for web/e-commerce type applications - in fact that is probably where they are used most often.
The methods vary in specific details (for example XP has a strong technical component) but they are actually pretty similar, so much so that representatives of these methods have formed an AgileAlliance complete with web site. Their site offers an Agile manifesto and associated principles as an explanation of what they're on about.
I use a blend of these methods; selecting the practices that are appropriate for particular projects, and that fit in with the style of particular customers.
In terms of advantages, adopting an agile approach offers increased likelihood that the customer gets a product they are happy with, that the product is higher quality, and that the product is developed faster than traditional methods allow. All of which increases the chances of a successful project and a successful product.
I've written up some of my thoughts on Agile Development in the form of a comparison of some of the Agile methods. The key feature of Agile software development is controlled scope management. Otherwise check out what the experts say in the links below.
Martin Fowler's article The New Methodology. Available at either:
http://www.thoughtworks.com/us/library/newMethodology.pdf
http://www.martinfowler.com/articles/newMethodology.htmlIf you're interested in Agile methods or wondered what they are, and why they're needed then checkout this paper by Martin Fowler of ThoughtWorks: I particularly like it as it expressed my own observations and concerns about applying traditional project management to software development in a way I never could.
Alistair Cockburn's articles are also worth a read, in particular:
Neither particularly say what to do - they suggest directions more than anything else - but they do explain why what PMs and Orgs normally do doesn't work for software development. And I like Cockburn's writing style.
This is my favourite of the published Agile methods. It is a public domain method that is popular in the UK and that you can get certified for. I like it because it has more formality than the competitors.
Consortium http://www.dsdm.org/
Selling points for DSDM (and agile)
Tricks from the old hands
Alistair Cockburn describes his family of methods as the lightest of light. "Use them when you give up on XP". He used to have a site dedicated to them (http://www.crystalmethodologies.org/) but this seems to have disappeared.
In addition to his on-line articles mentioned above Alistair Cockburn is also author of a book called "Agile Software Development". Like his articles, this book is more about why Agile works than what to do. I like Cockburn's writing style but if you want a different perspective then check out Adam Burke's Critical Review.
Chief programmers and all that.
Original Description www.pcoad.com/download/bookpdfs/jmcuch06.pdf
I used to love this stuff, but I've become more cynical largely due to the excessive hype associated with XP. It includes some pragmatic project management techniques, and some sensible technical ideas (e.g. Xunit) but I suggest you take it with a grain of salt - an XP project can easily get way out of control.
Check out a couple of official XP sites by official XP gurus.
http://www.extremeprogramming.org/
Also check out "The Costs and Benefits of Pair Programming" by Alistar Cocburn and Laurie Williams.
But most importantly have a look at the work by Matt Stephens and Doug Rosenberg. They are extremely anti-XP, so much so that they've released a book Extreme Programming Refactored: The Case Against XP, but also have some material on the web. In particular check out:
Matt Stephens, The Case against Extreme Programming http://www.softwarereality.com/lifecycle/xp/case_against_xp.jsp
And for links to other anti-XP stuff check out http://www.softwarereality.com/lifecycle/xp/links.jsp
XP Refactored - my summary what the XP-like process they recommend
Scrum concentrates on management of software development, and unlike XP has nothing to say on programming techniques. It is a good place to start looking if you're interested in Agile methods, but it really is similar to the Planning Game of XP.
ControlChaos.com http://www.controlchaos.com/
Jeff Sutherland http://jeffsutherland.com/scrum/
"Lean" appears to be synonymous with "Agile". Poppendieck's contribution to the Agile movement is a theoretical link to the Japanese TQM movement. I call it a theoretical link in the sense that she is providing a conceptual framework (TQM) to compare the agile methods against. She then cheekily calls XP, Scrum, Crystal etc "Lean" - thus in a sense taking credit for these other methods.
I can't fault what she says but she doesn't seem to add much to what the other chaps say, i.e. you'd still have to read the XP, Scrum, Crystal etc to know what to do. And Alistair Cockburn or Martin Fowler provide a better rationale for why these methods work.
None-the-less, being a theorist from way back, and having devoted 4 years of my life to studying TQM, this does give me an interesting slant on the other material.
My company uses a automated unit tests using Xunit, automated build scripts using ANT or NANT and automated integration using Cruise Control.
Junit http://www.junit.org/
An essential framework for automated unit testing in Java, based on concepts introduced by XP practioners. For a simple intro to junit try http://www.clarkware.com/. For an explanation of the XP testing framework try http://www.xprogramming.com/software.htm.
ANT http://ant.apache.org/ or NANT http://nant.sourceforge.net/
The Java and .NET build tools respectively.
Cruise Control http://cruisecontrol.sourceforge.net/
Once you have automated tests and a nightly build then the next step is continuous integration.
For some practical testing advice look to ...
Brett Pettichord's Software Testing Hotlist
Not Agile per se, but has great links to lots of good testing material.
XP Testing http://www.testing.com/agile/crispin-xp-article.pdf
A description of how XP testing works. The trick is that acceptance testing happens in parallel with development, and hence ends with development!
Agile Testing http://www.testing.com/agile/
Links to more sites about testing in an Agile world.
And some tools I haven't used, but which look interesting ...
JXUnit http://jxunit.sourceforge.net/
Building Suites of Test Data with XML
Testing HTML http://httpunit.sourceforge.net/
A tool for testing HTML pages. It is used in conjunction with Junit.
Cactus http://jakarta.apache.org/cactus/
An extension of junit
What I can offer|
|