Your SlideShare is downloading. ×
0
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Desafios do Profissionalismo Ágil
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Desafios do Profissionalismo Ágil

2,007

Published on

Victor Hugo Germano apresenta sua visão sobre profissionalismo e os desafios na adoção de metodologias ágies. …

Victor Hugo Germano apresenta sua visão sobre profissionalismo e os desafios na adoção de metodologias ágies.

Através de uma linguagem lúdica, conceitos relacionados a Qualidade, Teste de Software e comprometimento.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,007
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
75
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desafios do Profissionalismo Ágil Victor Hugo Germano
  • 2. Eu ? Quem??
  • 3. Victor Hugo Germano http://malditacomedia.blogspot.com
  • 4. Test all the Fucking time!
  • 5. Qual o nosso papel?
  • 6. Tempos realmente modernos?
  • 7. Nos tempos da Brilhantina Integração
  • 8. http://flickr.com/photos/fairytalecinema/1813597118/
  • 9. Ciclo Vicioso do Desenvolvimento de Software
  • 10. http://www.flickr.com/photos/orangeacid/272510395/
  • 11. http://www.flickr.com/photos/fulbert05/2403344636/
  • 12. http://www.flickr.com/photos/danielankers/2639889958/
  • 13. ?
  • 14. http://www.flickr.com/photos/mfakheri/2978493478/
  • 15. http://www.flickr.com/photos/orangeacid/272510395/
  • 16. http://www.flickr.com/photos/fulbert05/2403344636/
  • 17. http://www.flickr.com/photos/danielankers/2639889958/
  • 18. ?
  • 19. http://www.flickr.com/photos/jurvetson/3097134746/
  • 20. Desenvolvimento Ágil
  • 21. Escopo Negociável BDD Agile Cliente Presente Modeling Agile Retrospectiva Integração Contínua Pair Programming Simplicidade Reunião Diária TDD
  • 22. Agile BUT
  • 23. http://www.flickr.com/photos/orangeacid/272510395/
  • 24. Test all the fucking time?
  • 25. QUALIDADE
  • 26. Test all the Fucking time!
  • 27. “Nos dias de hoje, entregar um linha de código sem que ela seja testada é Irresponsabilidade Profissional” Robert Uncle Bob
  • 28. Uncle Bob
  • 29. Test all the Fucking time!
  • 30. Qualidade
  • 31. TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
  • 32. O que você faz quando a pressão cresce?
  • 33. Salvem os bebês foca!
  • 34. Test all the Fucking time!
  • 35. Keep it Simple!!
  • 36. Debugging sucks! Testing Rules!
  • 37. TDD
  • 38. Profissionalismo
  • 39. P R E G U I Ç A
  • 40. Por que seria diferente?
  • 41. Quão Sexy é o seu código?
  • 42. O código
  • 43. // create some properties and get the default Session Properties props = new Properties(); props.put(quot;mail.smtp.hostquot;, _smtpHost); Session session = Session.getDefaultInstance(props, null);   // create a message Address replyToList[] = { new InternetAddress(replyTo) }; Message newMessage = new MimeMessage(session); if (_fromName != null) newMessage.setFrom(new InternetAddress(from, _fromName + quot; on behalf of quot; + replyTo)); else newMessage.setFrom(new InternetAddress(from)); newMessage.setReplyTo(replyToList); newMessage.setRecipients(Message.RecipientType.BCC, _toList); newMessage.setSubject(subject); newMessage.setSentDate(sentDate);   // send newMessage Transport transport = session.getTransport(SMTP_MAIL); transport.connect(_smtpHost, _user, _password); transport.sendMessage(newMessage, _toList);
  • 44. Session session = this.loadDefaultConfiguration();   Address replyToList[] = { new InternetAddress(replyTo)}; Message email = this.createEmailMessage( fromName, replyToList, subject, message );   this.sendMessage(session, email); http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 45. A API
  • 46. class Email { public Email() { ... } public void setFrom(String from) { ... } public void setTo(String to) { ... } public void send() { // YOUR HOT CODE HERE } } http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 47. Email email = new Email ( ); email.setFrom( “test@localhost.net”); email.setTo (“destino@localhost.net”); email.setSubject (“Teste email”); email.setMessage (“Mensagem”); email.send(); http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 48. new EmailMessage( ) .from(quot;teste@localhost.netquot;) .to(quot;destination@address.comquot;) .withSubject(quot;Fluent Mail Examplequot;) .withBody(quot;What a nice code!quot;) .send(); http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 49. Quão Sexy é o seu código?
  • 50. What is a Clean Code? “Quando você olha para o código, percebe que ele faz exatamente o que você esperava” Howard Cunningham http://railsconf.blip.tv/file/2089545/
  • 51. Como medir? cleanCode = WTF / sec
  • 52. // create some properties and get the default Session Properties props = new Properties(); props.put(quot;mail.smtp.hostquot;, _smtpHost); WTF?! Session session = Session.getDefaultInstance(props, null);   // create a message Address replyToList[] = { new InternetAddress(replyTo) }; Message newMessage = new MimeMessage(session); if (_fromName != null) newMessage.setFrom(new InternetAddress(from, else _fromName + quot; on behalf of quot; + replyTo)); WTF?! newMessage.setFrom(new InternetAddress(from)); newMessage.setReplyTo(replyToList); newMessage.setRecipients(Message.RecipientType.BCC, _toList); newMessage.setSubject(subject); newMessage.setSentDate(sentDate);   // send newMessage WTF?! Transport transport = session.getTransport(SMTP_MAIL); transport.connect(_smtpHost, _user, _password); transport.sendMessage(newMessage, _toList);
  • 53. new EmailMessage( ) .from(quot;teste@localhost.netquot;) .to(quot;destination@address.comquot;) .withSubject(quot;Fluent Mail Examplequot;) .withBody(quot;What a nice code!quot;) .send(); http://guilherme.pro/2009/04/05/why-i-dont-write-code-comments/
  • 54. boy scout rule
  • 55. Parece fácil?
  • 56. Integração Contínua http://malditacomedia.blogspot.com/search/label/IntegraçãoContínua
  • 57. Tester
  • 58. Testes
  • 59. Unitários EJB3Unit DBUnit JUnit JSUnit xUnit http://c2.com/cgi/wiki?TestingFramework
  • 60. Test all the Fucking time!
  • 61. Aceitação Selenium Fitnesse AutoIt Concordion Cucumber
  • 62. Selenium
  • 63. Fitnesse
  • 64. http://fitnesse.org
  • 65. Inspeção
  • 66. Duplicação de Codigo
  • 67. CPD <target name=quot;cpdquot;> <taskdef name=quot;cpdquot; classname=quot;net.sourceforge.pmd.cpd.CPDTaskquot; /> <cpd minimumTokenCount=quot;100quot; outputFile=quot;/home/tom/cpd.txtquot;> <fileset dir=quot;/home/tom/tmp/antquot;> <include name=quot;**/*.javaquot;/> </fileset> </cpd> </target> http://pmd.sourceforge.net/cpd.html
  • 68. Análise Estática
  • 69. Complexidade JDepend
  • 70. Complexidade • Complexidade Ciclomática • Instabilidade e Abstratividade http://en.wikipedia.org/wiki/Software_metric
  • 71. Análise FindBugs PMD
  • 72. Findbugs DE_MIGHT_IGNORE: Method might ignore exception MS_SHOULD_BE_FINAL: Field isn't final but should be SBSC_USE_STRINGBUFFER_CONCATENATION: Method concatenates strings using + in a loop NP_NULL_ON_SOME_PATH: Possible null pointer dereference in method NM_CLASS_NAMING_CONVENTION: Class names should start with an upper case letter
  • 73. Feedback
  • 74. Documentação doxygen Diagramas de Classes javadoc Documentação de Código
  • 75. Doxygen Collaboration Call Hierarchy Dot Representation Documentation http://www.stack.nl/~dimitri/doxygen
  • 76. Servidor de Build Hudson CruiseControl Luntbuild Anthill
  • 77. Só mais um Teste!
  • 78. Obrigado! victorhg@gmail.com Qual o nosso papel?

×