RUP Interview Questions and Answers -- overview

Q: What is RUP?
A: Rational Unified Process (RUP) is a general framework that can be used to describe a development process. The software development cycle has got 4 phases in the following order Inception, Elaboration, Construction, and Transition

The core of the phases is state-based, and the state is determined by what fundamental questions you are trying to answer:

Inception - During the inception phase, you work out the business case for the project. You also will be making a rough cost estimate and return on investment. You should also outline the scope and size of the project.

What key question do you ask at the end of this phase? Do you and the customer have a shared understanding of the system?

Elaboration - At this stage you have the go ahead of the project, however only have vague requirements. So, at this stage, you need to get a better understanding of the problem. Some of the steps involved are:
  • What is it you are actually going to build?
  • How are you going to build it?
  • What technology are you going to use? 
  • Gather requirement risks, technological risks, skill risks, political risks etc.
  • Develop a domain model, use case model and a design model. The UML techniques can be used for the model diagrams (e.g. class diagrams, sequence diagrams etc).
An important result of the elaboration phase is that you have a baseline architecture. This architecture consists of:
  • A list of use cases depicting the requirements.
  • The domain model, which captures your understanding of the domain with the help of the class diagrams.
  • Selection of key implementation technology and how they fit together. For example: Java/JEE with Spring, JSF, Hibernate, XML, etc.

What key question do you ask at the end of this phase? Do you have a baseline architecture to be able to build the system?

Construction - In this phase, you will be building the system in a series of iterations. Each iteration is a mini project. You will be performing analysis, detailed design, unit testing, coding, system testing, and integration testing for the use cases assigned to each iteration. The iterations within the construction phase are incremental and iterative. Each iteration builds on the use cases developed in the previous iterations. The each iteration will involve code rewrite, refactoring, use of design patterns, etc.

The basic documentation required during the construction phase is:
  • A class diagram and a sequence diagram.
  • Some text to pull the diagrams together.
  • If a class has complex life cycle behavior then a state diagram is required. 
  • If a class has a complex computation then an activity diagram is required. 

The fundamental question you ask at the end of this phase:  do you have a developed product?

Transition - During this phase, you will be delivering the finished code regularly. During this phase there is no coding to add functionality unless it is small and essential. There will be bug fixes, code optimization, etc during this phase. An example of a transition phase is that the time between the beta release and the final release of a product. The hand over documentation and training manuals need to be produced.

What key question do you ask at the end of this phase? Has the customer taken ownership of the developed product or system?
Q. What are the key underlying principles of RUP?
A. RUP is based on a few important philosophies and principles:
  • A software project team should plan ahead.
  • It should know where it is going.
  • It should capture project knowledge in a storable and extensible form.
The best practices of RUP involve the following major 5 properties:
  • Use case driven: Interaction between the users and the system. 
  • Architecture centricbased on architecture with clear relationships between architectural components.
  • Iterative: the problem and the solution are divided into more manageable smaller pieces, where each iteration will be addressing one of those pieces. 
  • Incremental: each iteration builds incrementally on the foundation built in the previous iteration. 
  • Controlledwith respect to process means you always know what to do next; control with respect to management means that all deliverables, artifacts, and code are under configuration management. 

Q: Why is UML diagrams important? 
A: The more complicated the underlying system, the more critical the communication among everyone involved in developing and deploying the software. UML is a software blueprint language for analysts, designers and developers. UML provides a common vocabulary for the business analysts, architects, developers etc. 

UML is applicable to the Object Oriented problem solving. UML begins with a model; A model is an abstraction of the underlying problem. The domain is the actual world from which the problem comes. The model consists of objects. The objects interact with each other by sending and receiving messages. The objects are characterized by attributes and operations (behaviors). The values of an object’s attributes determine its state. The classes are the blueprints (or like templates) for objects. A class wraps attributes and methods into a single distinct entity. The objects are the instances of classes.

Q: Where can you use RUP? 
A: Principles of RUP can also be used as an agile (i.e. lightweight) process for smaller teams of 20-30 people, or as a heavy weight process for larger teams of 50-100 people. Extreme Programming (XP) can be considered as a subset of RUP. The agile (i.e lightweight) software development process is more popular across organizations. Several methodologies fit under this agile development methodology banner. All these methodologies share many characteristics like iterative and incremental development, test driven development, daily stand up meetings to improve communication, automatic testing, build and continuous integration of code, etc. The best software development process is what works best for your organization. Organizations that are still using the waterfall approach make use of some of the agile practices like stand up meetings to improve communication, automatic testing, build and continuous integration of code, etc.
Many organizations make use of the hybrid approach by cherry picking the practices that work well for them. It basically requires the right processes, tools, and culture in place to build quality software by managing complexities more effectively NOT just efficiently. There is a big difference between being efficient and effective.
  • Being efficient is the process of staying busy without idle moments -- e.g. working overtime, throwing more resources, etc.
  • Being effective is the process of producing the maximum results in the minimum time, with the minimum effort -- e.g. having the right people, process, and the culture.
 So, if you see that the software development process can be improved in your organization, take the initiative to drive the necessary changes. Become a change agent by championing "environment improvement" or "process improvement" programs.

Organizations that are passionate about their agile development process may grill you on this very topic. Here are some external links that I found useful.

No comments:

Post a Comment