Simply put, Agile Modeling (AM) is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and lightweight manner. AM recognizes that although all of the following factors are important, when you are following an agile approach to modeling, your focus should be 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
The goals of Agile Modeling are:
- To define, and show how to put into practice, a collection of values, principles, and practices pertaining to effective, lightweight modeling The secret to AM isn't the modeling techniques themselves -- such as use case models, class models, data models, or user interface models -- but how they're applied.
- To address the issue of how to apply modeling techniques on software projects taking an agile approach such as eXtreme Programming (XP) To quote Kent Beck from eXtreme Programming Explained (XPE): "We will continually refine the design of a system, starting from a very simple beginning. We will remove any flexibility that doesn't prove useful." Contrary to the claims of some of XP's detractors, you do in fact invest time modeling when taking an XP approach ÂÂ but only when you have no other choice. Sometimes it is significantly more productive for a developer to draw some bubbles and lines to think through an idea, or to compare several different approaches to solving a problem, than it is to simply start hacking out code.
- To communicate agile approaches to modeling that can be used to enhance non-agile projects such as those following the Unified Process (UP) The enhanced lifecycle for the UP includes several modeling-oriented workflows -- Requirements, Business Modeling, Analysis & Design, Infrastructure Management -- which, when applied at face value, can become quite burdensome. AM helps to improve the effectiveness of your modeling efforts on a UP project (or any project for that matter).
I would argue that at its core AM is simply a collection of practices that reflect the principles and values shared by many experienced software developers. My experience is that these practices can be applied to most software development projects. You don't have to be working on a project following an agile software process (such as XP) to take advantage of the approaches described by AM (although one of AM's goals is to explain how to model when following the XP approach). A project team doesn't need to apply all of the practices, principles, and values of AM to benefit from it. I have always been a firm believer that you should tailor your software process to reflect the unique needs of your environment. It is my opinion, though, that, like XP, you are much more likely to succeed if you do adopt all of AM.
In future tips I'll explore the values, principles, and practices of Agile Modeling in detail.
- Agile Modeling (AM) Home Page
- Agile Software Development Manifesto
- The Object Primer 2nd Edition. by Ambler, S.W. New York: Cambridge University Press, (2001).
- Extreme Programming Explained: Embrace Change by Beck, K. Reading, MA: Addison Wesley Longman, Inc., (2000).
- Planning Extreme Programming by Beck, K. and Fowler, M. Addison Wesley Longman, Inc., (2001).
- eXtreme Programming (XP) Home Page
- Enhancing the Unified Process: Software Process For Large-Scale,
Mission-Critical Systems, a Ronin International white paper
Scott W. Ambler is a Practice Leader for Agile Development within the IBM Methods group. He develops process materials, speaks at conferences, and works with IBM clients worldwide to help improve their software processes. Scott is author of several books, listed on his Web site at www.ambysoft.com. Scott is also a recognized Ratonal Thought Leader, whose homepage may be viewed here.
Comments (Undergoing maintenance)





