• Nenhum resultado encontrado

Pedro Henrique Soares Tiago Bento Alves Luis Paulo Silva Andrea Negreiros Charles Custódio Neto Georgina Barreto Humberto Moura José Lindomar

N/A
N/A
Protected

Academic year: 2021

Share "Pedro Henrique Soares Tiago Bento Alves Luis Paulo Silva Andrea Negreiros Charles Custódio Neto Georgina Barreto Humberto Moura José Lindomar"

Copied!
61
0
0

Texto

(1)

Pedro Henrique Soares  Tiago Bento Alves  Luis Paulo Silva  Andrea Negreiros  Charles  Custódio Neto  Georgina Barreto  Humberto Moura  José Lindomar 

(2)
(3)

Utopia do Software? 

Desenvolver o produto que atenda as necessidades do  cliente e seja entregue no prazo, com o custo e o nível 

(4)

ØNão há nada mais trabalhoso do que fazer software! 

ØEssa frase vem sendo usada na indústria desde “crise do 

(5)

Principais Problemas 

Ø Atrasos no cronograma.  Ø Falta de planejamento.  Ø Inúmeros bugs.  Ø Incompreensão dos requisitos de negócio e sistema.  Ø Mudanças constantes nos requisitos.

(6)
(7)
(8)
(9)
(10)

O surgimento do XP 

Ø

Em meados de 1990, 

Kent Beck

Kent Beck

 

procurou 

formas mais simples e eficientes de desenvolver 

software 

§  Identificou o que tornava simples e o que dificultava o  desenvolvimento de software 

Ø

Em Março de 1996, ele iniciou um projeto com 

novos conceitos que resultaram na 

metodologia XP ‐ eXtreme Programming

(11)

Motivações do XP 

ØTornar o desenvolvimento do software melhor 

ØProduzir  software  de  qualidade  em  um  ritmo 

sustentável 

ØTrazer  transparência,  responsabilidade  e  capacidade  de 

justificativa (accountability) 

ØAbraçar as mudanças 

(12)
(13)

  Interação  entre  pessoas  MAIS  QUE  processos  e 

ferramentas; 

•  Software  em  funcionamento  MAIS  QUE 

documentação abrangente; 

•  Colaboração com o cliente MAIS QUE negociação de  contratos; 

(14)
(15)
(16)

Valores, Princípios e Práticas 

lValores: são nossas crenças fundamentais, aquilo em  que acreditamos no desenvolvimento de software.  lPráticas: são atitudes, atividades concretas que fazemos  no dia‐a‐dia. Garantem a aplicação dos valores.  lPrincípios: servem como guias, específicos do contexto  de desenvolvimento, que ajudam a adaptar as práticas à  realidade particular de cada equipe ou projeto.

(17)

Valores de XP 

lComunicação  lSimplicidade  lFeedback  lCoragem  lRespeito

(18)

ØFalhas na comunicação é uma das principais causas  de atrasos e de fracassos em projetos de software.  ØA pergunta: o que é a coisa certa a fazer?  ØO XP prioriza o dialogo presencial com o objetivo de  garantir que todas as partes envolvidas em um projeto  tenham a chance de se compreender da melhor  maneira possível. 

Comunicação

(19)
(20)
(21)

ØEquipes  XP  acreditam  que  projetos  de  software  são  iniciativas freqüentemente caras, arriscadas e com um  histórico repleto de falhas 

ØIsso  pode  ser  tratado  de  forma  mais  econômica  e  eficaz se as falhas forem detectadas rapidamente. 

ØEm  projetos  XP  procura‐se  entregar  novas  funcionalidades  no  menor  prazo  possível,  para  que  o  cliente  compreenda  rapidamente  as  conseqüências  daquilo que pediu. 

(22)

ØA  única  constante  em  um  projeto  de  software  é  a  mudança 

ØOs  clientes  mudam  porque  aprendem  durante  o  projeto  e  descobrem  problemas  mais  prioritários  a  serem  solucionados  ou  formas  mais  apropriadas  de  resolvê‐los. 

ØSão  uma  grande  oportunidade  de  descobrirmos  o  que é a coisa certa a se fazer 

(23)

ØXP não  tem uma solução mágica para eliminar esse  risco.  Ele  existe  em  um  projeto  XP,  como  existe  em  qualquer outro. 

ØEquipes XP consideram as mudanças inevitáveis! 

ØEm projetos com XP  procuramos nos adaptar a elas  com  confiança  em  seus  mecanismos  de  proteção,  tais  como  desenvolvimento  orientado  a  testes,  programação em par e integração contínua. 

(24)
(25)

ØRespeito  é  um  valor  que  dá  sustentação  a  todos  os  demais pilares de um projeto. 

ØRespeito  é  o  mais  básico de  todos  os  valores.  Se  ele  não  existir  em  um  projeto,  não  há  nada  que  possa  salvá‐lo. 

ØSaber  ouvir,  saber  compreender  e  respeitar  o  ponto  de  vista  do  outro  é  essencial  para  que  um  projeto  de  software seja bem sucedido. 

(26)

Princípios da XP 

Auto‐semelhança  Benefício Mútuo  Diversidade  Economia  Falha  Fluidez  Humanismo  Melhoria  Oportunidade  Passos de Bebê  Qualidade  Redundância  Reflexão  Responsabilidade Aceita

(27)

Economia 

Ø Software é um investimento.  Ø Desenvolver consome dinheiro e tempo.  Ø Deve gerar retorno para os negócios.  Ø O XP antecipa as receitas e adia as despesas.  Ø Implementar o mais cedo possível as funcionalidades  que gerem retorno financeiro.  Ø Em XP os investimentos na arquitetura do software  são os mínimos possíveis.

(28)

Qualidade 

Ø XP gera valor rapidamente e evita desperdícios.  ‐ Perdas para o negócio  ‐ Insatisfação do cliente  ‐ Conflito entre cliente e desenvolvedores  ‐ Desconfiança  ‐ Ansiedade  ‐ Relacionamentos desgastados  ‐ Perda de tempo corrigindo defeitos  ‐ Dificuldade para adaptar o software a novas  necessidades de maneira segura

(29)

Humanismo 

Ø Pessoas desenvolvem software.  Ø É importante compreender a natureza humana e  potencializar o que ele tem de melhor.  Ø Programar é uma atividade complexa.  Ø Programadores gostam de programar.  Ø O XP coloca as pessoas no centro.

(30)

Diversidade 

Ø Desenvolver software é uma atividade complexa.  Ø Indivíduos iguais ficam limitados a pontos de vistas  semelhantes.  Ø Explorar idéias diferentes e inovadoras.  Ø Opiniões diferentes, soluções ricas.

(31)

Práticas da XP 

Inicialmente  o  XP  definia  um  conjunto  de  12  práticas.  Estas  práticas  continuam  válidas  até  hoje,  mas  foram remodeladas nos últimos anos. 

Todas as práticas do XP focam que o maior valor possível  seja gerado para o cliente.

(32)

12 Práticas originais 

Nível do Cliente  Nível da Equipe  Nível do Par  Ø  Refatoração  Ø  Programação em Pares  Ø  Metáfora  Ø  Stand up Meeting  Ø  Padrões de Codificação  Ø  Código Coletivo  Ø  Integração Contínua  Ø  Ritmo Sustentável  Ø  Jogo do Planejamento  Ø  Releases Curtos  Ø  Cliente Presente  Ø  Desenvolvimento  orientado a testes  Ø  Design Simples

(33)

Jogo de planejamento 

Ø  Pessoal de Negócio toma as  decisões de negócio  ‐  Definir as datas  ‐  Escrever as histórias (escopo)  ‐  Priorizar o que deve ser feito  Ø  Pessoal Técnico toma as decisões  técnicas  ‐  Estimar as histórias  ‐  Informar os riscos técnicos  ‐  Informar sua velocidade

(34)

Histórias 

Ø  Pequenos  pedaços  de  funcionalidades  que 

produzem valor para os usuários do sistema. 

Ø  Por simplicidade, são escritas em cartões

Ø  Escritas  pelo  cliente  ou  por  algum  tipo  de  user 

proxy (gerentes, equipes de marketing, especialistas do  domínio, analistas de negócio, etc). 

Ø  Promessas  de  conversa  futura,  não  especificações 

(35)

Histórias

Um usuário pode reservar um quarto com um cartão de

crédito.

Nota: Serão aceitos VISA, MasterCard e American

Express. Verificar Diner’s.

(36)

Cliente Presente 

Ø  Visão diferente do modelo tradicional.  Ø  Cliente presente no dia‐a‐dia do projeto.  Ø  Dialogar para entender. 

(37)

Releases Curtos 

Ø  Pequenos investimento efetuados de forma gradual.  Ø  Seleciona histórias de maior valor para o cliente.  Ø  O release deve ter sentido isoladamente.  Ø  Promove desenvolvimento iterativo e incremental.  Ø  Promove retorno rápido para o cliente em curto prazo  de tempo. 

Ø  Maior  valor  de  negócio  possível  entregue  ao  final  de 

(38)

Desenvolvimento orientado a testes 

Ø  Técnica preventiva utilizada durante todo o projeto.  Ø  Todo código implementado deve coexistir de um teste  automatizado.  Ø  Teste deve ser codificado antes de implementar a cada  história.  Ø  Teste de Unidade:  ‐ Verifica os resultados de cada classe separadamente.  Ø  Teste de aceitação:  ‐ Verifica a implementação de uma história.

(39)

Design Simples 

Ø  No  desenvolvimento  tradicional,  algumas 

funcionalidades que não terão utilidade para o cliente  são implementadas. 

Ø  O XP não se preocupa com necessidades futuras. 

Ø  Prega  um design do  sistema simples para que  atenda 

as necessidades do cliente. 

Ø  Implementar  apenas  funcionalidades  pedidas  pelo 

(40)

Refatoração 

Ø  Desenvolvedor    pode  alterar  o  código  de  outros, 

deixando‐os mais legíveis e simples. 

Ø  Anda de mãos dadas com o código coletivo e com os 

padrões de codificação. 

Ø  Apoiada pelos testes automatizados. 

Ø  Reestruturação  do  código  não  pode  afetar  as 

funcionalidades do sistema. 

Ø  Alterar como ele faz, mas não o que ele faz.  Ø  Aprimorar a estrutura interna.

(41)

Metáfora 

Ø  Criar  comparações  e  analogias  com  o  assunto  em 

questão para um melhor entendimento do assunto. 

Ø  Utilizado com intensidade no projeto. 

Ø  Facilita  comunicação  e  fixação  dos  assuntos  entre  as 

partes. 

Ø  Vista  como  aspecto  crucial  na  disseminação  e 

compreensão de novas idéias. 

(42)

Uma metáfora: Aprendendo a dirigir 

— Dirigir um carro, mesmo em  uma estrada reta, implica em  pequenos ajustes ao longo do  tempo  — Trânsitos, imprevistos,  mudanças de prioridades  podem mudar seu caminho  — Este é o paradigma do XP:  Fique atento, adapte, mude

(43)

Stand Up Meeting 

Ø  Cada dia de trabalho “começa”  com uma reunião, onde todos  conversam sobre os problemas  encontrados no dia anterior e  definem as prioridades do dia  que se inicia.  Ø  A reunião é curta, mais ou  menos uns 15 minutos. O fato  de ser em pé ajuda a alcançar  este objetivo.  Ø  Registrar o progresso da  iteração (quadro de  acompanhamento)

(44)

Programação em Par 

Ø  Duas cabeças realmente  pensam melhor que uma.  Ø  Todo código de produção é  escrito por pares de  desenvolvedores.  Ø  Dois papéis:  ‐  ‐ Piloto: quem está com o  teclado e com o mouse.  Pensa focado no código a sua  frente.  ‐  ‐ Navegador: o outro. Pensa  mais estrategicamente.

(45)

Programação em Par (Continuação) 

Ø  Pressão do par favorece a  produtividade e simplicidade.  Ø  Maior qualidade do código,  mais correto, menos bugs.  Ø  Disseminação do  conhecimento e padrões.

(46)

Padrões de Codificação 

Ø  O  código  também  é  uma  forma  da  equipe  se 

comunicar. 

Ø  Manter um padrão para o entendimento rápido e fácil 

de qualquer membro da equipe. 

Ø  Gera maior consistência dentro do código. 

Ø  Ajuda  na  programação  em  par  e  tornar  o  código 

(47)

Código Coletivo 

Ø  No  modelo  tradicional,  o  desenvolvedor  fica 

responsável  por  apenas  uma  parte  do  projeto.  Este  tipo de divisão traz sérios problemas. 

Ø  Cada  desenvolvedor  tem  acesso  a  qualquer  parte  do 

sistema. 

Ø  Alterar qualquer parte do código a qualquer momento 

e sem aviso. 

Ø  Consequência  de  um  código  revisado  por  diversas 

(48)

Integração Contínua 

Ø  No  desenvolvimento  tradicional,  os  períodos  de 

integração e de testes são extremamente longos o que  propicia a sérios erros.  Ø  Se possível, integração da produção diversas vezes ao  dia.  Ø  Sincronização das atividades concluídas.  Ø  Facilidade para encontrar e depurar erros. 

Ø  Descoberta  de  eventuais  conflitos  o  mais  cedo 

(49)

Ritmo Sustentável 

Ø  Grande problema em projetos de software é a falta de  tempo, submetendo os programadores a horas extras.  Ø  Em projetos XP é proibido trabalhar até mais tarde.  Ø  Ritmo sustentável de 40 horas semanais.  Ø  Evitar sempre que possível fazer horas‐extras.  Ø  Mais concentração e menos erros de implementação.

(50)

Comentários finais sobre as práticas 

Ø  Participação do cliente  é fundamental para o  sucesso de um projeto.  Ø  XP estabelece um ritmo  de trabalho  sustentável.

(51)

Preparando‐se para o XP 

Ø  A primeira coisa que  deve ser feita para se  começar um projeto XP  é reorganizar o  ambiente.  Ø  White Boards.  Ø  Mobília preparada para  o trabalho em duplas.  Ø  Mural para colocar os  cartões.  Uma das mais importantes ferramentas do XP

(52)
(53)
(54)

Ciclo de Vida 

Cliente  Implementa  Funcionalidades  Define escopo 

Comunicação 

Simplicidade 

Desenvolvedor 

Feedback 

Desenvolvedor 

Coragem 

Escolhe  Estima T‐Q‐C 

Prioridades 

(55)

Equipe XP 

Analista de teste 

Arquitetos 

Designers de Interação 

Executivos 

Gerentes de Projeto 

Usuários 

Programadores 

Redatores Técnicos 

Os  papéis  em  uma  equipe  XP  não  são  fixos  e  rígidos.  O  objetivo  é  fazer com que cada um contribua com o melhor que tem a oferecer  para que a equipe tenha sucesso.

(56)

Analistas de Testes 

ØResponsável em garantir a qualidade do sistema através dos  testes escritos. Ajudam clientes e desenvolvedores a escrever  os testes para as histórias. 

Designers de Interação 

ØDesigners de interação trabalham próximo aos clientes em  um projeto XP. Eles os ajudam a escrever histórias e escolher  metáforas consistentes para o projeto.

(57)

Gerentes de Projeto 

ØAsseguram  que  as  pessoas  certas  dialoguem  dentro  da 

equipe e fora dela. Nesse sentido, age como um facilitador no  fluxo de comunicação do projeto. 

Programadores 

ØProgramadores  em  uma  equipe  XP  trabalham  em  pares 

(58)

Redatores Técnicos 

ØRedatores  técnicos  ajudam  a  equipe  a  criar  e  manter  a 

documentação do projeto. Redatores técnicos asseguram  que a documentação evolua de forma iterativa. 

Arquitetos 

ØAjudam  os  desenvolvedores  no  dia‐a‐dia  através  da 

programação  em  par.  Ajudam  a  equipe  a  criar  testes  mais  amplos.

(59)

Executivos 

ØExecutivos  ajudam  na  definição  do  escopo  do  projeto. 

Administram  as  pressões  dos  usuários  e  removendo  obstáculos. 

Usuários 

ØAjudam a escrever e selecionar histórias e tomam decisões 

relativas  ao  domínio  do  negócio  durante  o  desenvolvimento. Sua  participação é tão valiosa quanto for  seu conhecimento sobre o domínio do negócio.

(60)

Mercado 

HP  Ford  Objective Solutions  Improvelt  Symantec  Motorola  Brasil Telecom  Embrapa  Chrysler  BMW  Borland  Qualiti  APOENA Software Livre  Argonavis  IBM  First National Bank  Thought Works  CETIP  Secretaria da Fazenda SP  Smart Tech Consulting  CC Pace Systems  Industrial Logic  Moore  iQualy  IME‐USP  Xerox  Siemens  UFRJ

(61)

Livros 

ØExtreme Programming: Aprenda como encantar seus usuários  desenvolvendo software com agilidade e alta qualidade  Vinicius Manhães Teles, editora Novatec, 2004.  ØExtreme Programming: Embrace Change, 2nd edition  Kent Beck e Cynthia Andres, Addison‐Wesley, 2004  ØExtreme Programming: Embrace Change, 1st edition  ØKent Beck, Addison‐Wesley, 200  Com versão em Português com o título:  •Programação Extrema, Acolha as mudanças.

Referências

Documentos relacionados

· 4.3 Indicações sobre cuidados médicos urgentes e tratamentos especiais necessários Não existe mais nenhuma informação relevante disponível.. SECÇÃO 5: Medidas de combate

Mas, baseado na clínica, faz-se o alerta para a necessidade de avalição e tratamento mais efetivos nessa área, uma vez que as pessoas com diagnóstico de CET são

O trabalho desenvolvido pelo GEPEFE envolve professores do ensino superior tanto da UEPG como de algumas Instituições particulares, que atuam como docentes no Curso de

2-8 MS-6681 Ligação do dispositivo de rede O conector RJ-45 incluído no Wind Box de520 / dc520 permite-lhe ligar os dispositivos de LAn (Rede local), como por exemplo, um

Professora da Universidade Federal de Minas Gerais Representante dos Fóruns de EJA do Brasil na CNAEJA / Fórum EJA Minas Gerais.

Assinalaram o lançamento das negociações para um acordo de cooperação na área da pesquisa sobre energia de fusão entre o Brasil e a Comunidade Européia de Energia

O motor é de 4 cilindros dispostos radialmente, em banho de óleo, destinado a desenvolver força, do que outras unidades de tamanho equivalente.. PICO

A competitividade do Japão deve-se ao elevadíssimo padrão de tecnologia, tanto de processos de fabricação (tecnologias hard), quanto de engenharia de processos e