My co-worker Larry asked that question, and then offered the following. Understand that we do a lot of greenfield work and we haven't really embraced the Data Warehouse concept fully yet.
Advantages to building the database first include having a database to hook up to immediately.
Advantages to building the application first is that the user can see what needs to be changed.
Normally the user can’t understand the ERD. But, the user can understand the application interface. Prototyping should be used to weed out changes but isn’t always successful. By developing the application and allowing the user to play with the interface the changes can be identified up front. This way the changes necessary to the system are minimized as the prototype is developed into a working application. Finally, the database can be developed and hooked up to the application.
My initial reaction was
- ...designing the database first helps you better understand the objects that you dealing with and their attributes
- ...from that you can develop effective and effcient user interfaces.
- ..don't show end-users ERDs. We don't do much OLAP type work.
- ...what if you design something you can't implement, or doesn't implement well.
There's a difference between gathering good requirements (how something will be done) and understanding what the users need the application for (what is to be done). If you understand who, what, when, where and why, how should fall out. However, the more thought I give this, why couldn't understanding who, when, where, why and how cause what to fall out?
Thoughts?
(Cross-posting to Channel 9 to get a wider cross-section of replies...)