scholarly journals Extracting UML Class Diagrams from Object-Oriented Fortran: ForUML

2015 ◽  
Vol 2015 ◽  
pp. 1-15 ◽  
Author(s):  
Aziz Nanthaamornphong ◽  
Jeffrey Carver ◽  
Karla Morris ◽  
Salvatore Filippone

Many scientists who implement computational science and engineering software have adopted the object-oriented (OO) Fortran paradigm. One of the challenges faced by OO Fortran developers is the inability to obtain high level software design descriptions of existing applications. Knowledge of the overall software design is not only valuable in the absence of documentation, it can also serve to assist developers with accomplishing different tasks during the software development process, especially maintenance and refactoring. The software engineering community commonly uses reverse engineering techniques to deal with this challenge. A number of reverse engineering-based tools have been proposed, but few of them can be applied to OO Fortran applications. In this paper, we propose a software tool to extract unified modeling language (UML) class diagrams from Fortran code. The UML class diagram facilitates the developers' ability to examine the entities and their relationships in the software system. The extracted diagrams enhance software maintenance and evolution. The experiments carried out to evaluate the proposed tool show its accuracy and a few of the limitations.

2019 ◽  
Vol 2019 ◽  
pp. 1-22
Author(s):  
Aziz Nanthaamornphong ◽  
Anawat Leatongkam

Recently, reverse engineering has become widely recognized as a valuable process for extracting system abstractions and design information from existing software. This study focuses on ForUML, a reverse engineering tool developed to extract UML diagrams from modern object-oriented Fortran programs. Generally, Fortran is used to implement scientific and engineering software in various domains, such as weather forecasting, astrophysics, and engineering design. However, methods for visualizing the existing design of object-oriented Fortran software are lacking. UML diagrams of Fortran software would be beneficial to scientists and engineers in explaining the structure and behavior of their programs at a higher level of abstraction than the source code itself. UML diagrams can enhance discussions within development teams and with the broader scientific community. The first version of ForUML produces only UML class diagrams. Class diagrams provide a useful window into the static structure of a program, including the structure and components of each class and the relationships between classes. However, class diagrams lack the temporal information required to understand class behavior and interactions between classes. UML sequence diagrams provide this important algorithmic information. Therefore, herein, an extension for ForUML to extract UML sequence diagrams from the Fortran code is proposed, and this capability is provided using a widely used open-source platform. This study argues that the proposed extension will enable the visualization of object-oriented Fortran software behavior and algorithmic structure and thereby enhance the development, maintenance practices, decision processes, and communications in scientific and engineering software communities worldwide.


2014 ◽  
Vol 599-601 ◽  
pp. 530-533
Author(s):  
Hong Hao Wang ◽  
Hui Quan Wang ◽  
Zhong He Jin

Due to the complex timing sequence of NAND flash, a unified design process is urgently required to guarantee the reliability of storage system of nano-satellite. Unified Modeling Language (UML) is a widely used high level modeling language for object-oriented design. This paper adopts the UML as the design and modelling tool in the low level storage system design to elaborate the UML application in each phase of design in detail. The result shows taking UML as the modelling tool results in a clear and unambiguity design, which promotes the reliability and quality of software. At last, the feasibility of object-oriented implementation in C is presented.


2012 ◽  
Vol 271-272 ◽  
pp. 636-640
Author(s):  
Yong Yong Sun ◽  
Guang Qiu Huang

The security of software is threatened by piracy, tampering and reverse engineering. Attackers attempt to get important algorithms and sensitive data of software by static analysis or reverse engineering. Software protection becomes an important problem. The algorithm of code obfuscation based on class splitting is proposed that uses of obfuscation technology. The definition of class splitting and realization on algorithm are described. At the same time, the performance on algorithm is analyzed. The obfuscation method enhances the degree of complication about program and static analysis becomes more difficult. The algorithm is applicable to object-oriented program with class structure.


2010 ◽  
Vol 1 (2) ◽  
Author(s):  
Paulus Mudjihartono ◽  
Findra Kartika Sari Dewi

 Abstract. Reverse Engineering of Object Oriented Code to Class Design Using Graph Data Structure. This time the software engineering methodology still follows the process of standard system development consisting of four phases of the system initialization, system analysis, system design, and system implementation. The phases occur sequentially so that the implementation is always done after the design is complete. This research is developing software Code Converter (COCON) to automate the conversion of object-oriented code to class design using graph data structures. COCON only requires an object-oriented code file as input and produce results in the form of a file containing a list of classes and relations between classes that read from input file. COCON help users to find out the class design of object-oriented code and becomes the basis for drawing class diagrams of object-oriented code. Keywords: reverse engineering, class design, relation, OOP, graph Abstrak. Pada saat ini metodologi rekayasa perangkat lunak masih mengikuti proses pengembangan sistem yang standar yang terdiri dari empat fase yakni inisialisasi sistem, analisis sistem, desain sistem dan implementasi sistem. Keempat fase tersebut terjadi secara berurutan sehingga fase implementasi selalu dilakukan setelah fase desain selesai. Penelitian ini membangun perangkat lunak Code Converter (COCON) yang berfungsi untuk mengotomasi konversi kode program berorientasi objek ke desain kelas dengan struktur data graf. COCON hanya membutuhkan sebuah berkas kode program berorientasi objek sebagai masukan dan memberikan hasil berupa sebuah berkas yang berisi daftar kelas dan relasi antar kelas yang dibaca dari berkas masukan. COCON membantu pengguna untuk mengetahui desain kelas dari kode program berorientasi objek dan menjadi dasar dalam  penggambaran diagram kelas dari kode berorientasi objek. Kata Kunci: rekayasa pembalikan, desain kelas, relasi, PBO, graf


Author(s):  
Terry Halpin

Since its adoption by the Object Management Group as a language for object-oriented analysis and design, the Unified Modeling Language (UML) has become widely used for designing object-oriented code. However, UML has had only minimal adoption among practitioners for the purposes of information analysis and database design. One main reason for this is that the class diagrams used in UML for data modeling provide only weak, and awkward, support for the kinds of business rules found in data-intensive applications. Moreover, UML’s graphical language does not lend itself readily to verbalization and multiple instantiation for validating data models with domain experts. These defects can be remedied by using a fact-oriented approach for information analysis, from which UML class diagrams may be derived. Object-Role Modeling (ORM) is currently the most popular fact-oriented modeling approach. This chapter examines the relative strengths and weaknesses of UML and ORM for conceptual data modeling, and indicates how models in one notation can be translated into the other.


Author(s):  
Eduardo B. Fernandez ◽  
Jie Wu ◽  
Debera R. Hancock

Many methodologies for software modeling and design include some form of static and dynamic modeling to describe the structural and behavioral views respectively. Modeling and design of complex real-time software systems requires notations for describing concurrency, asynchronous event handling, communication between independent machines, timing properties. Dynamic modeling of real time systems using object-oriented methodologies requires extensions to the traditional state machine notations in order to convey the real-time system characteristics and constraints. This chapter proposes an object-oriented analysis and design methodology that augments the traditional UML (Unified Modeling Language) dynamic model with real-time extensions based on high-level parallel machines and communication notations from CRSM (Communicating Real-Time State Machines). An example of the proposed methodology is provided using a realistic example of an automated passenger train system.


Author(s):  
Robert Lipman

The STEP File Analyzer is a software tool that generates a spreadsheet or a set of CSV (comma-separated value) files from a STEP (ISO 10303 –STandard for Exchange of Product model data) Part 21 file. STEP files are used to represent product and manufacturing information (PMI) and for data exchange and interoperability between Computer-Aided Design (CAD), Manufacturing (CAM), Analysis (CAE), and Inspection (CMM) software related to the smart manufacturing digital thread. STEP is also used for the long-term archiving and retrieval of product data. A spreadsheet simplifies inspecting information from the STEP file at an entity and attribute level. Typical STEP file viewers show a 3D visualization of the part or model represented by the STEP file. The viewers usually have a high-level hierarchical display of the information in the STEP file where the user can drill down to individual attributes of parts. However, there is no way to view all of the actual STEP entities and their attributes at once. The STEP File Analyzer provides this capability by creating a spreadsheet from the STEP file. The STEP File Analyzer also generates reports for PMI Representation, PMI Presentation, and Validation Properties based on Recommended Practices defined by the CAx Implementor Forum (CAx-IF) [5]. The objective of the CAx-IF is to advance CAx (mainly Computer-Aided Design and Engineering) software system STEP translator development and to ensure that user requirements for interoperability are satisfied.


Author(s):  
STEVE COUNSELL ◽  
PETE NEWSON ◽  
EMILIA MENDES

Comprehension of an object-oriented (OO) system, its design and use of OO features such as aggregation, generalisation and other forms of association is a difficult task to undertake without the original design documentation for reference. In this paper, we describe the collection of high-level class metrics from the UML design documentation of five industrial-sized C++ systems. Two of the systems studied were libraries of reusable classes. Three hypotheses were tested between these high-level features and the low-level class features of a number of class methods and attributes in each of the five systems. A further two conjectures were then investigated to determine features of key classes in a system and to investigate any differences between library-based systems and the other systems studied in terms of coupling. Results indicated that, for the three application-based systems, no clear patterns emerged for hypotheses relating to generalisation. There was, however, a clear (positive) statistical significance for all three systems studied between aggregation, other types of association and the number of methods and attributes in a class. Key classes in the three application-based systems tended to contain large numbers of methods, attributes, and associations, significant amounts of aggregation but little inheritance. No consistent, identifiable key features could be found in the two library-based systems; both showed a distinct lack of any form of coupling (including inheritance) other than through the C++ friend facility.


2012 ◽  
Vol 721 ◽  
pp. 307-312 ◽  
Author(s):  
Samuel Ratnajeevan Herbert Hoole ◽  
Thiruchelvam Arudchelvam ◽  
Janaka Wijayakulasooriya

The development of code for finite elements-based field computation has been going on at a pace since the 1970s, yielding code that was not put through the software lifecycle – where code is developed through a sequential process of requirements elicitation from the user/client to design, analysis, implementation and testing and release and maintenance. As a result, today we have legacy code running into millions of lines, implemented without planning and not using proper state-of-the-art software design tools. It is necessary to redo this code to exploit new object oriented facilities and make corrections or run on the web with Java. Object oriented code’s principal advantage is reusability. Recent advances in software make such reverse engineering/re-engineering of this code into object oriented form possible. The purpose of this paper is to show how existing finite element code can be reverse/re-engineered to improve it. Taking sections of working finite element code, especially matrix computation for equation solution as examples, we put it through reverse engineering to arrive at the effective UML design by which development was done and then translate it to Java. This then is the starting point for analyzing the design and improving it without having to throw away any of the old code. Using auto-translators and then visually rewriting parts by the design so revealed, has no match in terms of speed and efficiency of re-engineering legacy code.


Sign in / Sign up

Export Citation Format

Share Document