Agile Modeling | there is more value in the modeling than in the model itself
Agile modeling

Agile Modeling is an approach to modeling software systems that is based on a family of practices, and guided by principles and values. It is not a software methodology and it does not prescribe detailed instructions for creating specific types of models. Rather it is a supplement to a software methodology that aims to improve the modeling activities using a 'near agile' doctrine, providing advice on how to apply modeling techniques effectively.

Practice what is preached

The values of Agile Modeling are communication, simplicity, feedback, courage, and humility.

The principles of Agile Modeling recognize that producing software is the primary goal - working software is, after all, the best measure of progress - and that enabling the next effort is the secondary goal - thereby ensuring a smooth transition to the next iteration or development phase. Requirements will evolve, so embrace change. The incremental change of a system supported by rapid feedback from project stakeholders enables an agile development process that can deliver pieces of functionality over time to suit business priorities. Complex software systems should be decomposed using multiple models. Knowing the models, understanding their relative strengths and weaknesses, enables them to be applied appropriately. During modeling, always assume simplicity because the best solution is often the simplest solution; certainly the simplest solution is easiest to maintain and enhance. It is important to model with a purpose, to understand why and for whom the model is being created. Not all models are used as documentation; in these cases the content is more important than the representation but always produce quality work, travel light and discard those that have served their purpose.

Effective teamwork requires all team members to recognize that everyone can learn from everyone else and to use open and honest communication. A development process is more efficient when it is intuitive; therefore it is desirable to work with people's instincts. Effective use of Agile Modeling requires its local adaptation to suit the project, the environment, the organization, and all the stakeholders.

The practices of Agile Modeling are:

  • Apply the right artifacts; create the right models to suit the situation.
  • Create several models in parallel to view the system from different, but complementary perspectives.
  • Iterate to another artifact when difficulties are encountered working in a particular model.
  • Model in small increments, dividing large pieces of functionality into smaller units that can be released progressively.
  • Create simple content; do not add unnecessary detail to models.
  • Depict models simply to suit the audience.
  • Use the simplest tool to create models, e.g. using a CASE tool to produce a temporary model is excessive.
  • Prove it with code; validate the model to determine whether it will actually work as expected.
  • Consider testability, i.e. if the software cannot be tested, it should not be built.
  • Model with others to obtain valuable input from different sources.
  • Active stakeholder participation engages the representatives that can provide important information and make timely decisions regarding the business aspects of the project.
  • Collective ownership enables the dissemination of information across the team allowing diverse experience to be gained by all team members.
  • Display models publicly to promote open communication and to demonstrate that valuable work is being performed.

An agile model is just enough

Agile models are sufficient when they are as simple as possible and still fulfill their original purpose, whether it is to communicate information or to understand a particular aspect of a problem domain, and when they contain a suitable level of detail, consistency and accuracy to allow them to be understood by their intended audience.

Back to top ^^

This page is valid XHTML 1.0 This page uses valid CSS

Requirements Analysis | OOA & OOD | Design Patterns | Agile Modeling

Methodologies | Project Management | Analysis & Modeling | Development | Testing | Quality Assurance

Home | Services | Contact Us