Unified Software Process

--Originally published at Computer Systems Engineering

“The Unified Process fits the general definition of a process: a set of activities that a team performs to transform a set of customer requirements into a software system. However, the Unified Process is also a generic process framework that people can customize by adding and removing activities based on the particular needs and available resources for a project.”  (Scott, K. 2001)

With the previous definition we made clear that it is not just a process, but a framework that can be modified to fit the needs that we have, it is an iterative process that allows an increasing understanding of the problem through refinement each time we go around in the process.

We can visualize the Unified Process as the image below:

Development-iterative

 

We can see the discilpines like Business Modeling, Requirements, etc. and we also can see the 4 main phases in which it is divided: Inception, Elaboration, COnstruction and Transition. Different amounts of work for each discipline vary depending on which phase of the developement we are in, we can see that symbolized in the image as the area that covers each respective space.

Let’s take a look into each discipline:

  1. Business Modeling: it focuses on understanding the organization and how the way this one works may impact the software that is being developed, taking into account the enterprise rules, mission, vision, organization model, etc.
  2. Requirements: listing the requierements like in any other process but focusing on making them in the form of use cases or UML models.
  3. Analysis and Design: Here we understand and analyze the requirements for the system, define an architecture, conceptualize a prototype and focus on the design of our system.
  4. Implementation: it consists of coding the system, the fun part 🙂
  5. Testing: this focuses on assuring the quality of the software, we
    software-process-models-36-638
    test cases and run them to see how the program behaves to be able to report defects.
  6. Deployment: in this part the software is deployed, completing one cycle or iteration. We plan the release, verions (alpha, beta,…), and train the users.

Now let’s focus on the phases:

software-process-models-36-638

  • Inception: it is when the “why” of the developement effort is defined. The initial project plan is created along with early use cases, core requitements, features and limitations along with very rough prototypes. What we want to achieve here is that stakeholders agree with the overall look of the project and to define the future developement goals.
  • Elaboration: is the part of the framework where we make a more detailed analysis and planning of the software. We understand the project domain and develope a more detailed plan. The complete (or at least a great part) of the use cases should be defined, a list of functional and non-funtional requirements, and a better prototype must be created.
  • Construction: the activities that we do in this phase are the building of the software and also the testing, the documentation of the software, and overall have a “beta” of the release.
  • Transition: thisis when the software is deployed and users begin to use it, we need to get feedback and validation from the users to be able to iterate and correct the necesary things.

 

References: