By definition, the Agile Unified Process is defined as a “simple, easy-to-understand approach to developing business application software using agile software development techniques and concepts,” but all the while still “remaining true to the RUP (Rational Unified Process).”
But of course, that kind of definition is a little difficult to make heads or tails of – especially to us regular people not used to techspeak and programming jargon. So in order to get a clearer definition of the Agile Unified Process – one we actually understand – it’s necessary to break it down into clearer, bite-sized chunks.
I. Rational Unified Process – Simplified
One of the first explanations of the Agile Unified Process (AUP) is that it’s a simplified version of the Rational Unified Process (RUP). It therefore stands to reason that we need to understand what RUP is if we want to grasp even the basics of AUP. Here’s a quick overview of its features:
Development Model. The Rational Unified Process is, first and foremost, a development model. It is used to effectively implement approaches to developing software – approaches that are commercially proven. These are then used throughout the entire software development lifecycle.
Adaptive. The Rational Unified Process is not a concrete model with a set of rigid, non-negotiable rules. It’s intended to adapt to each situation, effectively tailoring the model to the meet the specific needs of the software being developed.
Six Fundamental Practices. RUP is structured around what they consider the six ‘best practices’ that are commonly used throughout the industry: (1) develop software iteratively, (2) manage requirements, (3) use component-based architecture, (4) visually model software, (5) verify software quality, and (6) control changes to software.
II. RUP versus AUP: The Difference
The Agile Unified Process is, ultimately, a simpler take on RUP. It is also a development model that offers an “easy to understand” approach to developing business application software. As the name suggests, AUP uses agile software development methods and approaches that are fundamentally different from RUP techniques, but still somehow manage to remain true to the flexibility and adaptability of RUP.
AUP also possesses six (6) fundamental philosophies. However, they aren’t the same ‘best practices’ that RUP subscribes to. Instead, the six philosophies are:
- Your Staff Knows What They Are Doing. Pretty self-explanatory; AUP requires that the people using it actually know and understand how to use it. Detailed process documentations are available for reference, but should not be used as a literal step-by-step how-to guide.
- Simplicity. AUP values concise and succinct overviews over needlessly over-detailed and repetitive reports
- Agility. The Agile Unified Process subscribes to the values and principles of agile software development (which we’ll cover in a minute) and the Agile Alliance
- Focus on High-Value Activities. Developers who use the AUP method only concentrate on activities that will actually get results, rather than splitting their focus amongst activities, contingencies, and possibilities.
- Tool Independence. AUP does not specify any toolset for project completion, which means developers are free to use whatever they prefer. It is highly recommended that you use tools that are best suited for the job’s specific needs. In other words, under AUP, tools can vary from project to project.
- Tailor the AUP to Meet Your Needs. Much like RUP, AUP is all about adapting the methods to the project – not the other way around. Whatever your software development needs, the AUP model should (ideally) be tailored to suit them.
III. What is Agile Software Development?
The Agile Unified Process conforms to the values and principles of Agile Software Development. To sum it up, agile software development is an approach wherein the collaborative effort of the software development team and the end users (consumers) dictate the way the requirements and solutions of the approach evolve.
Much like the Rational Unified Process, agile software development advocates adaptive planning. It also encourages constant development and continuous improvement, in turn encouraging immediate and flexible response to change.
It is so called because the approach is quite agile in respect to different projects and all that they entail; different needs, different parameters, different contingencies, different risks.
A big part of agile software development and AUP is being flexible and able to easily accommodate changes and variations.
IV. The AUP Life Cycle: 7 Disciplines
AUP has seven (7) disciplines and four (4) iterations of these disciplines. Unlike RUP, which has a grand total of nine (9) phases, AUP’s lifecycle is not split into two discipline groups. Instead, all seven are counted as phases of the AUP lifecycle. It keeps things simple and straightforward, which are the key features of AUP. These seven phases are:
- Configuration Management
- Project Management
First and foremost, you need to understand your client’s business and the problem they want to address through their software. Model requires you to know their specific problem domain in order to identify a viable solution. Once you do that, your team can move forward into implementation, where the model (or models) is written out into a code. The code is then executed and tested using a basic level of testing (i.e. unit testing) only.
Once it passes the first level, you can then run it through more comprehensive tests. The test phase is where you perform objective evaluations to validate that the code works, find defects and flaw, verify that the project requirements are met, and – of course – ensure software quality. If the software passes this phase, it’s ready for deployment. This phase is where you plan the system delivery to ultimately make the software available to your end users.
Configuration Management basically refers to the moment after deployment where you manage your team’s access to project artifacts. This helps you track the changes and versions made to the project in question. Project Management, on the other hand, is when you focus on the project instead of the software itself. This is a little more comprehensive phase that requires you to manage risks, assign tasks, track progress, and coordinate with the necessary parties and systems to ensure deliverables meet the deadline and budget.
The final phase, environment, is mostly about supporting the collaborative efforts of your development teams by making sure the tools, standards, and guidelines are immediately available for them as needed.
V. Agile Software Development & AUP: Conclusion
The reason agile software development and AUP have become such a huge hit with developers and business owners is because of their flexibility, adaptability, and simplicity. Agile approaches are simple and user-friendly, and the straightforwardness of the method is a refreshing change of pace from the jargon-heavy redundancies of other software development models. Working with a software development team that uses agile methods ensures fully functional solutions that are unique, effective, and tailored specifically to address problem domains.