Agile Modeling Home Page

Easing Into Agile Modeling (AM)

Scott W. Ambler + Associates
 
   Home  |  AMDD  |  Best Practices  |  Architecture  |  Requirements  |  Analysis  |  Design  |  Documentation  |  Models  |  Modeling Style  |  Contact Us  |  Announcements  |  FAQ
Recently reviewed The first published description of AM appeared in the November 2000 issue of Software Development under the name eXtreme Modeling (XM).  I then led the evolution of the technique, for the most part via the Web although also at the XP 2001 conference held in Italy in May of that year.  AM started out fairly complex and it grew a bit into its current form.  In the time since I’ve been applying AM on projects, mentoring people in its techniques, teaching AM courses, and speaking about AM at a variety of conferences.   The one thing that I’ve noticed is that many people struggle with its plethora of concepts – five values, eleven core principles, seven supplementary principles, thirteen core practices, and eight supplementary practices – so it shouldn’t be any surprise that some people find AM complex.  Sigh.  

 

A question that I get asked is how can people get started with AM but perhaps not fully adopt it all at once.  Some organizations don’t want to adopt just the core principles and practices at first, let alone some of the supplementary ones.  One common situation is that the organization is very non-agile at the present moment, that adopting all the AM core is just too much to attempt at once.  It is clear that many people need a way to ease into AM slowly.

First, focus on improving communication between people.  Modeling with others is critical as is active stakeholder participation.  When you use simple tools it is much easier to model with others because there isn’t a tool learning curve to overcome, and simple tools also make it possible for your stakeholders to actively model with you.

Second, you should strive to keep things as simple as possible and to travel as light as possible.  This is easy to talk about but often proves quite difficult to do in practice, at least at first.  Using simple tools such as whiteboards and paper to create models is a critical first step, showing you that you don’t need sophisticated CASE tools to succeed.  Simple tools also make it much less painful to discard temporary models because you haven’t invested as much effort in them.

Third, adopt techniques that enable you to work in an evolutionary (iterative and incremental) manner.  Creating several models in parallel and iterating to another artifact are crucial practices, but this of course requires you to accept that you need multiple models.  Keeping your models small by working on them incrementally is also important.  Together, these techniques help to break you of any "big design up front" (BDUF) habits that you may have as well as any delusions that one single model is the primary artifact that drives all your development efforts.  For example it is quite common for people to insist that data models or use case models drive your projects, and this may in fact be true for a very small minority of projects, but often this attitude is the result of political ambitions more than any thing else.  Proving it with code is a critical practice that supports evolutionary development because it provides the link from modeling to implementation, once again helping you to break out of a BDUF mindset.

In short, to make this first step into AM you should consider adopting following principles and practices:

Beautiful Teams

Upon adopting these concepts you’ll discover that it is quite easy to add other ideas incremental.  For example, you’ll quickly discover that you’re getting rapid feedback by working in an evolutionary manner, and likewise that embracing change makes sense in such an environment.  Because you’re working closely together to create models you’ll soon see that collective ownership makes things much easier for you as does displaying models publicly.  As you gain more experience with the modeling techniques, something that happens quickly in an evolutionary environment, that you get much better at applying the right artifacts for the situation. 

In short, I think that you can see it is possible to ease into AM over time.  However, I want to make it perfectly clear that to truly be “doing AM” you must adopt the five values as well as all of the core principles and core practices.

 

This article has been excerpted from The Object Primer 3rd Edition: Agile Modeling Driven Development with UML 2.

 

Recommended Resources

The Object Primer 3rd Edition: Agile Model Driven Development (AMDD) with UML 2 The Object Primer 3rd Edition: Agile Model Driven Development with UML 2 is an important reference book for agile modelers, describing how to develop 35 types of agile models including all 13 UML 2 diagrams.  Furthermore, this book describes the techniques of the Full Lifecycle Object Oriented Testing (FLOOT) methodology to give you the fundamental testing skills which you require to succeed at agile software development.  The book also shows how to move from your agile models to source code (Java examples are provided) as well as how to succeed at implementation techniques such as refactoring and test-driven development (TDD).  The Object Primer also includes a chapter overviewing the critical database development techniques (database refactoring, object/relational mapping, legacy analysis, and database access coding) from my award-winning Agile Database Techniques book.
Agile Modeling Agile Modeling: Effective Practices for Extreme Programming and the Unified Process is the seminal book describing how agile software developers approach modeling and documentation.  It describes principles and practices which you can tailor into your existing software process, such as XP, the Rational Unified Process (RUP), or the Agile Unified Process (AUP), to streamline your modeling and documentation efforts.  Modeling and documentation are important aspects of any software project, including agile projects, and this book describes in detail how to elicit requirements, architect, and then design your system in an agile manner.
Elements of UML 2.0 Style The Elements of UML 2.0 Style describes a collection of standards, conventions, and guidelines for creating effective UML diagrams. They are based on sound, proven software engineering principles that lead to diagrams that are easier to understand and work with.  These conventions exist as a collection of simple, concise guidelines that if applied consistently, represent an important first step in increasing your productivity as a modeler.  This book is oriented towards intermediate to advanced UML modelers, although there are numerous examples throughout the book it would not be a good way to learn the UML (instead, consider The Object Primer).  The book is a brief 188 pages long and is conveniently pocket-sized so it's easy to carry around.

 

 

Let Us Help

We actively work with clients around the world to improve their information technology (IT) practices, typically in the role of mentor/coach, team lead, or trainer.  A full description of what we do, and how to contact us, can be found at Scott W. Ambler + Associates.


Disciplined Agile Delivery: The Foundation for Scaling Agile Agile Modeling: Practices for Scaling Agile Agile Data: Practices for Scaling Agile EnterpriseUP: Agility at Scale AgileUP: Towards Disciplined Agile DeliveryAmbysoft Inc. Software Development Practices Advisor Scott Ambler + Associates Follow @scottwambler on Twitter!


Copyright © 2003-2012 Scott W. Ambler

This site owned by Ambysoft Inc.