Desenvolvendo Software Livre com Programação extrema



Documentos relacionados
Desenvolvimento Ágil de Software com Programação extrema (XP) Ricardo Argenton Ramos

Programação extrema (XP)

Introdução a Métodos Ágeis de Desenvolvimento de Software

Desenvolvimento Ágil. Prof. Ricardo Argenton Ramos Aula 13 e 14. [baseada na apresentação dos professores Fabio Kon e Alfredo Goldman DCC-IME-USP]

Com metodologias de desenvolvimento

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

Prof. Me. Marcos Echevarria

Sistemas de Informação I

ENGENHARIA DE SOFTWARE I

Programação Extrema na Prática

1º SEMESTRE DE 2011 Prof. Msc. Hilmer Rodrigues Neri

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças.

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp

Prof. Luiz A. Nascimento. As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software.

Desenvolvimento Ágil de Software

Leves ou pesadas Incrementais, cascata, lineares... etc. Pro ativas e reativas RAD, SDLC

Jonas de Souza H2W SYSTEMS

CONHEÇA. nosso. processo. Para você lançar sua Startup. Semana de descoberta. Semana de desenvolvimento. E depois de tudo pronto?

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

Sistemas de Informação I

Agile Methods for the Traditional Guy

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Desenvolvimento Ágil de Software em Larga Escala

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Estudo de Caso. Cliente: Rafael Marques. Coach: Rodrigo Santiago. Duração do processo: 12 meses

Programação Orientada a Testes Rodrigo Rebouças de Almeida

Capítulo 1. Extreme Programming: visão geral

Engenharia de Software II

Engenharia de Software

O papel do CRM no sucesso comercial

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Ideal para que tipo de empresa (equipe): pequena, média, grande? Em software onde os requisitos não são conhecidos é recomendado o uso do XP? Por quê?

Princípios da Engenharia de Software Aula 02. Prof.: Franklin M. Correia

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro

ACOMPANHAMENTO GERENCIAL SANKHYA

Scrum Uma breve apresentação. Alfredo Goldman Dairton Bassi

Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM)

agility made possible

DESIGN DE INTERFACES E USABILIDADE (AULA 1)

Processos de Desenvolvimento de Software

Daniel Wildt

Processo de Desenvolvimento de Software. Unidade V Modelagem de PDS. Luiz Leão luizleao@gmail.com

Trilha Agile TDD e 20 coisas que você precisa saber


UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

Resumo artigo Agile Modeling- Overview

extreme Programming extreme Programming (XP) Metodologia Ágil Partes do XP Communication (comunicação) 1. Valores do XP

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Interface Homem- Computador

Professor: Curso: Disciplina:

UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE APLICAÇÕES

Uma retrospectiva sobre a utilização do Scrum em uma empresa pública: o que funcionou e o que precisa melhorar. Luiz Carlos L. S.

Processo de Abertura de Projetosescritorio. Bizagi Process Modeler

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Arquitetura de Informação

Java Programação para Fábrica de Software. Fernando Lozano Consultor 4Linux

O evento não fará uso do vídeo (webcam), somente slides e áudio. Se necessário, ajuste o idioma da sala na barra de ferramentas superior

Engenharia de Software I. Aula 15: Metodologias Ágeis. Prof. Márcio D. Puntel

Metodologias Ágeis. Aécio Costa

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Práticas de. Engenharia de Software. Givanaldo Rocha de Souza

Engenharia da WEB 16/08/2011. Vida moderna. Sistemas WEB

Os Desafios da Segurança no Desenvolvimento com Métodos Ágeis. OWASP Education Project. The OWASP Foundation

ATO Nº 91/2015/GP/TRT 19ª, DE 1º DE JUNHO DE 2015

Prof. Me. Marcos Echevarria

Implantação de ERP com sucesso

PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 1. VISÃO GERAL 1.1. PROCESSOS EM GERAL

Como fazer contato com pessoas importantes para sua carreira?

Princípios de Design TRADUÇÃO DE TATIANE CRISTINE ARNOLD, DO ARTIGO IBM DESIGN: DESIGN PRINCIPLES CHECKLIST.

Corporativo. Transformar dados em informações claras e objetivas que. Star Soft.

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

A Evolução de XP segundo Kent Beck Parte 2

APRENDA AS MUDANÇAS DE FORMA FÁCIL

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Evolução de Software e Refatoração

Utilizando tecnologias para apoio à gestão de processos

Metodologia de Projetos. André Gomes Coimbra

Projeto Você pede, eu registro.

VENDAS Como aumentar sua performance com as técnicas de coaching?

GUIA PARA O GT RECURSOS FINANCEIROS

Engenharia de Software I

PROJETO DE FÁBRICA DE SOFTWARE

Gerenciamento da Qualidade

CONHECER E NEGOCIAR COM CLIENTES: uma experiência de gincana das cores

Desenvolvimento Ágil sob a Perspectiva de um ScrumMaster

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

No E-book anterior 5 PASSOS PARA MUDAR SUA HISTÓRIA, foi passado. alguns exercícios onde é realizada uma análise da sua situação atual para

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

ESCOLAS E FACULDADES QI MBA DE GESTÃO DE PESSOAS E NOGÓCIOS PLANEJAMENTO ESTRATÉGICO E OS SISTEMAS DE GESTÃO DE PESSOAS TIANE RIBEIRO BERNY

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga

Academia de Software Pró Informática

Ágil. Rápido. Métodos Ágeis em Engenharia de Software. Introdução. Thiago do Nascimento Ferreira. Introdução. Introdução. Introdução.

RELATÓRIO MESA DEVOLVER DESIGN (EXTENSÃO) Falta aplicação teórica (isso pode favorecer o aprendizado já que o aluno não tem a coisa pronta)

MERCER 360 PRINCIPAIS CARACTERÍSTICAS

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 05 PROFª BRUNO CALEGARO

Benchmark Internacional Usabilidade Prefeituras e Boas Práticas de Planejamento e Gestão. Marcelo Barbosa, M.Sc. José Cláudio C.

GTI Governança de TI. GTI como Ativo Estratégico. GTI - Um Ativo Estratégico 1

Transcrição:

Desenvolvendo Software Livre com Programação extrema Dairton Bassi FISL 7.0 abril/2006

Panorama sobre o Desenvolvimento de Software A sociedade demanda: Grande quantidade de sistemas/aplicações Sistemas complexos, software distribuído, muitas tecnologias, etc Requisitos mutantes Mas, infelizmente... É difícil produzir software de alta qualidade Nem todas as equipes conseguem bons resultados

Dificuldades da produção de Software Gerenciamento da equipe Comunicação interna Entendimento das necessidades do usuário Negociação com o cliente Mudanças de requisitos Prazos curtos

Problemas com metodologias Supõem que é possível prever o futuro. Pouca interação com os clientes. Ênfase na burocracia (documentos, formulários, processos, controles rígidos, etc.). Evolução baseada em cronogramas prédefinidos. Demora para obter versões funcionais.

Conseqüências Grande quantidade de erros Software sem flexibilidade Não atendimento de todas as necessidades do cliente Falta de confiança no software

Como resolver esses problemas? Melhores Tecnologias Componentes (reutilização de código) Padrões de Projeto (reutilização de idéias) Melhores Metodologias Métodos Ágeis (nosso foco) outras... (RUP, relacionadas a CMMi, etc.)

Modelo Tradicional de Desenvolvimento de Software 0. Levantamento de Requisitos 1. Análise de Requisitos 2. Desenho da Arquitetura 3. Implementação 4. Testes 5. Produção / Manutenção

Conseqüência da abordagem tradicional Custo de mudanças requisitos desenho testes análise implementação produção

Métodos Ágeis de Desenvolvimento de Software Movimento iniciado por programadores experientes e consultores em desenvolvimento de software. Manifesto Ágil: Assinado em fevereiro/2001 por 17 desenvolvedores em Utah.

O Manifesto do Desenvolvimento Ágil de Software 1. Indivíduos e interações são mais importantes que processos e ferramentas. 2. Software funcionando é mais importante do que documentação completa e detalhada. 3. Colaboração com o cliente é mais importante do que negociação de contratos. 4. Adaptação a mudanças é mais importante do que seguir o plano inicial.

Mas... o que é XP? XP é uma metodologia ágil de desenvolvimento de software que reúne boas práticas de programação e de gerenciamento de projetos com o objetivo de produzir software de alta qualidade.

Princípios Básicos de XP Feedback rápido Simplicidade é o melhor negócio Carregue a bandeira das mudanças / Não valorize o medo Alta qualidade do código Comunicação intensa

E se o mundo fosse assim? Custo de mudanças tempo

Reações a XP Alguns odeiam, outros amam. Quem gosta de programar ama! Deixa o bom programador livre para fazer o que ele faria se não houvesse regras. Força o [mau] programador a se comportar de uma forma similar ao bom programador.

As 12 Práticas de XP 1 - Planejamento 2 - Fases Pequenas 3 - Metáfora 4 - Design Simples 5 - Testes 6 - Refatoração 7 - Programação Pareada 8 - Propriedade Coletiva 9 - Integração Contínua 10 - Semana de 40 horas 11 - Cliente junto aos desenvolvedores 12 - Padronização do código

Equipe Grupos de 2 a 20 programadores Membros da equipe: Programadores (sem hierarquia) Cliente (Contratante) Coach (Técnico) Tracker (Acompanhador)

Testes É o que dá segurança e coragem à equipe Testes de unidades (Unit tests) escritos pelos programadores para testar cada elemento do sistema. Testes de funcionalidades (Functional tests) escritos pelos clientes para testar a funcionalidade do sistema.

Programação Pareada Erro de um detectado imediatamente pelo outro. Maior diversidade de idéias, técnicas, algoritmos. Enquanto um escreve, o outro pensa em contraexemplos, problemas de eficiência, etc. É mais difícil produzir código feio (gambiarras) na frente do parceiro. Pareamento de acordo com especialidades.

O Código Padrões de estilo adotados pelo grupo inteiro. O mais claro possível. XP não se baseia em documentações detalhadas e extensas (perde-se sincronia). Comentários sempre que necessários.

Refatoração Uma [pequena] modificação no sistema que não altera o seu comportamento funcional. Melhora alguma qualidade não-funcional: simplicidade flexibilidade clareza desempenho

Exemplos de Refatoração Mudança do nome de variáveis Mudanças nas interfaces dos objetos Pequenas mudanças arquiteturais Encapsular código repetido em um novo método Generalização de métodos raizquadrada(float x) raiz(float x, int n)

Propriedade Coletiva do Código Propriedade do código: Modelo tradicional: só autor de uma função pode modificála. XP: o código pertence a todos. Se alguém identifica uma oportunidade para simplificar, consertar ou melhorar código escrito por outra pessoa, que o faça. Mas rode os testes!

Um dia na vida de um programador XP (1/2) Escolhe uma história Procura um par livre Escolhe um computador para programação pareada Discute modificações recentes no sistema Discute história com o parceiro

Um dia na vida de um programador XP (2/2) Pensa em novos testes Discute a melhor maneira de implementar Implementa Executa os testes Integra o novo código

No que um programador XP pensa Executar testes antigos Encontrar oportunidades para simplificação Modificar a implementação para suportar uma nova funcionalidade Escrever novos testes Compreender as necessidades do cliente Enquanto o código não passa por todos os testes o trabalho não está terminado Integrar código novo ao repositório

E se eu não me encaixo nesse perfil? Você pode aprender muito sobre desenvolvimento de software com XP. No início se dizia: Ou você é 100% extremo ou não é extremo. Não dá prá ser 80% XP. Hoje não é mais assim.

Para fazer XP, é preciso lembrar... Supere o medo de mudanças Siga em frente sem saber tudo sobre o futuro Confie no trabalho da sua equipe Jogue código fora se necessário Negocie com o cliente Escreva testes sempre

As 12 Práticas 1 - Planejamento 2 - Fases Pequenas 3 - Metáfora 4 - Design Simples 5 - Testes 6 - Refatoramento 7 - Programação Pareada 8 - Propriedade Coletiva 9 - Integração Contínua 10 - Semana de 40 horas 11 - Cliente junto aos desenvolvedores 12 - Padronização do código

Mais uma prática... Conserte XP quando a metodologia não for adequada

Mais Informações www.agilealliance.org htt://agilcoop.incubadora.fapesp.br www.extremeprogramming.org

Dúvidas? - agilcoop@gmail.com