While language-oriented toolsets become more advanced the range of development and deployment tools for databases remains primitive. How often is the DBA left sitting in the corner? Are you scared to change your database because other applications are using it? Do you have difficulty rolling out incremental changes to your databases? Does your database prevent you from releasing your software more frequently? Using real-world experiences - and the principles outlined in Ambler and Sadalage’s Refactoring Databases, this paper aims to demonstrate how to take control of the database and make it possible to incrementally evolve and improve its design. With these techniques the database need no longer be the bottleneck in your develop-test-deploy process. This paper features ideas on how to best use open source tools including Ant, CruiseControl and dbdeploy.

This article explains how to achieve easy database refactorings in the Java code, and how to have fun when programming towards a database (in a safe and very easy manner). While the techniques can be used in ORMs in general such as Toplink, Hibernate, the outset of the article is using raw SQL or low level ORMs such as SqlORM.

Databases are often out of sync with the applications they support, and getting the database and data into a known state is a significant challenge to manage. In this installment of Automation for the people, automation expert Paul Duvall demonstrates how the open source LiquiBase database-migration tool can reduce the pain of managing the constant of change with databases and applications.

Refactoring is a well-accepted practice for improving existing code. Yet, how do you find the code that should be refactored, in a consistent and repeatable manner? This installment of Automation for the people explains how to use static analysis tools to identify code smells to refactor, with examples showing how to improve odiferous code

Reengineering legacy software to use a modern component model can be accomplished by repeatedly applying a large number of semantically-sensitive program transformations, some of which synthesize new code structures, while others modify legacy code and meld it into the new framework. Using machinery that automates the process conquers the problems of massive scale, soundness, and regularity, and furthermore reduces time to completion by overlapping the project's design and implementation phases. This article describes experiences in automating the reengineering of a collection of avionics components to conform to a Common Object Request Broker Architecture-like component framework, using Design Maintenance System, a program analysis and transformation system designed for building software engineering tools for large systems.

Standard refactoring techniques coupled with automated refactoring tools provide an excellent platform for upgrading legacy VB code. Legacy VB code suffers poor structure and ‘bloated code’ due to lacking inheritance and other object-oriented capabilities. Upgrading old VB code without any restructuring will not bring the benefits of .NET architecture. Restructuring legacy VB code in order to eliminate most obvious shortcomings can often help us discover much more efficient and robust design, and even code that we were poised to discard can find new life in the .NET world.

The amount of JavaScript code written by developers is continuously increasing, so is increasing it's impact on the overall quality of web applications. How can one quickly convert casual software development to professional software engineering? There may not be one simple answer here, but if your current JavaScript project is in trouble or if you are about to start a new one - this article is for you.

It is possible to mitigate risk and speed up the process of adding new development to your legacy code by establishing a strategy to handle it. The strategy involves finding inflection points, applying test coverings, and refactoring code.