Sunday, July 22, 2007

Agile Tools for .NET

The following is a list of tools for doing agile based development with Microsoft .NET. There are quite a few tools out there that will accelerate your use of continuous integration, test driven development, source control integration, etc.

I have used all these tools - most I use on a daily basis. They are highly recommend and most are either low cost or free.

JIRA

Best tool for task management. For more details see my review of JIRA from a previous post. It's bugzilla on steroids and is much better and simpler than most windows based tools. It's java based, but there is still no reason not to use it for .NET based development.

NUNIT

NUnit is an implementation of the XUNIT framework for .NET. It allows you to create unit test classes that can be run by either a GUI or console application. NUnit will also integrate into your build process so that on each build, you run through your automated tests to make sure they still pass.

NANT

NANT is a port of the ANT build tool from Java. NANT allows for build scripts based on simple XML files. NANT can do things such as compile code, deploy assemblies, manage directories, start and stop processes, run executables, etc.

NCover

NCover is a code coverage tool for .NET. It will instrument your assemblies when they are built to analyze each line of code in your assembly and whether it was actually executed (exercised). If you combine this with NUnit, you can then tell how much your unit tests actually go through every path of code.

dotTrace or Ants Profiler

Either tool will do, but personally I like Ants Profiler better and you can get it as a bundle with Ants Loader for cheaper. Both tools do the same thing - they profile either memory or performance data for your executing code. You can profile an ASP.NET web site, a Winform application or a Windows Service. What you will get in the case of memory profiling is the ability to snapshot at any point of execution a picture of what is in memory. This can help with objects not getting garbage collected properly or where you're running into memory issues. For performance profiling, the tool will tell you the amount of time each line of code took to execute. This can be useful for performance testing in that you can see the breakdown of time for a method to isolate the particular lines of code that are taking the longest.

Cruise Control .NET

Cruise Control is a port of the java application of the same name. It is a continuous integration server which will fire a build on every check into your source code repository. It can run either a NANT script or an MSBuild script or simply tell Visual Studio 2005 to do a build. It then stores the status of each build in a little intranet site that you can monitor and it can email you notifications as well. This provides an automated way to integrate code and test to make sure it builds and passes all your unit tests.

My Generation

My Generation is a code generator. It ships with a number of templates for generating O/R mapping code for frameworks such as Gentle, NHibernate, DAAB, etc.

TestDriven .NET

This is one of my favourite tools. It allows you to integrate your unit testing right into studio. Want to run one of your NUnit Tests? Just right click on the test code and up comes a Run with option that you can then run with the debugger, NCover, NUnit, etc. The one I use most is run with Debugger as it means you can step through the code hit by each of your unit tests.

ANKH

Ankh is a subversion add-in for Visual Studio 2005. For those who are using subversion as your source code control system (and I would recommend subversion in general over Visual Source Safe) it allows you to update and commit code from the solution explorer window. My only problem with this tool is that its quite slow especially if you have large projects, so you may find it easier to check in with external tools after a while. But for those who are just getting used to subversion, its a great first step.

9 comments:

Anonymous said...

I would certainly add AccuRev source control to that list. If you are not familiar, they do offer a 2-user free license. That's how I got my first look. Its stream concept (containers of configurations like ClearCase UCM, just better and inherent) makes implementing an Agile process a breeze. Glad to see JIRA mentioned, not a bad tool at all to take it up a notch from Bugzilla and some of your other lightweight issue trackers.

Anonymous said...

OnTime 2007 is a great bug tracking / project management tool, too. Axosoft offers a free 1-user license. It has vs.net 2005 interface (as well as windows & web). It's built with .Net and uses a SQL server / express back end.

DWhittaker said...

I have a similar post, but with more tools listed here http://devlicio.us/blogs/derik_whittaker/archive/2007/07/17/tools-i-use-as-a-net-developer.aspx

Nate Kohari said...

Check out VisualSVN (http://www.visualsvn.com/). It's like Ankh but much cleaner. Commercial, but not too expensive.

GraemeF said...

My tuppence:

MbUnit over NUnit - more features! It's compatible with existing NUnit test code, too.

MSBuild over NAnt - does the same job but you're already using it in your VS projects...

TortoiseSVN over Ankh - I'm sure you listed Ankh as a personal preference but in my experience it slows down VS too much :)

Wei said...

can not believe Resharper is not mentioned. And TestDrivenDevlopment.NET is obsolete if you have Resharper

tobsen said...

I would also add tortoisesvn, TestDriven.Net (http://testdriven.net/) and the Windows Installer Toolkit (http://wix.sourceforge.net/index.html) to the list.

François said...

Shameless plug.
If you are using Agile methods and JIRA, you should consider GreenHopper (http://www.greenpeppersoftware.com/en/products/GreenHopper/).

The main goals of this plugin are to provide JIRA users with an interactive and simple interface to manage their projects (AJAX-based) and tools to increase the visibility and traceability of ongoing versions. Based on card views, GreenHopper offers a Planning Board that will help you dispatch your issues by version or components, a Task Board that will help you with the workflow of your issues and a Chart Board that will help you track your progression.

There is a two minutes video on the web site that presents an overview of GreenHopper.

Cheers,
~François

Anonymous said...

SmartSVN and SmartCVS should be considered

       

Blog Archive