Extensibility in Team Edition for Database Professionals
I just gave a presentation at the annual Visual Studio Partner Summit on extensibility points in Team Edition for Database Professionals. So I thought it would be a great opportunity to share this on my blog as well.
When I think of the extensibility points, I typically group them in three categories. The first are the core extensibility points within our product. Then there are the Team System integration extensibility points, as well as the Process Guidance extensibility points.
Team Data Extensibility
§ Data Generators \ Distributions. The data generation feature allows you to bind specific data generators to each table column. We ship in the box with a motley of generators. We have simple generators for every SQL data column. We also have some more powerful generators including the Regular Expression Generator and the Data Bound Generator. You have the opportunity to build your own custom generators to improve the meaningfulness of the data generated for your environment. In addition, you can specify a distribution that you want your generated values to adhere to. We ship with a set of distributions, but those are completely customizable as well.
w Person Generator. Most databases have person information, like names, addresses, birthdates, etc. You can imagine creating a custom generator to provide these sorts of values easily for these tables.
w XML Generator. You can imagine creating a custom generator that would take in an xml schema and generate valid xml adhering to that schema.
w Credit Card Generator. You can create a generator that will generate credit card numbers according to an appropriate format (AMEX, Visa, etc)
w Logarithmic Distribution. You can create a distribution that adheres to the logarithmic curve.
§ Test Conditions. The database unit testing feature allows you verify tests using either SQL assertions or easily configurable UI client-side test conditions. We ship a set of test conditions in the box, including row count, scalar value, empty resultset, etc. But these test conditions are completely extensible so you can imagine creating your own to do more powerful test verification.
w Data Compare Test Condition. People will want the ability to verify that the resultset data returned is as expected. You can imagine creating a test condition to verify this.
w Schema Compare Test Condition. In addition to just comparing the data, the schema of the returned resultsets is also important. For example, verifying the right number of columns and of the appropriate data types are returned.
§ Build & Deploy. We have 2 MS Build tasks for build and deploy inside the project system. These are standard MS Build tasks and thus can be extended using MS Build.
w Deploy to server farm MS Build Task. People will want to deploy to an entire farm of servers and you can imagine making that process simpler.
w Data Motion MS Build Task. While we ensure that we never lose data, we do not appropriately migrate data for you automatically. You could add an MS Build task to do this work for you.
Team System Extensibility
§ Work Items \ Queries \ Reports. Team System allows you to completely customize the work items types and associated fields. You could add, for example, database specific information into these work items. You could then create custom queries and reports that were based off of these fields.
§ Check-in Policies. Team System also allows you to create custom check-in policies that require certain actions to be performed prior to check-in. For example, a testing policy that ships with TFS enforces that a specific set of tests is run prior to checking in your code. You can implement other such db specific policies if you desired.
Process Guidance Extensibility
§ Process Guidance Templates. Team System ships with a set of process guidance templates, including MSF Agile and MSF for CMMI. Many partners have already creating their own process guidance templates, including Scrum. You can go about creating your own custom process guidance templates. This includes not only prescriptive guidance for roles, workstreams, and activities, but associated work items, reports, queries, check-in policies, etc.
I hope that has given you a slew of ideas on how to extend Team Edition for Database Professionals. Of course there are other ways to extend the product through standard Visual Studio Extensibility.
Got other ideas? Wondering if something is possible? Let me know!