Tuesday, December 30, 2008

About Renowned RUP

Talk of developing software which will do a list of things, all verbal and what runs next is how to go about developing it. Let start implementing... but wait ..is it the right way I am heading to. Really not, atleast this was not what I have been studying. There is term I remember i.e. Software Methodology, means framework for structuring, planning and controlling the process of developing software. Next strikes you is Waterfall model, the most heard and the most cursed J. People thought of building software like constructing a building and devised the above model. Recently , I studied RUP (rational Unified Process) , another software development and methodology. At first glance to it, it again looks like an abstract layer of waterfall model like any other methodologies look like. There are drawbacks of Waterfall model but at micro level of any methodology, we are actually following the sequential steps of waterfall model only. It is just same as adding abstract classes in java so that can be defied or altered according to the changing needs.

RUP contains 4 phases, 9 disciplines, key principles and some concepts. Then in the next round, I studied about Agile Methodology. I have carried out a project following Agile Methodology and hence it was very easy to relate what was being explained. I was at ease relating all the concepts of user stories in Agile Methodology to relate with the ones I created.

On a higher level, following is the RUP Vs Agile deeds

Although RUP is iterative, it follows the phases of inception, elaboration, construction, and transition in a more or less linear fashion. As the development proceeds less time is spent on requirements and analysis, and more time is spent on construction, testing, and transition. Agile processes on the other hand, spend time on each activity in each iteration. During each iteration (usually 2-4 weeks) a little of all steps (requirements, analysis, design, development, test, etc.) are undertaken. The goal is to have stable software which could be shipped at the end of each iteration. At the beginning of each iteration, all stakeholders meet to reorganise requirements and their priorities, while at the end of the iteration, working software is demonstrated to the stakeholders. This ensures that customer value is being added at all times, and that progress is being made on what matters, working software.

RUP is quite comprehensive, and were designed to be modified to suit the project being developed. This adds another layer of complexity to the development effort, as the process has first to be modified before being implemented. While this allows for the flexibility to use RUP on any project, it requires teams to have access to RUP experts to ensure that the process is being defined and used properly. Agile on the other hand tends to be used for small to medium sized projects involving teams up to 10 closely knit developers. Once teams become bigger than this, agile methodologies begin to fail, as they don’t scale to large teams, or teams spread across geographies.

But what stuck in my mind was the RUP Vs Agile. I was not interested in knowing the known theoretical things about the Vs issue but what would have interested me was what kind of projects will be perfect for RUP or Agile, how to evaluate an project as best fit for RUP or not, What alterations will be required to follow RUP and Agile at iteration levels??