Tuesday, March 11, 2008

Language Agnostics

Wouldn't it be terrific if there was some lowest common denominator in speech language? Wouldn't you love to be able to go to Italy, France and Russia and be able to communicate without relying on embarrassing hand singles to find the nearest bathroom, or ever magnified head affirmations when you get a response that you don't understand?

Well, that probably is not possible in today's world and may never be. If you want to go to Italy and communicate, learn the language.

Fortunately in the programming domain, we do have that lowest common denominator in several areas of information technology.

I have been preparing a demo of Sybase Powerdesigner for the folks here and in addition to modeling tools that allow IT to communicate with the business in a meaningful way, it also allows us to write the bulk of our applications without specifying what language it is in.

As an example, for this demo I am going to show how to build a Conceptual Data Model. This is sort of the first step in the modeling process and can be created from Business Requirements and conversations directly with the business.
(Powerdesigner allows you to create Business Process Models (BPM's) that can generate your conceptual model. However for the scope of this conversation we are assuming that our interaction with Powerdesigner starts with the CDM.)
The CDM is where we build our entities and define the relationships (foreign keys) and some of the attributes of the entities.

From there Powerdesigner generates my Logical Data Model. You do this by selecting the option to generate a Physical Model, however instead of choosing a DBMS, you chose Logical Data model. From here we can define our indexes and our primary keys.

This is where we can stop, take a bow, and thank the modeling gods for allowing such a spectacular idea to surface in all of its glory. We have just created a language agnostic database. Or more specifically we have generated a DBMS agnostic model.

What Powerdesigner has done for me is collected the common concepts and features behind a databases meta data and made them available to me in the Logical Data Model. I am now King Kong. I can simply push a button and generate the code for a SQL 2005 database, SQL 2000, IBM DB2, Oracle 7,8,9 or 10, My SQL in 5 different flavors, Redbrick Warehouse, and a just about any other DBMS you can think of. How cool is that? Very cool.

Now the task is to get the rest of the IT team to embrace the concept and the value of bringing the abstract concepts discussed here and Language Agnostic modeling to generate code. Although I have only discussed database here, Sybase has the same ability to generate Language Agnostic classes which can create my code in any language I want.

I would be interested in others who have had to sell this concept and those who have been disinterested in embracing this type of culture.

2 comments:

Karen Lopez said...

Doesn't it seem so obvious? That we should design our data first in a way that frees us from the constraints and restrictions of any specific version of any specific DBMS?

Then later we can tune and constrain our structures in a way that individual DBMS vendors need us to do. But we can generate the same intelligent data design across platforms without having to recreate a bunch of work?

Reduce. Reuse. Recycle. It works in more ways than the environment.

Karen Lopez
www.infoadvisors.com

Joe Logan said...

YES, it does sound obvious. So you just have to wonder, why is it so hard to adopt and to create a culture of design in the development world? I have my own ideas about that but I think that the main reason is that typically it is so different from the more common practice of diving write in and writing your SQL scripts manually or from a template and change is always difficult.