jenswinter.com
Software Development 24/7

Scott W. Ambler on .NET Rocks!

January 17, 2007 22:00 by Jens

The guest of this week's .NET Rocks! show is Scott W. Ambler. I was really looking forward to this show, as Scott is the author of one of the best books I've read: Refactoring Databases.

Richard and Carl talked with him about agile development practices. Some topics in particular where database refactoring, agile modeling and project management. It was a great talk, and I strongly recommend to listen to the show if you are interested in modern software development.

A very interesting story Scott was talking about, is about a question he uses to ask at conferences:

"When you go back to work rename a column in a production database. Can you safely do that and roll into production in less than a day?” Interestingly, very few people can. Some people can do it in a month, some people in three months. Some people think it's so risky, they wouldn't even attempt to do it.

The topic about database refactoring and evolutionary database design was of special interest for me. That's because as I'm currently in the process of developing a tool that helps developers to integrate database refactoring methods.

I hope Scott will be on the show again some time. I'm sure he has a lot of valuable knowledge and experience to talk about in many DNR shows.


Flynn Project started

January 9, 2007 21:59 by Jens

Finally I've done it! I started my first open source project. It is called Flynn and is hosted on codeplex. Here is the project link: http://www.codeplex.com/flynn

Flynn is a database refactoring tool. Its task is to help developers and administrators build up an application's database to a certain state.

Databases have to be updated when a new version of the application is shipped. QA has to have a certain application and database version in order to reproduce bug reports. A new database has to be set up automatically each time an automated test is being kicked off within a testing environment.

Most software projects already have some kind of database updating mechanism. Huge database scripts are executed to set up the database, certain scripts have to be be run in a certain order to alter existing databases and special update scripts have to be executed to make customer specific modifications on the database. Hopefully there is already some kind of batch processing to set up the database. But mostly user interactions are still required at some point during this process.
These are all error-prone and time-consuming processes. An application developer shouldn't waste time and money managing the database with such tasks but concentrate on delivering business value to the customers. Just let Flynn do the database management stuff!

For Flynn to work you have to register update scripts in an XML file. A single call to the flynn application on the console will execute all necessary scripts to lift a database up to a desired version.

Flynn is currently in an early alpha stage. At the moment it supports Microsoft SQL Server.

These are the planned features and abilities:

  • Flexibility and extensibility to support any relational database system
  • A graphical user interface to manage the database scripts
  • Wizards to create standard database refactoring scripts
  • A NAnt task implementation

Btw, the name Flynn is derived from the term Flynn effect. A term used in psychology to describe the year-on-year rise of IQ scores in all parts of the world.
Well, it sounds cool and through constant refactoring of the database its quality and the quality of the application will improve - just like the human's IQ.


FitNesse testing with .NET

January 6, 2007 21:57 by Jens

One of the things I'm going to tackle this year, is FIT - "Framework for Integrated Testing".

Fit is a tool for enhancing communication and collaboration. Fit creates a feedback loop between customers and programmers. Fit allows customers and testers to use tools like Microsoft Office to give examples of how a program should behave--without being programmers themselves. Fit automatically checks those examples against the actual program, thus building a simple and powerful bridge between the business and software engineering worlds.

The tool to realize FIT testing is FitNesse. This tool was primarily designed for the Java environment. There is also a .NET integration. Unfortunately it is very poorly documented. Additionally, the .NET implementation differs from the original implementation.

Now the good news. Gojko Adzic has created a tutorial on how to start testing .NET code with FitNesse. So if you want to get started with FitNesse testing in .NET, go to http://gojko.net/fitnesse/ and grab the guide as a PDF document. It covers:

  • Setting up a FitNesse server for testing .Net code
  • Writing basic tests, performing common tasks
  • Saving time and effort with specialised test types
  • Tips and tricks for writing better tests and making test pages easier to read
  • Managing content with FitNesse
  • Organising tests into test suites
  • Most important differences between .Net and Java versions