XP - Extreme Programming
Pair Programming: Quando duas pessoas trabalham em uma única máquina. Um colaborador codifica e o outro faz sugestões pertinentes, trocando de funções em determinado momento. Essa troca garante uma comunicação mais fácil, garantindo maior produtividade e um projeto de alta qualidade.
Projeto simples: Design simples e que permite a realização de testes. Essa prática garante que a criação em excesso de generalizações dentro do código fonte seja evitada e prepara o sistema para possíveis mudanças.
Teste: Cada funcionalidade de um projeto possui um teste antes de ser codificado, isso garante que não exista retrabalho entre os colaboradores e mantém a qualidade dos projetos.
Refatoração: É a mudança e melhoria do código, sem que seu comportamento e sua funcionalidade sejam alterados.
Propriedade coletiva: Qualquer colaborador pode modificar códigos e mexer em todas as partes do projeto. Isso garante que, caso alguém saia da equipe, o projeto não seja prejudicado.
Interação contínua: Os códigos são integrados e testados constantemente, para caso algum problema for detectado, seja corrigido imediatamente.
Cliente presente: O cliente deve estar presente para aprovação, definição de prioridade e auxiliar no desenvolvimento do projeto.
Semana de 40 horas: Evita-se trabalhar mais de 40 horas semanais, visando o bem-estar da equipe para manter o projeto em alta qualidade.
Padrões de código: O fato de todos os colaboradores participarem de todos os processos requer que um padrão na codificação seja mantido.
Metáfora: Uma linguagem comum garante que o entendimento de ideias seja simplificado, o intuito é que ideias complexas sejam passadas de forma simples.
Reunião diária: Nela se discutem o que foi feito anteriormente, o que está sendo feito no dia atual e o que ainda tem que ser feito.
OpenUp (Open Unified Process)
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 do 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:
- 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;
- Elaboração - fase em que se enfatiza o processo de desenvolvimento da análise arquitetural da solução proposta;
- Construção - fase em que se enfatiza o processo de implementação da solução proposta, bem como, testes e integração;
- 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.