0
Upping the game
Improving your software development process


  John Ferguson Smart
  Principle Consultant
  Wakaleo Consu...
Presentation Goals
Learn how to improve, harmonize and automate your
development process using tools like Maven, Hudson, a...
Speaker’s qualifications
John Ferguson Smart
Consultant, Trainer, Mentor, Author,...
Works with Enterprise Java, Web Develo...
Agenda
What we will cover today:
Agenda
What we will cover today:
Industrializing your build process
Agenda
What we will cover today:
Industrializing your build process
Automate your builds
Agenda
What we will cover today:
Industrializing your build process
Automate your builds
Better testing practices
Agenda
What we will cover today:
Industrializing your build process
Automate your builds
Better testing practices
Reducing...
Why improve?
       HERE is Edward Bear, coming downstairs now, bump,
       bump, bump, on the back of his head, behind
 ...
Why should we improve?
Why should we improve our development process?
Why should we improve?
Why should we improve our development process?
 Lower development costs
Why should we improve?
Why should we improve our development process?
 Lower development costs
 Lower maintenance costs
Why should we improve?
Why should we improve our development process?
 Lower development costs
 Lower maintenance costs
 L...
Why should we improve?
Why should we improve our development process?
 Lower development costs
 Lower maintenance costs
 L...
Why should we improve?
Why should we improve our development process?
 Lower development costs
 Lower maintenance costs
 L...
Why should we improve?
Why should we improve our development process?
 Lower development costs
 Lower maintenance costs
 L...
How can we improve?
How can we improve our development process?
How can we improve?
How can we improve our development process?
 Standardized build practices
How can we improve?
How can we improve our development process?
 Standardized build practices
 Better testing practices
How can we improve?
How can we improve our development process?
 Standardized build practices
 Better testing practices
 B...
How can we improve?
How can we improve our development process?
 Standardized build practices
 Better testing practices
 B...
How can we improve?
How can we improve our development process?
 Standardized build practices
 Better testing practices
 B...
How can we improve?
How can we improve our development process?
 Standardized build practices
 Better testing practices
 B...
Tools for the job
There are plenty of tools available - and most are free!
Tools for the job
There are plenty of tools available - and most are free!
                    maven
                     ...
Tools for the job
There are plenty of tools available - and most are free!
                    maven
                     ...
Tools for the job
    There are plenty of tools available - and most are free!
                         maven
            ...
Towards a better build process
Standardize your build process with Maven
Towards a better build process
Standardize your build process with Maven
What is Maven, anyway?
Towards a better build process
Standardize your build process with Maven
What is Maven, anyway?
 A high-level open source ...
Towards a better build process
Standardize your build process with Maven
What is Maven, anyway?
 A high-level open source ...
Towards a better build process
How does Maven help?
Towards a better build process
How does Maven help?
 Standards
Towards a better build process
How does Maven help?
 Standards
 Conventions
Towards a better build process
How does Maven help?
 Standards
 Conventions
 Lower Maintenance Costs
Towards a better build process
How does Maven help?
 Standards
 Conventions
 Lower Maintenance Costs
 Knowledge sharing
Towards a better build process
How does Maven help?
 Standards
 Conventions
 Lower Maintenance Costs
 Knowledge sharing
 D...
Towards a better build process
How does Maven help?
 Standards
 Conventions
 Lower Maintenance Costs
 Knowledge sharing
 D...
So how can Maven help me?
Standards and Conventions
So how can Maven help me?
Standards and Conventions
A standard directory structure
So how can Maven help me?
Standards and Conventions
A standard directory structure
A standard, but extensible build lifecy...
So how can Maven help me?
Standards and Conventions
A standard directory structure
A standard, but extensible build lifecy...
So how can Maven help me?
Standards and Conventions
A standard directory structure
A standard, but extensible build lifecy...
So how can Maven help me?
Technical documentation
So how can Maven help me?
Technical documentation
Generate technical project documentation
So how can Maven help me?
Technical documentation
Generate technical project documentation
Easy to integrate code quality ...
So how can Maven help me?
Technical documentation
Generate technical project documentation
Easy to integrate code quality ...
So how can Maven help me?
Technical documentation
Generate technical project documentation
Easy to integrate code quality ...
So how can Maven help me?
Technical documentation
Generate technical project documentation
Easy to integrate code quality ...
So how can Maven help me?
Project architecture
So how can Maven help me?
Project architecture
Encourages developers to use modular design
So how can Maven help me?
Project architecture
Encourages developers to use modular design
More flexible architecture
So how can Maven help me?
Project architecture
Encourages developers to use modular design
More flexible architecture
Reduc...
So how can Maven help me?
Project architecture
Encourages developers to use modular design
More flexible architecture
Reduc...
So how can Maven help me?
Project architecture
Encourages developers to use modular design
More flexible architecture
Reduc...
So how can Maven help me?
Dependency Management
So how can Maven help me?
Dependency Management
Understand precisely what libraries your application needs
So how can Maven help me?
Dependency Management
Understand precisely what libraries your application needs
Safer and more ...
So how can Maven help me?
Dependency Management
Understand precisely what libraries your application needs
Safer and more ...
So how can Maven help me?
Dependency Management
Understand precisely what libraries your application needs
Safer and more ...
So how can Maven help me?
Dependency Management
Understand precisely what libraries your application needs
Safer and more ...
So how can Maven help me?
Dependency Management before Maven


                                     lib
So how can Maven help me?
Dependency Management before Maven
 Each project has its own set of JAR files


                 ...
So how can Maven help me?
Dependency Management before Maven
 Each project has its own set of JAR files
 Unnecessary duplic...
So how can Maven help me?
Dependency Management before Maven
 Each project has its own set of JAR files
 Unnecessary duplic...
So how can Maven help me?
Dependency Management before Maven
 Each project has its own set of JAR files
 Unnecessary duplic...
So how can Maven help me?
Dependency Management before Maven
 Each project has its own set of JAR files
 Unnecessary duplic...
So how can Maven help me?
Dependency Management before Maven
 Each project has its own set of JAR files
 Unnecessary duplic...
So how can Maven help me?
Dependency Management using Maven




           Projects declare the versions   Libraries are s...
So how can Maven help me?
Dependency Management using Maven
 Library versions are stored on a central server




         ...
So how can Maven help me?
Dependency Management using Maven
 Library versions are stored on a central server
 Each project...
So how can Maven help me?
Dependency Management using Maven
 Library versions are stored on a central server
 Each project...
So how can Maven help me?
Dependency Management using Maven
 Library versions are stored on a central server
 Each project...
So how can Maven help me?
Dependency Management using Maven
 Library versions are stored on a central server
 Each project...
So how can Maven help me?
Release Management
So how can Maven help me?
Release Management
A standard way to track and release versions
So how can Maven help me?
Release Management
A standard way to track and release versions
Official versions stored on a cen...
So how can Maven help me?
Release Management
A standard way to track and release versions
Official versions stored on a cen...
So how can Maven help me?
Release Management
A standard way to track and release versions
Official versions stored on a cen...
Towards better testing practices
Why is good testing so important?
Towards better testing practices
Why is good testing so important?
Development costs
Towards better testing practices
Why is good testing so important?
Development costs
Maintenance costs
Towards better testing practices
Why is good testing so important?
Development costs
Maintenance costs
Visibility
Towards better testing practices
Why is good testing so important?
Development costs
Maintenance costs
Visibility
Flexibil...
Towards better testing practices
Why is good testing so important?
Development costs
Maintenance costs
Visibility
Flexibil...
Towards better testing practices
Coding the traditional way
Towards better testing practices
Coding the traditional way

           Requirements
Towards better testing practices
Coding the traditional way

           Requirements


                    Design
Towards better testing practices
Coding the traditional way

           Requirements


                    Design


      ...
Towards better testing practices
Coding the traditional way

           Requirements


                    Design


      ...
Towards better testing practices
Coding the traditional way

                  Requirements


                           D...
Towards better testing practices
Coding the traditional way

                   Requirements


                           ...
Towards better testing practices
Coding the traditional way

                   Requirements


                           ...
Towards better testing practices
Coding the traditional way



  Coding

Some unit testing?

  Manual debugging?

      Ma...
Towards better testing practices
Coding the traditional way


                          Fragile untested code

  Coding

S...
Towards better testing practices
Coding the traditional way

                                                  Lots of bug...
Towards better testing practices
Coding the traditional way

                                                  Lots of bug...
Towards better testing practices
Coding the traditional way

                                                      Lots of...
Towards better testing practices
Coding the traditional way

                                                      Lots of...
Towards better testing practices
Coding the traditional way

                                                      Lots of...
Towards better testing practices
Coding the traditional way

                                                      Lots of...
Towards better testing practices
Coding the traditional way

                                                       Lots o...
Towards better testing practices
Coding the traditional way

                                                       Lots o...
Towards better testing practices
Coding the traditional way

                                                       Lots o...
Towards better testing practices
Coding the traditional way

                                                       Lots o...
Towards better testing practices
So what’s wrong with the old way?
Towards better testing practices
So what’s wrong with the old way?
Lots of defects. Really, lots.
Towards better testing practices
So what’s wrong with the old way?
Lots of defects. Really, lots.
High maintenance costs
Towards better testing practices
So what’s wrong with the old way?
Lots of defects. Really, lots.
High maintenance costs
H...
Towards better testing practices
So what’s wrong with the old way?
Lots of defects. Really, lots.
High maintenance costs
H...
Towards better testing practices
So what’s wrong with the old way?
Lots of defects. Really, lots.
High maintenance costs
H...
Towards better testing practices
So what’s wrong with the old way?
Lots of defects. Really, lots.
High maintenance costs
H...
Towards better testing practices
                    How much does a bug cost to fix, anyway?
00
                          ...
Towards better testing practices
                    How much does a bug cost to fix, anyway?
00
                          ...
Towards better testing practices
                    How much does a bug cost to fix, anyway?
00
                          ...
Towards better testing practices
How can good testing practices help?
Towards better testing practices
How can good testing practices help?
 Reduce bugs
Towards better testing practices
How can good testing practices help?
 Reduce bugs
 Write better-designed code
Towards better testing practices
How can good testing practices help?
 Reduce bugs
 Write better-designed code
 Have more ...
Towards better testing practices
How can good testing practices help?
 Reduce bugs
 Write better-designed code
 Have more ...
Towards better testing practices
How can good testing practices help?
 Reduce bugs
 Write better-designed code
 Have more ...
Towards better testing practices
How can good testing practices help?
 Reduce bugs
 Write better-designed code
 Have more ...
Towards better testing practices
How can good testing practices help?
Towards better testing practices
How can good testing practices help?

      Well-designed code
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
How can good testing practices help?
                              Easier to make changes...
Towards better testing practices
More flexibility
Towards better testing practices
More flexibility
 Testable code is easier to change
Towards better testing practices
More flexibility
 Testable code is easier to change
 Full regression tests avoid introduci...
Towards better testing practices
More flexibility
 Testable code is easier to change
 Full regression tests avoid introduci...
Towards better testing practices
Better visibility
Towards better testing practices
Better visibility
 Tests are “executable requirements”
Towards better testing practices
Better visibility
 Tests are “executable requirements”
 Automated acceptance tests measur...
Towards better testing practices
Better visibility
 Tests are “executable requirements”
 Automated acceptance tests measur...
Towards better testing practices
Documentation
Towards better testing practices
Documentation
 Tests are “living documentation” of your code
Towards better testing practices
Documentation
 Tests are “living documentation” of your code
 Always accurate and up-to-d...
Towards better testing practices
Documentation
 Tests are “living documentation” of your code
 Always accurate and up-to-d...
Towards better testing practices
Lower maintenance costs
Towards better testing practices
Lower maintenance costs
 Less bugs, found faster
Towards better testing practices
Lower maintenance costs
 Less bugs, found faster
 Changes are easier to make
Towards better testing practices
Lower maintenance costs
 Less bugs, found faster
 Changes are easier to make




        ...
Automating the build process
Continuous Integration - what’s the issue?
Traditional development cycles are bad for your he...
Automating the build process
Continuous Integration - what’s the issue?
Traditional development cycles are bad for your he...
Automating the build process
Continuous Integration - what’s the issue?
Traditional development cycles are bad for your he...
Automating the build process
Continuous Integration - what’s the issue?
Traditional development cycles are bad for your he...
Automating the build process
Continuous Integration - what’s the issue?
Traditional development cycles are bad for your he...
Automating the build process
Continuous Integration - what’s the issue?
Traditional development cycles are bad for your he...
Automating the build process
Continuous Integration - what’s involved?
Automating the build process
Continuous Integration - why bother?
Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testing
Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testin...
Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testin...
Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testin...
Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testin...
Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testin...
Automating the build process
Continuous Integration - what you need
Automating the build process
Continuous Integration - what you need
            Automated build process (e.g. Maven)
Automating the build process
Continuous Integration - what you need
            Automated build process (e.g. Maven)




 ...
Automating the build process
Continuous Integration - what you need
            Automated build process (e.g. Maven)




 ...
Automating the build process
Continuous Integration - what you need
            Automated build process (e.g. Maven)




 ...
Automating the build process
Continuous Integration - what can it do?
Automating the build process
Continuous Integration - what can it do?
Raise integration issues - fast!
Automating the build process
Continuous Integration - what can it do?
Raise integration issues - fast!
Monitor your build ...
Automating the build process
Continuous Integration - what can it do?
Raise integration issues - fast!
Monitor your build ...
Automating the build process
Continuous Integration - what can it do?
Raise integration issues - fast!
Monitor your build ...
Automating the build process
Continuous Integration - what can it do?
Raise integration issues - fast!
Monitor your build ...
Automating the build process
Looking for a good O/S Continuous Integration tool?
Automating the build process
Looking for a good O/S Continuous Integration tool?
Try Hudson!
Automating the build process
Looking for a good O/S Continuous Integration tool?
Try Hudson!
 Easy to set up and configure
Automating the build process
Looking for a good O/S Continuous Integration tool?
Try Hudson!
 Easy to set up and configure
...
Automating the build process
Looking for a good O/S Continuous Integration tool?
Try Hudson!
 Easy to set up and configure
...
Automated Code Quality
Why use code quality metrics
Automated Code Quality
Why use code quality metrics
Better quality code
Automated Code Quality
Why use code quality metrics
Better quality code
Enforce corporate coding standards
Automated Code Quality
Why use code quality metrics
Better quality code
Enforce corporate coding standards
Detect potentia...
Automated Code Quality
Why use code quality metrics
Better quality code
Enforce corporate coding standards
Detect potentia...
Automated Code Quality
Why use code quality metrics
Better quality code
Enforce corporate coding standards
Detect potentia...
Automated Code Quality
Why use code quality metrics
Better quality code
Enforce corporate coding standards
Detect potentia...
Automated Code Quality
What is technical debt?
Automated Code Quality
What is technical debt?
 The cost of poor quality code:
Automated Code Quality
What is technical debt?
 The cost of poor quality code:
   Harder to make changes
Automated Code Quality
What is technical debt?
 The cost of poor quality code:
   Harder to make changes
   Too much time ...
Automated Code Quality
What is technical debt?
 The cost of poor quality code:
   Harder to make changes
   Too much time ...
Automated Code Quality
What is technical debt?
 The cost of poor quality code:
   Harder to make changes
   Too much time ...
Automated Code Quality
What is technical debt?
 The cost of poor quality code:
   Harder to make changes
   Too much time ...
Automated Code Quality
How do we pay off technical debt?
Automated Code Quality
How do we pay off technical debt?
 Enforce coding standards
Automated Code Quality
How do we pay off technical debt?
 Enforce coding standards
 Teach developers good coding practices
Automated Code Quality
How do we pay off technical debt?
 Enforce coding standards
 Teach developers good coding practices...
Automated Code Quality
How do we pay off technical debt?
 Enforce coding standards
 Teach developers good coding practices...
Automated Code Quality
How do we pay off technical debt?
 Enforce coding standards
 Teach developers good coding practices...
Automated Code Quality
Team code reviews
Automated Code Quality
Team code reviews
 Review code as a group
Automated Code Quality
Team code reviews
 Review code as a group
 Long and slow if done manually
Automated Code Quality
Team code reviews
 Review code as a group
 Long and slow if done manually
 Benefits greatly from the...
Automated Code Quality
Enforcing coding standards with Hudson
Automated Code Quality
Enforcing coding standards with Hudson


                             Number of violations over time
Automated Code Quality
Enforcing coding standards with Hudson
Automated Code Quality
Enforcing coding standards with Hudson




                      Drilling down
Automated Code Quality
Enforcing coding standards with Hudson
Automated Code Quality
Enforcing coding standards with Hudson




                      Details for a particular issue
Automated Code Quality
Code Coverage
Automated Code Quality
Code Coverage
See what code is being executed by your unit tests.
Automated Code Quality
Code Coverage
See what code is being executed by your unit tests.
Isolate untested code
Automated Code Quality
Code Coverage
See what code is being executed by your unit tests.
Isolate untested code
Can help to...
Automated Code Quality
Monitoring Code Coverage with Hudson
Automated Code Quality
Monitoring Code Coverage with Hudson
Automated Code Quality
Monitoring Code Coverage with Hudson

                            Executed code
Automated Code Quality
Monitoring Code Coverage with Hudson

                                Executed code




           ...
Automated Code Quality
Code Quality Governance with Sonar
Automated Code Quality
Code Quality Governance with Sonar
Centralized code quality management
Automated Code Quality
Code Quality Governance with Sonar
Centralized code quality management
Works on any Maven project
Automated Code Quality
Code Quality Governance with Sonar
Centralized code quality management
Works on any Maven project
S...
Automated Code Quality
Code Quality Governance with Sonar
Centralized code quality management
Works on any Maven project
S...
Automated Code Quality
Code Quality Governance with Sonar
Sonar centralizes many code quality metrics
Automated Code Quality
     Code Quality Governance with Sonar
      Sonar centralizes many code quality metrics
Source co...
Automated Code Quality
     Code Quality Governance with Sonar
      Sonar centralizes many code quality metrics
Source co...
Automated Code Quality
     Code Quality Governance with Sonar
      Sonar centralizes many code quality metrics
Source co...
Automated Code Quality
     Code Quality Governance with Sonar
      Sonar centralizes many code quality metrics
Source co...
Automated Code Quality
     Code Quality Governance with Sonar
      Sonar centralizes many code quality metrics
Source co...
Automated Code Quality
     Code Quality Governance with Sonar
       Sonar centralizes many code quality metrics
Source c...
Automated Code Quality
     Code Quality Governance with Sonar
       Sonar centralizes many code quality metrics
Source c...
Automated Code Quality
Code Quality Governance with Sonar
You can drill down to view the details for each type of issue
Automated Code Quality
Code Quality Governance with Sonar
You can drill down to view the details for each type of issue
  ...
Automated Code Quality
Code Quality Governance with Sonar
You can drill down to view the details for each type of issue
  ...
Automated Code Quality
    Code Quality Governance with Sonar
      You can drill down to view the details for each type o...
Automated Code Quality
    Code Quality Governance with Sonar
      You can drill down to view the details for each type o...
Summary
How can you improve the development process?
Summary
How can you improve the development process?
Standardize your build process
Summary
How can you improve the development process?
Standardize your build process
Improve testing practices
Summary
How can you improve the development process?
Standardize your build process
Improve testing practices
Use Continuo...
Summary
How can you improve the development process?
Standardize your build process
Improve testing practices
Use Continuo...
Summary
How can you improve the development process?
Standardize your build process
Improve testing practices
Use Continuo...
John Ferguson Smart
                  Email: john.smart@wakaleo.com
                   Web: http://www.wakaleo.com
       ...
John Ferguson Smart
                  Email: john.smart@wakaleo.com
                   Web: http://www.wakaleo.com
       ...
John Ferguson Smart
                               Email: john.smart@wakaleo.com
                                Web: http...
John Ferguson Smart
                               Email: john.smart@wakaleo.com
                                Web: http...
Upcoming SlideShare
Loading in...5
×

How can you improve, harmonize and automate your development process using tools like Maven, Hudson, and Nexus? This presentation is a high-level overview of Java software development process improvement.

2,028

Published on

How can you improve, harmonize and automate your development process using tools like Maven, Hudson, and Nexus? This presentation is a high-level overview of Java software development process improvement.

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

No Downloads
Views
Total Views
2,028
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
233
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide



















































































































































































































































































  • Transcript of "How can you improve, harmonize and automate your development process using tools like Maven, Hudson, and Nexus? This presentation is a high-level overview of Java software development process improvement."

    1. 1. Upping the game Improving your software development process John Ferguson Smart Principle Consultant Wakaleo Consulting Email: john.smart@wakaleo.com Web: http://www.wakaleo.com Twitter: wakaleo
    2. 2. Presentation Goals Learn how to improve, harmonize and automate your development process using tools like Maven, Hudson, and many others.
    3. 3. Speaker’s qualifications John Ferguson Smart Consultant, Trainer, Mentor, Author,... Works with Enterprise Java, Web Development, and Open Source technologies Author of ‘Java Power Tools’ (O’Reilly) Writes articles for sites like JavaWorld, DevX and Java.net, and blogs on Java.net Speaks at conferences, Java User Groups etc. Likes to write about himself in the third person
    4. 4. Agenda What we will cover today:
    5. 5. Agenda What we will cover today: Industrializing your build process
    6. 6. Agenda What we will cover today: Industrializing your build process Automate your builds
    7. 7. Agenda What we will cover today: Industrializing your build process Automate your builds Better testing practices
    8. 8. Agenda What we will cover today: Industrializing your build process Automate your builds Better testing practices Reducing technical debt
    9. 9. Why improve? HERE is Edward Bear, coming downstairs now, bump, bump, bump, on the back of his head, behind Christopher Robin. It is, as far as he knows, the only way of coming downstairs, but sometimes he feels that there really is another way, if only he could stop bumping for a moment and think of it. -- A. A. Milne
    10. 10. Why should we improve? Why should we improve our development process?
    11. 11. Why should we improve? Why should we improve our development process? Lower development costs
    12. 12. Why should we improve? Why should we improve our development process? Lower development costs Lower maintenance costs
    13. 13. Why should we improve? Why should we improve our development process? Lower development costs Lower maintenance costs Less bugs
    14. 14. Why should we improve? Why should we improve our development process? Lower development costs Lower maintenance costs Less bugs Higher code quality
    15. 15. Why should we improve? Why should we improve our development process? Lower development costs Lower maintenance costs Less bugs Higher code quality Be flexible - adapt to change more easily
    16. 16. Why should we improve? Why should we improve our development process? Lower development costs Lower maintenance costs Less bugs Higher code quality Be flexible - adapt to change more easily Happier more productive users
    17. 17. How can we improve? How can we improve our development process?
    18. 18. How can we improve? How can we improve our development process? Standardized build practices
    19. 19. How can we improve? How can we improve our development process? Standardized build practices Better testing practices
    20. 20. How can we improve? How can we improve our development process? Standardized build practices Better testing practices Better visibility
    21. 21. How can we improve? How can we improve our development process? Standardized build practices Better testing practices Better visibility Faster feedback
    22. 22. How can we improve? How can we improve our development process? Standardized build practices Better testing practices Better visibility Faster feedback Quality metrics
    23. 23. How can we improve? How can we improve our development process? Standardized build practices Better testing practices Better visibility Faster feedback Quality metrics Automate!
    24. 24. Tools for the job There are plenty of tools available - and most are free!
    25. 25. Tools for the job There are plenty of tools available - and most are free! maven Build scripting
    26. 26. Tools for the job There are plenty of tools available - and most are free! maven Build scripting JUnit Automated testing
    27. 27. Tools for the job There are plenty of tools available - and most are free! maven Build scripting Automated code quality JUnit Automated testing
    28. 28. Towards a better build process Standardize your build process with Maven
    29. 29. Towards a better build process Standardize your build process with Maven What is Maven, anyway?
    30. 30. Towards a better build process Standardize your build process with Maven What is Maven, anyway? A high-level open source build scripting framework
    31. 31. Towards a better build process Standardize your build process with Maven What is Maven, anyway? A high-level open source build scripting framework Extensively used in the Java world
    32. 32. Towards a better build process How does Maven help?
    33. 33. Towards a better build process How does Maven help? Standards
    34. 34. Towards a better build process How does Maven help? Standards Conventions
    35. 35. Towards a better build process How does Maven help? Standards Conventions Lower Maintenance Costs
    36. 36. Towards a better build process How does Maven help? Standards Conventions Lower Maintenance Costs Knowledge sharing
    37. 37. Towards a better build process How does Maven help? Standards Conventions Lower Maintenance Costs Knowledge sharing Dependency Management
    38. 38. Towards a better build process How does Maven help? Standards Conventions Lower Maintenance Costs Knowledge sharing Dependency Management Promoting good architecture
    39. 39. So how can Maven help me? Standards and Conventions
    40. 40. So how can Maven help me? Standards and Conventions A standard directory structure
    41. 41. So how can Maven help me? Standards and Conventions A standard directory structure A standard, but extensible build lifecycle
    42. 42. So how can Maven help me? Standards and Conventions A standard directory structure A standard, but extensible build lifecycle So new developers understand the project structure and build process straight away!
    43. 43. So how can Maven help me? Standards and Conventions A standard directory structure A standard, but extensible build lifecycle So new developers understand the project structure and build process straight away! ...and the build scripts are much easier to understand and maintain
    44. 44. So how can Maven help me? Technical documentation
    45. 45. So how can Maven help me? Technical documentation Generate technical project documentation
    46. 46. So how can Maven help me? Technical documentation Generate technical project documentation Easy to integrate code quality metrics
    47. 47. So how can Maven help me? Technical documentation Generate technical project documentation Easy to integrate code quality metrics I can even generate UML diagrams in my Javadocs
    48. 48. So how can Maven help me? Technical documentation Generate technical project documentation Easy to integrate code quality metrics I can even generate UML diagrams in my Javadocs
    49. 49. So how can Maven help me? Technical documentation Generate technical project documentation Easy to integrate code quality metrics I can even generate UML diagrams in my Javadocs And setting up code quality metrics is a breeze!
    50. 50. So how can Maven help me? Project architecture
    51. 51. So how can Maven help me? Project architecture Encourages developers to use modular design
    52. 52. So how can Maven help me? Project architecture Encourages developers to use modular design More flexible architecture
    53. 53. So how can Maven help me? Project architecture Encourages developers to use modular design More flexible architecture Reduced complexity and maintenance costs
    54. 54. So how can Maven help me? Project architecture Encourages developers to use modular design More flexible architecture Reduced complexity and maintenance costs ...and the smaller modules are easier to test and maintain
    55. 55. So how can Maven help me? Project architecture Encourages developers to use modular design More flexible architecture Reduced complexity and maintenance costs Breaking our application down into clean modules is much easier ...and the smaller modules are easier to test and maintain
    56. 56. So how can Maven help me? Dependency Management
    57. 57. So how can Maven help me? Dependency Management Understand precisely what libraries your application needs
    58. 58. So how can Maven help me? Dependency Management Understand precisely what libraries your application needs Safer and more reproducible builds
    59. 59. So how can Maven help me? Dependency Management Understand precisely what libraries your application needs Safer and more reproducible builds A standard way to share internal libraries
    60. 60. So how can Maven help me? Dependency Management Understand precisely what libraries your application needs Safer and more reproducible builds A standard way to share internal libraries All our libraries are shared and safely stored on a central server
    61. 61. So how can Maven help me? Dependency Management Understand precisely what libraries your application needs Safer and more reproducible builds A standard way to share internal libraries All our libraries are shared and safely stored on a central server ...we just have to name the ones we need in our build script
    62. 62. So how can Maven help me? Dependency Management before Maven lib
    63. 63. So how can Maven help me? Dependency Management before Maven Each project has its own set of JAR files lib
    64. 64. So how can Maven help me? Dependency Management before Maven Each project has its own set of JAR files Unnecessary duplication lib
    65. 65. So how can Maven help me? Dependency Management before Maven Each project has its own set of JAR files Unnecessary duplication Hard to keep track of versions lib
    66. 66. So how can Maven help me? Dependency Management before Maven Each project has its own set of JAR files Unnecessary duplication Hard to keep track of versions lib Errors due to incompatible JAR files
    67. 67. So how can Maven help me? Dependency Management before Maven Each project has its own set of JAR files Unnecessary duplication Hard to keep track of versions lib Errors due to incompatible JAR files Overloads the source code repository
    68. 68. So how can Maven help me? Dependency Management before Maven Each project has its own set of JAR files Unnecessary duplication Hard to keep track of versions lib Errors due to incompatible JAR files Overloads the source code repository ...and you never know what versions you are using
    69. 69. So how can Maven help me? Dependency Management using Maven Projects declare the versions Libraries are stored of libraries they need on a central server Libraries are downloaded as required
    70. 70. So how can Maven help me? Dependency Management using Maven Library versions are stored on a central server Projects declare the versions Libraries are stored of libraries they need on a central server Libraries are downloaded as required
    71. 71. So how can Maven help me? Dependency Management using Maven Library versions are stored on a central server Each project “declares” what libraries and versions it needs Projects declare the versions Libraries are stored of libraries they need on a central server Libraries are downloaded as required
    72. 72. So how can Maven help me? Dependency Management using Maven Library versions are stored on a central server Each project “declares” what libraries and versions it needs All the required dependencies are automatically downloaded Projects declare the versions Libraries are stored of libraries they need on a central server Libraries are downloaded as required
    73. 73. So how can Maven help me? Dependency Management using Maven Library versions are stored on a central server Each project “declares” what libraries and versions it needs All the required dependencies are automatically downloaded The server is called a ‘Maven Enterprise Repository Manager’ Projects declare the versions Libraries are stored of libraries they need on a central server Libraries are downloaded as required
    74. 74. So how can Maven help me? Dependency Management using Maven Library versions are stored on a central server Each project “declares” what libraries and versions it needs All the required dependencies are automatically downloaded The server is called a ‘Maven Enterprise Repository Manager’ Projects declare the versions Libraries are stored of libraries they need on a central server Libraries are downloaded as required This way I know exactly what libraries my application uses
    75. 75. So how can Maven help me? Release Management
    76. 76. So how can Maven help me? Release Management A standard way to track and release versions
    77. 77. So how can Maven help me? Release Management A standard way to track and release versions Official versions stored on a central server
    78. 78. So how can Maven help me? Release Management A standard way to track and release versions Official versions stored on a central server Can be used to automate the deployment process
    79. 79. So how can Maven help me? Release Management A standard way to track and release versions Official versions stored on a central server Can be used to automate the deployment process The official versions are on that server
    80. 80. Towards better testing practices Why is good testing so important?
    81. 81. Towards better testing practices Why is good testing so important? Development costs
    82. 82. Towards better testing practices Why is good testing so important? Development costs Maintenance costs
    83. 83. Towards better testing practices Why is good testing so important? Development costs Maintenance costs Visibility
    84. 84. Towards better testing practices Why is good testing so important? Development costs Maintenance costs Visibility Flexibility
    85. 85. Towards better testing practices Why is good testing so important? Development costs Maintenance costs Visibility Flexibility Documentation
    86. 86. Towards better testing practices Coding the traditional way
    87. 87. Towards better testing practices Coding the traditional way Requirements
    88. 88. Towards better testing practices Coding the traditional way Requirements Design
    89. 89. Towards better testing practices Coding the traditional way Requirements Design Implementation
    90. 90. Towards better testing practices Coding the traditional way Requirements Design Implementation Test
    91. 91. Towards better testing practices Coding the traditional way Requirements Design Implementation You write your code Test
    92. 92. Towards better testing practices Coding the traditional way Requirements Design Implementation You write your code Test A tester tests the finished application
    93. 93. Towards better testing practices Coding the traditional way Requirements Design Implementation You write your code Maybe do some unit testing Test A tester tests the finished application
    94. 94. Towards better testing practices Coding the traditional way Coding Some unit testing? Manual debugging? Manual functional testing?
    95. 95. Towards better testing practices Coding the traditional way Fragile untested code Coding Some unit testing? Manual debugging? Manual functional testing?
    96. 96. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Coding Some unit testing? Manual debugging? Manual functional testing?
    97. 97. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Coding Low code coverage Some unit testing? Manual debugging? Manual functional testing?
    98. 98. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Changes introduce new Coding Low code coverage bugs Some unit testing? Manual debugging? Manual functional testing?
    99. 99. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Changes introduce new Coding Low code coverage bugs Some unit testing? No regression tests Manual debugging? Manual functional testing?
    100. 100. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Changes introduce new Coding Low code coverage bugs Some unit testing? No regression tests Changes are costly Manual debugging? Manual functional testing?
    101. 101. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Changes introduce new Coding Low code coverage bugs Some unit testing? No regression tests Changes are costly Manual debugging? Bug detected late Manual functional testing?
    102. 102. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Changes introduce new Coding Low code coverage bugs Some unit testing? No regression tests Changes are costly Bugs hard to fix Manual debugging? Bug detected late Bugs expensive to fix Manual functional testing?
    103. 103. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Changes introduce new Coding Low code coverage bugs Some unit testing? No regression tests Changes are costly Bugs hard to fix Manual debugging? Bug detected late Bugs expensive to fix Manual functional Hard to trace code testing? back to requirements
    104. 104. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Changes introduce new Coding Low code coverage bugs Some unit testing? No regression tests Changes are costly Bugs hard to fix Manual debugging? Bug detected late Bugs expensive to fix Manual functional Hard to trace code testing? back to requirements Code fails to meet requirements
    105. 105. Towards better testing practices Coding the traditional way Lots of bugs Fragile untested code Changes introduce new Coding Low code coverage bugs Some unit testing? No regression tests Changes are costly Bugs hard to fix Manual debugging? Bug detected late Bugs expensive to fix Manual functional Hard to trace code testing? back to requirements Code fails to meet requirements
    106. 106. Towards better testing practices So what’s wrong with the old way?
    107. 107. Towards better testing practices So what’s wrong with the old way? Lots of defects. Really, lots.
    108. 108. Towards better testing practices So what’s wrong with the old way? Lots of defects. Really, lots. High maintenance costs
    109. 109. Towards better testing practices So what’s wrong with the old way? Lots of defects. Really, lots. High maintenance costs Hard to introduce new features
    110. 110. Towards better testing practices So what’s wrong with the old way? Lots of defects. Really, lots. High maintenance costs Hard to introduce new features Doesn’t meet the actual requirements
    111. 111. Towards better testing practices So what’s wrong with the old way? Lots of defects. Really, lots. High maintenance costs Hard to introduce new features Doesn’t meet the actual requirements Delayed deliveries
    112. 112. Towards better testing practices So what’s wrong with the old way? Lots of defects. Really, lots. High maintenance costs Hard to introduce new features Doesn’t meet the actual requirements Delayed deliveries Unhappy end-users
    113. 113. Towards better testing practices How much does a bug cost to fix, anyway? 00 $$$ 75 50 25 When was the 0 change requested? Requirements Unit Testing System Testing UAT Production Design
    114. 114. Towards better testing practices How much does a bug cost to fix, anyway? 00 $$$ 75 50 Changes harder and more costly 25 When was the 0 change requested? Requirements Unit Testing System Testing UAT Production Design
    115. 115. Towards better testing practices How much does a bug cost to fix, anyway? 00 $$$ 75 50 Changes harder and more costly Changes easier and cheaper to make 25 When was the 0 change requested? Requirements Unit Testing System Testing UAT Production Design
    116. 116. Towards better testing practices How can good testing practices help?
    117. 117. Towards better testing practices How can good testing practices help? Reduce bugs
    118. 118. Towards better testing practices How can good testing practices help? Reduce bugs Write better-designed code
    119. 119. Towards better testing practices How can good testing practices help? Reduce bugs Write better-designed code Have more confidence in our code
    120. 120. Towards better testing practices How can good testing practices help? Reduce bugs Write better-designed code Have more confidence in our code Make changes more easily
    121. 121. Towards better testing practices How can good testing practices help? Reduce bugs Write better-designed code Have more confidence in our code Make changes more easily Meet user requirements more accurately
    122. 122. Towards better testing practices How can good testing practices help? Reduce bugs Write better-designed code Have more confidence in our code Make changes more easily Meet user requirements more accurately Lower maintenance costs
    123. 123. Towards better testing practices How can good testing practices help?
    124. 124. Towards better testing practices How can good testing practices help? Well-designed code
    125. 125. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback
    126. 126. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster
    127. 127. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes
    128. 128. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes Full automated regression tests
    129. 129. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes Full automated regression tests Lower maintenance costs Make changes with confidence
    130. 130. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes Full automated regression tests Lower maintenance costs Make changes with confidence Code to the requirements
    131. 131. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes Full automated regression tests Lower maintenance costs Make changes with confidence Code to the requirements Don’t code unnecessary features
    132. 132. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes Full automated regression tests Lower maintenance costs Make changes with confidence Code to the requirements Don’t code unnecessary features Focus and productivity
    133. 133. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes Full automated regression tests Lower maintenance costs Make changes with confidence Code to the requirements Don’t code unnecessary features Focus and productivity Develop more productively
    134. 134. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes Full automated regression tests Lower maintenance costs Make changes with confidence Code to the requirements Don’t code unnecessary features Focus and productivity Develop more productively Technical documentation
    135. 135. Towards better testing practices How can good testing practices help? Easier to make changes Well-designed code Better response to user feedback Find bugs faster Cheaper bug fixes Full automated regression tests Lower maintenance costs Make changes with confidence Code to the requirements Don’t code unnecessary features Focus and productivity Develop more productively Technical “Executable requirements” documentation Lower maintenance costs
    136. 136. Towards better testing practices More flexibility
    137. 137. Towards better testing practices More flexibility Testable code is easier to change
    138. 138. Towards better testing practices More flexibility Testable code is easier to change Full regression tests avoid introducing errors
    139. 139. Towards better testing practices More flexibility Testable code is easier to change Full regression tests avoid introducing errors I’m not afraid to change the code - the tests are my safety net
    140. 140. Towards better testing practices Better visibility
    141. 141. Towards better testing practices Better visibility Tests are “executable requirements”
    142. 142. Towards better testing practices Better visibility Tests are “executable requirements” Automated acceptance tests measure progress
    143. 143. Towards better testing practices Better visibility Tests are “executable requirements” Automated acceptance tests measure progress A feature can’t be “90% finished” - it either works or it doesn’t
    144. 144. Towards better testing practices Documentation
    145. 145. Towards better testing practices Documentation Tests are “living documentation” of your code
    146. 146. Towards better testing practices Documentation Tests are “living documentation” of your code Always accurate and up-to-date
    147. 147. Towards better testing practices Documentation Tests are “living documentation” of your code Always accurate and up-to-date I can understand how the code works by reading the tests
    148. 148. Towards better testing practices Lower maintenance costs
    149. 149. Towards better testing practices Lower maintenance costs Less bugs, found faster
    150. 150. Towards better testing practices Lower maintenance costs Less bugs, found faster Changes are easier to make
    151. 151. Towards better testing practices Lower maintenance costs Less bugs, found faster Changes are easier to make Maintaining this sort of application is a real pleasure!
    152. 152. Automating the build process Continuous Integration - what’s the issue? Traditional development cycles are bad for your health:
    153. 153. Automating the build process Continuous Integration - what’s the issue? Traditional development cycles are bad for your health: Integration is long and difficult
    154. 154. Automating the build process Continuous Integration - what’s the issue? Traditional development cycles are bad for your health: Integration is long and difficult Poor visibility on development progress
    155. 155. Automating the build process Continuous Integration - what’s the issue? Traditional development cycles are bad for your health: Integration is long and difficult Poor visibility on development progress Functional tests are done too late
    156. 156. Automating the build process Continuous Integration - what’s the issue? Traditional development cycles are bad for your health: Integration is long and difficult Poor visibility on development progress Functional tests are done too late Raised issues are harder to fix
    157. 157. Automating the build process Continuous Integration - what’s the issue? Traditional development cycles are bad for your health: Integration is long and difficult Poor visibility on development progress Functional tests are done too late Raised issues are harder to fix The client gets a sub-optimal product
    158. 158. Automating the build process Continuous Integration - what’s involved?
    159. 159. Automating the build process Continuous Integration - why bother?
    160. 160. Automating the build process Continuous Integration - why bother? Smoother integration process
    161. 161. Automating the build process Continuous Integration - why bother? Smoother integration process Automatic regression testing
    162. 162. Automating the build process Continuous Integration - why bother? Smoother integration process Automatic regression testing Regular working releases
    163. 163. Automating the build process Continuous Integration - why bother? Smoother integration process Automatic regression testing Regular working releases Earlier functional testing
    164. 164. Automating the build process Continuous Integration - why bother? Smoother integration process Automatic regression testing Regular working releases Earlier functional testing Faster and easier bug fixes
    165. 165. Automating the build process Continuous Integration - why bother? Smoother integration process Automatic regression testing Regular working releases Earlier functional testing Faster and easier bug fixes Better visibility
    166. 166. Automating the build process Continuous Integration - why bother? Smoother integration process Automatic regression testing Regular working releases Earlier functional testing Faster and easier bug fixes Better visibility No more “it works on my machine”
    167. 167. Automating the build process Continuous Integration - what you need
    168. 168. Automating the build process Continuous Integration - what you need Automated build process (e.g. Maven)
    169. 169. Automating the build process Continuous Integration - what you need Automated build process (e.g. Maven) Automated tests (JUnit, Selenium, easyb...)
    170. 170. Automating the build process Continuous Integration - what you need Automated build process (e.g. Maven) Automated tests (JUnit, Selenium, easyb...) Source code repository
    171. 171. Automating the build process Continuous Integration - what you need Automated build process (e.g. Maven) Automated tests (JUnit, Selenium, easyb...) Source code repository Continuous Build Server
    172. 172. Automating the build process Continuous Integration - what can it do?
    173. 173. Automating the build process Continuous Integration - what can it do? Raise integration issues - fast!
    174. 174. Automating the build process Continuous Integration - what can it do? Raise integration issues - fast! Monitor your build process
    175. 175. Automating the build process Continuous Integration - what can it do? Raise integration issues - fast! Monitor your build process Monitor and report on code quality and code coverage
    176. 176. Automating the build process Continuous Integration - what can it do? Raise integration issues - fast! Monitor your build process Monitor and report on code quality and code coverage Build promotion and release management
    177. 177. Automating the build process Continuous Integration - what can it do? Raise integration issues - fast! Monitor your build process Monitor and report on code quality and code coverage Build promotion and release management Automated deployments
    178. 178. Automating the build process Looking for a good O/S Continuous Integration tool?
    179. 179. Automating the build process Looking for a good O/S Continuous Integration tool? Try Hudson!
    180. 180. Automating the build process Looking for a good O/S Continuous Integration tool? Try Hudson! Easy to set up and configure
    181. 181. Automating the build process Looking for a good O/S Continuous Integration tool? Try Hudson! Easy to set up and configure Good build and code quality metrics
    182. 182. Automating the build process Looking for a good O/S Continuous Integration tool? Try Hudson! Easy to set up and configure Good build and code quality metrics Lots of plugins
    183. 183. Automated Code Quality Why use code quality metrics
    184. 184. Automated Code Quality Why use code quality metrics Better quality code
    185. 185. Automated Code Quality Why use code quality metrics Better quality code Enforce corporate coding standards
    186. 186. Automated Code Quality Why use code quality metrics Better quality code Enforce corporate coding standards Detect potential bugs
    187. 187. Automated Code Quality Why use code quality metrics Better quality code Enforce corporate coding standards Detect potential bugs Code is easier to maintain
    188. 188. Automated Code Quality Why use code quality metrics Better quality code Enforce corporate coding standards Detect potential bugs Code is easier to maintain Train new staff
    189. 189. Automated Code Quality Why use code quality metrics Better quality code Enforce corporate coding standards Detect potential bugs Code is easier to maintain Train new staff Keep technical debt down
    190. 190. Automated Code Quality What is technical debt?
    191. 191. Automated Code Quality What is technical debt? The cost of poor quality code:
    192. 192. Automated Code Quality What is technical debt? The cost of poor quality code: Harder to make changes
    193. 193. Automated Code Quality What is technical debt? The cost of poor quality code: Harder to make changes Too much time spent fixing bugs
    194. 194. Automated Code Quality What is technical debt? The cost of poor quality code: Harder to make changes Too much time spent fixing bugs Takes too long to add competitive new features
    195. 195. Automated Code Quality What is technical debt? The cost of poor quality code: Harder to make changes Too much time spent fixing bugs Takes too long to add competitive new features This legacy code takes way to long to change
    196. 196. Automated Code Quality What is technical debt? The cost of poor quality code: Harder to make changes Too much time spent fixing bugs Takes too long to add competitive new features This legacy code takes way to long to change We spend all our time fixing bugs, not adding new features
    197. 197. Automated Code Quality How do we pay off technical debt?
    198. 198. Automated Code Quality How do we pay off technical debt? Enforce coding standards
    199. 199. Automated Code Quality How do we pay off technical debt? Enforce coding standards Teach developers good coding practices
    200. 200. Automated Code Quality How do we pay off technical debt? Enforce coding standards Teach developers good coding practices Spend time keeping the code clean (refactoring)
    201. 201. Automated Code Quality How do we pay off technical debt? Enforce coding standards Teach developers good coding practices Spend time keeping the code clean (refactoring) ...it will be quicker and easier for everyone to make changes later on
    202. 202. Automated Code Quality How do we pay off technical debt? Enforce coding standards Teach developers good coding practices Spend time keeping the code clean (refactoring) If I spend a little time tidying up my code today... ...it will be quicker and easier for everyone to make changes later on
    203. 203. Automated Code Quality Team code reviews
    204. 204. Automated Code Quality Team code reviews Review code as a group
    205. 205. Automated Code Quality Team code reviews Review code as a group Long and slow if done manually
    206. 206. Automated Code Quality Team code reviews Review code as a group Long and slow if done manually Benefits greatly from the use of tools
    207. 207. Automated Code Quality Enforcing coding standards with Hudson
    208. 208. Automated Code Quality Enforcing coding standards with Hudson Number of violations over time
    209. 209. Automated Code Quality Enforcing coding standards with Hudson
    210. 210. Automated Code Quality Enforcing coding standards with Hudson Drilling down
    211. 211. Automated Code Quality Enforcing coding standards with Hudson
    212. 212. Automated Code Quality Enforcing coding standards with Hudson Details for a particular issue
    213. 213. Automated Code Quality Code Coverage
    214. 214. Automated Code Quality Code Coverage See what code is being executed by your unit tests.
    215. 215. Automated Code Quality Code Coverage See what code is being executed by your unit tests. Isolate untested code
    216. 216. Automated Code Quality Code Coverage See what code is being executed by your unit tests. Isolate untested code Can help to estimate if testing practices are being applied
    217. 217. Automated Code Quality Monitoring Code Coverage with Hudson
    218. 218. Automated Code Quality Monitoring Code Coverage with Hudson
    219. 219. Automated Code Quality Monitoring Code Coverage with Hudson Executed code
    220. 220. Automated Code Quality Monitoring Code Coverage with Hudson Executed code Unexecuted code
    221. 221. Automated Code Quality Code Quality Governance with Sonar
    222. 222. Automated Code Quality Code Quality Governance with Sonar Centralized code quality management
    223. 223. Automated Code Quality Code Quality Governance with Sonar Centralized code quality management Works on any Maven project
    224. 224. Automated Code Quality Code Quality Governance with Sonar Centralized code quality management Works on any Maven project Store code quality metrics in a database
    225. 225. Automated Code Quality Code Quality Governance with Sonar Centralized code quality management Works on any Maven project Store code quality metrics in a database Code quality metrics can be consulted on a web site
    226. 226. Automated Code Quality Code Quality Governance with Sonar Sonar centralizes many code quality metrics
    227. 227. Automated Code Quality Code Quality Governance with Sonar Sonar centralizes many code quality metrics Source code metrics
    228. 228. Automated Code Quality Code Quality Governance with Sonar Sonar centralizes many code quality metrics Source code metrics Code complexity metrics
    229. 229. Automated Code Quality Code Quality Governance with Sonar Sonar centralizes many code quality metrics Source code metrics Code complexity metrics Test results and code coverage
    230. 230. Automated Code Quality Code Quality Governance with Sonar Sonar centralizes many code quality metrics Source code metrics Code complexity metrics Test results and code coverage Build history
    231. 231. Automated Code Quality Code Quality Governance with Sonar Sonar centralizes many code quality metrics Source code metrics Code complexity metrics Test results and code coverage Build history Modules
    232. 232. Automated Code Quality Code Quality Governance with Sonar Sonar centralizes many code quality metrics Source code metrics Code complexity metrics Test results and code coverage Code quality metrics Build history Modules
    233. 233. Automated Code Quality Code Quality Governance with Sonar Sonar centralizes many code quality metrics Source code metrics Code complexity metrics Test results and code coverage Code quality metrics Build history Modules Click anywhere to drill down
    234. 234. Automated Code Quality Code Quality Governance with Sonar You can drill down to view the details for each type of issue
    235. 235. Automated Code Quality Code Quality Governance with Sonar You can drill down to view the details for each type of issue Overview
    236. 236. Automated Code Quality Code Quality Governance with Sonar You can drill down to view the details for each type of issue Overview Different types of violations
    237. 237. Automated Code Quality Code Quality Governance with Sonar You can drill down to view the details for each type of issue Overview Different types of violations Violations in this class
    238. 238. Automated Code Quality Code Quality Governance with Sonar You can drill down to view the details for each type of issue Overview Different types of violations Violations in this class Violation details
    239. 239. Summary How can you improve the development process?
    240. 240. Summary How can you improve the development process? Standardize your build process
    241. 241. Summary How can you improve the development process? Standardize your build process Improve testing practices
    242. 242. Summary How can you improve the development process? Standardize your build process Improve testing practices Use Continuous Integration
    243. 243. Summary How can you improve the development process? Standardize your build process Improve testing practices Use Continuous Integration Reduce your technical debt
    244. 244. Summary How can you improve the development process? Standardize your build process Improve testing practices Use Continuous Integration Reduce your technical debt Automate, automate, automate!
    245. 245. John Ferguson Smart Email: john.smart@wakaleo.com Web: http://www.wakaleo.com Twitter: wakaleo Thanks for your attention!
    246. 246. John Ferguson Smart Email: john.smart@wakaleo.com Web: http://www.wakaleo.com Twitter: wakaleo Thanks for your attention!
    247. 247. John Ferguson Smart Email: john.smart@wakaleo.com Web: http://www.wakaleo.com Twitter: wakaleo Thanks for your attention! http://www.wakaleo.com
    248. 248. John Ferguson Smart Email: john.smart@wakaleo.com Web: http://www.wakaleo.com Twitter: wakaleo Thanks for your attention! http://weblogs.java.net/blog/ http://www.wakaleo.com
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×