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.
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.
Semelhante a 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.
Semelhante a 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. (20)
AWS Community Day CPH - Three problems of Terraform
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. 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. Presentation Goals
Learn how to improve, harmonize and automate your
development process using tools like Maven, Hudson, and
many others.
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
6. Agenda
What we will cover today:
Industrializing your build process
Automate your builds
7. Agenda
What we will cover today:
Industrializing your build process
Automate your builds
Better testing practices
8. Agenda
What we will cover today:
Industrializing your build process
Automate your builds
Better testing practices
Reducing technical debt
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. Why should we improve?
Why should we improve our development process?
11. Why should we improve?
Why should we improve our development process?
Lower development costs
12. Why should we improve?
Why should we improve our development process?
Lower development costs
Lower maintenance costs
13. Why should we improve?
Why should we improve our development process?
Lower development costs
Lower maintenance costs
Less bugs
14. Why should we improve?
Why should we improve our development process?
Lower development costs
Lower maintenance costs
Less bugs
Higher code quality
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. 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. How can we improve?
How can we improve our development process?
18. How can we improve?
How can we improve our development process?
Standardized build practices
19. How can we improve?
How can we improve our development process?
Standardized build practices
Better testing practices
20. How can we improve?
How can we improve our development process?
Standardized build practices
Better testing practices
Better visibility
21. How can we improve?
How can we improve our development process?
Standardized build practices
Better testing practices
Better visibility
Faster feedback
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. 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. Tools for the job
There are plenty of tools available - and most are free!
25. Tools for the job
There are plenty of tools available - and most are free!
maven
Build scripting
26. Tools for the job
There are plenty of tools available - and most are free!
maven
Build scripting
JUnit
Automated testing
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. Towards a better build process
Standardize your build process with Maven
29. Towards a better build process
Standardize your build process with Maven
What is Maven, anyway?
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. 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
34. Towards a better build process
How does Maven help?
Standards
Conventions
35. Towards a better build process
How does Maven help?
Standards
Conventions
Lower Maintenance Costs
36. Towards a better build process
How does Maven help?
Standards
Conventions
Lower Maintenance Costs
Knowledge sharing
37. Towards a better build process
How does Maven help?
Standards
Conventions
Lower Maintenance Costs
Knowledge sharing
Dependency Management
38. Towards a better build process
How does Maven help?
Standards
Conventions
Lower Maintenance Costs
Knowledge sharing
Dependency Management
Promoting good architecture
39. So how can Maven help me?
Standards and Conventions
40. So how can Maven help me?
Standards and Conventions
A standard directory structure
41. So how can Maven help me?
Standards and Conventions
A standard directory structure
A standard, but extensible build lifecycle
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. 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. So how can Maven help me?
Technical documentation
45. So how can Maven help me?
Technical documentation
Generate technical project documentation
46. So how can Maven help me?
Technical documentation
Generate technical project documentation
Easy to integrate code quality metrics
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. 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. 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. So how can Maven help me?
Project architecture
51. So how can Maven help me?
Project architecture
Encourages developers to use modular design
52. So how can Maven help me?
Project architecture
Encourages developers to use modular design
More flexible architecture
53. So how can Maven help me?
Project architecture
Encourages developers to use modular design
More flexible architecture
Reduced complexity and maintenance costs
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. 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. So how can Maven help me?
Dependency Management
57. So how can Maven help me?
Dependency Management
Understand precisely what libraries your application needs
58. So how can Maven help me?
Dependency Management
Understand precisely what libraries your application needs
Safer and more reproducible builds
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. 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. 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. So how can Maven help me?
Dependency Management before Maven
lib
63. So how can Maven help me?
Dependency Management before Maven
Each project has its own set of JAR files
lib
64. So how can Maven help me?
Dependency Management before Maven
Each project has its own set of JAR files
Unnecessary duplication
lib
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. 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. 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. 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. 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. 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. 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. 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. 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. 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
76. So how can Maven help me?
Release Management
A standard way to track and release versions
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. 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. 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
89. Towards better testing practices
Coding the traditional way
Requirements
Design
Implementation
90. Towards better testing practices
Coding the traditional way
Requirements
Design
Implementation
Test
91. Towards better testing practices
Coding the traditional way
Requirements
Design
Implementation
You write your code
Test
92. Towards better testing practices
Coding the traditional way
Requirements
Design
Implementation
You write your code
Test
A tester tests the finished application
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. Towards better testing practices
Coding the traditional way
Coding
Some unit testing?
Manual debugging?
Manual functional
testing?
95. Towards better testing practices
Coding the traditional way
Fragile untested code
Coding
Some unit testing?
Manual debugging?
Manual functional
testing?
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. 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. 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. 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. 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. 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. 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. 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. 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. 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
107. Towards better testing practices
So what’s wrong with the old way?
Lots of defects. Really, lots.
108. Towards better testing practices
So what’s wrong with the old way?
Lots of defects. Really, lots.
High maintenance costs
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. 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. 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. 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. 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. 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. 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
118. Towards better testing practices
How can good testing practices help?
Reduce bugs
Write better-designed code
119. Towards better testing practices
How can good testing practices help?
Reduce bugs
Write better-designed code
Have more confidence in our code
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. 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. 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
124. Towards better testing practices
How can good testing practices help?
Well-designed code
125. Towards better testing practices
How can good testing practices help?
Easier to make changes
Well-designed code
Better response to user feedback
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. 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. 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. 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. 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. 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. 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. 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. 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. 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
138. Towards better testing practices
More flexibility
Testable code is easier to change
Full regression tests avoid introducing errors
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
142. Towards better testing practices
Better visibility
Tests are “executable requirements”
Automated acceptance tests measure progress
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
145. Towards better testing practices
Documentation
Tests are “living documentation” of your code
146. Towards better testing practices
Documentation
Tests are “living documentation” of your code
Always accurate and up-to-date
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
150. Towards better testing practices
Lower maintenance costs
Less bugs, found faster
Changes are easier to make
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. Automating the build process
Continuous Integration - what’s the issue?
Traditional development cycles are bad for your health:
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. 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. 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. 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. 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
160. Automating the build process
Continuous Integration - why bother?
Smoother integration process
161. Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testing
162. Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testing
Regular working releases
163. Automating the build process
Continuous Integration - why bother?
Smoother integration process
Automatic regression testing
Regular working releases
Earlier functional testing
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. 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. 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”
168. Automating the build process
Continuous Integration - what you need
Automated build process (e.g. Maven)
169. Automating the build process
Continuous Integration - what you need
Automated build process (e.g. Maven)
Automated tests (JUnit, Selenium, easyb...)
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. 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
173. Automating the build process
Continuous Integration - what can it do?
Raise integration issues - fast!
174. Automating the build process
Continuous Integration - what can it do?
Raise integration issues - fast!
Monitor your build process
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. 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. 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. Automating the build process
Looking for a good O/S Continuous Integration tool?
179. Automating the build process
Looking for a good O/S Continuous Integration tool?
Try Hudson!
180. Automating the build process
Looking for a good O/S Continuous Integration tool?
Try Hudson!
Easy to set up and configure
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. 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
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. 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. 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. 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
199. Automated Code Quality
How do we pay off technical debt?
Enforce coding standards
Teach developers good coding practices
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. 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. 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
215. Automated Code Quality
Code Coverage
See what code is being executed by your unit tests.
Isolate untested code
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
223. Automated Code Quality
Code Quality Governance with Sonar
Centralized code quality management
Works on any Maven project
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. 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
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. 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. 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. 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. 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. Automated Code Quality
Code Quality Governance with Sonar
You can drill down to view the details for each type of issue
235. Automated Code Quality
Code Quality Governance with Sonar
You can drill down to view the details for each type of issue
Overview
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. 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. 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
240. Summary
How can you improve the development process?
Standardize your build process
241. Summary
How can you improve the development process?
Standardize your build process
Improve testing practices
242. Summary
How can you improve the development process?
Standardize your build process
Improve testing practices
Use Continuous Integration
243. Summary
How can you improve the development process?
Standardize your build process
Improve testing practices
Use Continuous Integration
Reduce your technical debt
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. John Ferguson Smart
Email: john.smart@wakaleo.com
Web: http://www.wakaleo.com
Twitter: wakaleo
Thanks for your attention!
246. John Ferguson Smart
Email: john.smart@wakaleo.com
Web: http://www.wakaleo.com
Twitter: wakaleo
Thanks for your attention!
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. 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