Toolsfor an ef ective
                                f
                     software factory
                    (I can't live without Hudson)




Speaker, Company                                    1
Agenda

•     Why am I doing this?
•     Maven
•     Mercurial
•     Jira *
•     Hudson
•     Conclusion




* the only non-FLOSS piece of software
Speaker, Company                         2
Who am I?

•     Fabrizio Giudici
        –     http://weblogs.java.net/blog/fabriziogiudici/
        –     http://www.tidalwave.it/people
•     Working with Java since 1996
•     Senior Java Architect, mentor, technical writer
•     Owner of several open source projects
•     Member of the NetBeans Dream Team




Speaker, Company                                              3
Why am I doing this?

•     Tools aren't the single most important thing for success
        –     People are (team, leadership, communication, etc...)
•     Once the we have estabilished a process, tools help a lot
        –     Automating tasks
        –     Enforcing the process
        –     Facilitating cooperation
•     Tools make best practices easier and less expensive




Speaker, Company                                                     4
What we need to do

•     Transforming sources into deployable artifacts
•     Keeping tracks of changes in sources
•     Keeping track of issues (bugs, RFE)
•     Running tests and QA tools




Speaker, Company                                       5
Maven

•     A tool for automating the build process
•     Uses a declarative approach (Project Object Model)
•     Plugin based
•     Implements a distributed repository for artifacts




Speaker, Company                                           6
Mercurial

•     A Distributed Source Control Mechanism (DSCM)
        –     check out / commit + push pull
•     Improves branch management over Subversion
        –     “Branch per feature”
•     Git is similar




Speaker, Company                                      7
Jira

•     Starts as an issue tracker
•     ... but it is more:
        –     Project planning
        –     Communication tool




Speaker, Company                   8
Hudson

•     A tool for Continous Integration (CI)
        –     Web-based
        –     Easy to install
        –     Based on plugin, with a large ecosystem
        –     Supports virtualisation
        –     Cloud ready
•     Do you know what CI is?




Speaker, Company                                        9
QA measurement

•     Tools to measure quality of your software
        –     Cobertura
        –     FindBugs
        –     CheckStyle
        –     CPD/PMD




Speaker, Company                                  10
Cobertura




Speaker, Company               11
FindBugs




Speaker, Company              12
Checkstyle




Speaker, Company                13
PMD / CPD




Speaker, Company               14

Tools for an effective software factory

  • 1.
    Toolsfor an efective f software factory (I can't live without Hudson) Speaker, Company 1
  • 2.
    Agenda • Why am I doing this? • Maven • Mercurial • Jira * • Hudson • Conclusion * the only non-FLOSS piece of software Speaker, Company 2
  • 3.
    Who am I? • Fabrizio Giudici – http://weblogs.java.net/blog/fabriziogiudici/ – http://www.tidalwave.it/people • Working with Java since 1996 • Senior Java Architect, mentor, technical writer • Owner of several open source projects • Member of the NetBeans Dream Team Speaker, Company 3
  • 4.
    Why am Idoing this? • Tools aren't the single most important thing for success – People are (team, leadership, communication, etc...) • Once the we have estabilished a process, tools help a lot – Automating tasks – Enforcing the process – Facilitating cooperation • Tools make best practices easier and less expensive Speaker, Company 4
  • 5.
    What we needto do • Transforming sources into deployable artifacts • Keeping tracks of changes in sources • Keeping track of issues (bugs, RFE) • Running tests and QA tools Speaker, Company 5
  • 6.
    Maven • A tool for automating the build process • Uses a declarative approach (Project Object Model) • Plugin based • Implements a distributed repository for artifacts Speaker, Company 6
  • 7.
    Mercurial • A Distributed Source Control Mechanism (DSCM) – check out / commit + push pull • Improves branch management over Subversion – “Branch per feature” • Git is similar Speaker, Company 7
  • 8.
    Jira • Starts as an issue tracker • ... but it is more: – Project planning – Communication tool Speaker, Company 8
  • 9.
    Hudson • A tool for Continous Integration (CI) – Web-based – Easy to install – Based on plugin, with a large ecosystem – Supports virtualisation – Cloud ready • Do you know what CI is? Speaker, Company 9
  • 10.
    QA measurement • Tools to measure quality of your software – Cobertura – FindBugs – CheckStyle – CPD/PMD Speaker, Company 10
  • 11.
  • 12.
  • 13.
  • 14.