NL2017709B1 - A method of and system for transforming legacy computer programs. - Google Patents

A method of and system for transforming legacy computer programs. Download PDF

Info

Publication number
NL2017709B1
NL2017709B1 NL2017709A NL2017709A NL2017709B1 NL 2017709 B1 NL2017709 B1 NL 2017709B1 NL 2017709 A NL2017709 A NL 2017709A NL 2017709 A NL2017709 A NL 2017709A NL 2017709 B1 NL2017709 B1 NL 2017709B1
Authority
NL
Netherlands
Prior art keywords
legacy
data
database
unique
routines
Prior art date
Application number
NL2017709A
Other languages
Dutch (nl)
Inventor
Worms Ronald
Dirkmaat Remko
Clement Arthur
Van De Ven Wouter
Original Assignee
Codeless Tech B V
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Codeless Tech B V filed Critical Codeless Tech B V
Priority to NL2017709A priority Critical patent/NL2017709B1/en
Application granted granted Critical
Publication of NL2017709B1 publication Critical patent/NL2017709B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The present disclosure generally relates to the field of transforming legacy software or computer program products. More particularly the present invention relates to a method of, and server for transforming, by a legacy software transformation server, a legacy data centric computer program product having legacy program code arranged to be executed on a legacy system, to a modern computer program product having modern program code arranged to be executed on a modern system. In accordance with an aspect of the invention a method is provided for a legacy data centric computer program product having legacy program code wherein in several steps of recording, analysing, devolving and testing the legacy software is migrated towards a modern system.

Description

Title A method of and system for transforming legacy computer programs.
Technical Field
The present disclosure generally relates to the field of transforming legacy software or computer program products. More particularly the present invention relates to a method of, and server for transforming, by a legacy software transformation server, a legacy data centric computer program product having legacy program code arranged to be executed on a legacy system, to a modern computer program product having modern program code arranged to be executed on a modern system.
Background
Legacy software are computer program products having legacy computer program code. Such code can be stored and executed within a legacy system, consisting of for example old hardware arranged for instruction set architectures that are mostly outdated, phased out and not manufactured and supported anymore. Legacy software may however in some examples also be considereds software for execution on modern systems which are arranged for instruction set architectures that are currently still widely deployed, manufactured and supported, but wherein the software component in stead of the hardware component is considered out dated.
Known examples of legacy software are software applications that are programmed in old programming languages such as COBOL or Pascal. Some large systems, often being the core application or ERP suits of a SME or large company have been up and running for many years and where originally programmed a long time ago in a programming language that was common those days. Support for these old fashioned programming languages rapidly drops since software engineers who are familiar with such languages due to the age become scarce. As such, obtaining and guarantying the required amount of maintenance and support for these applications becomes more and more difficult and hence costly and time-consuming.
Migrating from such legacy software towards more modern software in which use, implementation of new features, bug fixing and general maintenance becomes less of a challenge, is thus desired and becomes even more desirable over time.
Many methods exist for transforming legacy software into such more modern software. One of the most straightforward is by converting the source code. If source code of compiled applications can be obtained, these can be converted into modern programming languages. There are however some drawbacks to such straightforward conversion. Fist of all, the source code is not always available. Secondly, if available, often the old source code is badly documented making it hard to determine what logic is programmed into the code. Thirdly, over time, some code becomes obsolete since the logic is not used any more and logic that is used, could be optimized by recoding the code in smarter routines. As such, it is not very common to simply convert source code in such a straight forward manner.
To overcome some of these drawbacks, as an alternative to the straightforward conversion of the code, it is common to rebuild the legacy software into a modern software application coded in a modern programming language for which use, implementation of new features, bug fixing and general maintenance becomes less of a challenge, and which can be executed on widely available common hardware.
In such a rebuild process a software engineer investigates the legacy software by on the one hand investigating the client side by determining which User Interfaces, Ul, exist (either graphical Uls or text/command line based Uls), and which data fields they comprise. On the other hand, the server side is investigated by determining the database schema and the database transactions as well as the logic routines that are executed from the Ul or anywhere else within the application and the transactions in the database that are triggered by these routines.
Some of the information can be determined by simply looking at, and use of the client side applications, e.g. its Uls, and others by interviewing users and software engineers responsible for the database management, application maintenance and the like. Once all information is determined the database can be migrated to a new modern system and all program code can be reprogrammed in a modern programming language. Once all is done, the new system with the modern software can be tested to reveal any inconstancies and incorrect function in respect of the original legacy software.
Even such a rebuild process for transforming legacy software has drawbacks. Many information and logic of the legacy system is to be determined from the input of users and software engineers. It is however known that users sometimes use software in an incorrect manner and that users are not trained or equipped to determine whether routines can be performed more efficiently. Moreover, sometimes input is needed to determine logic of the software that can only be given by the programmer that originally created the program. Sometimes that person is not available anymore to provide such input, he or she can be retired, be working elsewhere or even deceased. Yet another problem with the process of rebuilding is that most of the work has to be performed by a skilled software engineer that is also experienced in both the old fashioned programming language, as well as the modern programming language. In rebuilding the software from scratch the newly created software is also often different from the original legacy software that it is not recognized by the users. Hence, the users have difficulties in understanding and getting used to the new software. Such rebuild process is furthermore hard to scale or not even scalable at all since the work is to be performed by unique persons and managing an even distribution in workload between a group of such unique persons is cumbersome. An import reason therefor is that in such a process the software engineer(s) have no idea of the progress of the migration since the amount of code to be converted or recoded is unknown as is the complexity thereof. Yet another drawback is that the legacy software is often critical at an operational level within the company and that only a limited amount of time is available to receive input from users and software engineers and that the legacy software can only be decommissioned for a minimum amount of time. As such there is a need for alternative processes for transforming legacy software in which at least some of these drawbacks are resolved.
Summary
It is an object of the present invention to provide an improved method for transforming legacy software in which at least some of the above mentioned drawbacks of the known transformation methods are resolved.
It is a further object of the present invention to provide an improved method for transforming legacy software which has at least one or more of the following improvements as compared to known methods, being automation of the process to a large degree, scalability, dividing transformation process into small work units that can easily be distributed over persons working on the transformation process and which can be distributed according to level of experience, a transformation process which can be performed without having to decommission the legacy software and/or wherein the impact of transformation on the users and software engineers is minimized.
In accordance with the object of the invention, in a first aspect, there is provided a method of transforming, by a legacy software transformation server, a legacy data centric computer program product having legacy program code arranged to be executed on a legacy system to a modern computer program product having modern program code arranged to be executed on a modern system, the legacy software transformation server being arranged for performing the recording steps of: providing, to at least one computer of the legacy system, a legacy recording routine arranged for recording frontend data and backend data during a period of use of the legacy system, the recorded frontend data at least comprising one or more screens dumps of an application running on the at least one computer of the legacy system and comprising input data from a user of the at least one computer of the legacy system into the application, and the recorded backend data at least comprising database transactions performed on a database of the legacy system; obtaining, a database schema of the database of the legacy system obtaining, from the at least one computer of the legacy system, the recorded frontend and backend data; wherein the legacy software transformation server is further arranged for performing the analyzing steps of: determining, by analyzing the recorded backend data, unique database transactions; determining, by analyzing the frontend data, unique screens for the application; determining one or more unique zones for each unique screen; determining one or more of a dynamic and static data field in each unique zone; determining one or more unique logic routines at least for the least one dynamic data field, wherein the logic routines correspond with at least one unique database transaction; determining for each logic routine whether the logic routine comprises a CRUD (create, read, update, delete) logic function or complex logic routines such as a calculation; determining a logic function for each unqiue logic routine, wherein the CRUD logic functions are determined by comparing a data input and a database transaction performed in response to the data input, and wherein the complex logic routines are determined by machine learning, by iterativly analyzing several data input with one or more database transactions performed in response to the data input; and wherein the legacy software transformation server is further arranged for performing the devolping steps of: creating on at least one computer of the modern system, a database having a database schema corresponding with the obtaining database schema and copying data from the database of the legacy system to the database created on the computer of the modern system; creating applications arranged to be executed on the modern system, the applications corresponding to the determined application, comprising Uls having screens and data fields as well as logic routines as determined; and wherein the legacy software transformation server is further arranged for performing the testing step of: testing the created applications on the modern computer system by executing test routines comprising execution of each unique logic routine and determining whether the database transactions and data presented in dynamic data fields on the modern system correspond with database transaction and data presented in dynamic data fields on the legacy system.
Legacy software is considered software having computer program code that is considered not up-to-date to modern standards. Not being up-to-date to modern standards could apply to the software and/or to the hardware. Hardware can be out-dated and not supported anymore and the software could be linked or restricted to some degree to the use of such out-dated hardware. On the other hand, the software itself could be out-dated, e.g. due to the fact that the software cannot be maintained anymore since it was written in a programming language that nobody understands anymore these days. Such out-dated software could run on out-dated, i.e. legacy, hardware, but could also run on modern hardware as well.
Up until a certain moment in time it is still beneficial to keep the legacy system up-and-running and not to migrate towards a new modern system having modern computer architectures and code written in modern programming languages. However, the problems relating to the legacy system will increase over time since bugs and new features can not be fixed or implemented and software engineers that have the skills required to work in the legacy code become even more scarce. In some situations, the software does not even have software engineers that are able to perform such maintenance since the only person(s) that are skilled enough have deceased, or the external service provider has gone bankrupt. As such, it is only a matter of time until a company that uses such legacy software needs to migrate towards a modern system with modern code.
Several ways are known to migrate from the legacy system. A way of migrating is to maintain the original code and to run the code within an emulated environment, e.g. within a virtual machine. Another common and straightforward way of migrating is to recode the software code into a modern programming language. For example, low level code is converted to a higher level language from where its functions/routines can be compiled by modern compilers into binary code that is arranged for computers with modern architectures like X86 and ARM. Amongst others, such way of migration has the drawback that bad coding is recoded into the newly migrated code. Software bugs, flaws/errors in the code etc. are also migrated and contained in the new code. As such, migration in such a way introduces new problems and the goal of migrating the legacy software in order to patch/fix such bugs, flaws/errors is not achieved. Moreover, code that has become obsolete or is only rarely used, is also recoded and becomes part of the new code. This unduly adds to the size and complexity of the new code making it a sloppy way of migration introducing new problems that need to be solved.
As an alternative, the legacy software can also be analysed by a highly skilled software engineer that is able to determine what user interfaces the software uses, what logic routines are behind it and what effect it has on the backend, e.g. the database and its transaction performed thereupon. Key users and current maintainers of the legacy software can inform the software engineer to determine what how the software works, and hence how the modern migrated version should work as well. Amongst other, this approach has the drawback that it is very hard to determine on forehand how big of a project the migration will be. Accordingly, it hard to determine the impact of the migration process which makes managing such a transition very difficult. Moreover, sometimes key user and current maintainers are unaware of incorrect use of the software, are not fully informed of all aspect of the software or what the function is of some undocumented routines. And these maintainers are sometimes external companies that have been hired to perform the maintained and sometimes these companies go bankrupt. This may result in legacy code can is unmaintainable. Finally, the key users and maintainers are often biased, since the current legacy software is their only reference and sometimes a product they actively contributed on. As such, they are not objective in evaluating the code and the necessity of its routines.
The present invention, in an aspect thereof, provides a solution by removing such subjectivity by introducing a method of transforming, by a legacy software transformation server, a legacy data centric computer program product having legacy program code arranged to be executed on a legacy system to a modern computer program product having modern program code arranged to be executed on a modern system.
The method is arranged to be performed by a legacy software transformation server which could be a single server solution, preferably a cloud based application, an application installed on a local server in the network of the legacy system or a hybrid solution of the foregoing.
The method consists of several steps wherein in the first step data and information in general is obtained through a recorder. Once the information is obtained, or even in parallel with the recording of the date/information, a step of analysing is performed. Once the analysing is completed the development step can be started wherein the new modern software is devolved. Once the rebuilding by the development step is complete the new modern software is tested before taking into operation.
In the first step of the process a recorder is provided by the legacy software transformation server, transformation server for short. The recorder is arranged to record frontend data and backend data. Preferably, a single recorder is provided that is arranged to record both. However, in an another example, two dedicated recorders are provided, one for the frontend that is arranged to be installed on a client computer of the legacy system and one for the backend that is arranged to be installed on a server of the legacy system. Due to the fact that the present method for migration of the legacy software is particularly suitable for data centric software applications, for example having tier 1, but preferably tier 2 or 3 computer architectures, the recording takes place both at a client side and at a server side, e.g. on the backend database.
The legacy recording routine is preferably a standalone software routine that can be provided or distributed by the transformation server or any other distribution device, e.g. a digital distribution platform like an app store for computer applications for mobile, portable and stationary devices. A user of the legacy software can download the frontend recorder on their computer, e.g. client or server. Once downloaded and installed, the legacy recorder records several aspects which can be attributed to the frontend data and the backend data.
What is recorded at least comprises screen dumps of one or more User Interfaces, Uls, which can be graphical user interfaces or command line user interfaces. Furthermore, the user input is recorded as well. The Uls are preferably recorded by a screen grabber routine, e.g. either through a series of images or through a video sequence, and the user input is preferably recorded by at least a key logger and preferably a routine to record other input commands for example from a mouse or another human input device. The recording is preferably done at certain fixed intervals or through continuously logging any action, or by only logging any transition on the screen, or input data from the keyboard or another input device such as a computer mouse. Preferably, the input data is a trigger for the screen capturing routine and new screen dumps are only made when input data is received, e.g. when a mouse click or keyboard input is detected.
In the recording phase the database of the legacy system is also recorded, or at least parts of the database. What is meant is that the database schema of the database of the legacy system is extracted such that in the devolvement phase a database can be created according to the same database schema. This has the advantage that the database transactions of the legacy system can be converted to the modern database without having to change the function of the database transactions. Once the new modern database is created, the data can be copied from the legacy system towards the modern database. The step of extracting the database schema and creating the new database can be done prior to recording the frontend data, during the recording of the frontend data or afterwards during the analysing or development phase.
Once all data is recorded the computer, e.g. one or more clients and/or one or more servers of the legacy system, the data can be uploaded towards the transformation server for further processing. Preferably, the transformation server starts with pre-processing the data by separating the screen recording elements from the data input from the user. The pre- processing can comprise an analysis of a video stream recorded at the computer and analysing the different screens in the stream. The different screens can be recognized by detecting changes in between the recorded images. By example, the detection can be performed by analysing the individual pixels and transitions of pixels which can be an indication for distinction between screens. The skilled person will appreciate that other techniques are also applicable to detect the different screen, e.g. image segmentation routines and the other computer vision techniques.
Once all data is pre-processes, needless to say is that the preprocessing is an optional step, the actual analysing can be performed. Even before all recordings have finished the analysis can start which is preferable done from a cloud based solution. For example, a long period of time can be defined in which the recording is performed. The time period of recording is preferable in correspondence with a time defined on forehand in which it is almost certain that at least all main functions of the legacy software have been used during that period of time, such that it is guaranteed that these main function at least can be analysed and hence taken into consideration for development in the development stage.
The analysis stage is aimed at determining all relevant aspect or element of the legacy software. More in particular by determining all screens that have been recognized and determining its properties and elements. Even more in particular, what is to be determined from the screens is what applications can be recognized, and what data fields these applications comprise. All the data fields within the applications are presented through one or more Uls. This Ul (or the Uls) has a layout in which several data fields can be recognized. One or more data fields together can form a zone.
In the analysis stage all screens are processed. For each screens one or more zones are defined. Defining the zone is preferably done by the transformation server receiving user input such that it is up to the decision and determination of a user to define the zones. In another example, the transformation server itself can automatically define the zones, for example by machine learning routines in which the server has access to a database containing a large amount of historical zone definitions from which the server can learn how to make such decisions.
However, as indicated, in the preferred method the definition of the zones within the screen is done by a user of the transformation server. This could be in principle any user, e.g. of the company of the legacy system, a service provider related to the transformation server, or a third party or an individual from a group of support members which are registered to participate in such transformation/migration projects.
Each zone is preferably defined according to its function. For example, a zone could have the function of receiving one or more input data fields in which the user of the legacy software can enter for example address details of a transaction order. A zone could also have the function of performing an action such as reading data from a database table, updating data into a database table, or performing a calculation on data in the database. The zone to this end can comprise static data fields and/or dynamic data fields. The static data fields could for example relate to a text label providing information to the user for a corresponding dynamic data field in which data records can be entered or in which data records can be showed, e.g. upon performing a database lookup.
The static data fields of the screens and in particular in the zones defined in the screens, is preferably recognized by Optical Character Recognition, OCR routines. These routines can be comprised in the transformation software of the transformation server, but can also be routines that are available from third parties. For example, through an API the transformation server can send a graphical image of a zone or static or dynamic data field of the zone through such an API to a third party. What is returned is a text based data field which can be used in the development stage to recreate the data field in an automated manner.
The screens preferably relate to a function and as such the method preferably comprises a step in which each screen is defined with a function, e.g. a function name and preferably a data table of the database to which the function relates.
Preferably each zone is defined with a zone type, which can be any one or more of the group consisting of menu, list, form, actions, filters, or other. As such, the function or type of the zone can be distinguished and recognized. Moreover, the elements of the zone, thus the dynamic and static fields may have labels. These labels are determined preferably by the transformation server, e.g. through internal or external OCR routines. The labels and label text can also be determined by a user of the server or initially by the server itself and validated by the user or only validated by the user when the server is not able to (guarantee) the correct recognition of the label and label text.
Dynamic data fields of the zones not only provide static information to the user of the Ul of the software application, but the content of the data field can change or can trigger certain actions in the application. As such, the dynamic data fields need to be determined whether or not to contain logic routines, e.g. routines to create, read, update, delete database records, perform calculations, initiate further actions, provide information through popups, etc. The method is preferably arranged to determine logic routines of the data fields by analysing the recordings. What is meant is that upon triggering the dynamic data field, e.g. by entering data or by clicking a button or pull-down menu, the action triggered will have effect on the application. Thus, either data fields in the screen, i.e. the Ul, or data in the database is effected by such action. By for example comparing data on the basis of corresponding (text) data strings and/or timing intervals, the transformation server is arranged to links between the logic routines and its result or output. As such, it is not only possible to determine how and where data fields of the application are linked, i.e. one dynamic data field is changed/updated when another dynamic data field is triggered, but also possible to determine what the function of the logic routine is.
Once all zones within all screens have been defined and all data fields have been determined it can be determined how many unique logic routines the data fields can trigger. In an example, the logic routines can also be triggered not from the Uls on the client side of the application, but in a background process thereof. An example thereof would be a scheduled updating of certain records, e.g. process all order receipt the last one hour and update the database table containing the stock levels such that the current stock levels are updated in accordance with all orders received. Other background processes may trigger logic routines that relate to frequent or non-frequent updates for example for making backups. These routines may be performed and/or initiated on the client but also on the server or directly from within the database or database management system. All logic routines in one way or the other will cause any change in the state of the system, thus either in the database which can be determined by the database transaction, and/or in the Ul which can be determined by (graphical) changes in the screens of the Ul.
Once all logic routines are determined, these can be linked to database transaction, and it can be determined whether the routines either comprise simple or complex logic functions. Simple logic functions would be considered those logic routines having logic functions that are linear, direct, straightforward, and thus only comprise Create, Read, Update, Delete, CRUD, logic functions. The content of the black box approach of the logic routine is then straightforward since the server only needs to determine if the content (logic function) is one of the CRUD functions.
The unique logic routines having non-CRUD logic functions difficult to determine. A black box approach in which input is compared with the output to determine the content of the black box and thus determine the set of operations that are performed in the black box is preferably performed by many iterations in which input data and output data is compared and analysed. Machine learning techniques can be used to perform such iterations and analysing. Several machine learning techniques can be applicable such as decision tree learning techniques, association rule learning, artificial neural networks, deep learning, inductive logic programming, support vector machines, clustering, Bayesian techniques, reinforcement learning, representation learning, similarity and metric learning, sparse dictionary learning, generic or genetic algorithms, rule-based machine learning, learner classifier systems etc. In many of these techniques, a data set is analysed and patterns are detected between input and response, such in several repeating, e.g. iterative, steps.
The data can be data specifically generated for that purpose or data contained in the recorded data by the recorder routine during use of the legacy software.
Preferably, the transformation server is arranged to determine a likeability or correctness level of the determined unique logic routine. For example by comparing the original logic routine with the rebuild logic routine and by testing several scenarios and determine if they respond exactly the same, mostly the same or only party. Those logic routines that do not respond exactly the same can be provided to a user for a manual validation step in which the user is able to determine if the rebuild logic routine should be accepted, rejected or modified.
Once everything is recorded and analysed, the transformation server starts developing. The development however could also be performed in parallel to the analysing, e.g. by starting to develop Uls and/or logic routines for those parts of the Ul and/or logic routines that have been determined so far during the analysing stage.
Each Ul of the original legacy application that is actually used during the period of recording, is recreated at the development step. The layout of each screen of the UI or Uls is determined from the screens recorded and graphically or in respect to its layout rebuild in the development step. All element in the Ul such as the dynamic and static data fields are rebuilt into the new Ul or Uls. In accordance with the data fields in the Ul or Uls of the legacy system the ones that are linked to a logic routine, e.g. the dynamic data fields, are linked to the determined logic routines that are built during the development stage as well. Accordingly, all functions of the modern software application correspond with the functions of the legacy software application.
Prior to testing the database is migrated as well, which means that a database scheme is obtained of the database of the legacy system and a new database is generated with the same scheme on the modern system. Once created, the data is migrated towards the new database.
Once all is completed the final step of testing is performed wherein the modern system and is newly created computer program is executed and put in use. The response of the newly created program is compared in a parallel session with the legacy system to determine if both systems respond equally. For any remaining element in which that is not the case, a software engineer is informed to for manual modification of the incorrect Ul elements, data fields, logic routines or database transactions.
Accordingly, in comparison with the known methods of migrating legacy software, in an aspect of the invention, a method is provided wherein the time needed to determine the specifications for the modern system by analysis of all Uls and logic routines or business rules, is significantly reduced. Moreover, significant increase in processing of the following is also obtained; creating copies of the Uls, determining which properties of the Ul or backend comprise hidden complex logic routines, creating test scenario’s, incorporating logic routines on the basis of the specifications, keeping the process of migration under control and providing information of the progress.
Moreover, in an aspect of the invention, a method is provided wherein management of the process is scalable since large migration projects can simply be scaled by adding server resources for recording, analysing, devolving and testing, optional manual operations on the migration can be divided over multiple software engineers and can be divided according to level of complexity (complex logic routines vs. Ul layout. Also, the subjectivity of the key users and current maintainers of the legacy software is removed as well by the automated objective computer implemented method of migration. Finally, obsolete code or code or routines that are not used very frequently can also be removed as well, or more in particular not migrated in to the new modern software.
In an example, prior to said steps of analysing, said legacy software transformation server is further arranged for performing the steps of: pre-processing said obtained recorded frontend and backend data, wherein said pre-processing preferably comprises any one or more of dividing said data into frontend and backend data, dividing user input from screen dumps, dividing screen dumps into separate screens.
As indicated, the recorded data is preferably pre-processed such that is can be analysed in the following steps. The advantage is that, once received and pre-processed, the data can be devided into several screens which can be easily distributed over several users for a team based, scalable approach in the transformation process of the legacy system.
In an example, the legacy software transformation server is further arranged for performing the steps of: determining for each screen a function definition at least comprising a function name declaration and a data table of the database relation.
Preferably, each screen comprises several zones, and each screen has a function definition declaration such that is can be recognized and preferably linked to data of the database, e.g. of a particular data table of the database.
In an example, one or more of the steps of determining unique database transactions, unique screens, unique zones of the screens, dynamic data fields, static data fields and logic routines are automatically performed by the transformation server.
In an example, the legacy software transformation server is arranged to receive a user input for validating at least one of the determinations of one or more of determining unique database transactions, unique screens, unique zones of the screens, dynamic data fields, static data fields and logic routines.
Preferably, any element in the steps of the analysing is performed fully automatically by the server. No user interaction is required. However, more preferably, user interaction is provided upon analysing of such element, e.g. zones, screens, data fields, logic routines, etc, in which the server is not a hundred process sure that the recorgitions is correct. This could for example be implemented by text recognition in which the recorgnized characters correspond only party with a original image, or wherein outcome of a certain routine is only linked to a limited amount of input data such that the exact logic fuction cannot be determined, or wherein the outcome of a logic function does not fully correspond with the outcome in response to input data in that is input in the corresponding logic routine of the legacy system, etc. For such cases, the server preferably provides the user with an input request wherein validation of the element is requested.
In an example, the legacy recording routine is arranged to receive for process by providing to the transformation server, additional interfaces, manuals, batch processing jobs through the legacy recording routine.
Prior to the analysing, and after obtaining the recorded data, the server can be arranged to provide a user, e.g. a user of the legacy system, with an interface in which the user can enter additional information relating to the legacy system. Examples thereof are information relating to the current use of hardware for the system, known hardware requirements, information relating to the current use of the software such as type of database, supplier, version, dependencies, etc. Also non hardware or software related questions can be asked such questions relating to the use like maximum amount of concurrent users, location of use, devices used as client computer etc. The information thus obtained can be used to specify the modern system such that for example it is not over-specified and corresponds with the modern version of the legacy software. The user interface is preferably provided in the form of a dashboard. The dashboard preferably provided information relating to the recorder, the analyser and the builder, i.e. the development. Through the dashboard the legacy system can be modelated to the new system in which the additional questions can add to reduction in hardware. Moreover, the dashboard can provide the user with information relating to a system status which has a criticality level wherein high criticality can indicate an urge for migration based on for example level of support available for the current hardware and software used. Moreover, the dashboard can provide info relating to the status of the overall process of the migration and can be used to divide individual tasks to individual employees working on the migration process.
In an example, the modern computer program product is arranged for a web-based client-server system.
Most preferably, the modern computer is modern server architecture which can be access through a web interface by several client devices. These could be desktop computer, portable computers like laptops or mobile devices like tablets or smarthones.
In an example, the legacy software transformation server is further arranged for performing the steps of: storing each unique logic routine determined during the steps of analysing in a storage means such as a database, and wherein the transformation server is further arranged for re-use of unique logic routines stored in the database in further legacy software transformation processes.
Upon finishin several migration processes the Uls and more preferably the logic routines determined therein can be stored and reused for further, future transformation processes. This can significantly save time in the devolpment stage.
In an example, a performance of the machine learning in determining logic functions of unique logic routines is increased by storing each unique logic routine determined during the steps of analysing in a storage means such as a database and by analysing corresponding stored unique logic routine of multiple further legacy software transformation processes.
Machine learning routines can be made more effective in iterations of performing the routines of recorgnizing the logic routines. This not only add on an individual logic routine level, but also on a large level over several projects and full processes of transformation and hence on the basis of a big data set of historic machine learned routines.
In an example, the text of a Ul of the computer program product of the legacy system is determined by OCR routines, and wherein the OCR routines are performed by the transformation server or through an external server.
Preferably, the text recorginition is done by an OCR routine. This could be build into the legacy system and thus form part of the method, but it can also be arranged to send an image (screen, zone or element thereof such as a data field) and receive a text string in return.
In an example,the legacy software transformation server is arranged to provide a legacy recording routine for frontend data recording to one or more client computer of the legacy system and a legacy recording routine for backend data recording to one or more server of the legacy system.
The recorder or legacy recording routine is preferably a single application that can be downloaded and installed on either a client and/or a server. The recorder can however also be dedicated for a client, i.e. frontend system, or for a server, i.e. backend sytem.
In an example, the step of analysing the obtained recorded frontend data comprises determining properties of the Ul being at least one or more of the group comprising Ul layout, position of static data fields in the Ul, position of dynamic data fields in the Ul, data type of the data fields, relations between the Ul and a further Ul, active buttons within the Ul, declarations of the data fields.
In an example, the step of determining the zones comprises determining a level of reliability of automatic recognition of data fields of the zones and wherein for data fields having a determined reliability recognition level below a pre-determined threshold the data fields are tagged for manual validation, and the method further comprises the step of providing a user of the legacy software transformation server for the purpose of manual validation, with the data fields tagged for manual validation and obtaining from the user an input value whether the data fields are correctly recognized.
Since machine learning and OCR is not considered fault proof, a reliability level can be defined which can be used as a threshold for the user to get involved and validate the suggestion of the server.
In an example, the step of analysing the obtained recorded backend data for determining database transactions comprises determining a transaction type for the transaction, wherein the transaction type in particular is any one of the group comprising batch transaction, interface transaction, user transaction or remaining transaction.
In an example, the step of analysing the obtained recorded backend data for determining database transactions comprises differentiating the transactions between CRUD functionality and complex transactions. CRUD functionality is straightforward, but on the otherhand some logic routines are complex. The CRUD functionality once recognized as such, can be separated from the complex routines since the latter require additional matter to determine its function, e.g. by artificial intelligence like machine learning routines.
In an example, the step of determining the unique logic routines comprises determining a level of reliability of automatic recognition of logic routines and wherein for logic routines having a determined reliability recognition level below a pre-determined threshold the logic routines are tagged for manual validation, and the method further comprises the step of providing a user of the legacy software transformation server for the purpose of manual validation, with the logic routines tagged for manual validation and obtaining from the user an input value whether the logic routines are correctly recognized.
In accordance with the reliability of the recognized text, a level of reliability of recorgnition of the logic routines is preferably provided. As such, logic routines with a reliability level below a pre-defined threshold are set for user involvement by manual validation by the user.
In an example, the legacy software transformation server defines for each step of the method being performed a sequential progress indication value and wherein the progress indication value is presented to a user of the legacy software transformation server for determining the progress of the transformation of the legacy software.
An advantage of the present invention is that not oly the way of migration is scalable but it is also arranged to indicate the progress of the process.
In an example, the legacy software transformation server comprises a database having a plurality of database transactions and unique logic routines determined during the steps of analysing.
In an example, the legacy software transformation server is arranged to generate a hash value for each transaction and unique logic routine stored in the database and wherein the hash value is stored in the database as well.
In an example, the legacy software transformation server is arranged to compare, prior to storing the transaction and unique logic routine in the database a hash value generated for a unique transaction or a unique logic routine is present in the database and for storing the unique transaction or a unique logic routines for which a corresponding hash value is absent in the database.
The re-use of logic routines is preferably arranged by storing each logic routine determined. Upon analysing new logic routines, in an example, a hash can be generated for the logic routine and the database can accessed to determine if such a hash is present therein. If that is the case, the logic routine can be re-used without the need for developing it.
In a second aspect of the invention legacy software transformation server, for transforming, by the legacy software transformation server, a legacy data centric computer program product having legacy program code arranged to be executed on a legacy system to a modern computer program product having modern program code arranged to be executed on a modern system, the legacy software transformation server comprising a recording module arranged for: providing, to at least one computer of the legacy system, a legacy recording routine arranged for recording frontend data and backend data during a period of use of the legacy system, the recorded frontend data at least comprising one or more screens dumps of an application running on the at least one computer of the legacy system and comprising input data from a user of the at least one computer of the legacy system into the application, and the recorded backend data at least comprising database transactions performed on a database of the legacy system; obtaining, a database schema of the database of the legacy system obtaining, from the at least one computer of the legacy system, the recorded frontend and backend data; wherein the legacy software transformation server comprising a analysing module arranged for: determining, by analysing the recorded backend data, unique database transactions; determining, by analysing the frontend data, unique screens for the application; determining one or more unique zones for each unique screen; determining one or more of a dynamic and static data field in each unique zone; determining one or more unique logic routines at least for the least one dynamic data field, wherein the logic routines correspond with at least one unique database transaction; determining for each logic routine whether the logic routine comprises a CRUD (create, read, update, delete) logic function or complex logic routines such as a calculation; determining a logic function for each unique logic routine, wherein the CRUD logic functions are determined by comparing a data input and a database transaction performed in response to the data input, and wherein the complex logic routines are determined by machine learning, by iteratively analysing several data input with one or more database transactions performed in response to the data input; and ; wherein the legacy software transformation server comprising a development module arranged for: creating on at least one computer of the modern system, a database having a database schema corresponding with the obtaining database schema and copying data from the database of the legacy system to the database created on the computer of the modern system; creating applications arranged to be executed on the modern system, the applications corresponding to the determined application, comprising Uls having screens and data fields as well as logic routines as determined; and the legacy software transformation server comprising a testing module arranged for: testing the created applications on the modern computer system by executing test routines comprising execution of each unique logic routine and determining whether the database transactions and data presented in dynamic data fields on the modern system correspond with database transaction and data presented in dynamic data fields on the legacy system.
In a third aspect of the invention a computer program product comprising a computer readable medium having computer program code stored on a non-volatile memory for causing a processor to execute the method according to any of the previous descriptions.
The above and other aspects of the disclosure will be apparent from and elucidated with reference to the embodiments described hereinafter.
Brief description of the Drawings
Figure 1 show a flowchart comprising the steps of a method of transforming a legacy compute program product according to the first aspect of the invention;
Figure 2 shows a legacy software transformation server according to a second aspect of the invention.
Detailed description
Reference numeral 10 in Figure 1 designates the flowchart of the computer implemented method according to an aspect of the invention. The method or computer implemented invention is arranged for transforming, by a legacy software transformation server, a legacy data centric computer program product having legacy program code arranged to be executed on a legacy system to a modern computer program product having modern program code arranged to be executed on a modern system.
The first step, step 11, is the recording step and step comprises providing, to at least one computer of the legacy system, a legacy recording routine arranged for recording frontend data and backend data during a period of use of the legacy system, the recorded frontend data at least comprising one or more screens dumps of an application running on the at least one computer of the legacy system and comprising input data from a user of the at least one computer of the legacy system into the application.
The recorded backend data at least comprises database transactions performed on a database of the legacy system and further comprises obtaining, a database schema of the database of the legacy system. Further the method comprises obtaining, from the at least one computer of the legacy system, the recorded frontend and backend data.
The second step, step 12, is the analysing step. This step comprises several further sub steps of determining, by analyzing the recorded backend data, unique database transactions, and determining, by analyzing the frontend data, unique screens for the application. Moreover, what is further determined is one or more unique zones for each unique screen and determining one or more of a dynamic and static data field in each unique zone as well as determining one or more unique logic routines at least for the least one dynamic data field, wherein the logic routines correspond with at least one unique database transaction. Finaly what is also determined is for each logic routine whether the logic routine comprises a CRUD (create, read, update, delete) logic function or complex logic routines such as a calculation. At last, what is determined is a logic function for each unqiue logic routine, wherein the CRUD logic functions are determined by comparing a data input and a database transaction performed in response to the data input, and wherein the complex logic routines are determined by machine learning, by iterativly analyzing several data input with one or more database transactions performed in response to the data input; and
The third step, step 13, is the building or development step. During this step, the code and Uls are created by creating on at least one computer of the modern system, a database having a database schema corresponding with the obtaining database schema and copying data from the database of the legacy system to the database created on the computer of the modern system.
Moreover, what also is created during the building step is creating the applications arranged to be executed on the modern system, the applications corresponding to the determined application, comprising Uls having screens and data fields as well as logic routines as determined.
The final fourth step, step 14, is the test step and it comprises at least the step of testing the created applications on the modern computer system by executing test routines comprising execution of each unique logic routine and determining whether the database transactions and data presented in dynamic data fields on the modern system correspond with database transaction and data presented in dynamic data fields on the legacy system.
In figure 2 a system is shown which at least consists of a transformation server 20 having a recording unit 21, a analysing unit 22, build or development unit 23, and a test unit 24. These are all connected to the central processing unit 25 of the device 20. The central processing unit consist of a processor and memory for storing and executing the code to enable the method in the first aspect of the invention.
While the disclosure has been illustrated and described in detail in the drawings and foregoing description, such illustration and description are to be considered illustrative or exemplary and not restrictive; the disclosure is not limited to the disclosed embodiments.
For example, it is possible to perform the several steps of the method on several devices, e.g. on a distributed system, a hybrid solution, remote and/or local devices, cloud bases architectures, etc.
Other variations to the disclosed embodiments can be understood and effected by those skilled in the art in practicing the claimed invention, from a study of the drawings, the disclosure, and the appended claims. In the claims, the word "comprising" does not exclude other elements or steps, and the indefinite article "a" or "an" does not exclude a plurality. A single processor or other unit may fulfil the functions of several items recited in the claims. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measured cannot be used to advantage. A computer program may be stored/distributed on a suitable medium, such as an optical storage medium or a solid-state medium supplied together with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless telecommunication systems. Any reference signs in the claims should not be construed as limiting the scope thereof.

Claims (22)

1. Werkwijze voor het transformeren, door een legacy software transformatie server, van een legacy gegevenscentrisch computerprogrammaproduct met legacy programmacode ingericht om te worden uitgevoerd op een legacy systeem naar een moderne computerprogrammaproduct met moderne programmacode ingericht om te worden uitgevoerd op een moderne systeem, waarbij de legacy software transformatie server is ingericht voor het uitvoeren van de registratie stappen van: het verschaffen, aan ten minste één computer van het legacy systeem, van een legacy opname routine ingericht voor het opnemen frontend data en backend data gedurende een gebruiksperiode van het legacy systeem, de geregistreerde frontend data tenminste omvattende één of meer schermafdrukken van een applicatie die op de ten minste ene computer van het legacy systeem wordt uitgevoerd en invoergegevens omvat van een gebruiker van de ten minste ene computer van het legacy systeem in de applicatie, en de geregistreerde backend data tenminste databasetransacties omvat die uitgevoerd zijn op een database van het legacy systeem ; het verkrijgen, van een database schema van de databank van het legacy systeem het verkrijgen, door ten minste één computer van het legacy systeem, van de geregistreerd frontend en backend data; waarbij de legacy software transformatie server verder is ingericht voor het uitvoeren van de analyse stappen van: het bepalen, door het analyseren van de geregistreerde backend data, van unieke database transacties; het bepalen, door het analyseren van de frontend data, van uniek schermen van de applicatie; het bepalen van een of meer unieke zones voor elke unieke scherm; het bepalen van een of meer dynamisch en statisch gegevensveld binnen elke unieke zone; het bepalen van een of meer unieke logische routines binnen het ten minste ene dynamisch gegevensveld, waarbij logische routines overeenkomen met ten minste één unieke databasetransactie; het bepalen voor elke logische routine of de logische routine een CRUD (maken, lezen, bijwerken, verwijderen) logische functie of complexe logica routines zoals een berekening omvat; het bepalen van een logische functie voor elke unieke logische routine, waarbij de CRUD logische functies worden bepaald door een gegevensinvoer te vergelijken met een databasetransactie uitgevoerd in reactie op de gegevensinvoer, en waarin de complexe logische routines worden bepaald door machine lering, door iteratief analyseren van verschillende gegevensinvoer met één of meer databasetransacties uitgevoerd in reactie op de gegevensinvoer; en waarbij de legacy software transformatie server verder is ingericht voor het uitvoeren van de ontwikkelstappen van: het creëren op ten minste één computer van het moderne systeem van een database met een databaseschema dat overeenkomt met het verkregen databaseschema en het kopiëren van gegevens uit de database van het legacy systeem naar de database die aangemaakt is op de computer van het moderne systeem; het creëren van applicaties ingericht om te worden uitgevoerd op het moderne systeem, waarbij de applicaties overeenkomen met de bepaalde applicaties, omvattende Uls met schermen en gegevensvelden en bepaalde logica routines; en waarbij de legacy software transformatie server verder is ingericht voor het uitvoeren van de teststap van: het testen van de gecreëerde applicaties op het moderne computersysteem door het uitvoeren van testroutines omvattende het uitvoeren van elke unieke logica routine en het bepalen of de genoemde database transacties en gegevens in dynamische gegevensvelden op het modern systeem overeenkomen met de database transactie en gegevens die in de dynamische gegevensvelden op het legacy systeem.A method for transforming, by a legacy software transformation server, a legacy data-centric computer program product with legacy program code adapted to be executed on a legacy system to a modern computer program product with modern program code adapted to be executed on a modern system, wherein legacy software transformation server is arranged to perform the registration steps of: providing, to at least one computer of the legacy system, a legacy recording routine adapted to record frontend data and backend data during a usage period of the legacy system, the registered frontend data comprising at least one or more screen shots of an application that is executed on the at least one computer of the legacy system and comprises input data from a user of the at least one computer of the legacy system in the application, and the registered backend dates least database transactions that have been performed on a legacy system database; obtaining a database scheme from the database of the legacy system obtaining, by at least one computer of the legacy system, the registered frontend and backend data; wherein the legacy software transformation server is further adapted to perform the analysis steps of: determining, by analyzing the recorded backend data, unique database transactions; determining, by analyzing the frontend data, unique screens of the application; determining one or more unique zones for each unique screen; determining one or more dynamic and static data field within each unique zone; determining one or more unique logical routines within the at least one dynamic data field, logical routines corresponding to at least one unique database transaction; determining for each logical routine whether the logical routine comprises a CRUD (create, read, update, delete) logical function or complex logic routines such as a calculation; determining a logic function for each unique logic routine, wherein the CRUD logic functions are determined by comparing a data entry with a database transaction performed in response to the data entry, and wherein the complex logic routines are determined by machine learning, by iteratively analyzing different data entry with one or more database transactions performed in response to the data entry; and wherein the legacy software transformation server is further adapted to perform the development steps of: creating on at least one computer of the modern system a database with a database scheme corresponding to the obtained database scheme and copying data from the database of the legacy system to the database that is created on the computer of the modern system; creating applications configured to run on the modern system, the applications corresponding to the particular applications, including Uls with screens and data fields and certain logic routines; and wherein the legacy software transformation server is further adapted to perform the test step of: testing the created applications on the modern computer system by performing test routines comprising performing each unique logic routine and determining whether said database transactions and data in dynamic data fields on the modern system correspond to the database transaction and data in the dynamic data fields on the legacy system. 2. De werkwijze van het transformeren volgens conclusie 1, waarbij voorafgaand aan de genoemde stappen van het analyseren, de legacy software transformatie server verder is ingericht voor het uitvoeren van de volgende stappen van: het voorbewerking van de verkregen geregistreerd frontend en backend data, waarbij de voorbewerking bij voorkeur één of meer omvat van verdelen van de gegevens in frontend en backend gegevens, het verdelen in gebruikersinvoer en schermafdrukken, het verdelen van schermafdrukken in afzonderlijke schermen.The method of transforming according to claim 1, wherein prior to said analyzing steps, the legacy software transformation server is further configured to perform the following steps of: pre-processing the obtained registered frontend and backend data, wherein the pre-processing preferably comprises one or more of dividing the data into frontend and backend data, dividing into user input and screenshots, dividing screenshots into separate screens. 3 De werkwijze van het transformeren volgens één van de voorgaande conclusies, waarbij de legacy software transformatie server verder is ingericht voor het uitvoeren van de volgende stappen van: het voor elk scherm bepalen van een functie-definitie tenminste omvattende een functienaam verklaring en een tabel van de database relatie.The method of transforming according to any of the preceding claims, wherein the legacy software transformation server is further adapted to perform the following steps of: determining a function definition for each screen at least comprising a function name statement and a table of the database relationship. 4. De werkwijze van het transformeren volgens één van de voorgaande conclusies, waarbij één of meer van de genoemde stappen van het bepalen van unieke databasetransacties, uniek schermen, unieke gebieden van de schermen, dynamische gegevensvelden, statische gegevensvelden en logica routines automatisch door genoemde transformatie server worden uitgevoerd.The method of transforming according to any of the preceding claims, wherein one or more of said steps of determining unique database transactions, unique screens, unique areas of the screens, dynamic data fields, static data fields and logic routines automatically through said transformation server. 5. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij de legacy software transformatie server is ingericht om een gebruikersinvoer te ontvangen voor het valideren van ten minste één van de bepalingen van een of meer unieke bepaalde databasetransacties, uniek schermen, unieke zones van schermen, dynamische gegevensvelden, statische gegevensvelden en logica routines.The method of transforming according to any of the preceding claims, wherein the legacy software transformation server is arranged to receive a user input for validating at least one of the determinations of one or more uniquely determined database transactions, unique screens, unique zones of screens, dynamic data fields, static data fields and logic routines. 6. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij de legacy opname routine is ingericht om voor het ontvangen ten behoeve van het verwerken door de transformatie server, van additionele interfaces, handleidingen, batchverwerkingsopdrachten door de legacy registratie routine.The method of transforming according to any of the preceding claims, wherein the legacy recording routine is arranged to receive additional interfaces, manuals, batch processing commands through the legacy registration routine for processing by the transformation server. 7. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij het moderne computerprogrammaproduct is ingericht als een web gebaseerd client-serversysteem.The method of transforming according to any of the preceding claims, wherein the modern computer program product is arranged as a web based client server system. 8. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij de legacy software transformatie server verder is ingericht voor het uitvoeren van de volgende stappen van: het opslaan van elk unieke logische routine vastgesteld gedurende de stappen van het analyseren op een opslagmiddel zoals een database, en waarbij de transformatie server verder is ingericht voor hergebruik van unieke logische routines opgeslagen in de database in verder legacy software transformatie processen.The method of transforming according to any of the preceding claims, wherein the legacy software transformation server is further configured to perform the following steps of: storing each unique logical routine determined during the steps of analyzing on a storage means such as a database, and wherein the transformation server is further adapted to reuse unique logical routines stored in the database in further legacy software transformation processes. 9. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij een uitvoering van de machine lering bij het bepalen van logische functies van unieke logische routines wordt verhoogd door het opslaan van elk unieke logische routine die bepaald is gedurende de stappen van het analyseren op een opslagmiddel zoals een database en door het analyseren van overeenkomstige opgeslagen unieke logica routine van meerdere verdere legacy software transformatie processen.The method of transforming according to any of the preceding claims, wherein an implementation of the machine teaching in determining logic functions of unique logic routines is increased by storing each unique logic routine determined during the steps of the analysis on a storage means such as a database and by analyzing corresponding stored unique logic routine of multiple further legacy software transformation processes. 10. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij tekst van een gebruikersinterface van het computerprogrammaproduct van het legacy systeem bepaald wordt door OCR routines, en waarbij de OCR-routines worden uitgevoerd door de transformatie server of met behulp van een externe server.The method of transforming according to any of the preceding claims, wherein text from a user interface of the legacy system computer program product is determined by OCR routines, and wherein the OCR routines are performed by the transformation server or by an external server. 11. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij de legacy software transformatie server is ingericht voor het verschaffen van een legacy registratie routine voor frontend gegevensregistratie naar één of meer van de cliënt computer van het legacy systeem en een legacy registratie routine voor backend gegevensregistratie verschaft aan een of meer server van het legacy systeem.The method of transforming according to any of the preceding claims, wherein the legacy software transformation server is arranged to provide a legacy registration routine for frontend data registration to one or more of the client computer of the legacy system and a legacy registration routine for backend data registration provided to one or more server of the legacy system. 12. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij de stap van het analyseren van de geregisterde frontend gegevens het bepalen omvat van eigenschappen van de gebruikersinterface van ten minste één of meer van de groep omvattende UI layout positie van statische gegevensvelden in de UI, de positie van dynamische gegevensvelden in de UI, datatype van de gegevensvelden, de relaties tussen de gebruikersinterface en een verdere UI, actieve knoppen binnen de UI, declaraties van de genoemde gegevensvelden.The method of transforming according to any of the preceding claims, wherein the step of analyzing the registered frontend data comprises determining user interface properties of at least one or more of the group comprising UI layout position of static data fields in the UI, the position of dynamic data fields in the UI, data type of the data fields, the relationships between the user interface and a further UI, active buttons within the UI, declarations of said data fields. 13. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij de stap van het bepalen van de zones het bepalen omvat van een betrouwbaarheidsniveau van automatische herkenning van gegevensvelden van de zones en waarin voor gegevensvelden die voorzien zijn van een bepaalde niveau van betrouwbaarheid onder een vooraf bepaalde drempel de gegevensvelden worden gelabeld voor handmatige validatie, en de werkwijze verder de stap omvat van het verschaffen aan een gebruiker van de legacy software transformatie server ten behoeve van handmatige validatie met de gegevensvelden voor manuele validatie en het verkrijgen van de gebruiker van een invoerwaarde of de gegevensvelden juist herkend zijn.The method of transforming according to any of the preceding claims, wherein the step of determining the zones comprises determining a confidence level of automatic recognition of data fields of the zones and wherein for data fields provided with a certain level of reliability below a predetermined threshold the data fields are labeled for manual validation, and the method further comprises the step of providing a user of the legacy software transformation server for manual validation with the data fields for manual validation and acquiring the user from an input value or the data fields are recognized correctly. 14. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij de stap van het analyseren van de verkregen backend geregistreerde gegevens voor het bepalen van de gegevensbestandtransacties het bepalen omvat van een transactietype voor de transactie waarbij het transactietype in het bijzonder één van de groep betreft omvattende een batch transactie, interface transactie, gebruiker transactie of overige transactie.The method of transforming according to any one of the preceding claims, wherein the step of analyzing the obtained backend recorded data for determining the database transactions comprises determining a transaction type for the transaction wherein the transaction type in particular one of the group includes a batch transaction, interface transaction, user transaction or other transaction. 15. De werkwijze van het transformeren volgens een van de voorgaande conclusies, waarbij de stap van het analyseren van de verkregen backend registreerde gegevens voor het bepalen van de gegevensbestandtransacties het differentiëren omvat van de transacties in CRUD functionaliteit en complexe transacties.The method of transforming according to any of the preceding claims, wherein the step of analyzing the obtained backend recorded data to determine the database transactions comprises differentiating the transactions into CRUD functionality and complex transactions. 16. De werkwijze van het transformeren volgens één van de voorgaande conclusies, waarbij de stap van het bepalen van de unieke logische routines het bepalen omvat van een mate van betrouwbaarheid van automatische herkenning van logica routines en waarbij voor logische routines met een bepaald niveau registratie betrouwbaarheid onder een vooraf bepaalde drempelwaarde de logische routines gelabeld zijn voor handmatige validatie, en de werkwijze verder de stap omvat van het verschaffen aan een gebruiker van de legacy software transformatie server ten behoeve van de handmatige validatie, van de logische routines die gelabeld zijn voor handmatige validatie en het verkrijgen van de gebruiker van een invoerwaarde of de logische routines correct herkend zijn.The method of transforming according to any of the preceding claims, wherein the step of determining the unique logic routines comprises determining a degree of reliability of automatic recognition of logic routines and wherein for logic routines with a certain level of registration reliability below a predetermined threshold value the logical routines are labeled for manual validation, and the method further comprises the step of providing a user of the legacy software transformation server for manual validation, of the logical routines that are labeled for manual validation and obtaining from the user an input value if the logical routines are correctly recognized. 17. De werkwijze van het transformeren volgens één van de voorgaande conclusies, waarbij de legacy software transformatie server voor elke stap van de werkwijze die wordt uitgevoerd sequentiële voortgangsindicatie waarde definieert en waarbij de voortgangsindicatie waarde wordt gepresenteerd aan een gebruiker van de legacy software transformatie server voor het bepalen van de voortgang van de transformatie van de legacy software.The method of transforming according to any one of the preceding claims, wherein the legacy software transformation server defines sequential progress indication value for each step of the method that is executed and the progress indication value is presented to a user of the legacy software transformation server for determining the progress of the transformation of the legacy software. 18. De werkwijze van het transformeren volgens één van de voorgaande conclusies, waarbij de legacy software transformatie server een database omvat met een aantal databasetransacties en unieke logische routines bepaald gedurende de stappen van het analyseren.The method of transforming according to any of the preceding claims, wherein the legacy software transformation server comprises a database with a number of database transactions and unique logical routines determined during the steps of the analysis. 19. De werkwijze voor het transformeren volgens conclusie 18, waarbij de legacy software transformatie server is ingericht om een hashwaarde te genereren voor elke transactie en elke unieke logische routine die opgeslagen is in de database en waarbij de hashwaade eveneens is opgeslagen in de database.The method of transforming according to claim 18, wherein the legacy software transformation server is arranged to generate a hash value for each transaction and each unique logical routine stored in the database and wherein the hashwaade is also stored in the database. 20. De werkwijze voor het transformeren volgens conclusie 18, waarbij de legacy software transformatie server is ingericht voor het vergelijken, voorafgaand aan het opslaan, van de transactie met de unieke logische routine in het databestand waarbij een hashwaarde wordt gegenereerd voor een unieke transactie of een unieke logische routine aanwezig in de database en het opslaan van de unieke transactie of een unieke logische routines waarvoor een overeenkomstige hashwaarde in de database afwezig is.The method of transforming according to claim 18, wherein the legacy software transformation server is arranged to compare, prior to storing, the transaction with the unique logical routine in the data file where a hash value is generated for a unique transaction or a unique logical routine present in the database and storing the unique transaction or unique logical routines for which a corresponding hash value is absent in the database. 21. Een legacy software transformatie server, voor het transformeren, door de legacy software transformatie server van een legacy gegevenscentrisch computerprogrammaproduct met legacy programmacode ingericht om te worden uitgevoerd op een legacy systeem naar een moderne computerprogrammaproduct met moderne programmacode ingericht om te worden uitgevoerd op een moderne systeem, de legacy software transformatie server omvattende een registratie module ingericht voor: het verschaffen, aan ten minste één computer van het legacy systeem, van een legacy opname routine ingericht voor het opnemen frontend data en backend data gedurende een gebruiksperiode van het legacy systeem, de geregistreerde frontend data tenminste omvattende één of meer schermafdrukken van een applicatie die op de ten minste ene computer van het legacy systeem wordt uitgevoerd en invoergegevens omvat van een gebruiker van de ten minste ene computer van het legacy systeem in de applicatie, en de geregistreerde backend data tenminste databasetransacties omvat die uitgevoerd zijn op een database van het legacy systeem ; het verkrijgen, van een database schema van de databank van het legacy systeem het verkrijgen, door ten minste één computer van het legacy systeem, van de geregistreerd frontend en backend data; waarbij de legacy software transformatie server een analyse module omvat die is ingericht voor het uitvoeren van de analyse stappen van: het bepalen, door het analyseren van de geregistreerde backend data, van unieke database transacties; het bepalen, door het analyseren van de frontend data, van uniek schermen van de applicatie; het bepalen van een of meer unieke zones voor elke unieke scherm; het bepalen van een of meer dynamisch en statisch gegevensveld binnen elke unieke zone; het bepalen van een of meer unieke logische routines binnen het ten minste ene dynamisch gegevensveld, waarbij logische routines overeenkomen met ten minste één unieke databasetransactie; het bepalen voor elke logische routine of de logische routine een CRUD (maken, lezen, bijwerken, verwijderen) logische functie of complexe logica routines zoals een berekening omvat; het bepalen van een logische functie voor elke unieke logische routine, waarbij de CRUD logische functies worden bepaald door een gegevensinvoer te vergelijken met een databasetransactie uitgevoerd in reactie op de gegevensinvoer, en waarin de complexe logische routines worden bepaald door machine lering, door iteratief analyseren van verschillende gegevensinvoer met één of meer databasetransacties uitgevoerd in reactie op de gegevensinvoer; en waarbij de legacy software transformatie server een ontwikkelmodule omvat die is ingericht voor het uitvoeren van de ontwikkelstappen van: het creëren op ten minste één computer van het moderne systeem van een database met een databaseschema dat overeenkomt met het verkregen databaseschema en het kopiëren van gegevens uit de database van het legacy systeem naar de database die aangemaakt is op de computer van het moderne systeem; het creëren van applicaties ingericht om te worden uitgevoerd op het moderne systeem, waarbij de applicaties overeenkomen met de bepaalde applicaties, omvattende Uls met schermen en gegevensvelden en bepaalde logica routines; en waarbij de legacy software transformatie server een test module omvat die is ingericht voor het uitvoeren van de teststap van: het testen van de gecreëerde applicaties op het moderne computersysteem door het uitvoeren van testroutines omvattende het uitvoeren van elke unieke logica routine en het bepalen of de genoemde database transacties en gegevens in dynamische gegevensvelden op het modern systeem overeenkomen met de database transactie en gegevens die in de dynamische gegevensvelden op het legacy systeem.21. A legacy software transformation server, for transforming, by the legacy software transformation server from a legacy data-centric computer program product with legacy program code arranged to be executed on a legacy system to a modern computer program product with modern program code arranged to be executed on a modern system, the legacy software transformation server comprising a registration module arranged for: providing, at least one computer of the legacy system, a legacy recording routine arranged for recording frontend data and backend data during a period of use of the legacy system, the registered frontend data comprising at least one or more screen shots of an application that is executed on the at least one computer of the legacy system and comprises input data of a user of the at least one computer of the legacy system in the application, and the registered backend data comprises at least database transactions performed on a database of the legacy system; obtaining a database scheme from the database of the legacy system obtaining, by at least one computer of the legacy system, the registered frontend and backend data; wherein the legacy software transformation server comprises an analysis module that is adapted to perform the analysis steps of: determining, by analyzing the recorded backend data, unique database transactions; determining, by analyzing the frontend data, unique screens of the application; determining one or more unique zones for each unique screen; determining one or more dynamic and static data field within each unique zone; determining one or more unique logical routines within the at least one dynamic data field, logical routines corresponding to at least one unique database transaction; determining for each logical routine whether the logical routine comprises a CRUD (create, read, update, delete) logical function or complex logic routines such as a calculation; determining a logic function for each unique logic routine, wherein the CRUD logic functions are determined by comparing a data entry with a database transaction performed in response to the data entry, and wherein the complex logic routines are determined by machine learning, by iteratively analyzing different data entry with one or more database transactions performed in response to the data entry; and wherein the legacy software transformation server comprises a development module adapted to perform the development steps of: creating on at least one computer of the modern system a database with a database scheme corresponding to the obtained database scheme and copying data from the database from the legacy system to the database created on the computer of the modern system; creating applications configured to run on the modern system, the applications corresponding to the particular applications, including Uls with screens and data fields and certain logic routines; and wherein the legacy software transformation server comprises a test module configured to perform the testing step of: testing the created applications on the modern computer system by performing test routines comprising performing each unique logic routine and determining whether the said database transactions and data in dynamic data fields on the modern system correspond to the database transaction and data stored in the dynamic data fields on the legacy system. 22. Een computerprogrammaproduct omvattende een computer leesbaar medium dat voorzien is van computer programmacode die opgeslagen is op een niet-vluchtig geheugen voor het een processor de werkwijze doen laten uitvoeren volgens één van de voorgaande conclusies 1-19.A computer program product comprising a computer readable medium provided with computer program code stored on a non-volatile memory for causing a processor to perform the method according to any of the preceding claims 1-19.
NL2017709A 2016-11-02 2016-11-02 A method of and system for transforming legacy computer programs. NL2017709B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
NL2017709A NL2017709B1 (en) 2016-11-02 2016-11-02 A method of and system for transforming legacy computer programs.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
NL2017709A NL2017709B1 (en) 2016-11-02 2016-11-02 A method of and system for transforming legacy computer programs.

Publications (1)

Publication Number Publication Date
NL2017709B1 true NL2017709B1 (en) 2018-05-18

Family

ID=58402098

Family Applications (1)

Application Number Title Priority Date Filing Date
NL2017709A NL2017709B1 (en) 2016-11-02 2016-11-02 A method of and system for transforming legacy computer programs.

Country Status (1)

Country Link
NL (1) NL2017709B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060235899A1 (en) * 2005-03-25 2006-10-19 Frontline Systems, Inc. Method of migrating legacy database systems
US20110153530A1 (en) * 2009-12-22 2011-06-23 Software Ag Method and system for analyzing a legacy system based on trails through the legacy system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060235899A1 (en) * 2005-03-25 2006-10-19 Frontline Systems, Inc. Method of migrating legacy database systems
US20110153530A1 (en) * 2009-12-22 2011-06-23 Software Ag Method and system for analyzing a legacy system based on trails through the legacy system

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A SULAIMAN: "The CRUD Cube", WIT TRANSACTIONS ON INFORMATION AND COMMUNICATION TECHNOLOGIES, vol. 29, 1 January 2003 (2003-01-01), XP055379440, ISSN: 1743-3517 *
ANONYMOUS: "Create, read, update and delete - Wikipedia", 27 October 2016 (2016-10-27), XP055379463, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=Create,_read,_update_and_delete&oldid=746408761> [retrieved on 20170608] *
DI FRANCESCOMARINO C ET AL: "Reverse Engineering of Business Processes exposed as Web Applications", SOFTWARE MAINTENANCE AND REENGINEERING, 2009. CSMR '09. 13TH EUROPEAN CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 24 March 2009 (2009-03-24), pages 139 - 148, XP031448026, ISBN: 978-0-7695-3589-0 *
INÊS COIMBRA MORGADO ET AL: "GUI reverse engineering with machine learning", REALIZING AI SYNERGIES IN SOFTWARE ENGINEERING, IEEE PRESS, 445 HOES LANE, PO BOX 1331, PISCATAWAY, NJ 08855-1331 USA, 5 June 2012 (2012-06-05), pages 27 - 31, XP058057562, ISBN: 978-1-4673-1753-5, DOI: 10.1109/RAISE.2012.6227966 *

Similar Documents

Publication Publication Date Title
US10423403B1 (en) Utilizing a machine learning model to predict metrics for an application development process
JP7398068B2 (en) software testing
Lenarduzzi et al. The technical debt dataset
US10860312B1 (en) Defect ownership assignment system and predictive analysis for codebases
US20210279577A1 (en) Testing of Computing Processes Using Artificial Intelligence
US11907107B2 (en) Auto test generator
US11790256B2 (en) Analyzing test result failures using artificial intelligence models
US11954461B2 (en) Autonomously delivering software features
US11733975B1 (en) System and method for migrating legacy software to a system common architecture
Jia et al. An empirical study on bugs inside tensorflow
KR20210148346A (en) Automated identification of code changes
US11651272B2 (en) Machine-learning-facilitated conversion of database systems
US20190303115A1 (en) Automated source code sample adaptation
Dam et al. DeepSoft: A vision for a deep model of software
US10929159B2 (en) Automation tool
Schlie et al. Clustering variation points in matlab/simulink models using reverse signal propagation analysis
US11853196B1 (en) Artificial intelligence driven testing
NL2017709B1 (en) A method of and system for transforming legacy computer programs.
US11599454B2 (en) Natural language processing (NLP)-based cross format pre-compiler for test automation
Panikkar et al. Operationalizing machine learning in processes
US20220309335A1 (en) Automated generation and integration of an optimized regular expression
Siavvas et al. A self-adaptive approach for assessing the criticality of security-related static analysis alerts
NL2027854B1 (en) Automatic testing of interrelated components of a software application
Dwarakanath et al. Software Defect Prediction Using Deep Semantic Feature Learning
Eng et al. Predicting Defective Visual Code Changes in a Multi-Language AAA Video Game Project