Palestra ministrada na XII Semana da Computação da UNIDERP por Saulo Arruda e Rodrigo Toledo falando sobre Desenvolvimento Ágil e Ruby on Rails. Vídeo disponível em http://vimeo.com/6837182
2. Agenda
• O que é ser Ágil?
• O que é Ruby on Rails?
• Ágil + Ruby On Rails = PRODUTIVIDADE
Slide 2 Desenvolvimento Ágil com Ruby on Rails
3. Quem Somos?
• Saulo Arruda (saulo.arruda@agence.com.br)
• Especialista em Melhoria de Processos pela UFLA;
• 10 anos de experiência em projetos de software;
• Gerente de Projetos Especiais e Arquiteto Sênior da
Agence Consultoria
• Coordenador do JUG-MS
• Diretor Pedagógico da Agence Educacional
Slide 3 Desenvolvimento Ágil com Ruby on Rails
4. Quem Somos?
• Rodrigo Toledo (rodrigo.toledo@agence.com.br)
• 9 anos de experiência em projetos de software;
• Instrutor e mentor dos treinamentos em Ruby on
Rails da Agence Educacional;
• Arquiteto Pleno e Desenvolvedor da Agence
Consultoria;
• Fundador do Rails MS;
Slide 4 Desenvolvimento Ágil com Ruby on Rails
16. Desenvolvimento Ágil
Como desenvolver com sucesso?
Manifesto para o Desenvolvimento Ágil de Software
“Estamos descobrindo maneiras melhores de desenvolver software fazendo-o
nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a
valorizar:
* Indivíduos e interação entre eles mais que processos e
ferramentas;
* Software em funcionamento mais que documentação
abrangente;
* Colaboração com o cliente mais que negociação de contratos;
* Responder a mudanças mais que seguir um plano.
Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os
itens à esquerda.”
agilemanifesto.org
18. Métodos Ágeis
• Ciclo de Vida Iterativo
• Planejamento Adaptivo
• Iterações Curtas com Duração Fixa
• Alguns exemplos: eXtreme Programming,
SCRUM, ICONIX, Agile UP, Open UP
Slide 16 Desenvolvimento Ágil com Ruby on Rails
19. eXtreme Programming (XP)
• Valores
• Comunicação: diálogos presenciais
• Coragem: mudanças são bem vindas
• Feedback: descobrir problemas cedo
• Respeito: ouvir e compreender
• Simplicidade: fazer o que é necessário
Slide 17 Desenvolvimento Ágil com Ruby on Rails
20. eXtreme Programming (XP)
• Princípios
• Auto-semelhança • Melhoria
• Benefício Mútuo • Oportunidade
• Diversidade • Passos de Bebê
• Economia • Qualidade
• Falha • Redundância
• Fluidez • Reflexão
• Humanismo • Responsabilidade
Aceita
Slide 18 Desenvolvimento Ágil com Ruby on Rails
21. eXtreme Programming (XP)
• Papéis
• Analistas de Teste • Gerentes de Produto
• Arquitetos • Programadores
• Designers de • Recursos Humanos
Interação • Redatores Técnicos
• Executivos • Usuários
• Gerentes de Projeto
Slide 19 Desenvolvimento Ágil com Ruby on Rails
22. eXtreme Programming (XP)
• Práticas Primárias
• Ambiente Informativo • Folga
• Build de Dez Minutos • Histórias
• Ciclo Semanal • Integração Contínua
• Ciclo Trimestral • Programação em Par
• Desenvolvimento • Sentar-se Junto
Orientado a Testes • Trabalho Energizado
• Design Incremental
• Equipe Integral
Slide 20 Desenvolvimento Ágil com Ruby on Rails
23. eXtreme Programming (XP)
• Práticas Corolárias
• Análise da Raiz do • Envolvimento do
Problema Cliente Real
• Base de Código Unificada • Equipes que Encolhem
• Código Coletivo • Implantação Diária
• Código e Testes • Implantação
Incremental
• Continuidade da Equipe
• Pagar por Uso
• Contrato de Escopo
Negociável
Slide 21 Desenvolvimento Ágil com Ruby on Rails
24. Caindo na Real
• Livro Getting Real escrito pela 37 signals
• Fazer menos
• Permanecer pequeno e ágil
• Construir interface antes
• Baixar os custos da mudança
• Entregar o que o cliente precisa
Slide 22 Desenvolvimento Ágil com Ruby on Rails
25. Caindo na Real livra-se de...
• Cronogramas de meses • Números de versões
ou anos sem sentido
• Especificações funcionais • Previsões do futuro
utópicas
• Opções de preferências
• Debates de
Escalabilidade • Suporte terceirizado
• Reuniões intermináveis • Testes de usuário irreais
• Dúzias de funcionários • Papelada inútil
• Hierarquia top-down
Slide 23 Desenvolvimento Ágil com Ruby on Rails
27. Ruby on Rails?
• Mantido pela 37 signals
• Criado por David Heinemeier
Hansson em 2003
• Rails é um framework para
Desenvolvimento Web escrito na
linguagem Ruby
Slide 25 Desenvolvimento Ágil com Ruby on Rails
28. Ruby - A Programmer’s Best Friend
Ruby é uma linguagem dinâmica, open source
com foco na simplicidade e na produtividade.
Tem uma sintaxe elegante de leitura
natural e fácil escrita.
Slide 26 Desenvolvimento Ágil com Ruby on Rails
29. Rails - Web development that doesn’t
hurt
Rails foi projetado para tornar o
desenvolvimento de aplicações web mais simples
fazendo várias suposições sobre o que o
desenvolvedor precisa para começar.
Slide 27 Desenvolvimento Ágil com Ruby on Rails
30. The Rails Way
• DRY (Dont Repeat Yourself): escrever o
mesmo código várias vezes é ruim...
• CoC (Convention Over Configuration):
suposições sobre o que você quer fazer e
como fazê-lo.
• REST (Representational State Transfer):
organizar sua aplicação em torno de recursos e
verbos.
Slide 28 Desenvolvimento Ágil com Ruby on Rails
31. Padrão MVC
• Model, View e Controller;
• Isolamento da lógica de negócios e da interface
com o usuário;
• Facilidade em manter o código DRY;
• Manter claro onde tipos de código diferentes
estarão, facilitando a manutenção;
Slide 29 Desenvolvimento Ágil com Ruby on Rails
32. Componentes do Rails
• Action Controller: processa requisições
• Action View: criar saídas HTML ou XML
• Active Record: independência de BD
• Action Mailer: serviços de e-mail
• Active Resource: conectividade entre serviços
• Railties: núcleo do código Rails
• Active Support: classes utilitárias
Slide 30 Desenvolvimento Ágil com Ruby on Rails
33. Ferramentas
• rake: execução de tarefas comuns como
geração de banco de dados, geração do
“pacote” da aplicação, estatísticas do projeto.
• generator: geração de código de models,
views, controllers, migrations, etc.
• console: execução da aplicação no console
para “testar” funcionalidades.
Slide 31 Desenvolvimento Ágil com Ruby on Rails
34. Testando em Rails
• Ambientes: teste, desenvolvimento e produção
• Fixtures para criação de dados de teste
• API para Assertions
• API para Mock Objects
• API para testes de Controllers e Views
• Automatização de tarefas de teste (rake)
Slide 32 Desenvolvimento Ágil com Ruby on Rails
35. Testando em Rails
• Teste Unitário: classes e métodos
• Teste Funcional: controllers e views
• Teste de Integração: fluxos de trabalho,
processos
• Teste de Performance: operações críticas
Slide 33 Desenvolvimento Ágil com Ruby on Rails
36. Métricas de Testes
• rake stat: linhas de código-fonte para linha de
código de teste
• rcov: cobertura de código pelos testes;
• rake test:benchmark: tempo de execução
• rake test:profile: localização de gargalos de
performance no código
Slide 34 Desenvolvimento Ágil com Ruby on Rails
38. Ágil + Rails = PRODUTIVIDADE
• Sendo Ágil você tem:
• Melhor integração com a equipe e o cliente;
• Menos re-trabalho;
• Menos funcionalidades inúteis;
• Menos resistência à mudanças;
• Mais tempo para viver!
Slide 36 Desenvolvimento Ágil com Ruby on Rails
39. Ágil + Rails = PRODUTIVIDADE
• Usando Rails você NÃO tem:
• 10 livros de 500 páginas para aprender “o básico”
• Horas perdidas configurando projeto;
• Dependência de IDEs;
• Dificuldades de integração de frameworks;
• Noites tentando fazer o deploy no servidor;
• Repetição de tarefas;
Slide 37 Desenvolvimento Ágil com Ruby on Rails
42. Referências
• http://guides.rubyonrails.com
• Desenvolvimento Web Ágil com Rails
• Extreme Programming - Improve It
Slide 40 Desenvolvimento Ágil com Ruby on Rails
43. Licença
Você pode:
copiar, distribuir, exibir e executar a obra
criar obras derivadas
Sob as seguintes condições:
Atribuição. Você deve dar crédito ao
autor original, da forma especificada
pelo autor ou licenciante.
Slide 41 Desenvolvimento Ágil com Ruby on Rails