To understand UP, we must first go through some basic
concepts that are the foundations of UP. UP defines 4 basic semantics in its
Roles: This describes a role played by an
individual or a team within a project. Each role can include many individuals
and multiple teams. Examples of roles are QA officer, developer, project
manager, tester, etc.
Activities: This describes the tasks that are
performed by the different roles in the life cycle.
Artifacts: This describes the things that act as
input to the project or as an output from it. This includes source code,
executables, different forms of documentation, coding standards, company forms
and so on.
Workflows: These are sequences of related activities performed by specific roles.
These are sometimes referred to as disciplines. This is the corner stone
concept behind UP. We will discuss the workflows present in UP in later
In addition to
the above semantics, UP is characterized by being:
Requirements - Centric: UP thoroughly focuses on
the user requirements collected at the beginning of the project and refined
throughout the life cycle. We will discuss in brief this topic later in the
article and in more detail in a later article.
Architecture driven: At the core of the UP is
developing robust system architecture of the software we are building.
Iterative and incremental: This means that the UP
breaks the project into small sub projects (iterations) and delivers the
software in parts (the increments). This is where the UP varies from the old
waterfall model of software development. We will indulge in this concept in
more detail in the next section.