The Agile Modeling (AM) Method

Agile Modeling: An Introduction

Agile Modeling (AM) is a practice-based methodology for effective modeling and documentation of software-based systems. Simply put, Agile Modeling (AM) is a collection of valuesprinciples, and practices for modeling software that can be applied on an initiative in an effective and streamlined manner. As you see in Figure 1 AM is meant to be tailored into other, methodologies such as XP Scrum, Kanban, SAFe, and so on enabling you to develop a software process which truly meets your needs.
Figure 1. AM enhances other software processes.

Scope of AM

The values of Agile Modeling, adopting and extending those of eXtreme Programming v1, are communicationsimplicityfeedbackcourage, and humility. The keys to modeling success are to:

  • Have effective communication between all stakeholders.
  • Strive to develop the simplest solution possible that meets all of your needs.
  • Obtain feedback regarding your efforts often and early.
  • Have the courage to make and stick to your decisions.
  • Have the humility to admit that you may not know everything, that others have value to add to your initiative.

Agile Modeling is based on a collection of principles. This includes assuming simplicity when you are modeling and embracing change because requirements will evolve in time. 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 stakeholders.  Model with a purpose, because if you don’t know what the audience of the model/document actually requires then you shouldn’t be working on it. You need multiple models in your intellectual tool kit to be effective. Travel light by discarding most of your models once they have fulfilled their purpose – models are not necessarily documents. Agile modelers believe that content is more important than representation, that there are many ways you can model the same concept. Recognize that open and honest communication enables effective teamwork. Finally, a focus on quality work is important because nobody likes to produce sloppy work nor have it given to them.

To model in an agile manner you will apply Agile Modeling’s practices as appropriate. Fundamental practices include creating several models in parallelapplying the right artifact(s) for the situation, and iterating to another artifact to continue moving forward at a steady pace. Modelin small increments, and don’t attempt to create the magical “all encompassing model” from your ivory tower. Because models are only abstract representations of software, 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. 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 informationdiscarding 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 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. Read this article for a better understanding of how AM’s practices fit together.

AM is an agile approach to modeling, that at its core AM is simply a collection of practices that reflect the principles and values shared by many experienced software developers. With an Agile Model Driven Development (AMDD) (see Figure 2) approach you typically do just enough high-level modeling at the beginning of an initiative to understand the scope and potential architecture of the system, and then during development iterations you do modeling as part of your iteration planning activities and then take a just in time (JIT) model storming approach where you model for several minutes as a precursor to several hours of coding.

Figure 2. Agile Model Driven Development (AMDD) (click to enlarge).

Agile Model Driven Development (AMDD) lifecycle

Another way to look at Agile Modeling is as a collection of core practices, as you see in Figure 3.

Figure 3. The core practices of Agile Modeling.

My experience is that these practices can be applied to most IT initiatives, you don’t have to be working on an initiative following an agile or lean software process to take advantage of the approaches described by AM, although one of AM’s goals is to explain how to model when following an agile approach. A 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 way of working (WoW) to reflect the unique needs of your environment – although it is my opinion that you are much more likely to succeed if you do adopt all of AM.

Agile Modeling History – What We Were Thinking