We are asked from time-to-time whether OUM is considered to be "agile". There is not really a short answer to this question so this blog entry addresses the key characteristics of OUM that make it an agile method.
First of all, OUM is not "waterfall", but instead promotes an iterative and incremental approach to development and deployment of information systems. Any of the tasks within OUM may be iterated. Tasks may be iterated to increase quality of the work products to a desired level, to add sufficient level of detail, or to refine and expand the work products on the basis of user feedback.
In addition to having an agile iterative and incremental development approach, OUM also:
Is flexible and scalable – OUM is designed to support a broad range of project types. As such, it must be flexible and scalable. The appropriate point of balance for a given project will vary based on a number of project risk and scale factors. The method has been developed with the intent that the approach for a given project be “built up” from a core set of activities to implement an appropriate level of discipline, rather than tailored down.
Allows for frequent customer interaction and feedback – OUM encourages regular sessions with stakeholders to review and confirm priorities, and ensure the project continues to meet the overall objectives. Through several prototyping and testing tasks, business stakeholders are given the opportunity to review the development work completed to that point, and provide feedback in time to catch missed requirements and/or possible errors.
Employs a layered planning approach – OUM recognizes that plans need to be scalable for different project sizes and complexity, and contain the right level of detail for the current planning horizon. The layered approach to planning an OUM project allows project teams to take an agile approach to their immediate project tasks, while keeping a focus on the major milestones, controls, and objectives of the project.
Encourages the use of an empowered team – OUM encourages cross-functional and technical team training and knowledge sharing. In addition, the use of OUM’s common language and visual models (use cases and business process models) throughout the project helps ensure the development team and other project stakeholders are on the same page, which promotes team communication and collaborative decision making.
Integrates testing throughout the development lifecycle – Testing in OUM starts early in the project, and developed components are integrated and tested as an integrated set as soon as possible. This allows for early discovery of errors that eventually reduces the risk of project delays that often are caused by heightened error detection at the end of the project.
Promotes an architecture-centric approach – People will sometimes question whether spending time and energy on architecture is compatible with an agile approach. The answer is that a robust architecture is crucial to the project’s success since it is the blueprint upon which requirements are transformed into a working system. Poor architecture decisions can result in software that is not stable, is unable to support business requirements, could require substantial re-work, may not accommodate future development, or could even prevent the application from working properly in a production environment. Nothing about poor architecture sounds too agile, does it?
I could go on for a while about OUM’s agile underpinnings; the bottom line is that OUM supports all kinds of projects – from the very lean and adaptable, to those that require more rigor and discipline. If you want to find out more about how OUM can be applied in an agile manner, check out the Scrum View which brings together in once place all of the OUM tasks associated with managing a Scrum project as well as all the OUM supplemental content.
So the answer then is a resounding "yes" (which I suppose is actually the short answer to the question posed in the title of this blog) - OUM is indeed considered to be "agile" and can support agile development.