Lista de Práticas Ágeis
-
Upload
julio-cezar-silva -
Category
Documents
-
view
649 -
download
3
Transcript of Lista de Práticas Ágeis
Lista de Práticas ÁgeisLista de Práticas Ágeis• Pós Engenharia de Software Ágil• Prof. Edgard Davidson• Aluno: Julio Cezar da Silva• UNA
ProductProduct VisionVision
ProductProduct BacklogBacklog
UserUser StoriesStories
UsesUses CasesCases
UsageUsage ScenarioScenario
PersonasPersonas
PlanningPlanning PokerPoker
RequirementRequirement PrioritizationPrioritization
UserUser StoryStory MappingMapping
LeanLean CanvasCanvas
SpikeSpike SolutionsSolutions
DomainDomain DrivDrivenen DevelopmentDevelopment
DesignDesign EvolutivoEvolutivo
CRCCRC
public class Cor{ public int Vermelho { get; private set; } public Cor(int pVermelho, int pVerde, int pAzul) { this.Vermelho = pVermelho; // Configurar as outras propriedades... } public void AdicionarVermelho(int pValor) {
// Aqui estamos garantindo que ao final da execução desse método, a//propriedade Vermelho deverá respeitar o limite de 255; Contract.Ensures(this.Vermelho <= 255); this.Vermelho += pValor; }}
DbCDbC
• “Para facilitar a criação de um design simples, a equipe de desenvolvimento utiliza metáforas, já que elas têm o poder de transmitir ideias complexas de forma simples, através de uma linguagem comum que é estabelecida entre a equipe de desenvolvimento e o cliente.”
• Fonte: Extreme Programming – Vinícius Manhães Teles
MetáforaMetáfora
“Para que todos os desenvolvedores possam manipular qualquer parte do software de forma rápida, a equipe estabelece padrões de codificação, que servem também para tornar o sistema mais homogêneo e permitir que qualquer manutenção futura seja efetuada mais rápidamente.”Fonte: Extreme Programming – Vinícius Manhães Teles
CodingCoding StandardStandard
TDDTDD
BDDBDD• “Uma técnica de desenvolvimento ágil que visa integrar regras de negócios com
linguagem de programação”
public class ComportamentoDoControladorDeJanela { @Test public void deveFecharJanelas() {
// Dado que ControladorDeJanela controlador = new ControladorDeJanela("Meu Quadro");
Quadro quadro = new Quadro();
//Quando controlador.fecharJanelas();
// Então garantirQue(!frame.estaAparecendo());
} }
Pair-ProgrammingPair-Programming
RefactoringRefactoring
CódigoCódigo coletivocoletivo
BuildBuild AutomáticoAutomático
IntegraçãoIntegração ContínuaContínua• “Integração Contínua é uma pratica de
desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver multiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.” Martin Fowler
PeerPeer ReviewsReviews• Na utilização da programação em par do XP a
técnica de revisão é aplicada todo o tempo da programação já que enquanto um digita o outro vai verificando o código, em ambientes burocráticos que não têm a programação em par, poderia ser utilizado os testes unitários e ao ser alterado o código ser verificado através dos testes se nenhum bug foi introduzido.
ControleControle dede VersãoVersão
EntregasEntregas FrequentesFrequentes• Ágeis “nossa maior prioridade é satisfazer o
cliente através da entrega contínua e desde cedo de software com valor” e “entregar frequentemente software em funcionamento, desde a cada duas semanas até a cada dois meses, com uma preferência por prazos mais curtos” (FOWLER & HIGHSMITH, 2001)
CleanClean CodeCode
TesteTeste UnitárioUnitário
TesteTeste FumaçaFumaça• O Termo originou-se de testes de hardware
quando uma parte era corrigida ou atualizada simplesmente ligava o hardware e se o mesmo não der fumaça significa que passou nos testes. Em software consiste em um teste rápido, executando as principais funcionalidades do sistema, sem se preocupar com as condições de erro.
TestesTestes dede SistemasSistemas
TesteTeste ExploratórioExploratório• Segundo o livro "Base de Conhecimento de Teste
de Software", Teste Exploratório "é indicado quando existe pouca documentação para orientar os testes ou quando o prazo é tão curto que não é possível preparar um teste mais formal. É um teste executado a partir da experiência e da intuição do testador"
TestesTestes dede aceitaçãoaceitação
FixedFixed SprintsSprints
Release PlanningRelease Planning• O Release Plan deverá abordar:• A quantidade e a duração dos Sprints• Quantas pessoas ou times deverão participar do projeto• O número de Releases• O valor a ser entregue em cada Release• A data de liberação do(s) Release(s)• As principais informações para o Release Planning são:• A priorização dos Product Backlogs• A estimativa da velocidade• O Product Owner deve atender as datas importantes (time-to-market) impostas pelo mercado.
IterationIteration PlanningPlanning• A meta do planejamento da iteração é estabelecer
objetivos de alto nível do que será realizado durante uma iteração, produzir um plano suficientemente detalhado, indicando quem deve fazer o que para realizar os objetivos e definir como avaliar se o que deveria ser realizado foi feito.
SprintSprint backlogbacklog
TaskTask BoardBoard
WIPWIP LimitsLimits• No Kanban, as tarefas em execução devem ser
explicitamente limitadas de modo a não haver muitas tarefas sendo executadas ao mesmo tempo, no Scrum não existe explicitamente esse limite, mas o mesmo é implícito quando é limitada a quantidade de pontos que a equipe consegue entregar por sprint.
ClassClass ofof ServiceService
LeadLead TimeTime• lead time is the time between the initiation and
delivery of a work item.
DefinitionDefinition ofof donedone
DailyDaily Stand-upStand-up MeetingMeeting
VelocityVelocity
SprintSprint ReviewReview• Ao final de cada Sprint, uma Reunião Sprint
Review é realizada. Durante esta reunião, o Scrum Team apresenta o que foi realizado durante o Sprint. Tipicamente, esta apresentação é feita na forma de uma demonstração das novas funcionalidades.
Fonte: http://epf.eclipse.org/wikis/scrumpt/Scrum/tasks/sprint_review_meeting_8735340C.html
MapaMapa dede CadeiaCadeia dede ValorValor• Os mapas da cadeia de valor são uma forma
popular de detectar desperdícios nos processos de uma empresa — passos que não adicionam valor ao produto final.
Fonte: http://office.microsoft.com/pt-pt/visio-help/criar-um-mapa-da-cadeia-de-valor-HA010113024.aspx
RootRoot CauseCause AnalysisAnalysis• A Análise de Causa Raiz, também conhecida como
RCA (Root Cause Analysis) é uma maneira de identificar as causas de um problema, afinal os problemas são melhores resolvidos ao tentar corrigir ou eliminar as suas causas.
BurnBurn DownDown ChartChart• A burn down chart is a graphical representation
of work left to do versus time.
CumulativeCumulative FlowFlow ChartChart• Um Diagrama de fluxo cumulativo (CFD) é uma
área gráfica que mostra o progresso do trabalho de um produto, versão ou Sprint. O eixo horizontal em um CFD indica o tempo, e o eixo vertical indica os cards (tarefas). Cada área colorida equivale o gráfico para o status do workflow.
GestãoGestão aa VistaVista• A gestão à vista tem como objetivo disponibilizar as informações
necessárias de uma forma simples e de fácil assimilação, buscando tornar mais fácil o trabalho diário e também a busca pela melhoria da qualidade. Ela torna possível a divulgação de informações para um maior número de pessoas simultaneamente e ajuda a estabelecer a prática de compartilhamento do conhecimento como parte da cultura organizacional.
RetrospectivaRetrospectiva• Retrospectivas ágeis são sem dúvida, uma grande oportunidade para que equipes de
desenvolvimento de software parem para pensar no trabalho que vem realizando e questionem o que pode se melhorado. É uma excelente ferramenta para que o famoso ciclo PDCA (Plan / Do / Check/ Act) possa ser aplicado. O método ágil Scrum sugere que as reuniões de retrospectiva aconteçam no final da iteração (sprint) e que a equipe se faça duas perguntas básicas:o O que está indo bem?o O que pode ser melhorado?
• Alguns preferem perguntar:• O que devemos parar de fazer?
o O que devemos continuar fazendo?o O que devemos começar a fazer?
• No fim das contas o que realmente importa é que a reunião tenha como resultado ações a serem tomadas pela equipe para que a melhoria continua seja aplicada, e que na próxima retrospectiva, a equipe seja melhor do que era na última.
RetrospectivaRetrospectiva
BacklogBacklog dede melhoriasmelhorias• O Backlog é nada mais nada menos do que os
requisitos do produto que precisa ser entregue, bem como todo o entendimento necessário para se atender aos requisitos, produzir funcionalidades e por fim entregar um produto.
• Em resumo é uma lista de todas as características, funções, tecnologias, melhorias e correções que constituem a versão futura do produto.
SmallSmall TeamTeam
Cross-FunctionalCross-Functional TeamTeam• Times podem ser funcionais (ex: um tipo somente
de sys admins) ou cross-funcionais (um time formado por desenvolvedores, designers e testadores)
EquipesEquipes AutoAuto OrganizadasOrganizadas• Essas equipes caracterizam-se por 3 condições:• Autonomia: após receberem uma missão com objetivos claramente definidos, o
time está livre para definir sua própria direção. A alta gerência limita-se a dar orientação, recursos e apoio moral;
• Auto-transcedência: a equipe busca continuamente estender seus limites. Partem da diretriz recebida da alta gerência, estabelecem objetivos iniciais, elevando-os constantemente durante o processo de desenvolvimento. Ao perseguir objetivos aparentemente contraditórios a equipe supera seu "status quo" e faz descobertas incríveis; e
• Fertilização cruzada: uma equipe multidisciplinar, com variados padrões de comportamento, processos conhecidos e especialização funcional conduz o desenvolvimento do novo produto. A referida fertilização acontece na iteração entre essas pessoas. Ao compartilharem um mesmo ambiente de trabalho o processo de transferência de conhecimento entre seus membros acontece naturalmente, caracterizando o termo fertilização cruzada.
CommonCommon WorkspaceWorkspace
ProductProduct OwnerOwner
ScrumScrum MasterMaster• A missão do Scrum Master é facilitar o dia-a-dia do Time,
removendo tudo aquilo que está atrapalhando o seu progresso.É garantir que o time siga os valores e práticas do Scrum, protegendo para que ele não se comprometa excessivamente com aquilo que é capaz de executar dentro de um Sprint.É aprimorar a produtividade do time da melhor maneira possível.
!=
SustainableSustainable pacepace• Trabalhar com qualidade, buscando ter ritmo de
trabalho saudável (40 horas/semana, 8 horas/dia), sem horas extras. Horas extras são permitidas quando trouxerem produtividade para a execução do projeto. Outra prática que se verifica neste processo é a prática de trabalho energizado, onde se busca trabalho motivado sempre. Para isto o ambiente de trabalho e a motivação da equipe devem estar sempre em harmonia.
MoveMove PeoplePeople AroundAround• A ideia é não deixa a pessoa fazendo sempre a
mesma coisa ou sempre a mesma dupla, o ideal é que o código seja coletivo e todos mexam em tudo de modo que na necessidade não tenha somente um responsável por determinada funcionalidade.
ScrumScrum EscaladoEscalado
CommunitiesCommunities ofof PracticesPractices
CodingCoding DojoDojo
ClubeClube dodo LivroLivro
PalestraPalestra dada EquipeEquipe
parapara aa EquipeEquipe• A ideia é a própria equipe repassar o que está
aprendendo, no blog abaixo eles foram além, gravam as apresentações e disponibilizam para a comunidade.
• http://blog.bluesoft.com.br/
BibliotecaBiblioteca aa DisposiçãoDisposição
ParticipaçãoParticipação emem EventosEventos
O Agile Brazil 2012 acontecerá em São Paulo de 3 a 7 de setembro.
ContrataçãoContratação comcom
participaçãoparticipação dodo timetime• O time deve participar da contratação de novos
colaboradores.
FeedbackFeedback 360º360º• Consiste na equipe avaliando a equipe frente a
frente.
One-on-onesOne-on-ones meetingsmeetings• É uma reunião do gerente com cada um dos
colaboradores, individualmente.
ÍndiceÍndice dada FelicidadeFelicidade• A tendência, que põe a praticidade dos resultados
financeiros em segundo plano e a complexa subjetividade do bem-estar social em primeiro.
DefiniçãoDefinição dede MetasMetas• A definição de metas é essencial no processo
dentro das empresas nos dias de hoje. É através deste posicionamento que se estabelece o esforço para implementação das condições necessárias para o resultado dentro de um prazo estipulado.
GembaGemba WalksWalks• Já teve a ligeira impressão de que os engenheiros
que projetam os ônibus parecem que nunca andaram de ônibus? Então, Gemba Walks é o processo de imersão naquilo que se está disposto a fazer ou mudar, seria “o cliente estar dentro do taxi quando do engarrafamento.” a visão é diferente dependendo de como se vê.
DelegationDelegation PokerPoker
AuthorityAuthority BoardBoard
ROTIROTI• Is a quick and easy method to gauge the time
spent on meetings or workshops, and to improve their effectiveness.
Resolução de Problemas Resolução de Problemas com A3com A3
HackathonHackathon• Hackathon é uma maratona de programação, onde os
colaboradores da empresa tiram o dia (ou viram uma noite), para trabalharem em suas próprias ideias que possam vir a agregar valor ao produto da empresa.
• É o dia que você deixa de lado o seu trabalho do dia-a-dia para colocar em prática algo novo ou algo que você sempre pensou que podia ser legal adicionar ao produto.
• O objetivo é que ao final da maratona, todos apresentem algo implementado para que a equipe dê feedback e decida se vale a pena dar continuidade em sua ideia.
SlackTimeSlackTime• É uma prática de incluir em cada plano uma série
de tarefas ou histórias de usuários que podem ser descartados se o time ficar sem tempo.
ImpedimentosImpedimentos VisíveisVisíveis• Impedimento é qualquer coisa que atrapalhe um
membro da equipe de executar o trabalho. Os impedimentos podem ser identificados nas reuniões diárias, onde cada membro da equipe tem a oportunidade de comunicar o Scrum Master do impedimento existente. O Scrum Master é responsável pela solução dos impedimentos.