Requirements-Based Development: A Software Configuration Management View

[article]

Testing Requirements
A staple agile practice is that of unit test frameworks. The ability to re-run thousands of tests allows key practices such as refactoring to take place safely with vastly reduced risk. Unit tests provides a project development heart beat of ongoing progress, and frequently improved (simplified) code—code that is easily testable is usually easier to understand than code that isn’t. Quite a bit of work has been going in to acceptance test frameworks which are a little more difficult. Simple table driven specifications of tests such as those used in Fitnesse, can not only provide security but also help refine requirements since they provide a language to talk to the end user in that can be much more precise about the meaning of requirements. There are many challenges, particularly in the areas of GUI testing, but this is a very valuable practice to investigate.

Applying Agile Principles to Requirements
A good requirements process doesn’t happen by magic, and certainly isn’t produced just by tools. It requires hard graft and intelligence, both in the discovering of requirements and in their management and integration into the whole development process. Some principles which are helpful:

    • DRY (Don’t Repeat Yourself)—how many times is information copied backwards and forward between systems and applications? How can you minimise this, or automate it?
    • YAGNI (You Aren’t Gonna Need It)—evolutionary development and prioritizing of requirements for the upcoming delivery, postponing all sorts of details about other require
    • Test First Development—get feedback on your requirements by working on acceptance test frameworks

Conclusion
A good requirements process is fundamental to software—heading a few steps in the right direction is usually better than zooming off ever so efficiently in totally the wrong direction! Being bad at discovering requirements is a quick way to failure. Of course even with excellent requirements you still have to develop the appropriate software. There may not be a magic bullet, but you can evolve from smooth bore muskets to sniper rifles through applying good software engineering and agile principles, and of course sound SCM practices too!

References and Additional Resources

[1]     Software Engineering Body of Knowledge, www.swebok.org

[2]     Requirements Engineering Maturity in the CMMI, Dennis Linscomb, Crosstalk

[3]     Requirements and Change, Richard Brooksby, http://www.ravenbrook.com/doc/2003/02/24/requirements-and-change/

[4]     Is Design Dead? Martin Fowler, http://martinfowler.com/articles/designDead.html

[5]      “MDA: Revenge of the Modelers or UML Utopia?,” by Dave Thomas, http://martinfowler.com/ieeeSoftware/mda-thomas.pdf

[6]     Lean Programming; by Mary Poppendieck; Software Development Magazine, May-June 2001 (Vol. 9, No. 5 and 6—see full article at http://www.poppendieck.com/lean.htm)

[7]     Future of Agile CM, CM Journal, Jan 2005 (Vol 4. No. 1) by Brad Appleton, Robert Cowham and Steve Berczuk

[8]     The Agile Difference for SCM, CM Journal, Oct 2004 (Vol 3. No. 10) by Brad Appleton, Robert Cowham and Steve Berczuk

[9]     User Interface Design for Programmers by By Joel Spolsky, http://www.joelonsoftware.com/uibook/chapters/fog0000000065.html

[10]   Writing Effective Use Cases, by Alistair Cockburn, http://alistair.cockburn.us/usecases/usecases.html

About the author

Steve Berczuk's picture Steve Berczuk

Steve Berczuk is a Principal Engineer and Scrum Master at Fitbit. The author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, he is a recognized expert in software configuration management and agile software development. Steve is passionate about helping teams work effectively to produce quality software. He has an M.S. in operations research from Stanford University and an S.B. in Electrical Engineering from MIT, and is a certified, practicing ScrumMaster. Contact Steve at steve@berczuk.com or visit berczuk.com and follow his blog at blog.berczuk.com.

About the author

Brad Appleton's picture Brad Appleton

Brad Appleton is a software CM/ALM solution architect and lean/agile development champion at a large telecommunications company. Currently he helps projects and teams adopt and apply lean/agile development and CM/ALM practices and tools. He is coauthor of the book Software Configuration Management Patterns, a columnist for the CMCrossroads and AgileConnection communities at Techwell.com,  and a former section editor for The C++ Report. You can read Brad's blog at blog.bradapp.net.

About the author

Robert Cowham's picture Robert Cowham

Robert Cowham has long been interested in software configuration management while retaining the attitude of a generalist with experience and skills in many aspects of software development. A regular presenter at conferences, he authored the Agile SCM column within the CM Journal together with Brad Appleton and Steve Berczuk. His day job is as Services Director for Square Mile Systems whose main focus is on skills and techniques for infrastructure configuration management and DCIM (Data Center Infrastructure Management) - applying configuration management principles to hardware documentation and implementation as well as mapping ITIL services to the underlying layers.

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!

Upcoming Events

Sep 24
Oct 12
Oct 15
Nov 09