Posted on

Agile Modeling

Agile Modeling (AM) is a practice-based methodology for effective modeling and the documentation of software-based systems.  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 light-weight manner.  AM is meant to be tailored into other, full-fledged methodologies such as XP (eXtreme Programming) or RUP (Rational Unified Process), enabling you to develop a software process which truly meets your needs.  This tailoring work has already been done in the form of the Disciplined Agile Delivery (DAD) process framework.

The five values of AM, adopting and extending those of eXtreme Programming v1, are: Agile Modeling

  1. Communication – Models promote communication between your team and your project stakeholders as well as between developers on your team.
  2. Simplicity – It’s important that developers understand that models are critical for simplifying both software and the software process—it’s much easier to explore an idea, and improve upon it as your understanding increases, by drawing a diagram or two instead of writing tens or even hundreds of lines of code.
  3. Feedback – By communicating your ideas through diagrams, you quickly gain feedback, enabling you to act on that advice.
  4. Courage – It’s important because you need to make decisions and be able to change direction by either discarding or refactoring your work when some of your decisions prove inadequate.
  5. Humility – The best developers are humble and acknowledge that they don’t know everything.  They seek the expertise that their fellow developers, their customers, and project stakeholders have.  All team members involved with your project have equal value and should be treated with respect.

The keys to modeling success are to have effective and concise communication between all project stakeholders.  Strive to develop the simplest solution possible that meets all the customers needs and obtain feedback early and often. Have the courage to make and stick to your decisions, and have the humility to admit that you may not know everything, that others have value to add to your project efforts.

AM is based on a collection of principles, such as the importance of assuming simplicity when you are modeling and embracing change as you are working because requirements change over time.  You should recognize that incremental change of your system over time enables agility and that you should strive to obtain rapid feedback on your work to ensure that it accurately reflects the needs of your project stakeholders.  You should model with a purpose, if you don’t know why you are working on something or you don’t know what the audience of the model/document actually requires then you shouldn’t be working on it.

Furthermore, you need multiple models in your intellectual toolkit to be effective.  A critical concept is that models are not necessarily documents, a realization that enables you travel light by discarding most of your models once they have fulfilled their purpose.  Agile modelers believe that content is more important than representation, that there are many ways you can model the same concept yet still get it right.  To be an effective modeler you need to recognize that open and honest communication is often the best policy to follow to ensure effective teamwork. Finally, a focus on quality work is important because nobody likes to produce sloppy work and that local adaptation of AM to meet the exact needs of your environment is important.

To model in an agile manner you will apply AM’s practices as appropriate.  Fundamental practices include creating several models in parallel, applying the right artifact(s) for the situation, and iterating to another artifact to continue moving forward at a steady pace.

Modeling in small increments, and not attempting to create the magical “all encompassing model” from your ivory tower, is also fundamental to your success as an agile modeler.  Models are only abstract representations of software, abstractions that may not be accurate, you should strive to prove it with code to show that your ideas actually work in practice and not just in theory.  Active stakeholder participation is critical to the success of your modeling efforts because your project stakeholders know what they want and can provide you with the feedback that you require.

The principle of assume simplicity is a supported by the practices of creating simple content by focusing only on the aspects that you need to model and not attempting to creating a highly detailed model, depicting models simply via use of simple notations, and using the simplest tools to create your models.  You travel light by single sourcing information, discarding temporary models and updating models only when it hurts.

Communication is enabled by displaying models publicly, either on a wall or internal web site, through collective ownership of your project artifacts, through applying modeling standards, and by modeling with others.  Your development efforts are greatly enhanced when you apply patterns gently.  Because you often need to integrate with other systems, including legacy databases as well as web-based services, you will find that you need to formalize contract models with the owners of those systems.

To discuss this or other development methodologies with one of our team members, please schedule a 30 minute consultation.  For more information, please review the 12 Principles of Agile Development.