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?
- 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).
- 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.
- 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.
- Use case driven: Interaction between the users and the system.
- Architecture centric: based 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.
- Controlled: with 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.
- 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.
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.