segunda-feira, 24 de novembro de 2014

Ciclo de Desenvolvimento no SCRUM

No Scrum, os projetos são dividos em ciclos (tipicamente mensais) chamados de Sprints. O Sprint representa um Time Box dentro do qual um conjunto de atividades deve ser executado. Metodologias ágeis de desenvolvimento de software são iterativas, ou seja, o trabalho é dividido em iterações, que são chamadas de Sprints no caso do Scrum.

As funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é conhecida como Product Backlog. No início de cada Sprint, faz-se um Sprint Planning Meeting, ou seja, uma reunião de planejamento na qual o Product Owner prioriza os itens do Product Backlog e a equipe seleciona as atividades que ela será capaz de implementar durante o Sprint que se inicia. As tarefas alocadas em um Sprint são transferidas do Product Backlog para o Sprint Backlog.

A cada dia de uma Sprint, a equipe faz uma breve reunião (normalmente de manhã), chamada Daily Scrum. O objetivo é disseminar conhecimento sobre o que foi feito no dia anterior, identificar impedimentos e priorizar o trabalho do dia que se inicia.

Ao final de um Sprint, a equipe apresenta as funcionalidades implementadas em uma Sprint Review Meeting. Finalmente, faz-se uma Sprint Retrospective e a equipe parte para o planejamento do próximo Sprint. Assim reinicia-se o ciclo. Veja a ilustração abaixo:



domingo, 9 de novembro de 2014

O que é Kanban?

kanban
Kanban é um termo de origem japonesa e significa literalmente “cartão” ou “sinalização”. É um conceito relacionado com a utilização de cartões (post-it e outros) para indicar o andamento dos fluxos de produção em empresas de fabricação em série. Nesses cartões são colocadas indicações sobre uma determinada tarefa, por exemplo, “para executar”, “em andamento” ou “finalizado”.

A utilização de um sistema Kanban permite um controle detalhado de produção com informações sobre quando, quanto e o que produzir.
O método Kanban foi inicialmente aplicado em empresas japonesas de fabricação em série e está estreitamente ligado ao conceito de “just in time”. A empresa japonesa de automóveis Toyota foi a responsável pela introdução desse método devido a necessidade de manter um eficaz funcionamento do sistema de produção em série.
O Kanban eletrônico (e-Kanban) é utilizado em substituição ao método físico evitando alguns problemas como a perda de cartões e proporcionando mais rapidez na atualização do quadro de tarefas.
Atualmente, o Kanban é muitas vezes usado em conjunto com o Scrum, porque são duas metodologias usadas no desenvolvimento ágil de software. Outro conceito que por vezes é relacionado com Kanban, Just in Time e Scrum é Kaizen, que também tem como objetivo aumentar a produtividade.

Fonte: http://www.significados.com.br/kanban/

quarta-feira, 5 de novembro de 2014

Visão geral sobre Extreme programming (XP)


Conceitos

Extreme programming (XP) é um método ágil de programar.


Por que adota-lo

Garante um software de qualidade no prazo estipulado, satisfazendo as necessidades do cliente.


Tarefas

Codificar:
Melhorar o código é melhorar a responsabilidade de digitação. Pode ou não permitir planejar o software como programção orientada a objetos, refatoração de código, desenvolvimento iterativo e incremental, cascata, etc. 

Testar:
Testar não é necessariamente geração de saída, mas um código limpo e correto, testar torna-se uma fase crucial em toda engenharia de software, varios modelos de testes são usados em XP, são eles: teste unitário, teste caixa-preta, teste de regressão, etc.

Escutar:
Nesta fase requerem profundo conhecimento do usuário ficando cara a cara ou através de documentos. Muito cuidado deve ser tomado para cumprir todos os requisitos funcionais e não funcionais.

Planejar:
Novamente, saída pode ser gerada com alguma estratégia planejada. Por garantia de qualidade, abraça algum planejamento de engenharia de software para guiar os programadores a escrever códigos de qualidade. Propondo garantias mínimas de dependencias funcionais, redundância zero, modularidade, manutenabilidade e extensibilidade de código.

Simplicidade:
Sugere simplicidade em todas fases do processo de desenvolvimento de software. Começar simples é efetivamente não simples o bastante aquilo pode ser ignorado. Um meio para alcançar a simplicidade é focar nos componentes essenciais antes de inserir novas funcionalidades que podem ser feitas em um estágio posterior.


Valores

Comunicação:
Desentendimentos e falhas na comunicação entre o cliente e a equipe de desenvolvedores pode prejudicar todo o projeto. Os desenvolvedores podem ter uma ideia cristalina de todos os elementos do projeto e como eles interagirão com todos eles. Isto é feito em conversas cara a cara com os usuários finais e também usando os documentos dos requisitos de usuário.

Retro alimentação:
Mesmo depois obter corretamente o código e o planejamento, um projeto não recebe sinal verde a menos que dê o resultado desejado e a satisfação do cliente. Isto é feito com processo retro alimentação do software antes da entrega, de todos os desenvolvedores e do cliente.

Coragem:
Para os desenvolvedores é a coragem de jogar fora o código mesmo se estiver no meio do projeto. Uma falha pode exigir a mudança completa da arquitetura do software e iniciar tudo novamente.


Práticas

XP permite experimentar e largamente aceito na pratica de desenvolvimento de software como: refatoramento, programação em par, planejamento, metáforas, cliente, etc.
Programação em par é o trabalho de duas pessoas em um único computador. Onde um codifica e o outro observa e corrige.

Refatoração é uma tarefa de atualização de pedaços já escritos de código sem afetar sua saída ou funcionalidade.

Metáfora de sistema é uma descrição simples dos elementos e fluxos do projeto para entendimento de todos relacionados ao projeto.








Para descontrair:











Fonte: http://www.waterfall-model.com/what-is-extreme-programming/
Tradução: Leonardo Finato

terça-feira, 4 de novembro de 2014

Introdução ao SCRUM

Muito ouve-se falar nas metodologias ágeis e em como elas parecem ser a solução de vários problemas no desenvolvimento de software, vamos usar o exemplo do SCRUM, todos já devem ter ao menos visto alguém citar o SCRUM como uma metodologia ágil amplamente utilizada. Mas o que é o SCRUM?

O Scrum é um framework de desenvolvimento iterativo e incremental para gerenciamento de projetos e desenvolvimento ágil de software. É utilizado para trabalhos complexos nos quais é impossível predizer tudo o que irá ocorrer.

Logo, o Scrum não é um processo ou uma técnica, mas um framework que quando usado puro ou em conjunto com demais práticas ou processos promove maior flexibilidade, visibilidade e produtividade.

É importante que fique claro que Scrum não é uma abordagem prescritiva. Não é um processo previsível, ele não define o que fazer em toda circunstância.  É uma ferramenta, um framework - um conjunto de práticas que torna tudo visível. Visto que é um framework o Scrum deixa muitas decisões a critério da equipe porque acredita que a equipe sabe como melhor resolver um determinado problema apresentado assim como quais práticas ela esta madura suficiente para adotar.


No entanto, Scrum é muito mais do que uma estrutura simples. Scrum apoia a nossa necessidade de ser humano no trabalho: pertencer, aprender, fazer, criar e ser criativo, a crescer, a melhorar, e para interagir com outras pessoas. Em outras palavras, Scrum aproveita as características inatas e características das pessoas, que lhes permitam fazer grandes coisas juntos.