EUP Best Practices
The EUP promotes the following best practices:
- Develop iteratively. Developing in iterations allows projects to address risks on a priority basis. It allows for a constant measuring of progress, as iterations have a fixed time window and a specific goal to be met.
- Manage requirements. A key to delivering a system that meets stakeholders’ needs is identifying and then managing the requirements for the system. This includes gathering, documenting, and maintaining of requirements; incorporating changes in a systematic manner; and potentially even tracking and tracing the requirements to the design. This effort can be very formal or very agile—your task is to find the right approach for your situation.
- Proven architecture. You want to identify and then prove through prototyping an architecture that is appropriate for the system that you’re building.
- Modeling. Modeling helps people envision and think through concepts and then share those ideas with others. Modeling can be done with high-powered, GUI-based software applications or simply with sketches on whiteboards. A quick visit to the Agile Models Distilled web page quickly reveals that a wide range of models is available.
- Continuously verify quality. Testing happens throughout each iteration of the RUP project—instead of a single, large testing effort at the end. Ensuring quality goes beyond testing software to ensure that it meets requirements—reviews of requirements, design, and mockups with stakeholders are also part of continuous quality verification. Testing for and catching defects early is much more efficient than a comprehensive approach to testing at the end.
- Manage change. Change must be expected and handled appropriately for a project to run smoothly and to take advantage of changes that may give the project a competitive advantage. A wide range of artifacts—documents, models, plans, tests, code, and so on—will potentially be affected by any changes; as agilists point out, you want to travel as light as possible to minimize the impact.
- Collaborative development. Systems are built by teams of people, and if these people don’t work together effectively, the overall project risks failure. Primary collaboration techniques include pair programming, where two people work together to develop code;  modeling with others, which promotes the concept that several people are more effective modeling together than working separately; and active stakeholder participation, which promotes the concept that project stakeholders should provide information and make decisions in a timely manner and be involved with the development effort itself. 
- Look beyond development. Not only do you need to build and deploy a system into production, but you need to operate and support it after it’s there. Furthermore, your system must fit into the overall organization, the implication being that you need to ensure that your system reflects common enterprise norms.
- Deliver working software on a regular basis. The primary measure of success for a software development project should be the delivery of working software that meets the needs of its users.
- Manage risk. Effective project teams strive to identify and then manage the risks that they face, either mitigating them completely or reducing their potential impact as appropriate.