Today, you would be very hard pressed to find any application that doesn't have some sort of data component. Just as a developer would be responsible for code within the software development lifecycle (SDLC), the database professional is responsible for the development of data assets within the data development lifecycle (DDLC), which is illustrated in Figure 8-1.
The important focus for most development companies is process improvement and predictability. The challenge is to find how a database professional can effectively apply engineering principles. First, the database schema is very hard to manage. How does one version a database? You can create snapshots but often, governance rules such as Sarbanes-Oxley prevent the extraction of data for such purposes. In addition, even with the best of intentions, you may lose data during backups. How do you test and deploy a database? A surprising number of database developers simply roll their changes into a production database without the benefit of testing. One of the big reasons for this is that the tools are simply not available or too expensive to use. A lot of the administrative tasks that you would associate with database management involve automation scripting to make a database easy to administer.
Team Edition for Database Professionals currently supports SQL Server 2005, SQL Server 2005 Express, and SQL Server 2000. It does not natively support Oracle, DB2, and other database vendors. (Although Microsoft expects that these platforms will be supported by third-party vendors using the extensibility model.)
Team Edition for Database Professionals provides integration with Team Foundation Server to help manage several tasks within the DDLC. The challenge here is to provide database professionals with the tools to be able to work alongside agile development teams. Let's look at each task within the lifecycle:
Implement - The implementation phase involves architectural and functional elements. The architectural part is the creation of a data model that fits the requirement of the target software application. This lightweight model is then translated into a database schema (the underlying structure of your tables, fields, and other database components), which can be updated offline and change-managed within Team Foundation Version Control. You also implement the application by creating the tables, views, stored procedures, functions, and types for use within the database. You have the choice of creating or generating new database schemas, or importing existing schemas and scripts from existing databases.
Test - Just like a developer, database professionals can unit test entire databases, which ties in nicely with the Team Foundation test framework. All test results are pushed into the data warehouse, which allows you to aggregate metrics as a first class citizen alongside other test types (such as Web, load and manual tests, for example). Another really interesting feature is database refactoring. With the combination of unit testing, refactoring, continuous build and close connection with the rest of the team, the database professional can now develop using popular test driven development (TDD) approaches. One of the radical new features of the product is that you don't need a production database to perform these tests. You can work with the offline schema and simulate data using a powerful data generation utility.
Build - Team Edition for Database Professionals comes with special MSBuild tasks that allow you to integrate your work into SQL Server 2000 or SQL Server 2005 using Team Foundation Build. You can also choose scripts that will run before and after the build.
Deploy - Database assets can be stored alongside code in Team Foundation Version Control and can be deployed easily using the IDE. You can also compare and update a production schema against a schema in development, and deploy the changes.
Beyond these phases, Team Edition for Database Professionals has the same team integration functionality as the other Team Editions. In other words, you can communicate and collaborate with the rest of the development team using the Team System work item tracking database and control and manage your database-related assets using Team Explorer. Obviously, Team Foundation Server plays a key part in this integration.
One of the big challenges of working in an agile development environment is that you have to set up data infrastructure quickly, and it is often difficult to validate the work on many fronts. Many integration strategies have been tried in the past, such as scripting and modeling, which have been less than a great experience. The key problem is that up till now such work has been done on a production database. If you are working under time or financial constraints, it is difficult to implement a staging area for testing the application against the database before it is shipped out the door.
If you have used SQL Server 2005 at any length, you'll notice that development environment is considerably richer than SQL Server 2000, providing you with the ability to write stored procedures and other functional elements using .NET code against the SQL CLR. SQL Server 2000 is still fully supported; in fact, there is a strong argument for change-managing your queries and other assets, even from an operational perspective (for example, for backup and recovery scenarios).
The product team for Team Edition for Database Professionals designed the product around a persona called Data Dude. The name was coined by Eric Rudder (Microsoft's senior vice president for technical strategy) during an initial meeting about the product. Team Edition for Database Professionals is also sometimes referred to as Team System Data, Team Data, and TSData.
Like other parts of Team System, Team Edition for Database Professionals was conceived to improve the quality and predictability of the database development process. You can learn more about Team Edition for Database Professionals on the official MSDN site: http://msdn.microsoft.com/vstudio/teamsystem/products/dbpro.