Reverse Engineering Object-Oriented Applications into High-Level Domain Models with Reoom

Author(s):  
Tuan Anh Nguyen ◽  
Christoph Csallner
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.


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.


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.


Author(s):  
Michael M. Tiller ◽  
Jonathan A. Dantzig

Abstract In this paper we discuss the design of an object-oriented framework for simulation and optimization. Although oriented around high-level problem solving, the framework defines several classes of problems and includes concrete implementations of common algorithms for solving these problems. Simulations are run by combining these algorithms, as needed, for a particular problem. Included in this framework is the capability to compute the sensitivity of simulation results to the different simulation parameters (e.g. material properties, boundary conditions, etc). This sensitivity information is valuable in performing optimization because it allows the use of gradient-based optimization algorithms. Also included in the system are many useful abstractions and implementations related to the finite element method.


Author(s):  
Liliana Favre ◽  
Liliana Martinez ◽  
Claudia Pereira

Software modernization is a new research area in the software industry that is intended to provide support for transforming an existing software system to a new one that satisfies new demands. Software modernization requires technical frameworks for information integration and tool interoperability that allow managing new platform technologies, design techniques, and processes. To meet these demands, Architecture-Driven Modernization (ADM) has emerged as the new OMG (Object Management Group) initiative for modernization. Reverse engineering techniques play a crucial role in system modernization. This chapter describes the state of the art in the model-driven modernization area, reverse engineering in particular. A framework to reverse engineering models from object-oriented code that distinguishes three different abstraction levels linked to models, metamodels, and formal specification is described. The chapter includes an analysis of technologies that support ADM standards and provides a summary of the principles that can be used to govern current modernization efforts.


IEEE Access ◽  
2019 ◽  
Vol 7 ◽  
pp. 158931-158950 ◽  
Author(s):  
Umair Sabir ◽  
Farooque Azam ◽  
Sami Ul Haq ◽  
Muhammad Waseem Anwar ◽  
Wasi Haider Butt ◽  
...  

2009 ◽  
pp. 2646-2664
Author(s):  
Juan José Olmedilla

The use of object-oriented (OO) architecture knowledge such as patterns, heuristics, principles, refactorings and bad smells improve the quality of designs, as Garzás and Piattini (2005) state in their study; according to it, the application of those elements impact on the quality of an OO design and can serve as basis to establish some kind of software design improvement (SDI) method. But how can we measure the level of improvement? Is there a set of accepted internal attributes to measure the quality of a design? Furthermore, if such a set exists will it be possible to use a measurement model to guide the SDI in the same way software processimprovement models (Humphrey, 1989; Paulk, Curtis, Chrissis, & Weber, 1993) are guided by process metrics (Fenton & Pfleeger, 1998)? Since (Chidamber & Kemerer, 1991) several OO metrics suites have been proposed to measure OO properties, such as encapsulation, cohesion, coupling and abstraction, both in designs and in code, in this chapter we review the literature to find out to which high level quality properties are mapped and if an OO design evaluation model has been formally proposed or even is possible.


Sign in / Sign up

Export Citation Format

Share Document