Agile Modeling (AM)
Agile Modeling is a practice-based methodology for effective modeling and documentation of software-based systems. Simply put, Agile Modeling 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. Agile Modeling is a supplement to other Agile Methodologies such as:
The development of agile modeling was led by Scott Ambler starting in the autumn of 2000. It initially was called extreme modeling (XM) but at the suggestion of Robert Cecil Martin was renamed to AM in the spring of 2001.
Agile Modeling Core Principles
- Model with a Purpose: Many developers worry about their work when they are creating models. What they are not doing is stepping back and asking why the're developing the models and who they are developing it for.
- Assume Simplicity: Keep models as simple as possible and assume the simplest solution is the best solution. Only model what you need today and trust that you can remodel later if needed.
- Embrace Change: Change happens on a project as understanding grows. Rather than fight changes to your models, accept them and have the courage to rebuild.
- Enabling the Next Effort is Your Secondary Goal: Others might need to extend or improve your project after you leave. Leave enough documentation and models to enable the next person or team to improve or make changes to the model.
- Incremental Change: It is very hard for a model to be complete the first time it's developed. Models change over time as the project develops. Always make small changes to models as required.
- Maximize Stakeholder Investment: The team must be in it to produce software to maximize return for the customer. The team must strive to develop software that meets the needs of the stakeholders.
- Multiple Models: There are many ways of modeling solutions; choose those that fit best according to the given situation.
- Quality Work: Nobody likes sloppy work. The people doing the work don't like it because it's something they can't be proud of, the people coming along later to refactor the work (for whatever reason) don't like it because it's harder to understand and to update, and the end users won't like the work because it's likely fragile and/or doesn't meet their expectations.
- Rapid Feedback: Getting quick feedback on the model will close the loop of understanding the model. The best process is to model a little, show the model for review and then model again. This insures accuracy of the model while increasing the developers own knowledge.
- Software is Your Primary Goal: Models are a means to the end; the en is to build software for your customer. Documentation and modeling must directly support the goal of software development.
- Travel Light: Traveling light means that you have just enough documentation about the models that you are developing. If it's too little documentation the developing team might loose its way; too much and the developing team will have forgotten that the primary goal is not writing documentation but software and building the right models.
Pros and Cons of Agie Modeling
Pros of the Agile Model
- Emphasis of Modern Techniques: While a core value of the agile model places emphasis on people over technologies, stepping outside the realm of technologies themselves and into a pure focus on techniques brings about powerful, agile practices such as test-driven development, automated unit testing, refactoring, and iterative development.
- Highly Adaptive: As one of the fundamental agile values states, a key component to the agile model, and which partially makes it such a good launching pad for the entire software development life cycle, is the capability of the project to rapidly adapt to any necessary changes. Whether this is from rapid iterations informing the changing needs within the code or client feedback forcing a reshaping of the sign-up procedures, a properly Agile project is able to quickly and effectively change course as needed.
- Constant Customer Feedback: Although the constant communication with customers and clients requires a dedicated team member to take on this responsibility, it is a critical component to ensuring the success of the product from both a development perspective as well as from that of the client.
- Allows for Iterative Development: Common models like the Iterative Model are based on the fundamentals of the agile model, and for good reason: It allows the project to be started with relatively little upfront planning or cost. From these early components the project can evolve over time as new incremental iterations are made, constantly learning from past iterations and improving on them for future updates.
Cons of the Agile Model
- Potential for Increased Technical Debt: The concept of technical debt describes the act of implementing a solution that is easier to complete right now, in favor of the solution that may be better overall in the long run. Within the scope of the agile model, it is not uncommon for technical debt to begin to run rampant, as rapid development techniques and frequent iterations often mean developers feel hurried and thus forced to implement faster but generally less-than-ideal band-aids. This issue can largely be reduced by ensuring the team properly integrates refactoring, pair programming, and other techniques which emphasize collaboration amongst team members.
- Difficult to Make Additions Within an Iteration: Often referred to as use cases in other development models, a story in the agile model simply refers to a description of some new project requirements. When actively utilizing the agile model for an ongoing project, it can sometimes be difficult to implement a new story into the current iteration, since it forces backtracking and heavy mental overhead on how to implement the new requirements of this story into the existing iteration that has largely already being developed. In such cases, it is often necessary to delay the implementation of the new story until the next iteration comes about.
- Minimal Emphasis on Documentation: Unlike more traditional models like the Waterfall Model, the agile model largely forgoes initial efforts to heavily design and document the project requirements or scope, in favor of getting into the meat of the project and beginning that iterative process. This can be a challenge for some projects, particularly within development teams which may not be accustomed to this style of agile development and which may have more traditional experience instead.
Agile Modeling Best Practices
Another way to look at Agile Modeling is as a collection of best practices
source: Agile Modeling
- Definition of Agile Modeling [^http://www.selectbs.com/process-maturity/what-is-agile-modeling%7CSelectbs]
- Historical background of Agile Modeling Wikipedia
- Agile Modeling Core Principles umsl.edu
- Pros and Cons of Agie Modeling Airbrake.io
- Agile Modeling Best Practices [^http://www.agilemodeling.com/essays/introductionToAM.htm AM]