Javapolis: Agile Model Driven Developement

Todays most entertaining presentation at Javapolis (at least from the ones i attended) was the presenation by Scott W. Ambler on agile model driven development (AMDD). Not because of the contents, he basically flipped through a lot of different diagrams, saying you can do this, you don’t want to do this. His presentation was entertaining because of his bluntness and way of presenting.

He also presented the idea of database refactoring, on which he recently published a book, called Database Refactoring. It would be nice to be able to refactor database applications, but the example Scott made during his presentation didn’t convince me that it’s very doable.

Actually, not all database refactoring is hard. It’s refactoring the tables which is hard. The problem with database tables accessed by many applications is that the database tables are basically the interface of your application. And normally you try to minimize change to interfaces used by external applications. You try to be as much backwards compatible as possible. So you usually add new functionality to your interfaces while keeping the old stuff.

Most refactoring in java applications happens inside the application, outside systems don’t really notice that you’ve refactored your application. And you test this with unit tests. Database refactoring would be a lot easier if your applications aren’t tightly coupled to the database tables. So you need to hide your tables as much as possible, for example behind views and packages. If you use ref cursors your applications don’t have to contain sql statements, and thus they aren’t as tiedly coupled with your database.

Scott made some interesting statements. Here are some quotes:

  • Data people are the center of the problems.
  • Microsoft is on the forefront of modelling (have a look at their work on software factories).
  • Having a data modelling specialist is nonsense, just like having a sequence diagram specialist is nonsense.
  • MDA is not working in practice, stay away from it.
  • Modelling sessions of 2 to 3 hours don’t work, you need shorter sessions and iterate.
  • We don’t need perfect documentation, that’s just for burocrats.
  • It’s important to pretend to care.
  • Function point analysis and counting is burocratic, it doesn’t work, you’re making stuff up.
  • Fix price projects: you make up a number and hope you’re correct. Doing fixed price projects borders on incompetency.
  • People who say they are protecting the data quality are lying if they don’t have regression tests.

Anyway, an entertaining session. Food for thought.