March 4th, 2010
Continuando os relatos sobre imersão Agil da Agence, essa semana estamos trabalhando em provas de conceito para desenvolver orientado a testes (TDD) em PHP. Como acontece com Ruby (Linguagem) + Rails (Framework), partimos para a premissa de utilizar um framework PHP, no caso, o que estamos mais usando por aqui que é o
CakePHP.
Para nossa “sorte” o Cake já tem algumas facilidades para implementação de testes no estilo xUnit, usando o framework SimpleTest, que é uma mistura de JUnit com JWebUnit permitindo tanto a implementação de testes de unidade/integração como testes funcionais/aceitação simulando comportando do Browser.
O código-fonte produzido está disponível no GitHub, e em breve vamos escrever alguns artigos explicando melhor como foi a experiência. Mas, como sempre, feedbacks já são muito bem vindos!
Fica algumas boas referências de sites e blogs sobre o assunto:
- KISS: blog muito movimentado sobre TDD em CakePHP, em PT-BR!
- Debuggable: empresa especializada em desenvolvimento em CakePHP, acredito que alguns componentes de teste foram desenvolvidos por eles.
- Mark Story: blog dedicado a CakePHP e assuntos relacionados.
- Testes automatizados no CakePHP: excelente apresentação sobre TDD em CakePHP.
Tags: Agence, Agile, Agile Adoption, BDD, CakePHP, github, JUnit, JWebUnit, PHP, SimpleTest, TDD, Teste de Software
Posted in
Agence, Agile, PHP |
No Comments »
March 3rd, 2010
Dando continuidade aos relatos da imersão Ágil na Agence, nosso colega Fernando Cezar publicou no Geeks Anônimos um artigo explicando (e ilustrando) como estamos usando Kanban (e SCRUM??) em projetos 12 projetos de manutenção. Aproveite e deixe seus comentários sobre o tema, o feedback da comunidade é muito importante.
Tags: Agence, Agile, Agile Adoption, Fernando Cézar, Geeks Anônimos, Kanban, Scrum
Posted in
Agence, Agile |
No Comments »
February 28th, 2010
Nos dias 22 a 25 de Junho de 2010 acontecerá em Porto Alegre um grande evento dedicado ao tema Agile, o Agil Brazil 2010. As submissões de palestra tiveram seu prazo aumentado para dia 07/03 pelo site http://submissoes.agilebrazil.com/. Submeti a palestra abaixo e estou na torcida pela aprovação! Aproveite e deixe seus comentários, será de grande valia!
Em 6 meses de imersão ágil o que mudou?
Público alvo
Desenvolvedores e testadores, gerentes de projeto, executivos, entusiastas e iniciantes em métodos ágeis, quem mais tiver interesse!
Resumo
Começamos o ano de 2010 com um desafio: reverter o cenário de baixa produtividade e desmotivação da equipe que estava pairando no ar. Após várias discussões entre as pessoas chave da equipe bolamos um plano e entramos de cabeça em um projeto de agile adoption. Este trabalho mostra os principais resultados e dificuldades deste processo.
Descrição completa
No final de 2009, iniciamos uma reforma na unidade de Campo Grande da Agence. Literalmente o teto caiu e passamos grandes dificuldades com a chuva diária no chão do escritório. A reforma está construindo um segundo andar na nossa sede, mas como todos sabemos, não é nada agradável “morar” em uma casa em reforma.
Além disso, nossa equipe estava pecando no quesito qualidade e prazo em alguns projetos, o que gerou um descrédito por parte da diretoria da empresa. No final do ano, tivemos o desligamento de 3 profissionais, além da insatisfação com as dificuldades no ambiente de trabalho e projetos.
Nesse contexto, reunimos as pessoas chave da equipe e após várias discussões bolamos um plano para adotar desenvolvimento ágil como uma forma de motivação da equipe e melhoria no produto desenvolvido.
O plano abrange 6 meses a começar a partir de janeiro de 2010 e têm metas bastante agressivas que envolve várias mudanças na forma de trabalho, além de sessões semanais de treinamento (tech thursday) e vários finais de semana dedicados à estudos.
A proposta deste trabalho é mostrar nossa experiência na adoção de métodos ágeis em uma equipe de 20 pessoas que trabalha com vários tipos diferentes de projetos: novos sistemas, manutenção e pesquisa & desenvolvimento.
O plano prevê adoção da técnica pomodoro, SCRUM, Behavior Driven Development (BDD), Domain Driven Design (DDD) e Programação em Pares. Ufa! Continuamos com a mão na massa e já estamos colhendo resultados desse trabalho e gostaríamos muito de compartilhar essas experiências com a comunidade.
Mecânica/Processo
Apresentação de slides seguindo a Agenda abaixo:
- Como estávamos no final de 2009?
- Qual nosso plano?
- 1º mês: Pomodoro
- 2º mês: Scrum
- 3º mês: Behavior Driven Development
- 4º mês: Domain Driven Design
- 5º mês: Pair Programming
- 6º mês: E agora?
- Conclusões e resultados
Benefícios
Durante esses 6 meses de projeto, estamos publicando vários artigos, no blog da empresa e individuais, com o objetivo de trocar idéias e mostrar como estamos buscando melhorar nossa forma de trabalho. Acredito na importância da apresentação dessas experiências em um evento dedicado ao assunto, que permitirá excelente troca de idéias com pessoas que também tem os mesmos interesses
Experiência com o assunto
Venho estudando métodos ágeis há pelo menos 3 anos e já aplicando algumas práticas na Agence, que tem um processo mais próximo do “OpenUP”. Já ministrei treinamentos em diversas áreas sempre divulgando métodos ágeis e pregando boas práticas de engenharia e já dei consultoria em algumas empresas para MPS nas áreas de gerenciamento de projetos e requisitos, baseado nos modelos MPS.br e CMMi.
Tags: Agence, Agile, Agile Adoption, Agile Brazil, BDD, Campo Grande, CMMI, DDD, Evento, eXtreme Programming, MPS, MPS.br, OpenUP, Pair Programming, Porto Alegre, Scrum
Posted in
Agence, Agile, Drops, Eventos |
4 Comments »
February 23rd, 2010
Há alguns dias postei sobre o uso da Técnica Pomodoro na Agence. Hoje o Lucas Souza iniciou uma discussão no InfoQ sobre o “mérito” do uso da técnica para troca de idéias dos entusiastas e dos céticos. Estamos participando, vejo vocês lá!
Tags: Agence, Agile, InfoQ, Lucas Souza, Pomodoro, Produtividade
Posted in
Agile, Drops |
No Comments »
February 10th, 2010
Venho estudando um framework para Behavioral Driven Development chamado Cucumber e me impressionado com a facilidade e clareza que a atividade de implementar testes automatizados vem se tornando. Para quem quiser saber mais sobre Cucumber, antes mesmo de continuar essa leitura, recomendo consultar esses links:
O foco deste, é apresentar minha experiência em usar o Cucumber integrado com o Selenium e mostrar um exemplo de como é simples implementar testes funcionais. Para começar, leia essa documentação que explica como configurar seu ambiente. Se você usa MacOS Snow Leopard (10.5) deve passar pelos mesmos problemas que eu tive e que encontrei a solução neste link.
A idéia central é escrever estórias para teste de telas (caixa preta). Disponibilizei no github o código-fonte da aplicação em Rails que está sendo testada e de outra aplicação, somente Ruby, usando Cucumber + Selenium. Para demonstrar o uso do Selenium, escolhi um cenário bastante simples, trata-se de um história de autenticação de usuários:
Perceba que nos preocupamos em escrever a história o mais “User Friendly” possível. Isso facilita bastante o entendimento sobre o que você está de fato testando e o que o seu usuário (ou cliente) acha que você deveria testar. E, como você já deve saber, as palavras-chave “dado”, “quando” e “então” representam ações que são implementadas em Ruby. Para começar, configuramos no arquivo support/env.rb o ambiente da API para Selenium em Ruby criando uma instância da classe Selenium::SeleniumDriver.
No arquivo support/paths.rb configuramos o mapeamento de nome de páginas para URIs e também de label de campos para o nome do campo no formulário HTML. Os métodos path_to, field_for e button_for fazem essas funções.
OK, concordo com vocês que essas funções não fazem lá muita coisa, mas lembre-se que estamos fazendo o nosso primeiro caso de teste, tenha certeza que serão úteis no futuro próximo. Um exemplo que eu já posso citar foram os testes que implementamos para testar uma aplicação, na verdade um portal, desenvolvido em Drupal, onde o “label” dos campos não era nem um pouco parecido com o nome (do componente HTML) do campo. Lembrando que as histórias tem de ficar o mais próximo possível da taxonomia (ou idioma) do seu usuário.
Agora, vamos à parte que interessa, de fato a implementação dos passos descritos nas estórias. Criei o arquivo step_definitions/common_steps.rb contendo os passos mais comuns que você deverá usar na maioria de suas estórias. Para passos específicos de determinada história, recomenda-se criar um outro arquivo no diretório step_definitions com o nome da estória.
O exemplo é bastante simples, e a aplicação Rails do github contém uma implementação bastante simples do que está sendo testado. Para executar, basta usar o comando “cucumber” na raiz do projeto de testes. Lembrando que você deve iniciar o servidor do Selenium usando o comando “selenium” (isso funcionou pra mim após instalar o Selenium RC).
Se você tiver dúvidas ou problemas na execução do exemplo, fique à vontade de postar nos comentários que farei o possível para tentar ajudar. E, por hora ficamos por aqui. Em breve devo postar alguns exemplos de passos mais complexos como uso de tabelas e/ou editores ricos. Estamos trabalhando nisso agora!
Tags: Agile, BDD, Cássio Marques, Cucumber, eXtreme Programming, Jefferson Girão, MacOS, RSpec, Ruby on Rails, Selenium, TDD, Teste de Software, Urubatan
Posted in
Agile, Artigos, Ruby on Rails |
No Comments »
February 5th, 2010
Há mais ou menos duas semanas temos usado na Agence a técnica Pomodoro. Como vocês já devem saber, a técnica objetiva aumento da produtividade para trabalhos que exigem esforço intelectual, ou, em outras palavras, para quem usa a cabeça. Serve como uma luva para estudo e desenvolvimento de software!
O princípio básico da técnica é dedicar 25 minutos de puro trabalho com 5 minutos de descanso. Isso é o que se chama 1 (um) “Pomodoro”. Após 4 Pomodoros você faz uma pausa maior. A apresentação que usei para apresentar a técnica aqui na Agence está disponível no slideshare. Além disso, tem um livro gratuito escrito pelo autor da técnica, Francesco Cirillo.
Nossa experiência até o momento tem sido bastante produtiva. Estamos usando fichas pautadas 4” x 6” para registrar diariamente e no fim da semana o estagiário lança as atividades em um sistema que ele mesmo fez. Estamos trabalhando em alguns relatórios para avaliar, principalmente, a constância da equipe. Provavelmente usaremos um gráfico de controle pra isso.
Por enquanto é isso que temos a dizer. Assim que as coisas começarem a fazer mais sentido pra gente, vou postando aqui as experiências.
Tags: Agence, Agile, Gestão, Gráfico de Controle, Pomodoro, Produtividade, Scrum, Slideshare, Treinamento
Posted in
Drops |
1 Comment »
November 4th, 2009
Neste final de semana finalmente participei do segundo encontro presencial na UFLA (Universidade Federal de Lavras) para conclusão do curso de Especialização em MPS (Melhoria do Processo de Software) que iniciei em 2006. O encontro foi extremamente produtivo visto que havia poucos alunos e com isso temos a oportunidade única de ter consultorias ao invés de aulas com professores de altíssimo nível. Fora que com pouca gente a interação entre os alunos foi infinitamente maior o que com certeza vai promover amizades produtivas.
No sábado eu tive a oportunidade de apresentar meu Trabalho de Conclusão de Curso que trata-se de um artigo entitulado: Gerenciando Projetos de Escopo Aberto – Uma Visão Ágil. Ainda tenho alguns ajustes para fazer, mas já disponibilizei uma prévia do trabalho em PDF e depois atualizo esse post com a versão final (para fazer o download clique no link do nome do trabalho).
É uma pena esse curso ter acabado. Mas já deixo a recomendação de outro curso, na verdade um MBA, que tem como coordenador um dos professores. Trata-se do MBA Gestão da Qualidade em Software com ênfase em CMMI® e MPS.BR da FIAP, e o coordenador é o sensacional Nilson Salvetti.
Como voltei bastante animado do encontro, em breve devo publicar, em parceria com alguns colegas, artigos que estamos preparando sobre teste de integração e gerenciamento de projeto “agile”. Pode me cobrar se eu não enviar! Estou até animado a embarcar em um mestrado na área de Engenharia de Software, e aceito recomendações!
Tags: Agence, Agile, Engenharia de Software, eXtreme Programming, MPS, Scrum, UFLA
Posted in
Agence, Agile, Artigos, Engenharia de Software, MPS |
No Comments »
October 6th, 2009
Na semana de 29/09 a 05/10 a UNIDERP/Anhanguera promove a XII Semana da Computação. A Agence Educacional é patrocinadora do evento e está oferecendo um mini-curso de “Desenvolvimento Web com Ruby on Rails” com carga horária de 20 horas nos laboratórios da faculdade, ministrado por Rodrigo Toledo.
Além disso no dia 29/09 Saulo Arruda e Rodrigo Toledo ministraram a palestra “Desenvolvimento Ágil com Ruby on Rails” no auditório do evento. O vídeo contendo a apresentação na íntegra está disponível na internet no endereço: http://vimeo.com/6837182. Slides disponíveis em: http://www.slideshare.net/agenceeducacional/desenvolvimento-agil-com-ruby-on-rails.
[]’s
Na semana de 29/09 a 05/10 a UNIDERP/Anhanguera promoveu a XII Semana da Computação. A Agence Educacional foi patrocinadora do evento e ofereceu um mini-curso de “Desenvolvimento Web com Ruby on Rails” com carga horária de 20 horas nos laboratórios da faculdade, ministrado por nosso colega Rodrigo Toledo.
Além disso no dia 29/09 eu e Rodrigo Toledo (novamente) ministramos a palestra “Desenvolvimento Ágil com Ruby on Rails” no auditório do evento. O vídeo contendo a apresentação na íntegra está disponível na internet no endereço: http://vimeo.com/6837182. Slides disponíveis em: http://www.slideshare.net/agenceeducacional/desenvolvimento-agil-com-ruby-on-rails.
Tags: Agence, AgenceEducaional, Agile, Anhanguera, Campo Grande, eXtreme Programming, Mato Grosso do Sul, Ruby on Rails, UNIDERP
Posted in
Agile, Eventos, Palestras, Ruby on Rails, Treinamento |
No Comments »
September 22nd, 2008
Como havia comentado anteriormente, eu dei uma palestra no Freedom Day sobre comparação entre frameworks ágeis. Estou disponibilizando os slides da palestra. Fiz uma introdução sobre o que eu chamo de framework ágil e apresentei prós e contras de Ruby on Rails, Python Django, Grails e PHP Symfony
Nos fizemos um vídeo improvisado, mas como deu problema no som, não vai rolar postá-lo por aqui.
Tags: Agile, Django, Freedom Day, Grails, PHP, PHP-MS, Python, Ruby on Rails, Symfony
Posted in
Agile, Eventos, Software Livre |
No Comments »
May 2nd, 2007
Um cidadão chamado Mateus Velloso resolver falar mal de CMMI. Ele é louco? (Deixo a resposta para vocês…). Leia o artigo na íntegra.
Tags: Agile, CMMI, Engenharia de Software, MPS
Posted in
Agile, Artigos, Drops, Engenharia de Software, MPS |
1 Comment »