Escolar Documentos
Profissional Documentos
Cultura Documentos
O Rational Unified Process (RUP) é uma metodologia completa criada pela Rational
para viabilizar que grandes projetos de software sejam bem sucedidos. O RUP é na
verdade um produto composto de material de referência na forma de páginas HTML,
descrevendo toda a metodologia.
Princípios Básicos
1
Apesar de parecer um modelo em cascata, na verdade cada fase é composta de uma
ou mais iterações, o que se assemelha a um modelo em espiral. Estas iterações são em
geral curtas (1-2 semanas) e abordam algumas poucas funções do sistema. Isto reduz o
impacto de mudanças, pois quanto menor o tempo, menor a probabilidade de haver
uma mudança neste período para as funções em questão.
Além das fases e iterações, existem os workflows. Cada workflow é na verdade uma
sequência de tarefas encadeadas e relacionadas a um aspecto importante do projeto,
tal como análise do negócio, testes, etc. Os gráficos da figura mostram a ênfase de
cada workflow em cada etapa do projeto.
Conteúdo do RUP
O que é o RUP afinal? Sabemos neste ponto que é uma metodologia completa e vimos
sua estrutura básica. Porém o que ele oferece?
Tarefas: Cada tarefa é descrita em detalhe, incluindo que papel é responsável por ela,
a qual workflow ela pertence e quais são os subprodutos de entrada e saída.
Como Adotar
Com base nestes recursos a adoção do RUP pode ser feita de mais de uma maneira.
Um extremo seria usar o RUP à risca, ou seja, aplicar todos os métodos e processos
exatamente como são propostos. A vantagem desta abordagem é que nada deve ser
alterado, pois o RUP é bem completo e detalhado. Porém existe um preço a ser pago,
pois o RUP na íntegra é complexo. Esta abordagem implicaria em treinamentos,
2
projetos piloto, etc. Propostas de projetos de adoção do RUP são descritos no próprio
produto.
O extremo oposto seria adotar outro modelo de processo mais simples ou conhecido
(o atual, se existir) e utilizar o material do RUP como fonte de referência
complementar para assuntos não abordados em outro modelo como, por exemplo, os
modelos de documentos.
3
Conceitos de XP
Equipe;
Planejamento;
Programação em Par;
Design Evolucional;
Integração do Sistema;
Estilo Consistente;
Protótipo.
Equipe
As Duas Equipes
4
A Extreme Programming, sempre se preocupando com a relação entre os indivíduos,
divide a equipe responsável pelo software a ser desenvolvido em duas: a equipe do
cliente e a equipe dos desenvolvedores. Estas equipes devem colaborar em tudo que
for necessário para que o melhor software possível seja desenvolvido.
No entanto, como parte do processo de divisão de tarefas cada equipe tem seus
objetivos específicos, direitos e participantes.
Equipe do Cliente
A tarefa da equipe do cliente é de cobrar e colaborar para que tudo seja feito para que
o produto final atenda completamente aquilo que é esperado para a solução do
problema.
Equipe de Desenvolvimento
Existem ainda outros conceitos aplicados e que também colaboram para o sucesso do
trabalho da equipe. Por exemplo, aspectos do paradigma adotado. No caso do
paradigma orientado a objeto, têm-se os objetos e suas relações como facilitador na
construção, alteração e entendimento do sistema.
Planejamento
5
Fisicamente as histórias dos usuários são anotadas em pedaços de papel (cartões) e
segue uma padronização utilizada para as estimativas e testes do sistema. Será
percebida ao longo da análise de cada parte do planejamento a importância das
histórias do usuário.
Planejamento de Releases
Nas reuniões de planejamento de versão as histórias devem ser divididas por versão
cabendo a equipe de clientes definirem prioridades e a equipe de desenvolvimento
verificar a possibilidade e os prazos baseando-se nas estimativas já feitas nos cartões
das histórias de usuários.
Planejamento de Interações
Inicialmente o produto não existe, depois é criada uma versão que atenda às
funcionalidades básicas que é melhorada até atingir o sistema completo que é
desejado necessário para o cliente.
Pode-se dizer que cada interação tem um resultado final. Existe, por exemplo, uma
interação que leva ao release, mas esta interação é formada de outras interações que
deram origem às partes integrantes do release.
Para uma equipe que está desenvolvendo em Extreme Programming pela primeira vez
ou mesmo para um cliente que nunca participou de um projeto em Extreme
Programming, é importante que a primeira interação que dará origem a um release,
denominado sistema central, seja executada com perfeição.
A entrega desse sistema central é um marco importante. Ele prova para a
equipe do cliente que a XP (Extreme Programming) funciona. Ele prova
para a equipe de desenvolvimento que eles podem fazer com que ela
aconteça.
6
O planejamento de interações é desenvolvido a todo o momento, principalmente
quando se faz o planejamento de releases.
Planejamento Tático
Geralmente uma tarefa é feita por um desenvolvedor voluntário e outro que desejou
ajudá-lo. Aqui entra os aspectos de desenvolvimento em par, chamado em Extreme
Programming de pair programming
Programação em Par
7
Design Evolucional
Nesta técnica o mesmo protótipo utilizado para apresentar o sistema ao cliente poderá
ser utilizado para iniciar o desenvolvimento, desta forma a preocupação com layout de
interface está separada da preocupação com codificação da lógica de negócio.
Outro ponto importante é a entrega de várias versões com pequenas melhorias sendo
implementadas evolutivamente. Desta forma se o cliente não estiver satisfeito com
uma funcionalidade poderá sinalizar para a equipe de desenvolvimento que não terá
que varrer uma área muito grande de código para corrigir tal funcionalidade.
Ainda pela metodologia várias versões do software devem ser lançadas, e a cada uma
delas uma funcionalidade é liberada após testada e homologada, ou seja o sistema
tem uma evolução através de rápidas e pequenas implementações.
Integração do Sistema
Para que a integração possa proceder de maneira contínua é necessário que exista um
repositório único onde estarão os códigos fontes do sistema, tal repositório possui um
mecanismo de travas de versões de cada arquivo fonte, assim, evita-se perda de
códigos acidentais e garante-se a integridade dos mesmos, permitindo verificar se
alguns trechos de código foram alterados simultaneamente e dando a possibilidade a
quem estiver atualizando o repositório escolher a melhor versão para ser integrada.
Além de possibilitar manter sempre a versão mais recente do sistema rodando, mesmo
que este ainda possua partes não homologadas, pois cada desenvolvedor apenas
colocará no repositório o código que julgar suficientemente estável para começar a ser
testado para entrar em produção no próximo release liberado, integrado ou
homologado.
Por ter a filosofia de integração contínua, o sistema deve sempre ser revisado para que
este se mantenha rodando durante toda a fase de desenvolvimento. Assim, sempre
um par de programadores deverá estar adequando todo o código que for adicionado
ao repositório.
8
Integração Contínua
Estilo Consistente
9
Para que o estilo consistente possa funcionar da melhor forma possível todos devem
estar atentos para os padrões que estão sendo definidos, e tais padrões são definidos
em tempo real, por isso é interessante para a equipe que todos os desenvolvedores
estejam sincronizados com as maneiras como o projeto é ‘governado’. Além disso
torna-se importante que todos os elementos da equipe sejam proativos para que os
padrões continuem num constante aperfeiçoamento.
Protótipo
Por estar tendo uma visão inicial da cara do sistema o cliente pode perder o foco das
funcionalidades e querer que a equipe se foque em detalhes irrelevantes da parte do
layout de interface.
Ë importante que a equipe de desenvolvimento não deixe que o próprio protótipo não
vire o sistema em si, isto é o protótipo desenvolvido é tão detalhado que parte das
funcionalidades aparentam estar implementadas. Com isso perde-se tempo de
desenvolvimento além de poder passar uma falsa imagem do sistema para o cliente.
10
Devemos observar que todos os membros da equipe de desenvolvimento devem
compartilhar do mesmo protótipo gerado para que durante a fase de desenvolvimento
dos componentes do sistema não tenhamos versões concorrentes do mesmo
caminhando em paralelo.
11
O que é Scrum?
Falando mais detalhadamente, o SCRUM tem três partes principais em seu modelo:
Papéis (Roles), Cerimônias (Cerimonies) e Artefatos (Artifacts). Cada um destes três
pilares contém outros sub-itens. Todas estas três partes principais são utilizadas no
que chamamos de ciclo de desenvolvimento, ou seja, o Sprint. Cada Sprint possui suas
fases e utiliza destes papéis, cerimônias e artefatos para alcançar seu objetivo final.
12
Papéis do SCRUM (Roles)
Como a metodologia define como o time deve trabalhar, o primeiro passo para o
desenvolvimento por SCRUM é definir quem vai fazer o quê. Por isso chegamos a três
entidades principais: o Proprietário do Produto (Product Owner), o ScrumMaster e o
Time.
ScrumMaster
A Equipe de Desenvolvimento
A equipe de desenvolvimento é quem vai colocar a mão na massa para que o software
comece a ter cara e funcionamento. Pode haver uma ou mais equipes de
desenvolvimentos, dependendo da complexidade do software.
14
Como dito anteriormente em resumo, o primeiro passo de um projeto SCRUM é
quando o Proprietário do Produto desenvolve um plano para o projeto de software.
Neste plano, o Proprietário do Produto trabalha bem próximo ao cliente para definir
todas as funcionalidades que o cliente quer no seu produto. A partir desta lista, ele
também tem que definir as prioridades de cada funcionalidade de acordo com várias
variáveis: valor de mercado, importância de base, importância para o cliente, entre
outras. Esta lista final é o que chamamos de Product Backlog e é a base para a reunião
de planejamento do Sprint.
Uma vez definido o Sprint Backlog, com a listagem de todas as tarefas, seus
responsáveis e seus prazos, o processo de desenvolvimento começa.
O ScrumMaster tem um papel muito importante nestas reuniões: ele terá que
identificar todos os problemas ou novas tarefas que surgirem e planejar como estas
aparições serão resolvidas. Além do mais, ele terá assim uma visão completa do
projeto e poderá gerenciar todas as sub-tarefas de cada Sprint, preenchendo assim o
Burndown Chart.
15
Reunião de Revisão do Sprint
Depois que esta reunião é finalizada, um novo ciclo Sprint pode começar até que todo
o produto seja implementado/finalizado e o Product Backlog esteja limpo de
pendências.
Os artefatos SCRUM são as ferramentas básicas para se trabalhar com este modelo de
desenvolvimento. Estes artefatos servem como guias e indicadores durante o
processo. São dividos em três: Product Backlog, Sprint Backlog e Burndown Chart.
Product Backlog
Pense no Product Backlog como uma WishList: uma lista de itens que queremos ter.
16
Sprint Backlog
Logo após o Sprint Backlog estar concluído, o total de horas trabalhadas é comparado
com o total previsto anteriormente no Product Backlog. Caso haja uma diferença
significativa, a equipe SCRUM deve negociar novamente com o cliente o número
correto de horas, para que o Sprint seja realizado com maior probabilidade de sucesso.
Burndown Chart
Bibliografia:
http://www.linhadecodigo.com.br
http://www.adonaimedrado.pro.br
http://www.devin.com.br
17