Desafios do Profissionalismo Ágil
Upcoming SlideShare
Loading in...5
×
 

Desafios do Profissionalismo Ágil

on

  • 2,783 views

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.

Statistics

Views

Total Views
2,783
Views on SlideShare
2,769
Embed Views
14

Actions

Likes
0
Downloads
73
Comments
0

2 Embeds 14

http://www.slideshare.net 12
http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Desafios do Profissionalismo Ágil Desafios do Profissionalismo Ágil Presentation Transcript

    • Desafios do Profissionalismo Ágil Victor Hugo Germano
    • Eu ? Quem??
    • Victor Hugo Germano http://malditacomedia.blogspot.com
    • Test all the Fucking time!
    • Qual o nosso papel?
    • Tempos realmente modernos?
    • Nos tempos da Brilhantina Integração
    • http://flickr.com/photos/fairytalecinema/1813597118/
    • Ciclo Vicioso do Desenvolvimento de Software
    • http://www.flickr.com/photos/orangeacid/272510395/
    • http://www.flickr.com/photos/fulbert05/2403344636/
    • http://www.flickr.com/photos/danielankers/2639889958/
    • ?
    • http://www.flickr.com/photos/mfakheri/2978493478/
    • http://www.flickr.com/photos/orangeacid/272510395/
    • http://www.flickr.com/photos/fulbert05/2403344636/
    • http://www.flickr.com/photos/danielankers/2639889958/
    • ?
    • http://www.flickr.com/photos/jurvetson/3097134746/
    • Desenvolvimento Ágil
    • Escopo Negociável BDD Agile Cliente Presente Modeling Agile Retrospectiva Integração Contínua Pair Programming Simplicidade Reunião Diária TDD
    • Agile BUT
    • http://www.flickr.com/photos/orangeacid/272510395/
    • Test all the fucking time?
    • QUALIDADE
    • Test all the Fucking time!
    • “Nos dias de hoje, entregar um linha de código sem que ela seja testada é Irresponsabilidade Profissional” Robert Uncle Bob
    • Uncle Bob
    • Test all the Fucking time!
    • Qualidade
    • TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
    • O que você faz quando a pressão cresce?
    • Salvem os bebês foca!
    • Test all the Fucking time!
    • Keep it Simple!!
    • Debugging sucks! Testing Rules!
    • TDD
    • Profissionalismo
    • P R E G U I Ç A
    • Por que seria diferente?
    • Quão Sexy é o seu código?
    • O código
    • // 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);
    • 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/
    • A API
    • 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/
    • 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/
    • 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/
    • Quão Sexy é o seu código?
    • 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/
    • Como medir? cleanCode = WTF / sec
    • // 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);
    • 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/
    • boy scout rule
    • Parece fácil?
    • Integração Contínua http://malditacomedia.blogspot.com/search/label/IntegraçãoContínua
    • Tester
    • Testes
    • Unitários EJB3Unit DBUnit JUnit JSUnit xUnit http://c2.com/cgi/wiki?TestingFramework
    • Test all the Fucking time!
    • Aceitação Selenium Fitnesse AutoIt Concordion Cucumber
    • Selenium
    • Fitnesse
    • http://fitnesse.org
    • Inspeção
    • Duplicação de Codigo
    • 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
    • Análise Estática
    • Complexidade JDepend
    • Complexidade • Complexidade Ciclomática • Instabilidade e Abstratividade http://en.wikipedia.org/wiki/Software_metric
    • Análise FindBugs PMD
    • 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
    • Feedback
    • Documentação doxygen Diagramas de Classes javadoc Documentação de Código
    • Doxygen Collaboration Call Hierarchy Dot Representation Documentation http://www.stack.nl/~dimitri/doxygen
    • Servidor de Build Hudson CruiseControl Luntbuild Anthill
    • Só mais um Teste!
    • Obrigado! victorhg@gmail.com Qual o nosso papel?