Skip to content

Wakaleo Consulting

  Home Blog Upping the game - an introduction to software development process improvement
  • Training and Mentoring in Test Driven Development
  • Expertise in quality development and testing practices
  • Expert Jenkins/Hudson training and mentoring
  • Expertise in Automated Acceptance Tests and ATDD
  • Training and Mentoring in Test Driven Development
  • Expertise in Continuous Integration and Continuous Deployment
  • Expertise in Continuous Integration and Continuous Delivery
  • Training and Mentoring in Test Driven Development
  • Training and Mentoring in Test Driven Development
Upping the game - an introduction to software development process improvement PDF Print E-mail
Wednesday, 03 March 2010 13:03

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, aimed at explaining the concepts behind optimizing the SLDC to management and product owners.

You can also download the slides in PDF form.

Tags See All Tags Add New Tag...

Please Enter New Tags Separated By Comma's
  Or Close



Trackback(0)
Comments (1)Add Comment
0
Describes my life...
written by ipsi, March 03, 2010
The 'Bad Stuff' in the presentation (Slide 36, especially) pretty accurately describes how things are for me at the moment - lots of legacy code, some of it so old that there were no libraries (open source or proprietary) that could have been used instead, resulting in a wonderful legacy ORM solution that is tightly integrated with just about everything else, amongst other things. Brr.

I'd like to get some of the things you mentioned in this article up and running, but it takes time... Though when I get some, I would like to try setting up Hudson and FindBugs/Checkstyle, so we can at least get a very basic idea of what's going on with code quality.

Speaking of which, I note two extra things in Hudson, apart from FB and CS - PMD and CPD. A quick Google search suggests that PMD is something similar to FB/CS (pmd.sourceforge.net) and CPD is a 'Copy/Paste Detector'. Is that correct?

I've also tried Maven, and found that it's fairly nice, but there is one issue I have with it (and that my boss had with it):

It seems to potentially create a huge amount of projects. I mostly use Eclipse, and that doesn't have support for subprojects, so when I tried to convert an EAR-based project to Maven, I wound up with a huge mess of projects, and it just didn't really look good. Also, Maven didn't (this was a while ago, so things may have changed) seem to understand the concept of a 'light' WAR (I forget the actual term), where the dependencies specified by the EAR are not added to each WAR file, but held only in the root of EAR.

There's also a few other things, like how we could provide an unzip/build solution for Escrow packages with Maven (without requiring them to first set up a Maven repository, or possibly even install Maven).

Anyway, what was the utility you were using to check Code Coverage? Does that come with Hudson, or is it an extra tool?

Also, thanks for pointing out Sonar - another tool to investigate when I have the time.

My one criticism of this presentation would be that it seems to focus primarily on new projects - that is, adding Unit Tests is relatively easy if you're starting a new project and can write your code from the ground up to be testable. Existing Legacy Projects... well, they're not an awful lot of fun to test, especially a project as old as the one I'm working on.

'A little refactoring here will make everyones life easier' doesn't actually hold true when your severely risk-averse client demands an accounting of all changes made...

Having said that, progress is being made. We've moved from 'Dependencies in SVN' and 'one project to rule them all' to using Ivy (we were already using Ant). We're slowly getting rid of custom legacy code that has better open-source alternatives (e.g. moved from custom logging solution to Log4J, moving from custom Caching to Ehcache, moving from custom Threadpool usage to Quartz, etc), and slowly removing anti-patterns in the code (e.g. having ~50% of your classes be descended from your StringUtils class, which contains only static methods...).

I'm not really sure what my point is here... I guess I'm just a little bitter that I see all these things that would make my life so much easier, but just don't have the time to implement them (or to rewrite the application from scratch so that it would be possible to implement them).

Anyways, thanks for pointing out some new tools I can investigate when I have time (PMD/CPD/Sonar).

I've also played around a little with Hudson, and I quite like what I've seen so far - definitely something I need to look more into.

Just out of curiosity, would you say that it's worth setting up a CI server (like Hudson) even if all you are likely to be using it for is running things like PMD/FB/CS/etc.? I think it is, but I'm wondering what other people think.

Write comment

busy