In 2013, Oxford University announced that 702 jobs will disappear in a decade. The announcement was based on a dissertation written by Michael Osborne, “The Future of Employment: How Susceptible Are Jobs to Computerization?”
The Go match between Alpha Go and Se-Dol Lee shed new light on his theory. His paper assumed that 47% of jobs would be automated and replaced by computers or robots within a decade.
Surprisingly, the possibility of computer programmers vanishing is 48%, while that of application software developers is only 4.2% and that of system software developers is as low as 1.3%.
Simple and repetitive programming which is mostly about creating source a code according to given specifications can easily be replaced by computers. On the other hand, it’s hard for machines to take away jobs like software designers, since they are creative jobs that require communicating with users.
Since Model Driven Development (MDD) creates source codes automatically from a model design document, machines can easily replace the programming task. The roles of programmers are switching from simple and repetitive programming to application software designing or system software designing to develop basic technologies like automation tools.
Then what about analyzing software user demands and designing software based on them? Would this task be impossible for computers to take over because it’s within the realm of creativity?
LG CNS is making it possible through reverse engineering.
Usually, software is developed by writing source codes based on design specifications using programming language. Once developed, software needs to be modified and complemented through maintenance. For better maintenance, design specifications need to keep being updated as well. This task is usually done manually, but LG CNS engineering focused on the demand for automatic design extraction through reverse machine analysis of source codes.
How does reverse engineering works, then?
Reverse engineering works as if translating languages. When translating on the Internet from English to Korean, one puts an English sentence into a translator and sets the result to Korean. Then the translator analyzes the patterns of both languages to create a Korean sentence that works grammatically.
Sometimes, results from Internet translators may look awkward. If the translator could understand all the different patterns humans use in a language, then it would have a great result every time, but unnatural looking results occur when there are words, phrases, or grammatical patterns that the translator doesn’t understand.
Programming languages are languages through which computers and people can communicate, and they have their own grammar. For reverse engineering, a source code would be in English, and the design specifications would be Korean.
LG CNS Reverse engineering analyzes grammar and patterns of programming languages to generate conversion rules which correspond to components of a UML design model. It’s quite similar to the Internet translator holding a conversion rule by mapping rules for both languages.
LG CNS generates textual design specifications and visualized UML models based on source codes not only in Java, but also in C and COBOL which are not object-oriented languages.
Reverse engineering is not just for analyzing existing software. Software can create entirely new functions, but it sometimes adds or modifies other functions on top of the existing ones.
Imagine you’re buying an old house and building a new house on top of the existing one. Between demolishing the existing building then rebuilding the entire new house and changing the interior structure while keeping the old structure, what would be more efficient?
The answer can be different according to how sturdy the original structure is and how much of the interior design you would like to change. Remodeling is considered more efficient generally because it saves time and money.
LG CNS began to use reverse engineering to generate a basic design model—which is the basic structure of the house—from the source code of an existing system. In this case, a standardized model is more effective for development compared to other text-based documents such as Word and Excel.
Creating a reverse model basically means making a design specification reflecting users’ general demands.
When going through reverse engineering while reusing the model, it has to be made exquisitely, enough to generate a new source code with a minimal amount of manual work.
In order to converse from the specific logic of source code to a model like the image above, there must be a standard that can express the logic within the model. If the text was simply moved from the source code to the model, it would be difficult to reuse the model when the language changes.
LG CNS has the model standard which can generate 100% of the source code, and writes the conversion rules very exquisitely for reverse engineering so that everything can be mapped on the model standard.
Model-based reverse engineering has multiple merits.
First, a model generated by reverse engineering enhances analysis efficiency. Once the complicated text-based source code is converted to an image-based model, it becomes easier to understand the general structure due to its higher readability.
Specific logic switches the language from the programming command as shown in the red box into the simplified expression based on natural language as seen in the green box. Because a model is expressed based on the logical flow regardless of the platform it operates on, it omits technical parts of the code unnecessary to task analyzers.
Even though the creator’s intentions may not be shown after converting it to a model, it still becomes much easier to analyze.
Second, it finds improvement issues in the original program. In the process of creating conversion rules, programs not following the standard and other structural flaws can be found. Overlapping and unused functions can also be spotted in the process.
It’s like demolishing interior materials and unnecessary parts of a structure, and then finding out there are structural problems like cracked walls and water leaks. In this case, the structure of walls and pipes can be repaired first, and then one can move on to changing the overall structure or expanding the building.
After a long period of maintenance, software also needs to go through a similar process of spotting problems and complementing them. This is when reverse engineering comes in handy.
Third, a reverse model can be reused for forward engineering which re-generates a source code. LG CNS reverse engineering generates models with a standard used by MDD, regardless of the object language.
This model becomes the basic structure for forward engineering. Even if requests aren’t fully defined, the original functions still remain in the model and won’t be omitted.
Through years of experience dealing with large IT system reconstruction, LG CNS has recognized that client companies wish to keep 60-70% of their original system functions. Reverse engineering is mandated for projects larger than a certain size, so that requests are not omitted.
Reverse engineering doesn’t cure all problems. Yet, generating a well refined model from a messy source code may be impossible. If a considerable amount of software functions are to be changed, then it may be better to start from the beginning.
However, if it’s reusable to a certain extent, then generating a part of the design specifications automatically through reverse engineering is more efficient. Ultimately, generating a completely standardized model using MDD can maximize its reusability.
Generating source code 100% automatically based on a model and maintaining it through a model became possible through MDD. Now the technology has reached the level where a model is automatically generated from an existing source code.
Simple and repetitive tasks within the software development process will continue to become automated. Yet, discussing automatically generated models with clients and making decisions on what to add and discard will be even more appreciated as a solely human and creative realm.
Even though artificial intelligence created by programmers are now threatening programmers’ existence, forward thinking and active use of automation will keep our future promising.
Written by Kyunghui Jang, LG CNS