GENERATING UML CLASS DIAGRAM FROM SOURCE CODES USING

The traditional Software Development Life Cycle (SDLC) often includes four phases: analysis, design, implementation, and testing. Reverse engineering is the process of moving back those phases by analyzing the software system and then representing it at the higher levels of abstractions. The reverse engineering software process generates high level information from the implementation phase. This information includes generating several diagrams and specification documents that describe the implemented software. The UML class diagram represent a valuable source of information even after the delivery of the software. Class diagram extraction can be done either from software’s source code, or from the executable file. In the case of source code, a review of the current tools shows that many researchers have been extracting the UML class diagram from an object-oriented source code based on the sequential processing approach. In this research, a proposed approach for extracting a class diagram from the source code is presented. The proposed approach relies on multi-threading technique in the class diagram extraction which is representing the parallel processing. The motivation behind using multi-threading technique is that, it gives an advantage of faster processing to any software because the threads of the program naturally lend themselves to truly concurrent execution. In this research, a class diagram extraction using multithreading technique is designed and implemented using the C# programming language. The implemented approach is tested on three case studies that contain several types of entities and relationships between them. Testing results show that the time needed to extract class diagram using multi-threading technique for the tested three cases is less than the time needed in extracting the same class diagram without using multi-threading technique.

[1]  James E. Rumbaugh,et al.  Unified Modeling Language (UML) , 2010, Encyclopedia of Software Engineering.

[2]  Noraini Ibrahim An enhanced UML consistency checker using logical approach , 2013 .

[3]  M. O. Tokhi,et al.  Parallel computing for real-time signal processing and control , 2003 .

[4]  Richard V. McCarthy,et al.  Does UML make the grade? Insights from the software development community , 2005, Inf. Softw. Technol..

[5]  Rosziati Ibrahim,et al.  A Reverse Engineering System Requirements Tool , 2009 .

[6]  Alan R. Dennis Systems Analysis and Design , 1995 .

[7]  James R. Bell,et al.  Threaded code , 1973, CACM.

[9]  Michael L. Nelson A Survey of Reverse Engineering and Program Comprehension , 2005, ArXiv.

[10]  Richard Vidgen Requirements analysis and UML use cases and class diagrams , 2003 .

[11]  Andrew M. Sutton,et al.  Recovering UML class models from C++: A detailed explanation , 2007, Inf. Softw. Technol..

[12]  Devendra K. Tayal,et al.  On reverse engineering an object-oriented code into UML class diagrams incorporating extensible mechanisms , 2008, SOEN.

[13]  Scott Tilley,et al.  A Reverse-Engineering Environment Framework , 1998 .

[14]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[15]  Swapnil Soner,et al.  “Reverse engineering”: Extracting information from C++ code , 2010, 2010 2nd International Conference on Software Technology and Engineering.

[16]  Harald C. Gall,et al.  An evaluation of reverse engineering tool capabilities , 1998, J. Softw. Maintenance Res. Pract..

[17]  Peter J. Clarke,et al.  Reveal: a tool to reverse engineer class diagrams , 2002 .

[18]  David R. Butenhof Programming with POSIX threads , 1993 .

[19]  Roshan Ragel,et al.  Improving the throughput of the AES algorithm with multicore processors , 2012, 2012 IEEE 7th International Conference on Industrial and Information Systems (ICIIS).

[20]  Matthew Wright,et al.  Simply Scheme: Introducing Computer Science , 1994 .

[21]  Gerardo Canfora,et al.  New Frontiers of Reverse Engineering , 2007, Future of Software Engineering (FOSE '07).

[22]  Jeffrey Parsons,et al.  How UML is used , 2006, CACM.

[23]  Jeffrey C. Carver,et al.  Extracting UML class diagrams from object-oriented fortran: ForUML , 2015 .

[24]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[25]  Paolo Tonella,et al.  Reverse engineering of the UML class diagram from c++ code in presence of weakly typed containers , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[26]  Martin Keschenau,et al.  Reverse engineering of UML specifications from java programs , 2004, OOPSLA '04.

[27]  Surendranath Ramasubbu Reverse Software Engineering Large Object Oriented Software Systems using the UML Notation , 2001 .

[28]  G. Broll,et al.  Microsoft Corporation , 1999 .

[29]  Paolo Tonella,et al.  Reverse Engineering of Object Oriented Code , 2005, Monographs in Computer Science.

[30]  Tung Doan,et al.  An evaluation of four reverse engineering tools for C++ applications , 2008 .