Eclipse
Eclipse is a free Integrated Development Environment which lets you do things like refactoring (for example, rename a variable and all the usages in a simple command, or turn a block of code into a method) and code browsing. While it isn't the only tool you can use to write Mifos code, it is one good one.
Setup
To install eclipse: download and install Java, Eclipse, and Subclipse.
To get the code via eclipse, go to Window -> Show View -> Other in the eclipse workspace, and pick SVN -> SVN Repository. Click on the "Add SVN Repository" button and enter the URL and username from the Access Code Repository page.
You should then be able to browse through the Mifos sources. Next you'll want to download them to your machine. Right (menu) click on "mifos" and select "Checkout...". The idea is that your eclipse will set up a project from the .classpath and .project files which are checked in (specific steps not listed here...).
ANT BUILD and Environmental Variables
Here's how you run ant from within eclipse.
Right click on src, select Build Path, configure build path. Select Builders.
Make sure Ant Targets is checked and then select that and click Edit On Environment tab in “Properties for Ant Targets” window, add a new variable for cobertura, such as c:\buildtools\cobertura-1.7.
Here's what it looks like:

Creating Patches
Code Submission Process includes instructions on creating a patch from within eclipse.
Running Tests
To get an idea of how junit from within eclipse works, open FastTests.java and pick Run/Run as/Junit test from the menus (or type alt-shift-X T). You should see a green bar showing tests passed.
To run all the mifos tests, first run "ant build_test_db" from the command line (although it is possible to run this from within eclipse, there isn't an especially compelling reason to do so). Then go back to eclipse and run ApplicationTestSuite.java (just like you did for FastTests in the previous step). This should take a while to run and should eventually pass. Running ApplicationTestSuite is what "ant run_test" does.
You may need to add "-Xmx350M" to the "VM arguments" (pick the Run/Run... menu, pick ApplicationTestSuite, click the arguments tab) to avoid out of memory errors.
Filtering
Operations like Search -> File and Navigate -> Open Resource generally return lots of useless and/or unrelated results. A handy way to see just what you want is by limiting scope using Working Sets.
Go to Window -> Working Sets -> Edit and create a working set called "UsefulMifos" containing only items useful in Mifos development. Suggested inclusions:
- src/
- test/
- conf/
- sql/
- build.xml
- README
Now you can configure views to use this filter. In the Package Explorer view, click on the dropdown (upside down triangle) and choose "Select Working Set...". Choose "Window Working Set" in the dialog that pops up. Configure the Navigator and Problems views similarly. Search -> File, Navigate -> Open Resource, and Navigate -> Open Type all have options to filter by Window Working Set.
Run-time debugging
The Sysdeo Tomcat plugin for Eclipse is an excellent way to debug a deployed Mifos WAR, and as such is recommended by the Mifos development team.