SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Coding by Example
Descrição dos Problemas
Guilherme Lacerda
UniRitter/Facensa/Wildtech/TJRS
Daniel Wildt
uMov.me/Wildtech
Dinâmica
1) Formar grupos, com um líder
2) Apresentação do problema a ser trabalhado (5’)
3) Ciclos de (30’)
- Discutir com o grupo as possibilidades de design/estratégias
- Desenvolver o software
- Alternar os pares
4) Retrospectiva (5’)
5) Voltar ao passo 2
6) Discussão em grande grupo da dinâmica
7) Fechamento
Com emoção…
Todo o código DEVE SER ESCRITO
utilizando TDD
1) Escrever um teste que falhe
2) Escrever código mais simples que
passe no teste
3) Refatorar
Regras para o Git
 Commit no Verde
 Só se pode fazer commit quando
todos os testes passarem
Regras
Regra
 A cada X minutos, deve-se retroceder todo o código não feito
o commit
 Cada vez que os testes passarem (Verde!), zerar o cronômetro
 Se o cronômetro tocar nos X minutos, todo o código sem
commit volta para trás
 git init (inicializar o diretório)
 git add . (adicionando arquivos)
 git commit –m “mensagem” (fazendo o commit - só no verde)
 git reset –-hard HEAD~1 (reseta até o último commit)
10 minutos
Problema 1
1) Desenvolver um componente de software que implemente o
algoritmo de cifra de césar
2) O componente deve receber uma String e criptografá-la. Deve ter
opção também para descriptografá-la
3) Mais informações
1 2
01234567890123456789012345
Normal: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cifrado: DEFGHIJKLMNOPQRSTUVWXYZABC
Problema 1
4) O algoritmo é definido pela seguinte equação (E=texto cifrado;
X=deslocamento e N=texto puro)
5) Casos de teste
“test” => “whvw”
Problema 2
1) Ampliar o componente de software de criptografia, incluindo outro
algoritmo, o ROT13 (variação da cifra de césar)
2) O componente deve receber uma String e criptografá-la. Deve ter
opção também para descriptografá-la
3) Mais informações
Problema 2
4) Casos de teste
“test” => “grfg”
Problema 3
1) Mantendo o componente de software de criptografia, inclua mais
outro algoritmo, o ROT47 (variação do ROT13)
2) O componente deve receber uma String e criptografá-la. Deve ter
opção também para descriptografá-la
3) O ROT47 inclui em sua estrutura caracteres que vão do ASCII 33 (!)
até o 126 (~)
Problema 3
4) Casos de teste
“test” => “E6DE”
Obrigado!
www.codingbyexample.org
dwildt@gmail.com
@dwildt
guilhermeslacerda@gmail.com
@guilhermeslac
BACKUP
Problema 4
1) Mantendo o componente de software de criptografia, inclua mais
outro algoritmo, a Cifra de Vigenére (variação da cifra de césar,
porém polialfabético)
2) O componente deve receber uma String e sua chave e criptografá-la.
Deve ter opção também para descriptografá-la, baseada na chave
3) Passos
- Deve-se remover os espaços da mensagem
- Preencher o restante do tamanho da chave com as letras da
palavra, até que fique do mesmo tamanho da mensagem
- Para cada letra da mensagem (coluna), pegar a letra
correspondente da chave (linha)
- Verificar qual letra está na grelha de Vigenére, que será
adicionada a mensagem cifrada
4) Algebricamente, temos
Problema 4
6) Casos de teste
“test”, chave “test” => “mikm”
5) Grelha de Vigenére deve ser
utilizada como tabela de
referência para a cifragem
Coding by Example -  optimized title for coding workshop document

Mais conteúdo relacionado

Mais procurados

Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de RepetiçãoProfessor Samuel Ribeiro
 
TDD - Workshop Pyladies SP
TDD - Workshop Pyladies SPTDD - Workshop Pyladies SP
TDD - Workshop Pyladies SPJessyka Lage
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Sidney Roberto
 
Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Pythonantonio sérgio nogueira
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Mario Guedes
 
Estrutura de Programas
Estrutura de ProgramasEstrutura de Programas
Estrutura de ProgramasSidney Roberto
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 

Mais procurados (16)

Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de Repetição
 
TDD - Workshop Pyladies SP
TDD - Workshop Pyladies SPTDD - Workshop Pyladies SP
TDD - Workshop Pyladies SP
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
 
Python, CPython, Pythonico, Cython
Python, CPython, Pythonico, CythonPython, CPython, Pythonico, Cython
Python, CPython, Pythonico, Cython
 
Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Python
 
Aula python
Aula pythonAula python
Aula python
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
 
Minicurso do Terminal ao Python
Minicurso do Terminal ao PythonMinicurso do Terminal ao Python
Minicurso do Terminal ao Python
 
Python + algoritmo
Python + algoritmoPython + algoritmo
Python + algoritmo
 
Estrutura de Programas
Estrutura de ProgramasEstrutura de Programas
Estrutura de Programas
 
Laços de Repetição
Laços de RepetiçãoLaços de Repetição
Laços de Repetição
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Py dojo
Py dojoPy dojo
Py dojo
 
Curso Python - Aula 01
Curso Python - Aula 01Curso Python - Aula 01
Curso Python - Aula 01
 

Destaque

[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme ProgrammingWildtech
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorWildtech
 
(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários ComplexosWildtech
 
AgileBrazil 2013 - Baby Steps Game
AgileBrazil 2013 - Baby Steps GameAgileBrazil 2013 - Baby Steps Game
AgileBrazil 2013 - Baby Steps GameWildtech
 
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaTDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaWildtech
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de DadosWildtech
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...Wildtech
 
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...Wildtech
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TIWildtech
 
CBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleCBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleWildtech
 
Coding by Example - Tutorial Agiles 2012
Coding by Example - Tutorial Agiles 2012Coding by Example - Tutorial Agiles 2012
Coding by Example - Tutorial Agiles 2012Wildtech
 
Agile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsAgile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsWildtech
 
Swarm Debugging
Swarm DebuggingSwarm Debugging
Swarm DebuggingWildtech
 
AgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleAgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleWildtech
 
The Power of Retrospectives
The Power of RetrospectivesThe Power of Retrospectives
The Power of RetrospectivesWildtech
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureWildtech
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Wildtech
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...Wildtech
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"Wildtech
 

Destaque (19)

[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo Professor
 
(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos
 
AgileBrazil 2013 - Baby Steps Game
AgileBrazil 2013 - Baby Steps GameAgileBrazil 2013 - Baby Steps Game
AgileBrazil 2013 - Baby Steps Game
 
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaTDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
 
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TI
 
CBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleCBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By Example
 
Coding by Example - Tutorial Agiles 2012
Coding by Example - Tutorial Agiles 2012Coding by Example - Tutorial Agiles 2012
Coding by Example - Tutorial Agiles 2012
 
Agile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsAgile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching Patterns
 
Swarm Debugging
Swarm DebuggingSwarm Debugging
Swarm Debugging
 
AgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleAgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By Example
 
The Power of Retrospectives
The Power of RetrospectivesThe Power of Retrospectives
The Power of Retrospectives
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion Architecture
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"
 

Semelhante a Coding by Example - optimized title for coding workshop document

Semelhante a Coding by Example - optimized title for coding workshop document (20)

Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012
 
1° Madrugada de Testes
1° Madrugada de Testes1° Madrugada de Testes
1° Madrugada de Testes
 
Curso de Linguagem C
Curso de Linguagem CCurso de Linguagem C
Curso de Linguagem C
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]
 
Code Smells
Code SmellsCode Smells
Code Smells
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
Modulo 2
Modulo 2Modulo 2
Modulo 2
 
Testes de Software - Módulo 2
Testes de Software - Módulo 2Testes de Software - Módulo 2
Testes de Software - Módulo 2
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Python3
Python3Python3
Python3
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Porque Python? Semana Acadêmica UTFPR 2011
Porque Python? Semana Acadêmica UTFPR 2011Porque Python? Semana Acadêmica UTFPR 2011
Porque Python? Semana Acadêmica UTFPR 2011
 
TDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e featureTDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e feature
 

Mais de Wildtech

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilWildtech
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareWildtech
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a AcademiaWildtech
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingWildtech
 
Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Wildtech
 
Agile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleAgile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleWildtech
 
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasAdoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasWildtech
 
Agile workshop FACENSA
Agile workshop FACENSAAgile workshop FACENSA
Agile workshop FACENSAWildtech
 
Tbd demystified agiles2011
Tbd demystified agiles2011Tbd demystified agiles2011
Tbd demystified agiles2011Wildtech
 
Bate-papo Trunk Based Development
Bate-papo Trunk Based DevelopmentBate-papo Trunk Based Development
Bate-papo Trunk Based DevelopmentWildtech
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XPWildtech
 

Mais de Wildtech (11)

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágil
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de software
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a Academia
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coaching
 
Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)
 
Agile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleAgile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By Example
 
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas BrasileirasAdoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
Adoção do CMMI e Metodologias Ágeis em Empresas Brasileiras
 
Agile workshop FACENSA
Agile workshop FACENSAAgile workshop FACENSA
Agile workshop FACENSA
 
Tbd demystified agiles2011
Tbd demystified agiles2011Tbd demystified agiles2011
Tbd demystified agiles2011
 
Bate-papo Trunk Based Development
Bate-papo Trunk Based DevelopmentBate-papo Trunk Based Development
Bate-papo Trunk Based Development
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XP
 

Coding by Example - optimized title for coding workshop document

  • 1. Coding by Example Descrição dos Problemas Guilherme Lacerda UniRitter/Facensa/Wildtech/TJRS Daniel Wildt uMov.me/Wildtech
  • 2. Dinâmica 1) Formar grupos, com um líder 2) Apresentação do problema a ser trabalhado (5’) 3) Ciclos de (30’) - Discutir com o grupo as possibilidades de design/estratégias - Desenvolver o software - Alternar os pares 4) Retrospectiva (5’) 5) Voltar ao passo 2 6) Discussão em grande grupo da dinâmica 7) Fechamento
  • 4. Todo o código DEVE SER ESCRITO utilizando TDD 1) Escrever um teste que falhe 2) Escrever código mais simples que passe no teste 3) Refatorar Regras para o Git  Commit no Verde  Só se pode fazer commit quando todos os testes passarem Regras
  • 5. Regra  A cada X minutos, deve-se retroceder todo o código não feito o commit  Cada vez que os testes passarem (Verde!), zerar o cronômetro  Se o cronômetro tocar nos X minutos, todo o código sem commit volta para trás
  • 6.  git init (inicializar o diretório)  git add . (adicionando arquivos)  git commit –m “mensagem” (fazendo o commit - só no verde)  git reset –-hard HEAD~1 (reseta até o último commit)
  • 8. Problema 1 1) Desenvolver um componente de software que implemente o algoritmo de cifra de césar 2) O componente deve receber uma String e criptografá-la. Deve ter opção também para descriptografá-la 3) Mais informações 1 2 01234567890123456789012345 Normal: ABCDEFGHIJKLMNOPQRSTUVWXYZ Cifrado: DEFGHIJKLMNOPQRSTUVWXYZABC
  • 9. Problema 1 4) O algoritmo é definido pela seguinte equação (E=texto cifrado; X=deslocamento e N=texto puro) 5) Casos de teste “test” => “whvw”
  • 10. Problema 2 1) Ampliar o componente de software de criptografia, incluindo outro algoritmo, o ROT13 (variação da cifra de césar) 2) O componente deve receber uma String e criptografá-la. Deve ter opção também para descriptografá-la 3) Mais informações
  • 11. Problema 2 4) Casos de teste “test” => “grfg”
  • 12. Problema 3 1) Mantendo o componente de software de criptografia, inclua mais outro algoritmo, o ROT47 (variação do ROT13) 2) O componente deve receber uma String e criptografá-la. Deve ter opção também para descriptografá-la 3) O ROT47 inclui em sua estrutura caracteres que vão do ASCII 33 (!) até o 126 (~)
  • 13. Problema 3 4) Casos de teste “test” => “E6DE”
  • 17. Problema 4 1) Mantendo o componente de software de criptografia, inclua mais outro algoritmo, a Cifra de Vigenére (variação da cifra de césar, porém polialfabético) 2) O componente deve receber uma String e sua chave e criptografá-la. Deve ter opção também para descriptografá-la, baseada na chave 3) Passos - Deve-se remover os espaços da mensagem - Preencher o restante do tamanho da chave com as letras da palavra, até que fique do mesmo tamanho da mensagem - Para cada letra da mensagem (coluna), pegar a letra correspondente da chave (linha) - Verificar qual letra está na grelha de Vigenére, que será adicionada a mensagem cifrada 4) Algebricamente, temos
  • 18. Problema 4 6) Casos de teste “test”, chave “test” => “mikm” 5) Grelha de Vigenére deve ser utilizada como tabela de referência para a cifragem