RUP
Por Arthur Silva Freire
(arthur.freire@ccc.ufcg.edu.br)
Para escalar um time de futebol, alguns treinadores passam cerca de semanas tentando montar um esquema tático. É necessário atribuir funções aos integrantes do time para que a equipe tenha o melhor desempenho em uma determinada partida. Essas dificuldades também existem na elaboração de um software.

No contexto de software, podemos definir um processo da seguinte maneira: ação regular e contínua realizada de forma definida, levando a um resultado. Existem diversos processos utilizados na elaboração de um software. Podemos dividi-los em duas categorias: os tradicionais (pesados) e os ágeis (leves). Neste mês, falaremos sobre um processo de desenvolvimento de software bastante tradicional, o RUP (Rational Unified Process).

Criado por Ivar Jacobson, Grady Brooch e James Rumbaugh em meados de 1990, RUP usa a abordagem O.O. (Orientado a Objeto) no seu desenvolvimento, utiliza técnicas e práticas adotadas comercialmente e é projetado e documentado utilizando a linguagem UML (Unified Modeling Language). O desenvolvimento seguindo RUP é guiado por casos de uso, centrado na arquitetura e, é iterativo e incremental.

A imagem abaixo mostra detalhadamente a arquitetura do processo em questão. O eixo horizontal representa o tempo e mostra o ciclo de vida do processo. Por outro lado, o eixo vertical representa as atividades e workflows do processo.

Arquitetura do RUP.

Existem quatro fases do ciclo de vida do RUP:

  • Concepção: entendimento da necessidade e visão do projeto (ênfase no escopo do sistema);
  • Elaboração: especificação e abordagem dos pontos de maior risco (ênfase na arquitetura);
  • Construção: desenvolvimento principal do sistema (ênfase no desenvolvimento);
  • Transição: ajustes, implantação e transferência de propriedade do sistema (ênfase na implantação).

O RUP é iterativo e incremental, pois é desenvolvido em mini-projetos (iterações) que incrementam o desenvolvimento. Cada iteração é planejada com base nos casos de uso e nos riscos mais importantes do desenvolvimento. Os requisitos do sistema são constantemente capturados e refinados durante o seu desenvolvimento, pois nem sempre o cliente tem a capacidade de defini-los por completo no início. Existe uma preocupação quanto ao reuso, extensabilidade, manutenção e adaptação, pois os requisitos podem mudar ao longo do desenvolvimento.

A figura a seguir permite entender melhor os conceitos iterativo e incremental.

Estrutura Dinâmica do Desenvolvimento Iterativo.

Não é fácil implantar um processo iterativo. Fazer um trabalho convergir para um produto, determinar o que fazer em cada iteração, saber quais riscos e requisitos considerar em cada uma delas e saber como resolver os problemas que surgirão, são algumas questões que podem ser levantadas. Com base nessas considerações, RUP utiliza milestones, que fornecem pontos a partir dos quais se deve decidir como proceder, abortar ou mudar o rumo das tarefas.

Na figura a seguir são apresentados os benefícios da utilização de uma técnica iterativa.

Benefícios da Técnica Iterativa.

Definir quem vai o quê, como e quando, também é necessário antes de cada milestone. As funções de cada integrante da equipe devem ser bem definidas para que ela possa efetuar um trabalho de qualidade. Dessa maneira, um produto de software é criado a partir do ciclo inicial de desenvolvimento.

RUP é um processo considerado pesado e preferencialmente aplicável a grandes equipes de desenvolvimento e a grandes projetos, porém o fato de ser amplamente customizável torna possível que seja adaptado para projetos de qualquer escala.

Alguns processos de software são adotados ao longo de algumas disciplinas do curso de Ciência da Computação da UFCG, como, por exemplo, Scrum e Pair Programming. Contudo, como RUP é um processo considerado pesado, adotado para elaboração de softwares maiores em relação aos que são construídos nas disciplinas, os alunos não chegam a utilizá-lo.

Fontes:

  • [1] Material de aula da disciplina de Sistemas de Informação 2 do professor Franklin Ramalho;
  • [2] Material de aula da disciplina de Engenharia de Software I do professor Rohit;
  • [3] SOMMERVILLE, Ian. Engenharia de Software. 8ª Edição. Pearson Education, 2007.
Jornal PETNews - Edição: Jeymisson Oliveira - Revisão: Savyo Nóbrega e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved.