1 de abr de 2010

1. Introdução ao Processo Unificado Aberto


Palavras Chave: Engenharia de Software, 
Processo Unificado, Eclipse.

A IBM sempre foi uma importante parceira da comunidade Eclipse. Os colaboradores do projeto Eclipse sempre criaram ótimas ferramentas para suporte ao desenvolvimento de software. Porém, faltava uma metodologia apropriada.
Pensando nisso, mais uma vez a parceria IBM-Eclipse funcionou perfeitamente bem. A IBM liberou o Processo Unificado Rational (RUP) para o pessoal do Eclipse customizar e gerar o seu próprio processo.
Surge assim a metodologia Open UP, ou, Processo Unificado Aberto, uma metodologia ágil de desenvolvimento de software, baseada nas principais características do RUP.

A Open UP, por si só, é um Processo Unificado leve que aplica as abordagens iterativa e incremental em um ciclo de vida estruturado, abordando uma filosofia ágil e pragmática que foca na natureza colaborativa do desenvolvimento de software. 

A Open UP é uma metodologia livre de ferramentas e de baixo formalismo que pode ser estendido a uma variada gama de tipos de projetos e não apenas desenvolvimento de software.

Esse blog é uma tradução livre da Open UP. Além disso, textos próprios estão sendo inseridos, aproveitando outros conhecimentos na área de Engenharia de Software. Mais informações e o próprio framework Open UP podem ser encontrados aqui.

Open UP(c) Copyright Eclipse contributors and others 2004, 2009.

Desenvolvimento Iterativo Incremental
O Open UP, assim como o RUP é um processo iterativo incremental de desenvolvimento de software e está estruturado em 3 camadas distintas, como é possível perceber na imagem abaixo:


1ª Camada - Ciclo de Vida de Projeto
É representada pelo plano vertical da figura acima. Essa camada trata do ciclo de vida de projetos e trata do processo de desenvolvimento como um todo. Da mesma forma que o Processo Unificado Rational, o Open UP divide o ciclo de vida de projetos em quatro fases distintas:
  1. Iniciação - fase em que se enfatiza o processo de análise de negócios e análise de requisitos do negócio analisado, dando uma ênfase menor a arquitetura e implementação;
  2. Elaboração - fase em que se enfatiza o processo de desenvolvimento da análise arquitetural da solução proposta;
  3. Construção - fase em que se enfatiza o processo de implementação da solução proposta, bem como, testes e integração;
  4. Transição - fase em que se enfatiza o processo de implantação do release, com importante foco na realização do teste beta e reconfiguração necessária do sistema, além de foco no processo de treinamento do usuário e conversão dos dados legados.
É importante enfatizar que cada fase é encerrada por um marco, ou seja, um conjunto de atividades e artefatos gerados pela equipe de desenvolvimento que caracterizam o encerramento da fase.



2ª Camada - Ciclo de Vida de Iteração
Os processos iterativos pregam a divisão de suas atividades principais em subatividades, chamadas de iteração, onde são aplicados os principais passos do ciclo de vida tradicional do desenvolvimento de software. Para o Open UP, as disciplinas tratadas são: Requisitos, Arquitetura, Implementação, Teste e Gerência de Projetos.

Distribuição das Disciplinas pelas Fases

Uma iteração é focada no desenvolvimento de um Build (executável) que será entregue ao cliente e dura no máximo algumas semanas. O executável entregue deverá ter sido exaustivamente testado e, quando possível, integrado a outros executáveis já entregues.

É importante destacar que o principal papel da aplicação de testes é garantir que o artefato atende aos requisitos especificados pelos Stakeholders.
Uma diferença importante do Open UP para o Processo Unificado convencional são os micro-incrementos, que nada mais são do que sub-divisões de uma iteração.

3ª Camada - Ciclo de Vida de Micro Incremento
Um Micro Incremento representa um esforço de algumas horas até alguns dias, desenvolvido por grupos compostos por alguns membros da equipe de desenvolvimento (de 1 a 3 pessoas)colaborando para atingir os objetivos da iteração.

O conceito de um Micro Incremento auxilia aos indivíduos da equipe de desenvolvimento a partilhar suas atividades em pequenas unidades, onde cada unidade se encerra com a entrega de um artefato de valor para a equipe. Micro Incrementos provêm um feedback muito rápido em relação à qualidade do Produto de Trabalho gerado, feedback esse que pode direcionar as decisões tomadas ao término de cada iteração.