Metodologia ágil Lílian Simão Oliveira.

Slides:



Advertisements
Apresentações semelhantes
Metodologias Ágeis Visão Geral.
Advertisements

Engenharia de Software
Engenharia de Software
Análise e Projeto de Sistemas I
GUG Porto Alegre/Brasil Desenvolvimento em GeneXus, Métodos Ágeis e Scrum.
Rational Unified Process(RUP)
Desenvolvimento ágil: eXtreme Programming vs SCRUM Tiago Rodrigues de Mello CCO-230 – ENGENHARIA DE SOFTWARE / 2010.
RUP Rational Unified Process (Processo Unificado de Desenvolvimento da Rational) 1.
Dynamic Systems Development Method
Processos de Desenvolvimento de Software
Processo Desenvolvimento de Software Tradicional
um processo ágil de desenvolvimento de software
USP – UNIVERSIDADE DO ESTADO DE SÃO PAULO
Comparação e Avaliação de Métodos Ágeis de Software
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
FDD.
O mundo ágil do SCRUM Alexsandro Marques 02/09/2009.
Alunos: Artulanez Souza Iony Melo
Métodos Ágeis de Desenvolvimento
Métodos Ágeis e SCRUM VISÃO GERAL
Rational Unified Process
Métodos Ágeis Agile Modeling, ou AG
RUPinho Qualidade de Software
Técnicas e Projeto de Sistemas
Desafios do desenvolvimento de software
Planejamento e Gerenciamento de Projetos
Visão Geral PRO.NET.
Visão Geral do RUP.
Fundamentos de Engenharia de SW
Implantando SCRUM na Simplestec Equipe Tributária
Implantando SCRUM na Simplestec Equipe Tributária
SCRUM Equipe Amauri Cleverson Daiane Mauri Mauricio.
Engenharia de Software
Engenharia de Software
Raoni de Oliveira Franco
Desenvolvimento Rápido de Aplicação (RAD)
ENGENHARIA DE SOFTWARE
Visão Geral sobre o XP – eXtreme Programming
XPRecife Madson Menezes Costa Ricardo de Oliveira Cavalcanti.
Visão Geral sobre o XP – eXtreme Programming
Bruno Silva Desenvolvido a partir de
Metodologia ágil Lílian Simão Oliveira.
Processo de Desenvolvimento de Software – PDS C Construção - PAS
# development Teresa Maciel DEINFO/UFRPE. # Fidelidade do cliente CompetitividadeSobrevivência Prazos curtos Baixo custo Agregação ao negócio.
SCRUM Processo de Desenvolvimento de Software
Hukarz Open Source Process D01 Alan Kelon, Silvio Meira Recife, 01/12/2006.
Engenharia de Software
Gestão de projetos de Software GTI-16
Gerenciamento de Equipes com Scrum Curso de Verão 2008 – IME/USP Dairton Bassi Danilo Sato 24/Jan/2008.
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Técnicas e Projetos de Sistemas SUBSEQUENTE 1.
Metodologias Ágeis Para o Desenvolvimento de Software
Métodos Ágeis e Programação Extrema (XP)
Engenharia de Software
ASD Adaptative Software Development Grupo 11 Bruno Jim Te VallinRA Rogério Toshio Matsubara MiyataRA
Gestão Ágil de Projetos
SISTEMA DE MONITORAMENTO DA TECNOLOGIA DA INFORMAÇÃO.
Engenharia de Software
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína XP (EXTREME PROGRAMMING) Pós-Graduação em Engenharia de Software Metodologias.
Erton W. Vieira Metodologias Ágeis, Qualidade de Software e Design Centrado no usuário: Pontos de Interação Erton W. Vieira.
PSP - Aula 02 Vanilson Burégio.
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
Extreme Programming Alexandre Nodari.
Desenvolvimento de Software I
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
SCRUM Development Process Universidade Federal de Pernambuco Lenylda Albuquerque
Agile Modeling Júlio Lins – Junho / 22 Agile Alliance Em 2001, reune-se um grupo de representantes das metodologias eXtreme Programming, SCRUM,
Joaquim Oliveira Grupo de Estudos em Processos 25/06/2002 Comparação entre Metodologias de Desenvolvimento.
UMC - ENGENHARIA DE SOFTWARE E GERENCIAMENTO DE PROJETOS MÉTODOS ÁGEIS PARA DESENVOLVIMENTO DE SOFTWARE.
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Transcrição da apresentação:

Metodologia ágil Lílian Simão Oliveira

Fonte: Pressman, 2004 Aulas Prof. Auxiliadora Freire e Sabrina Schürhaus

Desennvolvimento rápido de software Devido à rápida mudança dos ambientes de negócio, os negócios devem responder às novas oportunidades e à competição. Isso requer software e desenvolvimento rápido, e a entrega é, freqüentemente, o requisito mais crítico para sistemas de software. Os negócios podem estar dispostos a aceitar um software de baixa qualidade se a entrega rápida e a funcionalidade essencial for possível.

"Manifesto Para o Desenvolvimento Ágil de Software" reunião entre 17 gurus da comunidade de desenvolvimento Realizada entre os dias 11 e 13 de fevereiro de 2001 Estação de esqui nas montanhas de Utah, Estados Unidos.

Manifesto Ágil (Princípios) Indivíduos e interações => mais importantes que processos e ferramentas. Software funcionando => mais importante do que documentação completa e detalhada. Colaboração com o cliente => mais importante do que negociação de contratos. Adaptação a mudanças => mais importante do que seguir o plano inicial. Evento ocorrido em 2001 WebSite: http://www.agilemanifesto.org

Metodologia Ágil Fonte: Aula Auxiliadora Freire

O que é agilidade? Equipe ágil Modificações Facilidade em alterar

Problemas com métodos ágeis Difícil manter o interesse dos clientes no processo As equipes podem ser inadequadas para o intenso envolvimento que caracteriza os métodos ágeis A priorização de mudanças pode ser difícil onde existem múltiplos stakeholders A manutencão da simplicidade requer trabalho extra Problemas nos contratos

Metodologias ágeis (agile software development ecosystems - ASDEs) XP (eXtreme Programming) DSDM ( Dynamic Systems Development Method) Família Crystal ASD (Adaptive Software Development) SCRUM FDD (Feature-driven development) LD ( Lean Development ) Open Source Obs: Todos os seus autores com exceção do autor de LD e OpenSource participaram do Manifesto Ágil e portanto possuem princípios em comum.

XP (eXtreme Programming)

XP (eXtreme Programming) Projeto C3 (Chrysler) - Kent Beck, Ward Cunningham and Ron Jeffries (1996) http://www.xprogramming.org Valores: Comunicação Simplicidade Feedback Coragem 12 Práticas: Pair Programnig, Refactoring, Simple Design, Test-driven development Collective Ownership, Coding Standard, Continuous Integration, Sustainable Pace Customer tests, Whole Team, Planning Game, Small Releases, Metaphor

DSDM (Dynamic Systems Development Method) Método Dinâmico de Desenvolvimento de Sistemas

DSDM (Dynamic Systems Development Method) Método Dinâmico de Desenvolvimento de Sistemas Proprietária do consórcio DSDM (Reino Unido, 1994) http://www.dsdm.org/ Ciclo: Estudo de viabilidade Estudo do negócio (workshops) 3 ciclos em paralelo, entrelaçados Ciclo do modelo funcional -> análise e protótipos Ciclo de design e build -> engenharia do produto Ciclo de implementação -> implantação operacional Princípios: Iterações fixas (2-6 semanas) Releases freqüentes Qualidade total Adaptabilidade a mudanças de requisitos

DSDM Progenitor do XP Framework para desenvolvimento rápido de aplicações (RAD) Fixa tempo e recursos ajustando a quantia de funcionalidades Pequenas equipes Suporta mudanças nos requisitos durante o ciclo de vida

DSDM O DSDM consiste de 5 fases: Funcional Model Iteration Feasibility Review Study Design And Build Implementation

DSDM - Cargos e Responsabilidades Desenvolvedores (Developers) Desenvolvedores Sêniores (Senior Developers) Coordenador Técnico (Technical Coordinator Usuário Embaixador (Ambassador User) Usuário Consultor (Adviser User) Visionário (Visionary) Executivo responsável (Executive Sponsor) Especialísta do domínio (Domain experts) Gerente do domínio (Domain manager)

“Construa o produto certo antes de você construí-lo corretamente” DSDM - Usuário sempre envolvido Equipe do DSDM autorizada a tomar decisões Foco na freqüente entrega de produtos Adaptação ao negócio é o critério para entregas “Construa o produto certo antes de você construí-lo corretamente” Desenvolvimento iterativo e incremental Mudanças são reversíveis utilizando pequenas iterações Requisitos são acompanhados em alto nível Testes integrados ao ciclo de vida

Crystal

Família Crystal/Clear Alistair Cockburn (IBM – anos 90) http://alistair.cockburn.us/ Cada projeto uma metodologia. 4 parâmetros determinam o método de desenvolvimento: Tamanho da equipe Localização geográfica Criticalidade/Segurança Recursos A recomendação de quais os artefatos, papéis e ciclo de desenvolvimento de um projeto é parametrizada. O processo é revisado no fim de cada iteração.

Crystal/Clear Na verdade é um conjunto de metodologias Voltada para projetos pequenos (até 6 desenvolvedores) Especificação e projeto são feitos informalmente usando quadros publicamente visíveis. A metodologia e propositalmente pouco definida. Para permitir que cada ONG implemente as atividades que lhes pareçam mais adequadas. Fornecendo um mínimo de suporte útil a documentação e comunicação.

ASD (Adaptive Software Development) Desenvolvimento Adaptável de Software

ASD (Adaptive Software Development) Desenvolvimento Adaptável de Software Jim Highsmith (1997) http://www.adaptivesd.com/ Sistemas complexos => Resultados imprevisíveis Ciclo:  Colaboração  EspeculaçãoAprendizado Abordagem: Do it wrong the first time: erre cedo, corrija cedo, não potencialize mal- entendidos. Good enough quality: melhor compromisso entre dimensões de qualidade (extrínseca e intrínseca) para os recursos disponíveis. Mecânica: RAD (rapid application development), sessões JAD (joint application development) com o cliente.

ASD Ciclos de 3 fases

ASD Iterativo e incremental Sistemas grandes e complexos Framework para evitar o caos Cliente sempre presente: Desenvolvimento de aplicações em conjunto (Joint Application development – JAD)

ASD Especular Fixa prazos e objetivos Define um plano baseado em componentes Colaborar Construção concorrente de vários componentes Aprender Repetitivas revisões de qualidade e foco na demostranção das funcionalidades desenvolvidas (Learning loop) Presença do cliente e especialistas do domínio Os ciclos duram de 4 a 8 semanas

ASD Orientado a missões Atividades são justificadas através de uma missão, que pode mudar ao longo do projeto Baseado em componentes Construir o sistema em pequenos pedaços Iterativo Desenvolvimento em cascata (Waterfall) só funciona em ambientes bem definidos e compreendidos. foco em refazer do que fazer corretamente já na primeira vez. Prazos pré-fixados Tolerância a mudanças (Change-tolerant) As mudanças são freqüentes É sempre melhor estar pronto a adaptá-las do que controlá-las Constante avaliação de quais componentes podem mudar Orientado a riscos (Risk driver) Itens de alto risco são desenvolvidos primeiro

SCRUM

Rugby

SCRUM Jeff Sutherland, Ken Schwaber (1993) http://www.controlchaos.com/ Sprints de 30 dias Estabilizar requisitos em cada iteração Scrum (reunião de status) diária (15 min) Guia o desenvolvimento daquele dia Foco em gerência e tracking Pode ser combinado com métodos mais prescritivos (ex: XP@scrum)

XP X SCRUM SCRUM com princípios semelhantes ao XP: Equipes pequenas Requisitos instáveis ou desconhecidos Iterações curtas para prover visibilidade ao desenvolvimento. SCRUM com dimensões diferentes de XP: Scrum divide o desenvolvimento em sprints de 30 dias e reuniões diárias de 15 minutos. As equipes são formadas por pessoas com competências diferentes: projetistas, programadores, engenheiros e gerentes de qualidade. Scrum possui um mecanismo de informação de status atualizado continuamente e a divisão de tarefas é explícita. SCRUM e XP são complementares pois Scrum prove práticas de gerenciamento enquanto que XP prove práticas integradas de engenharia de SW.

FDD(Feature-driven development) Desenvolvimento Orientado a Funcionalidades

FDD(Feature-driven development) Desenvolvimento Orientado a Funcionalidades Jeff DeLuca, Peter Coad http://thecoadletter.com/download/fddguide/ 5 processos: 1- Modelo geral (arquitetura) 2 -Lista de funcionalidades: Levanta requisitos para todo o projeto 3 – Planejamento por funcionalidades: Define escopo de cada iteração (quais funcionalidades) Forma times para desenvolver cada funcionalidade. (A cada iteração): 4 – Projeto por Funcionalidades 5 - Construção por Funcionalidades

O FDD consiste de 5 processos principais:

FDD- Cargos e Responsabilidades Principais Gerente de projeto (Project Manager) Arquiteto líder (Chief architect) Gerente de desenvolvimento (Development Manager) Programador líder (Chief programmer) Proprietário de classe (Class owner) Especialista do domínio (Domain experts) Gerente do domínio (Domain manager) De apoio Gerente de versão (Release manager) Guru de linguagem (Language lawyer/language guru) Engenheiro de construção (Build engineer) “Ferramenteiro” (Toolsmith) Administrador de sistemas (System Administrator) Adicionais Testadores (Testers) Instaladores (Deployers) Escritores técnicos (Technical writes)

FDD – Boas Práticas Modelagem de objetos de domínio Exploração e explicação do problema do domínio Resulta em um framework Desenvolver por funcionalidade Desenvolvimento e acompanhamento do progresso através de da lista de funcionalidades. Proprietários de classes individuais Cada classe possui um único desenvolvedor responsável Equipe de funcionalidades Formação de equipes pequenas e dinâmicas. Inspeção (Inspection) Uso dos melhores métodos conhecidos de detecção de erros. Releases freqüentes Garantir que existe um sistema sempre disponível e demonstrável. Administração de Configuração Habilita acompanhamento do histórico do código-fonte.

LD ( Lean Development )

LD ( Lean Development ) Mary Poppendieck (2000) http://www.poppendieck.com/ Focado na identificação de gargalos no processo de desenvolvimento de software Metáfora (boa) de fábrica Empresta idéias de Qualidade Total, (Deming, anos 50) Lean Production (Japão, anos 50) Teoria de Sistemas Dinâmicos (MIT, anos 60) Lean Construction (adaptabilidade na construção civil, anos 90)

Open source

Open Source Richard Stallman (anos 80), Linus Torvalds (anos 90) http://www.opensource.org/ Inicialmente, para software básico Maintainer: Orienta o desenvolvimento Decide o quê vai entrar no software “oficial” Catedral X Bazar Catedral: releases pouco freqüentes, desenvolvimento centralizado (GNU, BSD) Bazar: releases freqüentes, desenvolvimento mais espalhado (Linux kernel, apache.org)