17
CENTRO UNIVERSITÁRIO ANHANGUERA DE SÃO PAULO FERNANDO OLIVEIRA FERES – RA 5632121657 MARCOS DE SOUZA – RA 1299167498 SAMIR MONTEIRO DE TOLEDO – RA 5644107797 TRABALHO PROGRAMAÇÂO COMERCIAL – C#

Metodologias Ágeis Para Desenvolvimento de Software

Embed Size (px)

Citation preview

Page 1: Metodologias Ágeis Para Desenvolvimento de Software

CENTRO UNIVERSITÁRIO ANHANGUERA DE SÃO PAULO

FERNANDO OLIVEIRA FERES – RA 5632121657MARCOS DE SOUZA – RA 1299167498

SAMIR MONTEIRO DE TOLEDO – RA 5644107797

TRABALHOPROGRAMAÇÂO COMERCIAL – C#

SÃO PAULO2013

Page 2: Metodologias Ágeis Para Desenvolvimento de Software

METODOLOGIAS ÁGEIS PARA DESENVOLVIMENTO DE SOFTWARE

Vamos falar das metodologias ágeis que sugiram nos últimos anos e vamos tratar neste trabalho a metodologia Scrum. Também mostrar as diferenças entre metodologias tradicionais e metodologias ágeis para desenvolvimento.

1- O que é a Metodologia:

A metodologia é a uma representação de um processo em modo simplificado. É um conjunto de boas práticas para o desenvolvimento de um software e auxilia muito desenvolvimento. Entre elas podemos destacar as metodologias tradicionais e metodologias ágeis.

1.1– Metodologias Tradicionais:

São conhecidas por serem muito documentadas e acabam às vezes atrapalhando a agilidade do desenvolvimento. Podemos dizer que elas são orientadas à documentação. Elas são divididas em etapas definidas de maneira fechada. Alguns anos atrás estas metodologias eram aplicadas para desenvolvimento em mainframes.

As alterações nestas plataformas geravam altos custos e com o agravante de grande limitação de hardware para debugar (depurar) e analisar o código.

Entre as metodologias tradicionais temos a metodologia cascata nela você tem as fases dividas em etapas. As etapas são amarradas a próxima etapa só inicia ao termino da anterior.

Exemplo:

Page 3: Metodologias Ágeis Para Desenvolvimento de Software

1.2– Metodologias Ágeis:

Essas metodologias possuem alguns atributos principais que devem ser considerados:

Aprendizado e Adaptação – Projetos tradicionais de desenvolvimento de software nos forçam a prever tudo o que será desenvolvido com o máximo de precisão no início do projeto. Metodologias Ágeis afirmam que há muita coisa que não podemos prever no início do projeto, eles são estruturados para permitir que nós primeiramente aprendamos sobre o que ainda não conhecemos e então nos adaptemos para utilizar o conhecimento adquirido.

Colaboração – Metodologias Ágeis valorizam a colaboração contínua dos patrocinadores, clientes e equipe de desenvolvimento.

Foco na necessidade do cliente – O cliente é o foco central em um projeto Ágil. Pequenas equipes auto gerenciáveis – Metodologias Ágeis reconhecem que pequenas equipes podem se auto gerenciar com maior eficiência.

Princípios – A base para a formação das Metodologias Ágeis é proveniente dos métodos que se consolidaram na indústria. Principalmente os conceitos “Just Enough” e “Just in Time” ("só o suficiente" e "a tempo").

Progressiva elaboração de requisitos – Nós aprendemos sobre os requisitos do software à medida que o projeto avança, então especificar cada detalhe dos requisitos no início do projeto não faz sentido. Projetos Ágeis estabelecem um claro caminho para elaboração do detalhamento dos requisitos conforme eles se tornam necessários.

Entregas incrementais – A melhor maneira de nos assegurarmos que estamos desenvolvendo o software corretamente é regularmente obter o feedback de nosso cliente. Metodologias Ágeis sempre produzem entregas incrementais de software para o cliente.

Planejamento iterativo e adaptação – Metodologias Ágeis valorizam o planejamento. Eles promovem planejamento em diversos níveis regularmente. Sempre o adaptando de acordo com os novos conhecimentos obtidos durante o avanço do projeto.

Exemplo de Metodologia Ágil:

1.2.1 - Metodologia Ágil - SCRUM

O Scrum é uma metodologia ágil para gestão e planejamento de projetos, é um processo para construir software incrementalmente.

Trabalhos complexos nos quais é impossível predizer tudo o que irá ocorrer o Scrum poderá ser eleito como ferramenta para auxiliar no desenvolvimento ou seja em ambientes complexos, onde os requisitos não são claros ou mudam com muita frequência.

Page 4: Metodologias Ágeis Para Desenvolvimento de Software

O Scrum é baseado em ciclos de 30 dias chamados Sprints, onde se trabalha para alcançar objetivos bem definidos. Estes objetivos são representados no Product Backlog, uma lista de coisas para fazer que é constantemente atualizada e priorizada.

Como são distribuídos os papéis?

Equipe: Responsável por entregar soluções, geralmente é formada por um grupo pequeno (entre 5 e 9 pessoas) e que trabalha de forma auto gerenciada;

Product Owner: Responsável pela visão de negócios do projeto, é ele quem define e prioriza o Product Backlog. Geralmente é o papel desempenhado pelo cliente;

Scrum Master: É uma mistura de gerente, facilitador e mediador. Seu papel é remover obstáculos da equipe e assegurar que as práticas de Scrum estão sendo executadas com eficiência.

Como funciona?

Definição do Backlog: Todas as funcionalidades ou mudanças no produto são definidas pelo Product Owner no Product Backlog. Esta lista é priorizada para refletir a necessidade dos clientes ou demandas do mercado. Os itens do topo da lista são destacados para serem entregues no final do próximo Sprint.

Andamento do Sprint: Durante o Sprint, os itens do Product Backlog que devem ser entregues são agora tratados no Sprint Backlog. As tarefas agora são responsabilidade da Equipe, que tem autonomia para decidir como elas devem ser executadas.

Reuniões Diárias: O Scrum Master se reúne diariamente com a Equipe num mesmo horário, para que se reporte:

O que foi feito ontem?

O que se pretende fazer hoje?

Quais são os impedimentos que estão atrapalhando a execução das tarefas?

Revisões: no final do Sprint a Equipe demonstra os resultados para o Product Owner e demais interessados, de forma que os itens do Backlog sejam considerados prontos e então possa se iniciar um novo Sprint.

Exemplos de ferramentas para trabalhar com Scrum:

Ficamos muito empolgados com a metodologia e começamos a pesquisar algumas ferramentas para uso de Scrum que poderiam ser aplicadas por nossa equipe e nas práticas ágeis que pretendemos adotar.

Page 5: Metodologias Ágeis Para Desenvolvimento de Software

Rational Team Concert

Seu time é capaz de responder de pronto as perguntas abaixo:

Qual o objetivo da Sprint atual e quem está trabalhando no que?

De acordo com o planejamento e desempenho atuais da equipe, vocês vão conseguir entregar o objetivo da Sprint?

Quais funcionalidades entraram em um determinado Build?

Você consegue as informações que precisa para se preparar para o SCRUM diário rapidamente? Essa preparação é satisfatória?

O código está estabilizando, com o número de erros encontrados diminuindo ao longo do projeto?

Qual a frequência de quebra de Builds?

Quando você tem uma dúvida e quer envolver outra pessoa do time precisa trocar e-mails ou chat?

Em caso positivo, o tempo para contextualizar a situação é satisfatório?

Page 6: Metodologias Ágeis Para Desenvolvimento de Software

Sua equipe gasta mais tempo do que gostaria criando atas de reunião, notas de Release e correlacionando informações que estão em locais diferentes (planilhas, bancos de dados, etc.)?

Responder a todos estes questionamentos foi exatamente o objetivo da IBM ao criar o Rational Team Concert, ou RTC para os íntimos: tirar tarefas burocráticas e operacionais da frente dos desenvolvedores, liberando-os para fazer o que mais gostam.

Com o RTC, seu time poderá:

Manter o SCRUM card wall (kanban);

Versionar todos os artefatos do projeto (SCM);

Desenvolver em paralelo;

Controlar mudanças e erros (bug tracking);

Gerenciar o backlog;

Fazer o planejamento de Releases do produto;

Realizar integração contínua;

Colaborar em tempo real;

Tudo isto, numa única ferramenta, a partir de um único instalador em um único banco de dados.

Toda a informação de projeto centralizada e disponível para todo time a partir de uma interface Web extremamente elegante e amigável.

O cliente do RTC é baseado em Eclipse e tem suporte a Mac, Linux e Windows (também existem versões do cliente para Visual Studio .NET e Terminal Mainframe).

O servidor RTC, baseado na tecnologia Jazz, pode ser instalado em um servidor Linux, Windows, entre outras, suportando times de desenvolvimento das principais plataformas de desenvolvimento e linguagens de programação.

Essa liberdade toda pode ser aproveitada por times de desenvolvimento de até 10 pessoas, sem custo algum, para desenvolvimento de qualquer tipo de aplicação (comercial inclusive).

Page 7: Metodologias Ágeis Para Desenvolvimento de Software

Scrum Works Pro

Essa é uma ferramenta muito bem comentada pela web. Possui duas versões, Basic (gratuita) e Pro (obviamente paga). Diferentemente das ferramentas, essa ferramenta não roda online e precisa ser instalada. ScrumWorks, depois de instalado, consiste em 2 programas, um servidor e um cliente. O servidor é para ser usado pelo Scrum Master, é onde se realiza todas as tarefas de planejamento do Scrum. A parte cliente é direcionada aos membros da equipe para que possam receber a atualização das tarefas.

Testamos rapidamente, e nos parece ser uma ferramenta muito boa, apesar de carecer de uma interface mais intuitiva como as outras ferramentas que vamos falar abaixo. A vantagem dessa ferramenta é que ela parece ter um nível de customização bem interessante para equipes que estão continuamente melhorando o seu processo de desenvolvimento.

Page 8: Metodologias Ágeis Para Desenvolvimento de Software

Ice Scrum

Está é uma ferramenta open source que encontramos. IceScrum está na versão R6#9. É uma ferramenta bem completa que tem todas as funcionalidades que nós já mencionamos como Product Backlog, Sprint Backlog, planejamento de release, funcionalidades para todos os papéis do Scrum, auxílio ao planning poker, gráficos diversos e muito mais.

A ferramenta parece ter sido muito bem implementada e parece estar em constante evolução. Vale a conferida para quem está interessado em uma ferramenta sem custos de aquisição e que pode agregar bastante valor ao processo de sua equipe de desenvolvimento.

Pango Scrum

Page 9: Metodologias Ágeis Para Desenvolvimento de Software

Assim como o Scrumy, Pango Scrum também é uma ferramenta online, porém muito mais completa. Auxilia em quase todas as atividades principais do Scrum como Product Backlog, Sprint Backlog, agendamento de eventos e planejamento de sprints. A ferramenta não disponibiliza a funcionalidade para criação de painel de tarefas pois eles pregam que isso deva ser realmente feito na base do papel e post-it. O Pango Scrum é gratuito e assim como muitas outras ferramentas da Web 2.0, está "em fase beta".

Scrumy

Page 10: Metodologias Ágeis Para Desenvolvimento de Software

Esta ferramenta que preza pela simplicidade e pela facilidade de uso.

Para criar um projeto no Scrumy basta digitar no seu browser a url: http://scrumy.com/<nome do projeto> e você já terá o seu espaço criado. Além disso, o que a ferramenta basicamente provê é a criação das user stories e o acompanhamento delas através do painel de tarefas (taskboard). Existe ainda uma versão para chamada Scrumy Pro que lhe permite coordenar múltiplos sprints e múltiplos backlogs, além de prover burndown charts.

Mingle

Essa talvez seja a melhor das ferramentas que pesquisamos, afinal de contas, foi criada pela empresa de um dos maiores evangelizadores de metodologias ágeis, Martin Fowler.

Essa ferramenta possui tudo o que podemos esperar de uma boa ferramenta de Scrum, e melhor ainda, tudo muito bem implementado e com uma usabilidade visível desde o primeiro contato. Além das funcionalidades esperadas, a ferramenta provê um wiki integrado, alertas por e-mail, feeds RSS e muito mais. Porém, como era de se esperar para uma ferramenta desse nível, ela é paga e de acordo com a tabela de preços, não é barata.

Page 11: Metodologias Ágeis Para Desenvolvimento de Software

Scrum Half

Essa ferramenta merece uma menção honrosa, pois é a única ferramenta nacional que está ganhando mercado na área de desenvolvimento ágil. Não tivemos oportunidade de testá-la ainda, mas à primeira vista parece ser uma ferramenta muito boa.

Page 12: Metodologias Ágeis Para Desenvolvimento de Software

Scrum Half foi desenvolvida pela GPE, uma empresa brasileira com foco em gestão ágil de projetos. Uma das vantagens que percebemos na ferramenta, além da mais óbvias que é o idioma, é o fato de ser online e assim, não precisar de instalação. Vale muito a pena dar uma conferida, para quem tiver interesse, a ferramenta é gratuita para uso de até 3 pessoas, mais do que isso, tem uma tabela de preços que pode ser consultada.

Conclusão

Gostamos muito de todas as ferramentas expostas acima, desde a mais simples até a mais completa.