The Evolution and History of Agile Modeling
Agile grew out of an industry frustrated with the lag time between a business need and the time it took to develop a product. Seventeen leaders in the software industry began meeting informally to find a way to overcome the limitations of the traditional and waterfall development models. These meetings which included Jon Kern, Kent Beck, Ward Cunningham, Arie van Bennekum, Alistair Cockburn, eventually led to a meeting in Utah in early 2001, and as a result the Agile Manifesto was born.
Even as the Agile Manifesto was being defined, Scott Ambler was working on Agile processes and ideas. He led the development of Agile Modeling, beginning in the fall of 2000. In 2002, Agile Modeling: Effective Practices for eXtreme Programming and the Unified Process was published by John Wiley Press. Agile Modeling was specifically developed to address deficiencies in eXtreme Programming (XP), one method of Agile software development. (However, it is useful with other processes, such Disciplined Agile Delivery (DAD), a hybrid agile framework that supports IT software development). Many developers objected to XP because they felt it set a high value on modeling projects to meet requirements and gave no time to the practice itself. But, as Scott Ambler says in his book, “…XP does not abandon modeling. Instead, it minimizes modeling efforts by taking a test-first approach to design in which you develop your tests before you develop your code. This forces you to think through how you will build your software before you actually build it, exactly as traditional design modeling does.” In Agile Modeling, Ambler combined aspects of the Unified Modeling Language (UML) and Rational Unified Process (RUP) to meet these challenges and create a best practice for modeling.
A better, more agile way to plan, track, and manage your projects with Smartsheet
Smartsheet is a cloud-based platform that allows teams and organizations to plan, manage, and report on projects, helping you iterate more effectively and achieve more. See Smartsheet in action.
Why Use Agile Modeling?
Agile Modeling is a critical element to the rapid and continuous delivery of software. It is less a roadmap of how to get to a destination than a picture of the destination itself, without which you won’t know the end goal. The model provides the developer with an understanding of what he or she will develop. Simultaneously, it provides the stakeholders with the same picture, which they can examine to ensure that the end goal meets their needs. This allows for rapid feedback and incremental updates throughout the process.
The Goals of Agile Modeling
Agile Modeling is designed to support the goals of software development. The overall objectives of Agile Modeling include:
- Defining best practices for effective modeling
- Offering a way to apply those best practices
- Showing how to improve the modeling approach
The Application of Agile Modeling
Agile Modeling was developed to meet the modeling needs of not only XP, but other popular Agile methods, such as Dynamic Systems Development method (DSDM), Scrum, and Feature-driven Development (FDD).
The first thing to understand about Agile Modeling is that it is not a rigid procedure, it’s a collection of best practices based on core principles.
Agile Modeling Principles
Ambler provides an excellent description of the principles of Agile Modeling. These include:
- Software is your primary goal
- Enabling the next effort is your secondary goal
- Remain agile by creating and maintaining only the models that you need
- Assume simplicity
- Embrace change
- Incremental change
- Model with a purpose
- Multiple models
- Quality work
- Maximize stakeholder investment
To fully realize the benefits of this process, it is important to incorporate all of the Agile Modeling principles. This may be considered a limitation of the practice, but Agile Modeling was developed as a synergistic whole, and if any principle is left out, the practice becomes less effective. Let’s examine this notion further.
It’s obvious that a principle such as quality work should be adopted, but why do you need to develop multiple models? Software is a complex entity that has to be understood from many different perspectives. For example, you may be developing an ordering system for online purchases. You will model the system from the customer perspective and build a user interface model that focuses on usability (ease of use). However, the online order also has to communicate with the back-end database, accounting, and other business systems. Therefore, an additional model may focus on process flow for the order placement and another may focus on the integration with dependent software solutions. In this manner, the system has to be understood from a variety of views and requires multiple models.
Effective application of Agile Modeling principles requires adopting all of them. In this way, it is not an adaptive system where you can leave out some elements to suit your needs, but it remains flexible so you only develop models that apply to your project.
When to Avoid Agile Modeling?
Although Agile Modeling is a worthwhile and proven practice, there are pros and cons. Modeling is practical and promotes communication, agility, and is flexible. However, you should, avoid Agile Modeling if these scenarios apply to your organization:
- You don’t use XP, DSDM, Scrum, or FDD. Agile Modeling was developed to address the need for a coherent modeling process in conjunction with these existing Agile methodologies.
- You are not prepared to adopt all of the principles. For Agile Modeling to be effective, you must commit to applying all of the principles when you develop models.
- Your stakeholders are not involved in the process. If your stakeholders are not involved, modeling efforts will not be successful.
- Your organization takes a top-down approach. Agile and Agile Modeling rely on distributed authority. If the team is entirely directed and does not participate in the requirements process, then Agile Modeling is not likely to add anything useful to the initiative.
- Your team is very large and/or distributed. Agile Modeling is designed for workers in close quarters, with lots of interaction.
Agile Modeling Success
If your organization has decided to adopt Agile Modeling as part of your Agile development practice, how do you ensure success? There are a few essential actions you can employ to ensure development runs smoothly.
Effective communication is essential for a project to succeed. At the heart of any successful Agile project are interactions between individuals who communicate their current status, obstacles they’ve encountered, their expectations, etc. While Ambler’s book provides a graph (Figure 8.1 Modes of communication) illustrating the most effective ways to communicate, keep in mind that everyone has a preferred mode of communication. Effective communication can come in any form, whether it is a phone discussion, an in-person meeting, or an email. One way to overcome communication limitations may be to add a regular modeling meeting to the daily Scrum meeting.
Ambler talks about the importance of culture. Occasionally, there are cultures that are hostile or lack commitment to Agile Modeling. In order to be successful, you’ll need buy-in from the team and stakeholders, which may require selling the concept.
The Modeling Room
A space dedicated to Agile Modeling demonstrates commitment and fosters success. The Agile workspace should have the right resources, such as whiteboards, markers, appropriate stakeholders, decision makers, team members, and a facilitator.
Model in Teams
Agile Modeling is a collaborative effort. Modeling does not require the entire development team to participate in every modeling session, but appropriate developers must be on the modeling team and everyone must contribute.
Model Throughout the Development Lifecycle
As you mature in your Agile process, development and modeling begin to occur in parallel. Development and the models must remain fluid. As you work on different aspects of the project, new models may be required and existing models may need updates.
Iorder to ensure modeling success, maintain a record of each model. This enables you to provide all stakeholders with a picture of what is going on and obtain feedback from outside of the modeling team.
Agile Modeling and Successful Agile Development
The success or failure of your Agile project depends on a multitude of factors, but modeling is key to effective Agile development. Without a picture of what you are building, developers may find themselves fumbling in the dark as they work from disparate and confusing user stories and requirements. Agile Modeling prevents wasted time and rework by setting the stage and keeping everyone on the same page, ensuring the team is working towards the same goal at the same time.
Benefits of Using Smartsheet for Agile Modeling
From simple task management and project planning to complex resource and portfolio management, Smartsheet helps you improve collaboration and increase work velocity -- empowering you to get more done.
The Smartsheet platform makes it easy to plan, capture, manage, and report on work from anywhere, helping your team be more effective and get more done. Report on key metrics and get real-time visibility into work as it happens with roll-up reports, dashboards, and automated workflows built to keep your team connected and informed.
When teams have clarity into the work getting done, there’s no telling how much more they can accomplish in the same amount of time. Try Smartsheet for free, today.