||Abstracting code specific concepts to a graphical representation by pattern matching and refactoring
||Falster, Peter (Algorithms and Logic, Department of Informatics and Mathematical Modeling, Technical University of Denmark, DTU, DK-2800 Kgs. Lyngby, Denmark)
Frisvad, Jeppe Revall (Image Analysis and Computer Graphics, Department of Informatics and Mathematical Modeling, Technical University of Denmark, DTU, DK-2800 Kgs. Lyngby, Denmark)
||Technical University of Denmark, DTU, DK-2800 Kgs. Lyngby, Denmark
||This thesis deals with automatic analysis of Microsoft Dynamics NAV (NAV) application code. NAV (formerly Navision) is an advanced Enterprise Resource Planning (ERP) system like SAP and Axapta, which can handle anything from accounting to stock control for a company. NAV is customized to the individual enterprise using the application language C/AL. The NAV configuration application has grown incrementally, from version to version for more than 20 years, becoming a complex piece of software.
With the improvements that have emerged in languages and technologies, the NAV organization now stands before a number of choices. It is clear that the application code has to be reorganized, but it is unclear if the code should be kept in C/AL or moved to C#, because there are obvious benefits from both choices.
The aim of this thesis is to contribute to this process with knowledge, by uncovering what exists today and model some chosen suggestions for refactoring the present C/AL code.
Our approach is to identify, analyze, and implement recognition of software patterns in the NAV application code. The software patterns we focus on, define relations between objects.
The application code’s data model consists of table objects which, among other things, save all data for the enterprises. We use Unified Modeling Language (UML) diagrams to describe the relations we identify between tables. The concepts we identify are relationships which in UML terms are described as containment, aggregation, and generalization.
This gives the NAV organization an insight into which implications a change in one table object will have on other objects. An example of one of the relations we identify is the relation between the Customer table, which keeps information on all the company’s customers, and the Customer Bank Account table, which contains information regarding the customers’ bank accounts. From our analysis we can see that the existence of objects of the type Customer Bank Account is conditioned by the existence of a Customer object. This is described with the concept containment in UML.
We show that it is possible to analyze the application code and extract concepts which contribute with an overview of selected relations. Furthermore, we show that a graphic dynamic display of the relations is preferable. We have developed a good intuitive way to present our results, where it is possible to make sense of even very large diagrams with the provided filtering methods of the Concept Viewer tool.
We extended the project scope underway in the project, and examined the possibility of identifying specific concepts from the accounting ontology Resource, Events, and Agents (REA) in the C/AL code. We found that Events can easily be identified, but that the classification of Resources and Agents has some complications which require a refinement of the chosen approach.
||Technical University of Denmark (DTU) : Kgs. Lyngby, Denmark
Creation date: 2009-08-21
Update date: 2009-10-27