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.
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.
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:
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.
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:
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.
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.