A couple of weeks ago I was involved in a database upgrade. Reincubate's client was wanting to migrate two operational systems of similar size and complexity from a legacy dBase-compatible database backend to SQL Server, and I felt the differing experience with the two systems serves as a good illustration of the importance of proper planning and code discipline, right from the initial stages of a software development.
The first system had grown organically over many years. There were numerous examples of hard-coded connection strings, proprietary SQL commands and the use of direct table access instead of the use of SQL views for accessing data. Consequently, the migration process for this product required several weeks of code analysis - essentially having to code through the codebase line by line to ensure that, when the data was migrated to SQL Server, the software would continue to run.
In contrast the second operational system, a .NET application also using a dBase-compatible backend, was much simpler to migrate. This application had been developed using our own .NET brokering framework, which provides tiered abstraction layers to separate presentational code, business logic and database integration. At the initial planning stage for this product several years ago it had been recognised that there would be a need to migrate the database backend in the future, so database portability was planned into the project right from the initial stages. Consequently, the entire migration process for this product was completed in less than a day, as the only changes required (other than the actual data migration) were to remove vendor-specific DML from the configuration file, change the database connection string and port a number of stored procedures to T-SQL.
This is a striking example of how proper planning right from the early stages of a project can provide a pay-off many years in the future. In this case, several weeks of resource-intensive development, potentially costing thousands of pounds, was avoided by identifying the potential need for migration right at the initial stages of the project and using the right tools to ensure that MVC principles were followed throughout development.
If you're in the initial stages of planning a software development and want to ensure you're taking the right decisions then why not speak to us?