Thursday, March 28, 2013

I like to move it! Move it! Part 2.

Originally I was planning to do more or less a set of "Migration 101"-style posts. But for the last couple of weeks I've been working on the real migration project. And as a result there are some "war-stories" to be shared here and now.

Part 2. Translator's role

Yesterday I finished a first cut of a very interesting transformation between two repositories. They both represent very conceptually similar creatures - but they also far enough, so pure mechanical transformation is just not possible.

While trying to marry these two repositories, something came to my mind - it is fare to compare my task to the role of a translator! I am doing exactly the same job - reading a set of text in one language, trying to understand it to the best of my knowledge, and putting everything I understood into words of another language.

But how can I validate that "the best of my knowledge" matches the reality? And also how do I judge my work and don't fall into classical foreign literature trap, described by the quote from a Russian poet Yevganiy Evtushenko: "Translation is like a woman. If it is beautiful, it is not faithful. If it is faithful, it is most certainly not beautiful."

The only answer I was able to come also is from the linguistic realm:
  •  for each system involved in the migration we need to build it's own Webster Dictionary and Thesaurus. It will allow to explicitly define all involved elements and valid constructs. Also it will clarify links between different core elements on the system.
  • based on those separate dictionaries we now can build a SystemA/SystemB dictionary where we can describe how elements are matching. This dictionary allows formalization of our business logic. Otherwise how do we know that, for example "form" in SystemB means "panel" in SystemA, while "form" in SystemA is closer to a "dialog" in the SystemB?
Summary of Part 2: for any migration project it is very important to formally define all involved elements and its meanings (by themselves and in relation to each other). Only based on this knowledge we could later say that our data transformation was logically correct!

No comments: