In my endeavour to develop a simple to use, feature rich personal finance software, I had to trawl through the internet in search of the most convenient development tools, and here's my story.
After spending more than a couple of days searching, I eventually found what I'm looking for.
First I wanted a database to store the data in. With too many on the list to pick from, which would you have choosen? I have decided to settle on Firebird for a few reasons.
- Can be embedded with my application
- Has a small footprint
- Mostly SQL compliant
- Has .NET client library
Database: Firebird
Now that we've solved the data issue, let's move on to the next of kin, ORM.
Object-Relational Mapping is a requirement nowadays. The choices here are no lesser than the database arena. I have taken the easy solution approach to picking this one, dOOdads. dOOdads comes with the MyGeneration, code generation tool.
Other ORM options I have looked at include, Hibernate.NET and Gentle.NET. I personally prefer the Gentle.NET approach. Gentle.NET 2.0 is still in an early stage of development to be used with .NET 2.0.
ORM: dOOdads
A couple of main features I liked about the unit testing tools I've chosen, namely, VS.NET integration and perfornmance statistics on tests.
Unit Test: Zanebug
To integrate Zanebug with VS .NET, I had to use TestDriven.NET. One caveat, though, is that you cannot run VS.NET using a regular user account and get the VS.NET integration for Zanebug. You will have run VS.NET with a user account belonging to the Administrators of the machine to allow TestDriven.NET to start an external process.
Next comes the source control requirements. SVN was my choice. I haven't created the tree for MoneyMan yet, but will surely use SVN.
Source Control: Subversion (SVN)
It's a fact, software programs will have problems, unless you spend big $$$$$....$$$$ on development and especially QA. How long it will take to uncover an issue in a piece of software is, based on statistics, a matter of time and user engenuity. Our project is no exception, but I hope to keep bugs under control. To help manage this part of the development process, I picked BugNET for issue management.
Issue Management: Mantis
Check our the post on Installing Mantis.
TO DO: Look for a continuous integration engine. I'm in two minds between CruiseControl.NET and NANT.
What would you have picked?