Firstly, what am I talking about? Applications that meet some of the following descriptions:
1. Stored procedures with a fair amount of conditional logic or complicated business rules buried in a sub-query (some would argue sprocs at all).
2. Web pages with lots of conditional output again encoding business rules in snippets of view logic. if else checks that display the latest price for something if before and certain date or a default price.
3. The majority of ‘unit tests’ require a database, or web and application server to be up and running.
4. The majority of code files make reference to language default I/O or database libraries.
5. Hours are spent trying to determine if differences in version of infrastructure are the cause of certain bugs.
6. Changing database schema results in hours of refactoring, as hundreds of querys and sprocs are hunted through to see if this index or that index is being properly hit.