What Is Code Migration?
Code migration is the movement of programming code from one system to another. There are three distinct levels of code migration with increasing complexity, cost and risk. Simple migration involves the movement from language to a newer version. A second, more complicated level of migration involves moving to a different programming language. Migrating to an entirely new platform or operating system is the most complex type of migration.
The first type of code migration is a simple movement from one version of a language to a newer, but syntactically different version. This is the easiest of migration routes as the basic structure and much of the programming constructs usually do not change. In many cases, the old code would actually work, but new and improved routines or modularization can be improved by retooling the code to fit the nature of the new language. Therefore migrating the code would lead to more efficiency in execution.
The second level of code migration would be migrating to a completely different programming language. This could be caused by porting to a new software system or implementing a different relational database management system (RDMS). This type of migration often requires that programmers learn an entirely new language, or new programmers be brought in to assist with the migration. In this case, the entire program must be rewritten from the ground up. Even though most of the constructs are likely to exist in both languages, the precise syntax is usually completely different.
The most complex example of code migration is migrating to an entirely new platform and/or operating system (OS). This not only changes the programming language, but also the machine code behind the language. While most modern programming languages shield the programmer from this low level code, knowledge of the OS and how it operates is essential to producing code that is efficient and executes as expected.
Regardless of the type of migration, the approach should be the same. The migration team or programmer should break each module, function, and sub-routine into its purpose and flow chart the program. This is a reverse engineering of the original software development life cycle (SDLC). Once these modules and functions are charted at their high-level purpose, they can be rewritten and tested in a compartmentalized fashion in the new language. Like any advanced computer programming project, proper planning and documentation are the key to a successful code migration.
Code migration often involves the creation of huge and detailed flow charts, kind of like the NCAA basketball brackets. I have seen a few of these that stretch across a whole wall. To the uninitiated it can look like chaos but for those who have their heads deep in the program these flow charts can be invaluable.
It is easy to get lost in a program. They are like mazes built out of labyrinths. Having a giant overarching diagram that clearly illustrates the connections and roots that are at play in the code hierarchy can really help programmers understand the structures that are at play.
A complicated code migration project can generate hundreds of pages of these diagrams. It takes a lot of work, but without them the project would probably be impossible.
I have dealt with a lot of code migration related to moving Linux products onto Apple and PC platforms. This can be a real bear.
I remember when I was first starting out I made a simple word processing program in Linux and tried to adapt it to other operating systems. It was really just a hobby project but I wanted friends of mine who didn't use Linux to be able try out my program.
It took me weeks of fiddling around and several long consultations with a computer science professor before I was able to get it to work. This was a long time ago and I could probably do the migration now in no time at all. Still, I was an amateur back then and had no idea where to start. Don't let anyone tell you that code migration is easy.
I have worked in software development and systems administration for a long time and I have been a part of some really intense code migration projects. When its easy its really easy and when its hard its really hard. Imagine trying to parallel park a space station, that kind of hard.
The level of difference between different programming languages and different operating systems is huge. In many cases we will recommend that clients not undergo particularly complicated code migration projects because the cost and time are prohibitive. Of course they don't always choose to follow our advice and that is when my job gets interesting.
Post your comments