Core Principles
Four core principles capture the general intentions behind this process and create the foundaton for interpreting roles and work products and performing tasks.
Relationships
Main Description

OpenUP Core Principles

OpenUP springs forth from four mutually supporting core principles:

Collaborate to align interests and share understanding.

Software is created by people with different interests and skills who must work together to create software effectively. Therefore develop collaborative practices that foster a healthy team environment. Good collaborative practices align the interests of project participants (e.g. development team, quality assurance, product stakeholders, customers) and help project participants develop a shared understanding of the project.

Balance competing priorities to maximize stakeholder value.

Rarely can a system be all things to all people and often attempts to do so are wasteful and result in bloated systems.

Therefore stakeholders and developers must clearly understand and agree upon:

  1. the problem to be solved,
  2. the constraints placed on the development team (cost, schedule, resources), and
  3. the constraints placed on the solution

The developers and stakeholders must collaborate to develop a solution that maximizes stake holder benefits and is compliant with constraints placed on the project. Achieving balance is a dynamic process for as the both the stake holders and developers learn more about the system, priorities and constraints change.

Focus on articulating the architecture.

Without a focal point a system can evolve in an inefficient and possibly haphazard way. Such as system may prove difficult to evolve, re-use, or integrate without substantial rework. Furthermore, it may prove difficult to organize the team or communicate ideas without a common focus.

Therefore, articulate essential technical decisions through a growing architecture. Develop the architecture of the system early and use the architecture and use the architecture as a focal point for the developers to align their interests and ideas.

Evolve to continuously obtain feedback and improve.

It is usually not possible to know all stake holders needs, be aware of all project risks, comprehend all project technologies, or know how to work with your colleagues. Even if it were possible to know all these it is unlikely they will not change over the life of the project.

Therefore divide the project up into short time boxed iterations to demonstrate incremental value and obtain early and continuous feedback. Shift the focus of the iterations as the project evolves.