Metodologias Ágeis de Desenvolvimento de Software FEUP, MEI e LEIC, 2005/06
|
|
- Kátia Faria Bonilha
- 7 Há anos
- Visualizações:
Transcrição
1 Metodologias Ágeis de Desenvolvimento de Software FEUP, MEI e LEIC, 2005/06 Ademar Aguiar ademar.aguiar at fe.up.pt FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 1
2 Papéis XP FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 2
3 Papeis principais Programador Cliente Tester Tracker Coach Consultant Big Boss FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 3
4 Estratégia de Desenvolvimento FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 4
5 Today s problem today, tomorrow s problem tomorrow A programação é considerada a actividade principal no XP. XP adiciona pequenas práticas à actividade típica de programação, tais como os testes automatizados. Continuous Integration reduz os conflitos na equipa. Collective Ownership encoraja a cooperação da equipa. Pair Programming liga todo o processo. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 5
6 Continuous Integration Novo código deve ser integrado em poucas horas (1,2,4..7) Ao fim de cada dia de desenvolvimento, deve ser produzida uma nova release em que todos os testes correm a 100%. A integração contínua tem as vantagens dos estilos de desenvolvimento programador individual e integração instantânea Como programador parece que se está sózinho. Como integrador consegue-se identificar onde estão os conflitos em termos de definições de classes e métodos. Ao correr os testes pode-se identificar onde estão os conflitos em termos semânticos. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 6
7 Continuous Integration... É importante usar ferramentas que possibilitem um ciclo rápido integrate/build/test. O refactoring motiva a escrita de código fácil de compreender, simples e desacoplado. Os riscos do projecto são minimizados porque os conflitos são detectados muito rapidamente na altura de integração. Todos sabem construir uma release, porque o fazem todos os dias várias vezes ao dia. O compartimentar do trabalho em pequenas unidades learn/test/code/release dão ritmo ao desenvolvimento, o que é motivador porque o progresso é facil de avaliar. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 7
8 Collective Ownership Anyone can change any piece of code at any time :? Sem testes, isto seria impensável. Sem integração contínua, isto seria muito ineficaz. O código complexo passa a ter um tempo de vida reduzido de acordo com o nível médio da equipa, porque todos o podem e devem simplificar quando o acham complexo. O refactoring ajuda neste processo de simplificação. Os testes ajudam a validar se as simplificações foram feitas de forma correcta, sem corromper o sistema. Esta prática aumenta a sensação de poder pessoal no projecto, o que é bom e motivador, levando a um equilibrio saudável e natural na equipa. Não se pode culpabilizar os outros porque algo está mal e poderia estar melhor... O conhecimento sobre o projecto é facilmente disseminado pela equipa ao longo da vida do projecto, de par em par, o que também reduz os riscos do projecto. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 8
9 Pair Programming Não é uma pessoa a programar e outra a observar. Não é uma pessoa a ensinar outra, embora pares formados por pessoas com níveis de experiência muito diferentes o possam parecer, pelo menos inicialmente. Com o tempo, os pares ficam mais homogéneos porque aprendem muito uns com os outros e podem-se ajudar mutuamente. O valor principal é COMUNICAÇÃO: o conhecimento é rapidamente disseminado pela equipa, de par em par, e enriquecido com a experiência e ideias de cada um. Existem pessoas que não gostam de trabalhar em pares. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 9
10 Pair Programming... A programação em pares provou ser mais produtiva do que a divisão do trabalho em dois e depois integrar: um é operacional enquanto o outro actua a um nível mais estratégico. A programação em pares permite ainda melhor qualidade final, melhor conhecimento global do sistema, reduz riscos do projecto. Em stress tende-se a esquecer testes, refactoring, integração... Mas a programação em pares tende a reduzir o risco de ocorrência destas tentações. Todo o processo de desenvolvimento beneficia com a programação em pares porque todos, pouco a pouco, ficam a conhecer todo o sistema e a ter capacidade de trabalhar em qualquer uma das suas partes. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 10
11 Estratégia de Design FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 11
12 The simplest thing that could possibly work Todos os valores de XP actuam no design. Comunicação Um design complicado é mais dificil de compreender do que um simples. O design deve ser comunicativo, e transmitir de forma rápida os aspectos mais importantes do sistema. Simplicidade O design deve ser simples, mas a estratégia que o origina também deve ser simples. ( Simple, clear purpose and principles give rise to complex, intelligent behavior. Complex rules and regulations give rise to simple, stupid behavior ) Feedback O design está certo ou errado? Design simples é rápido de codificar e de avaliar. Coragem Não ter medo de desenhar apenas uma parte do sistema e ter confiança de que se poderá continuar o desenho depois, quando e se for necessário. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 12
13 The simplest thing that could possibly work... Pequeno investimento inicial O investimento deve ser reduzido até se tirar beneficio do design. Assumir a simplicidade Ter coragem para assumir que o design mais simples funciona. Alterações incrementais O design irá ser refinado continuamente, evoluindo gradualmente e incrementalmente ao longo do tempo, à medida das necessidades. O design nunca estará completo, embora existam partes dele que se encontram bastante estáveis há muito tempo (princípio aberto-fechado ). Travel light O design não deve ter mais do que o estritamente necessário, tudo o que é necessário, mas nem mais um pouco. Ao programar somos tentados a antecipar problemas e portanto a fazer overengineering... O XP tenta evitar estes delírios quase nunca necessários. Test-Driven Development: escrever teste, fazer compilar o teste, fazer passar o teste, refactoring para simplificar o código e o design. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 13
14 Simplest O sistema deve comunicar tudo que se pretende comunicar. O sistema não deve ter código duplicado. O sistema deve ter o menor número possível de classes. O sistema deve ter o menor número possível de métodos. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 14
15 Estratégia de Teste FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 15
16 Write tests before coding... Escrever testes antes de escrever o código. Obriga a definir bem os requisitos a ser satisfeitos pelo código. Documenta os requisitos. Simplifica o design. Os testes serão preservados ao longo do tempo e executados sempre que o sistema é integrado e construído. Escrever testes para documentar os requisitos do ponto de vista do cliente. Os testes são automatizáveis. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 16
17 Code to pass the tests, fast! Escrever código para passar os testes rápidos, obrigam a concentrar no essencial, simplificando a implementação. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 17
18 Then, refactor... A redundância e erros de design introduzidos deverão ser eliminados por refactoring imediatamente a seguir aos testes passarem, mas apenas então. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 18
19 TDD Test Driven Development FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 19
20 Test-Driven Development (TDD) The rhythm of Test-Driven Development (TDD) can be summed up as follows: 1. Quickly add a test. 2. Run all tests and see the new one fail. 3. Make a little change. 4. Run all tests and see them all succeed. 5. Refactor to remove duplication. (Kent Beck, Test-Driven Development, Addison-Wesley, 2003) FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 20
21 Test-Driven Development: um exemplo Escrever e testar uma rotina que converte um inteiro n entre 0 e numa string com a sua representação por extenso em português. Sugestão: considerar sucessivamente números com mais dígitos Caso do zero Unidades de 1 a 9 Números de 10 a 20 Dezenas exactas Dezenas compostas Centenas exactas Centenas compostas Milhares exactos Milhares compostos... FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 21
22 Refactoring FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 22
23 O que é Refactoring? A ideia tem origem na tese de Bill Opdyke, A refactoring is a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior [Fowler 2000] O processo de refactoring envolve a eliminação de duplicação, a simplificação de lógica complexa e clarificação de código, tornando-o mais fácil de entender. Exemplos: alterar nome de variável, dividir um método grande, instanciar um padrão de design. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 23
24 Como fazer refactoring? Refactoring implica alterar código funcional logo é necessário ter testes para nos dar segurança de que o refactoring não alterou a funcionalidade do sistema. Os testes automatizados permitem-nos rapidamente confirmar que a funcionalidade do código alterado se mantém. Deve-se fazer refactoring de forma contínua sempre que se ache que o código deve ser evoluído, e não por fases, e em pequenos passos sucessivos para evitar a introdução de defeitos. Pequenos refactorings podem demorar segundos ou minutos. Grandes refactorings podem demorar horas ou meses, mas deverão ser sempre feitos em pequenos passos. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 24
25 Porquê fazer refactoring? Facilitar a inserção de código novo e novas funcionalidades. Melhorar o desenho do código existente. Compreender melhor o código. Tornar o código mais agradável de manipular, menos aborrecido de lidar, tanto individualmente como colaborativamente. Limpar e arrumar o código. Baixar o défice de design devido a não se fazer na altura certa e dose certa: o remover de duplicação, simplificar e clarificar o intuito do código. Evoluir uma arquitectura existente. Any fool can write code that a computer can understand. Good programmers write code that humans can understand. [Fowler 2000] FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 25
26 Quando fazer refactoring? Quando se adicionam novas funcionalidades Para melhor compreender o código a modificar Para melhorar o design do código existente e assim facilitar a adição das novas funcionalidades Quando se pretende encontrar um bug Para melhor compreender o código com o bug e assim o identificar Quando se está a fazer revisão de código FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 26
27 Dificuldades de refactoring Bases de dados Aplicações fortemente dependentes dos esquemas das BDs Alterações na interface das classes Quando não se tem acesso a todo o código que usa uma interface que se pretende alterar o refactoring dessa interface pode ser complicado. - Don't publish interfaces prematurely. - Modify your code ownership policies to smooth refactoring. O código não funciona Nesta situação de nada serve fazer refactoring... FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 27
28 Refactoring e Design As actividades de refactoring e design são complementares. Design: da ideia à melhor solução Refactoring: da ideia à solução mais razoável. A aplicação contínua de refactoring conduz a design mais simples, resultando numa forma mais eficaz de na prática se chegar a uma boa solução de design. A ênfase é a mesma: idealizar a melhor solução. Na prática, implementa-se apenas a solução mais simples que funciona, pois sabe-se que se pode evoluir essa solução quando for efectivamente necessário fazê-lo. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 28
29 Refactoring e Performance Antes de se tentar melhorar a performance de código ajuda muito fazer-se refactoring para eliminar duplicação, simplificar e melhor entender o código e só depois afinar a sua performance. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 29
30 Formato dos Refactorings Nome Resumo Motivação Mecânica Exemplos FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 30
31 Catálogo de Refactorings Add Parameter Change Bidirectional Association to Unidirectional Change Reference to Value Change Unidirectional Association to Bidirectional Change Value to Reference Collapse Hierarchy Consolidate Conditional Expression Consolidate Duplicate Conditional Fragments Convert Dynamic to Static Construction by Gerard M. Davison Convert Static to Dynamic Construction by Gerard M. Davison Decompose Conditional Duplicate Observed Data Eliminate Inter-Entity Bean Communication (Link only) Encapsulate Collection Encapsulate Downcast Encapsulate Field Extract Class Introduce A Controller (Link only) Introduce Assertion Introduce Business Delegate (Link only) Introduce Explaining Variable Introduce Foreign Method Introduce Local Extension Introduce Null Object Introduce Parameter Object Introduce Synchronizer Token (Link only) Localize Disparate Logic (Link only) Merge Session Beans (Link only) Move Business Logic to Session (Link only) Move Class by Gerard M. Davison Move Field Move Method Parameterize Method Preserve Whole Object FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 31
32 Refactoring to Patterns FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 32
33 Refactoring + Patterns "Refactoring to patterns is a revolutionary approach to applying patterns that combines the top-down utility of design patterns with the bottom-up discovery of iterative development and continuous refactoring. FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 33
34 Design patterns Existem muitas formas possíveis de implementar/instanciar um padrão de software, umas mais simples, outras mais complexas e mais próximas da estrutura sugerida no padrão. Implementações minimalistas fazem parte do prática de design evolutivo. Muitas vezes, uma implementação não-baseada em design patterns tem que evoluir para poder incluir um padrão. Neste caso, pode-se fazer refactoring do design para uma implementação simples de um padrão. Isto é Refactoring to Patterns! FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 34
35 Direcções possíveis para refactoring Refactoring to (para)... Refactoring towards (no sentido de)... Refactoring away (de)... FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 35
36 Catálogo de Refactorings to Patterns Creation Simplification Generalization Protection Accumulation Utilities FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 36
37 Referências William F. Opdyke, Ph.D. diss., "Refactoring Object-Oriented Frameworks. " University of Illinois at Urbana-Champaign, Fowler, Martin. Refactoring: Improving the Design of Existing Code. Boston, MA: Addison-Wesley, Kerievsky, Joshua. Refactoring to Patterns. Addison-Wesley, FEUP/LEIC Ademar Aguiar Metodologias Ágeis de Desenvolvimento de Software, 2005/06 37
Processos de Desenvolvimento de Software
Processos de Desenvolvimento de Software Raul Vidal, João Pascoal Faria, Ademar Aguiar, Gil Gonçalves FEUP/LEIC/LGP 2003-04 Processos de Desenvolvimento Software 1 Controlo de Projectos Quatro variáveis
Leia maisRefatoração: Melhorando a Qualidade de Código Pré-Existente. Cursos de Verão 2009 IME/USP Mariana Bravo & Hugo Corbucci
Refatoração: Melhorando a Qualidade de Código Pré-Existente Cursos de Verão 2009 IME/USP www.agilcoop.org.br Mariana Bravo & Hugo Corbucci Refatoração Uma modificação no sistema que não altera o seu comportamento
Leia maisProgramação Extrema na Prática
Programação Extrema na Prática Engenharia de Software Conference - 13:40-15:00 maio/09 São Paulo Dairton Bassi - dbassi@gmail.com Assuntos de Hoje Métodos Ágeis Valores Ágeis Programação Extrema Princípios
Leia maisRefactoring Visão Geral do Catálogo de Martin Fowler
Refactoring Visão Geral do Catálogo de Martin Fowler Jorge Fernandes Janeiro de 2001 Catálogo de Refactorings Composição de Métodos Movendo Características entre Objetos Organizando Dados Simplificando
Leia maisRefatoração: Melhorando a Qualidade de Código Pré-Existente. Cursos de Verão 2008 IME/USP Mariana Bravo & Hugo Corbucci
Refatoração: Melhorando a Qualidade de Código Pré-Existente Cursos de Verão 2008 IME/USP www.agilcoop.org.br Mariana Bravo & Hugo Corbucci Refatoração Uma modificação no sistema que não altera o seu comportamento
Leia maisXP EXTREME PROGRAMMING. AGO106 - Gestão
XP EXTREME PROGRAMMING AGO106 - Gestão de Processos de Desenvolvimento de Software DESENVOLVIMENTO TRADICIONAL Sequencial: Análise, Design, Implementação, Teste, Implantação e Manutenção Características:
Leia maisRefatoração: Melhorando código existente
Refatoração: Melhorando código existente AgilCoop Cursos de Verão 2010 Mariana Bravo IME/USP Refatoração Uma mudança no sistema que não altera seu comportamento funcional, mas melhora sua estrutura interna
Leia maisextreme Programming extreme Programming
extreme Programming Os riscos mais frequentes do processo de desenvolvimento são tratados da seguinte forma: Atrasos na calendarização diversas pequenas versões, no máximo com uns poucos meses de duração
Leia maisReengenharia, Refatoração e Bad Smell
DCC / ICEx / UFMG Reengenharia, Refatoração e Bad Smell Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Reengenharia de Sistemas Reestruturação ou reescrita de parte ou de todo um sistema legado
Leia maisALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão
UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 3.1 - Definição 3.2 - Dividir para conquistar 3.3 - Problema da
Leia maisExtreme Programming. Projeto de. Desenvolvimento. Software. Prof.: Ari Oliveira
Projeto de Desenvolvimento Software Extreme Programming Prof.: Ari Oliveira O Extreme Programming (XP) é uma metodologia de desenvolvimento de software que auxilia na produção de sistemas de maior qualidade,
Leia maisIntrodução à Programação extrema (XP)
Introdução à Programação extrema (XP) Cursos de Verão 2008 - IME/USP Mariana Bravo e Hugo Corbucci Departamento de Ciência da Computação www.agilcoop.org.br O que é? XP é leve XP é focado no desenvolvimento
Leia maisRefatoração: uma introdução. Prof. André Luiz Peron Martins Lanna
Refatoração: uma introdução Prof. André Luiz Peron Martins Lanna Agenda Introdução Idéias preliminares Um primeiro exemplo Conclusões Bibliografia Introdução Em DSW o assunto principal foi o Projeto de
Leia maisRefatoração de Software
Refatoração de Software O que é? Atividade em que a estrutura interna de um software é modificada de modo que seu comportamento externo seja preservado; O objetivo é melhorar a qualidade do software; Cada
Leia maisTestes Automatizados. Cursos de Verão 2007 IME/USP Dairton Bassi & Paulo Cheque
Testes Automatizados Cursos de Verão 2007 IME/USP www.agilcoop.org.br Dairton Bassi & Paulo Cheque Roteiro 1) Motivação 2) Introdução a Testes 3) Testes de Unidade 4) Testes de Aceitação 5) Testes de Integração
Leia maisEstratégias de Escrita de Testes Automatizados
Estratégias de Escrita de Testes Automatizados Paulo Cheque 12/02/2009 Verão 2009 2 Sobre a Palestra Refatoração TAD TFD/POUT TDD BDD Padrões e Anti padrões 3 (Refatoração) Uma modificação feita em pequenos
Leia maisPadrões de Testes Automatizados
Padrões de Testes Automatizados Paulo Cheque 10/02/2009 Verão2009 2 Introdução Testes codificados Exigem boa programação Mesmos problemas de um software Devem receber o mesmo tratamento Exigem manutenção
Leia mais" ##$#$!% # & #$#$!!! "!!
" ##$#$!% # & #$#$ # $ % &'! $ ( Desenho com Padrões (top-down) Identificar o problema a resolver Seleccionar os padrões adequados Verificar a aplicabilidade dos padrões ao problema em questão Instanciar
Leia maisEngenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:
Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS Nome: 1. A figura abaixo representa, simplificadamente, as fases do Modelo de Ciclo de Vida Cascata.
Leia maisProf. Dr. Fabio Kon Prof. Dr. Alfredo Goldman. Departamento de Ciência da Computação IME / USP. 3 de Abril de 2003 VI Semana da Computação
Refatoração: Melhorando a Qualidade de Código Pré-Existente Prof. Dr. Fabio Kon Prof. Dr. Alfredo Goldman Departamento de Ciência da Computação IME / USP 3 de Abril de 2003 VI Semana da Computação 1 Refatoração
Leia maisDesenvolvimento Ágil de Software. Prof. Edjandir Corrêa Costa
Desenvolvimento Ágil de Software Prof. Edjandir Corrêa Costa edjandir.costa@ifsc.edu.br Métodos Ágeis História Na início da década de 90 havia uma visão de que a melhor maneira para se criar software era
Leia maisModulo I Método Ágil XP Extreme Programming
Modulo I Método Ágil XP Extreme Programming Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Bibliografia Vinicius Manhaes Teles, Extreme Programming, Novatec Editora
Leia maisModulo II Técnicas para desenvolvimento de Software Ágil
Modulo II Técnicas para desenvolvimento de Software Ágil Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Bibliografia Vinicius Manhaes Teles, Extreme Programming,
Leia maisDesenvolvimento Dirigido por Testes (TDD)
Desenvolvimento Dirigido por Testes (TDD) Cursos de Verão 2009 www.agilcoop.org.br Mariana Bravo O que é Desenvolvimento Dirigido por Testes? Dúvidas? Copyleft AgilCoop 2008 2 Testes a priori Conhecer
Leia maisPrincípios em refatoração. Prof. André Luiz Peron Martins Lanna
Princípios em refatoração Prof. André Luiz Peron Martins Lanna Agenda Definição de refatoração. Por que refatorar? Quando refatorar? Problemas com refatoração. Refatoração e projeto. Refatoração e performance.
Leia maisQualidade. Ana Madureira
Qualidade Ana Madureira Qualidade da Informação A qualidade de uma informação é apreciada em função da sua pertinência (adaptação às necessidades do sistema de gestão). Três características permitem medir
Leia maisBibIme - Um Software Gerenciador de Bibliotecas Produzido de Forma Cooperativa
BibIme - Um Software Gerenciador de Bibliotecas Produzido de Forma Cooperativa Dairton Bassi, Kelly Braghetto, Eduardo Colli, Fabio Kon, João Eduardo Ferreira Instituto de Matemática e Estatística Universidade
Leia maisTreinamento em Métodos Ágeis
Departamento de Tecnologia e Desenvolvimento Coorporativo de Sistemas Móveis Treinamento em Métodos Ágeis XP - Extreme Programming Giuliano Prado M. Giglio Coordenador Setor / SMC 02 Extreme Programming
Leia maisSumário. Capítulo 3 Valores do XP Feedback Comunicação... 46
Sumário Sobre o autor... 6 Revisores técnicos... 7 Agradecimentos... 9 Prefácio... 17 Introdução... 19 Capítulo 1 Extreme Programming: visão geral... 21 Valores do XP... 22 Práticas do XP... 23 Cliente
Leia maisArquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação
Arquitectura de Sistemas de Software Mestrado em Engenharia Informática Licenciatura em Engenharia Informática e Computação Ademar Aguiar Universidade do Porto & INESC Porto ademar.aguiar at fe.up.pt FEUP
Leia maisabraçando a mudança extreme Programming Helder da Rocha
abraçando a mudança extreme Programming Helder da Rocha www.argonavis.com.br 1 Desenvolvimento de software no passado Engenharia de software tradicional Analisar, projetar, e só depois começar a construir
Leia maisArquitectura de Sistemas de Software
Arquitectura de Sistemas de Software Ademar Aguiar www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1 Revisões Arquitectura de Sistemas de Software,
Leia maisSUnit Referências. SUnit. Jefferson Serafim Ascaneo, Suzana de Siqueira Santos
Jefferson Serafim Ascaneo Suzana de Siqueira Santos Departamento de Ciência da Computação Instituto de Matemática e Estatística Universidade de São Paulo Abril de 2013 Agenda 1 2 3 2/ 30 Agenda História
Leia maisSumário. Escrita de Programas. Qualidades. Objectivos. Engenharia de Software. Caracterização. Técnicas Casos Notáveis Conclusões
Engenharia de Software Escrita de Programas António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Qualidades Técnicas Casos Notáveis Conclusões Escrita de Programas 2 Objectivos O
Leia maisEscrita de Programas. António Rito Silva
Escrita de Programas António Rito Silva Rito.Silva@inesc-id.pt Sumário Caracterização Objectivos Qualidades Técnicas Casos Notáveis Conclusões Escrita de Programas 2 Objectivos O desenho pode não ter abordado
Leia mais2. Modelos de Desenvolvimento de Software
2. Modelos de Desenvolvimento de Software Patrícia Macedo Joaquim Filipe João Ascenso Engenharia de Software 2005/06 EST, Setúbal Ciclo de Vida do Software Um sistema de software é desenvolvido gradualmente
Leia maisDesenvolvimento orientado por testes, padrões de testes e JWebUnit
Desenvolvimento orientado por testes, padrões de testes e JWebUnit ou por que você quer fazer isso mas sempre deixa pro final? Copyleft -- Alexandre Freire Por que testar? Precisamos saber se o software
Leia maisPráticas de desenvolvimento aplicadas na automação de testes com Selenium Robson Bittencourt #gutsrs
Práticas de desenvolvimento aplicadas na automação de testes com Selenium Robson Bittencourt #gutsrs /@gutsrs Programação 19h15 às 19h45 Recepção, boas vindas e Coffee para integração 19h45 às 19h55 Abertura
Leia maisEvolução de Software e Refatoração. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 21 1
Evolução de Software e Refatoração Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 21 1 Mudança de software Mudança de software é inevitável Novos requisitos surgem quando o software
Leia maisVinícius Manhães Teles prefácio de Kent Beck colaborações especiais de Kent Beck e Robert Mee
Vinícius Manhães Teles prefácio de Kent Beck colaborações especiais de Kent Beck e Robert Mee Novatec Copyright 2004, 2014 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610
Leia maisJAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 26 de outubro de 12
JAVA Tópicos Especiais de Programação Orientada a Objetos 1 REFATORAÇÃO DE CÓDIGOS 2 REFATORAÇÃO O QUE É REFATORAR? Refatorar é alterar o código de um projeto existente, sem mudar o seu comportamento,
Leia maisModulo I Introdução ao XP
Modulo I Introdução ao XP Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Modulo VI Xtreme Programming Valores e Princípios do XP Desenvolvimento centrado
Leia maisPrincípios e práticas de extremme Programming
Princípios e práticas de extremme Programming Tiago Eugenio de Melo tiago@comunidadesol.org 1 Sumário Introdução Princípios Práticas Quando não usar Conclusões Referências 2 extreme Programming É uma metodologia
Leia maisDesenvolvimento ágil de software
Desenvolvimento ágil de software Prof. Cristiane Aparecida Lana slide 1 Bibliografia utilizada: Mais opções visite meu site, clique aqui para acessá-lo. slide 2 2011 Pearson 2011 Pearson Prentice Prentice
Leia maisModulo I Método Ágil XP Extreme Programming
Modulo I Método Ágil XP Extreme Programming Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Bibliografia Vinicius Manhaes Teles, Extreme Programming, Novatec Editora
Leia maisProcessos Ágeis de Desenvolvimento de Software
Processos Ágeis de Desenvolvimento de Software -Focono XP - Rodrigo Rebouças de Almeida rodrigor@rodrigor.com Processo Conjunto de atividades ordenadas, restrições e recursos que produzem um resultado
Leia maisExtreme Programming: Valores e Práticas
Programação Extrema Extreme Programming: Valores e Práticas Prof. Mauro Lopes 1-31 34 Objetivos Anteriormente trabalhamos os conceitos do Desenvolvimento Tradicional e do Desenvolvimento Ágil. Trouxemos
Leia maisGiovane Mendes Costa Kennedy da Silva Menezes
Giovane Mendes Costa Kennedy da Silva Menezes 2 INTRODUÇÃO A indústria de software passou por grandes transformações e grandes desafios, entre eles, desenvolver software com qualidade no menor tempo possível;
Leia maisDesafios do desenvolvimento de Software (Desenvolvimento Tradicional x Desenvolvimento Ágil)
Programação Extrema Desafios do desenvolvimento de Software (Desenvolvimento Tradicional x Desenvolvimento Ágil) Prof. Mauro Lopes 1-31 25 Plano de Aula Desafios do Desenvolvimento de Software Introdução
Leia maisDisciplina: Engenharia de Software. 3 Bimestre Aula 2: EVOLUÇÃO DE SOFTWARE
Disciplina: Engenharia de Software 3 Bimestre Aula 2: EVOLUÇÃO DE SOFTWARE Quando termina o desenvolvimento de um software? A maioria das grandes empresas gasta mais na manutenção de sistemas existentes
Leia maisUML Visão Geral UML Visão geral v.1.1, Novembro de 2001
UML Visão Geral 1 Índice Introdução Diagramas O que é a UML? Diagrama de casos de utilização Valor da UML Diagrama de classes Origens da UML Diagrama de objectos Parceiros da UML Diagrama de componentes
Leia maisMétodos Ágeis e Programação Extrema (XP)
Métodos Ágeis e Programação Extrema (XP) 1 Métodos Ágeis A insatisfação com os overheads envolvidos em métodos tradicionais de desenvolvimento levou à criação dos métodos ágeis. Esses métodos: Focam no
Leia maisA Evolução de XP segundo Kent Beck Parte 1
A Evolução de XP segundo Kent Beck Parte 1 O que mudou nesses 5 anos? Danilo Toshiaki Sato dtsato@ime.usp.br Agenda PARTE 1 1. Introdução 2. O que é XP? 3. O que mudou em XP? Valores, Princípios e Práticas
Leia maisINTRODUÇÃO A ENGENHARIA DE SOFTWARE
Universidade Estadual Vale do Acaraú INTRODUÇÃO A ENGENHARIA DE SOFTWARE : Prof. Raquel Silveira Métodos ágeis focam em simplicidade, software funcional no início das iterações, flexibilidade e intensa
Leia maisProf. Luiz A. Nascimento. As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software.
Prof. Luiz A. Nascimento As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software. Porque metodologias ágeis? A história dos fracassos no desenvolvimento de
Leia maisMetodologias Ágeis de Desenvolvimento. Fernando Trinta
Metodologias Ágeis de Desenvolvimento Fernando Trinta Contextualização A Engenharia de software vêm recorrentemente enfrentando o cenário onde... as aplicações são cada vez mais complexas... o tempo de
Leia maisTipos para uma Linguagem de Transformação
Universidade Federal de Pernambuco Graduação em Ciência da Computação Centro de Informática Proposta de Trabalho de Graduação Tipos para uma Linguagem de Transformação Aluno: Orientador: Alexandra Barreto
Leia maisModelos de Gestão de Projetos
Modelos de Gestão de Projetos Gestão de Projetos Tradicionais Criados para situações de baixo risco e incertezas, já existe conhecimento sobre o que será desenvolvido, o escopo envolvido e o objetivo proposto
Leia maisEngenharia de Software
Engenharia de Software Design Principles Representando SW em UML OO em C Pattens úteis para embedded Rodrigo M A Almeida Design Principles Design Principles são guias para decompor as funcionalidades e
Leia maisEngenharia de Software
Engenharia de Software Metodologia XP (extreme Programming) Entre 80% e 90% dos projetos de software fracassam devido a atrasos no cronograma; falta de planejamento; inúmeros bugs; incompreensão dos requisitos
Leia maisEngenharia da Programação
Engenharia da Programação LEIC 4º ano, 1º Semestre, ano lectivo de 2002-03 2º Exame (o exame é composto por 10 perguntas (1-10) cotadas com 1 valor cada) Data: 8 de Fevereiro de 2003 Duração Exame: 1h30
Leia maisReuso de Software Aula Maio 2012
Reuso de Software Aula 19 Tópicos da Aula Engenharia de Software baseada em Componentes (CBSE) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Componentes Modelos de Componentes
Leia maisDesconstruindo Monolitos. Como construir micro serviços Delphi com agilidade e qualidade
Desconstruindo Monolitos Como construir micro serviços Delphi com agilidade e qualidade Hello World!! Felipe Caputo May Fernandes Desenvolvedor sênior e líder técnico na Softplan, atualmente sou responsável
Leia maisIntrodução a Métodos Ágeis com ênfase em XP. Alfredo Goldman Professor do IME - USP
Introdução a Métodos Ágeis com ênfase em XP Alfredo Goldman Professor do IME - USP Pequeno histórico Docente do IME - USP desde 1993 Interesse inicial em métodos ágeis: 2001 Ensino: Laboratório de Programação
Leia maisBEHAVIOR DRIVEN DEVELOPMENT BRUNO ROLIM MANSUR
BEHAVIOR DRIVEN DEVELOPMENT BRUNO ROLIM MANSUR AGENDA Motivação Processo Tradicional Processo BDD Fazer certo o certo Ciclo BDD Ferramentas Exemplo - Vídeo Rspec Vantagens e Desvantagens Referências MOTIVAÇÃO
Leia maisAula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil
Aula 3 - Modelos de Processo - cascata, iterativo e incremental e ágil Análise de Sistemas Prof. Filipe Arantes Fernandes filipe.arantes@ifsudestemg.edu.br 2 Vale a pena ver de novo Modelo de Processo:
Leia maisDesenho e documentação de arquitectura de software e de aplicações empresariais
Desenho e documentação de arquitectura de software e de aplicações empresariais João Pascoal Faria Laboratório de Engenharia de Software 10 de Novembro de 2003 1 Definição de arquitectura de software Arquitectura
Leia maisProgramming in C# Conteúdo Programático. Área de formação Plataforma e Tecnologias de Informação
Destinatários Programadores experientes com algum conhecimento de C, C++, JavaScript, Objective-C, Microsoft Visual Basic, ou Java e conheçam os conceitos de programação orientada por objetos. Nº mínimo
Leia maisENGENHARIA DE SOFTWARE
ENGENHARIA DE SOFTWARE Teste de Software Verificação e validação Testes de desenvolvimento Testes de release Testes de usuário Desenvolvimento dirigido a testes Kele Teixeira Belloze kelebelloze@gmail.com
Leia maisDomain Logic Patterns. Pedro Lemos N.º Arquitecturas de Software LEIC
Pedro Lemos N.º 49467 pcml@rnl.ist.utl.pt Arquitecturas de Software 2004 - LEIC Outline da Apresentação 1. Introdução e Motivação de Padrões de Software 2. Padrões Arquitecturais para Aplicações Empresariais
Leia maisDesenvolvendo aplicações de qualidade com TDD
23 de junho, 2016 Desenvolvendo aplicações de qualidade com TDD Huge Isabella Silveira Web Engineer @ Huge. Front-End, Back-End, Agile e Integração Contínua. Agenda. 1. Introdução 2. O que é TDD? 3. Por
Leia maisEvolução de Software. Agenda a Aula. Evolução de Software. Evolução de Software. Atividades Comuns. Atividades de Desenvolvimento
Engenharia de Software Aula 12 Atividades Comuns Evolução de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 16 Abril 2012 1. Especificação de requisitos 2. Projeto de Software
Leia maisMANIFESTO ÁGIL, SCRUM E EXTREME PROGRAMMING COMO CONSTRUIR SOFTWARE COM QUALIDADE E QUE AGREGAM VALOR AO CLIENTE?
MANIFESTO ÁGIL, SCRUM E EXTREME PROGRAMMING COMO CONSTRUIR SOFTWARE COM QUALIDADE E QUE AGREGAM VALOR AO CLIENTE? CAIO ROSÁRIO DIAS FORMADO EM TÉCNICO DE INFORMÁTICA IFBA; QUINTO SEMESTRE DO CURSO DE ANALISE
Leia maisScrum Foundations. Fundamentos de Scrum
Scrum Foundations Fundamentos de Scrum Sobre o curso Curso base para as funções de Scrum Developer e Scrum Master Histórico, Estrutura e Funções Scrum Product Owner Scrum Developer Scrum Master Artefatos
Leia maisCapítulo 2 - Processos de Software
Capítulo 2 - Processos de Software Capítulo 2 Processos Software 1 Assuntos abordados Modelos de processo de software Atividades no processo de software Mudança no processo de software Melhoria de processos
Leia maisTeste Unitários com NUnit. Anderson Martiniano da Rocha
Teste Unitários com NUnit Anderson Martiniano da Rocha martiniano@dcc.ufba.br Sumário Conceito de teste unitário Vantagens da utilização de testes unitários NUnit (Características, Atributos, Ferramentas)
Leia maisEngenharia de Software Experimental 2013.2
Engenharia de Software Experimental 2013.2 Avaliação de introdução de anomalias de software, após aplicação de refatorações automáticas para remoção de code smells Chrystinne Fernandes Sumário Conceitos
Leia maisIntrodução a Testes Automatizados
Introdução a Testes Automatizados Cursos de Verão 2008 IME/USP www.agilcoop.org.br Paulo Cheque Testes Automatizados Teste de Software: Executar o programa a ser testado com alguma entrada e conferir visualmente
Leia maisCommunity. .com. Introdução ao T D
Community Introdução ao T D D Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Meu sistema
Leia maisRefatoração Melhorando o sistema e preparando pra a Web
POO Programação Orientada a Objetos Refatoração Melhorando o sistema e preparando pra a Web Jefferson S. Silva IFET - PI Copyright Jefferson S. Silva Slide 1 Refatoração Uma prática bastante comum e difundida
Leia maisPROCESSO DE DESENVOLVIMENTO DE SOFTWARE
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Para Sommerville a arquitetura de sistemas descreve o sistema em termos de um conjunto de unidades
Leia maisTracking Acompanhamento de Projetos Ágeis
Tracking Acompanhamento de Projetos Ágeis Curso de Verão 2009 IME/USP www.agilcoop.org.br Mariana Bravo Tracking da Aula Número de perguntas Tempo por slide Número de pessoas dormindo/pescando Progresso
Leia maisENGENHARIA DE SOFTWARE
CURSO TÉCNICO DE INFORMÁTICA Módulo A ENGENHARIA DE SOFTWARE Processos de Software O PROCESSO É LENTO... Todo software deve ser construído de forma organizada, através de processos. Um processo pode ser
Leia maisEngenharia de Software
Engenharia de Software Processos de Software Professor: Charles Leite O processo de software Um conjunto estruturado de atividades, procedimentos, artefatos e ferramentas necessários para o desenvolvimento
Leia maisTrilha Análise de Negócios A Transformação da Análise de Negócios frente às Mudanças de Metodologias Alexandre Xavier / Fernanda Matzenbacher
Trilha Análise de Negócios A Transformação da Análise de Negócios frente às Mudanças de Metodologias Alexandre Xavier / Fernanda Matzenbacher Apresentação Alexandre Xavier Product Owner na Dell Atua há
Leia maisPROGRAMAÇÃO EXTREMA - XP
PROGRAMAÇÃO EXTREMA - XP Hoje em dia o maior problema para a entrega de um projeto, é a quantidade de riscos que podem ocorrer com o mesmo, como atraso na entrega, sistema que está sendo entregue não é
Leia maisDesenvolvimento de Software de Qualidade através de Testes Automatizados
Desenvolvimento de Software de Qualidade através de Testes Automatizados Paulo Cheque (paulocheque@agilcoop.org.br) Cursos de Verão 2010 Licença: Creative Commons: Attribution-Share Alike 3.0 Unported
Leia maisTeste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo
Teste de Software Estratégias de Teste Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Estratégias de Teste Tipos de Estratégias de Teste 2 Estratégias de teste Define as fases em que
Leia maisO papel do QA (Testador) em um time Ágil. #caipiraagil2017
O papel do QA (Testador) em um time Ágil #caipiraagil2017 Mariana Elisa Moisés Atualmente Mobile QA Analyst na Tegra (Sorocaba) e entusiasta de mulheres na Tecnologia!
Leia maisOctober 13, 2016 Web.br hugeinc.com
October 13, 2016 Web.br hugeinc.com 13 de outubro, 2016 Desenvolvendo aplicações de qualidade com TDD Huge Isabella Silveira Web Engineer @ Huge. Front-End, Back-End, Agile e Integração Contínua. Agenda.
Leia maisTópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.
Métodos Ágeis Edes Garcia da Costa Filho edes_filho@dc.ufscar.br 1 Tópicos Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Extreme Programming (XP). Referências Bibliográficas. 2 Histórico
Leia maisespecificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje
1 Introdução Testar é o conjunto de tarefas ou passos executados para verificar se um produto ou serviço atende à sua proposta. Dessa forma, a execução de testes em um programa contribui para a melhoria
Leia maisModel Driven Development (MDD)
DCC / ICEx / UFMG Model Driven Development (MDD) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Motivação para MDD Software é caro Os EUA sozinho investem mais de $250 bilhões em software Nos EUA,
Leia maisDesenvolvimento Ágil no Governo. Produtos de Software. Luís Dosso. Outubro/2011. Sistemas e aplicações sob medida para as necessidades do seu negócio.
Desenvolvimento Ágil no Governo Luís Dosso Outubro/2011 Produtos de Software Sistemas e aplicações sob medida para as necessidades do seu negócio. A Dextra Soluções de Software Projetos de software complexos
Leia maisSoftware Testing with Visual Studio 2013 (20497)
Software Testing with Visual Studio 2013 (20497) Formato do curso: Presencial Preço: 800 Nível: Intermédio Duração: 12 horas Este curso, mostra a Programadores e Testers como utilizar as ferramentas do
Leia maisDS: notação. Falta-nos apenas dar exemplos de DSS que contenham a criação de objectos temporários e sua posterior destruição.
DS: notação Falta-nos apenas dar exemplos de DSS que contenham a criação de objectos temporários e sua posterior destruição. Martins 2008 147 DS: notação Martins 2008 148 DS: notação Mensagem condicional
Leia maisDiagramas de Use Case Resumo
0 Diagramas de Use Case Resumo Os diagramas de Use Case permitem definir os requisitos funcionais de um sistema: que serviços deve fornecer; a quem os deve fornecer. Notação diagramática facilita o diálogo
Leia maisTracking Acompanhamento de Projetos Ágeis
Tracking Acompanhamento de Projetos Ágeis Curso de Verão 2007 IME/USP www.agilcoop.org.br Danilo Sato & Mariana Bravo Tracking da Aula # perguntas Tempo por slide # pessoas dormindo/pescando Progresso
Leia maisDesign Patterns na Geração de Código
Design Patterns na Geração de Código Guarda, 28 Maio 2003 João Macedo Cunha jcunha@quatrosi.com Design Patterns Software Engenieering Necessidade Conhecimento do Domínio Experiência Contexto Arquitectura
Leia maisArquitectura de Sistemas de Software
Arquitectura de Sistemas de Software Ademar Aguiar www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt Arquitectura de Sistemas de Software, LEIC/MEI, 2003/2004 1 Frameworks orientadas por objectos Arquitectura
Leia mais