Wednesday, June 30, 2021

Forward Engineering vs Reverse Engineering


 

Introduction:

The process through which a detailed model is transformed into executable code is termed forwarding engineering. It is also known as Renovation and Reclamation. After converting to code, much information including small and in-depth details are lost because till now no programming language is richer in context as compared to UML.

On the other hand, as the name suggests, reverse engineering is the opposite of forward engineering. In reverse engineering, the application is broken down into different small modules to extract knowledge of its architecture. It often takes less time to develop. [1]

Now we have a basic concept about forward and reverse engineering, we can dive into a detailed discussion with reference to UML.

 [2] Unified Modeling Language (UML) has been the standard notation for modeling object-oriented software systems since  1997. UML diagrams are important for maintainers of a system, especially when the software was developed by a different team. [2]

Unified Modeling Language:

  Unified Modeling Language, is a standardized modeling language containing an integrated set of diagrams, developed to help system and software developers the undertaking, figuring, building, and documenting the pavements of software systems. UML provides its users with a ready-to-use, extensive visual modeling language so they can develop their business requirements in globally accepted standard notation. In addition to this, it provides broad scope and specialization mechanisms to elaborate the core concepts. It doesn't bound its user to stick with some particular programming language or tool. It provides support to multiple programming languages and tools which will be discussed later.

[3] UML can be categorized as:

1) Structure Diagrams

2) Behaviour Diagrams

Structure Diagrams:

Seven types of structure diagrams are as follows:

Class Diagram

Component Diagram

Deployment Diagram

Object Diagram

Package Diagram

Composite Structure Diagram

Profile Diagram

Behavior Diagrams:

Different types of behavior diagrams are as follows:

Use Case Diagram

Activity Diagram

State Machine Diagram

Sequence Diagram

Communication Diagram

Interaction Overview Diagram

Timing Diagram [3]

Matrerial and Method:

   Tools:

·         Microsoft  Visual  Studio is highly  common  graphical  IDE  with support for C, C++, C#, and VB.[3]

        • Rational  Rose,  a  specialized  modeling  tool  for  system  architectures based on UML, included for manual UML-modeling and as “standard” only. Unfortunately Rose does not support neither forward nor reverse engineering support for C #. [3]

        • PowerDesigner v11.0, a tool for modeling of data systems with the aid of UML.[3]

        • Visual  Paradigm  v2.1.  VP  SDE  is  made  for  UML-modeling  and  integration  with  Visual  Studio,  but  lacked support for the 2005 version of Visual Studio. It was therefore tested together with the installation of MS Visual Studio.[3]

·          Gliffy is an online cloud-based UML tool for browsers. It includes all types of diagrams such as flowcharts, Venn diagrams and UML diagrams. This tool is suitable when you are working in teams. It is a premium tool i-e after 14 days free trial, user need needs to pay for certain features.[4]

·         ArgoUML has been one of the most prominent open-source UML desktop applications. It is no longer maintained widely nowadays due to its limited scope but it is still used for smaller projects. ArgoUML supports a considerable range of programming languages whose code can be generated from a diagram. Reverse engineering is also possible for Java, C++, PHP, C#, and SQL. The program also recognizes other languages such as Delphi or Ruby when you add them to the ArgoUML file folder as extensions.[4]

UML-Modeling:

Class Diagrams are created according to provided data of classes, methods and return types. User can add classes, methods, parameters etc. through drag and drop from relevant menus. Talking about Visual Studio in particular, it has less functionality of other UML diagrams as compared to Class diagram. The reason is that Visual Studio Is an IDE and is designed for representing the models in notation that is closely related to executeable code. Visual  Paradigm is integrated into an IDE (Visual Studio), which allows full scale modeling  and  programming  within  the  same  environment.  Code  generation  is  done  in  real-time  in  Visual  Paradigm and Visual Studio. [2]

 UML-based code generation:

 Out of all mentioned tools above, Visual  Studio,  PowerDesigner  and  Visual  Paradigm  supports  C#  generation. Standard data types are also supported in generated code. “DataSet” and “ArrayList” are treated as especially defined data types. Microsoft Visual Studio automatically  generates  the main  method,  which  adds  the  class  “Program”  that  contained this method.  Visual    Studio    and    Visual    Paradigm adds:    “throw new    System.NotImplementedException()”,   VirtualParadigm   SDE   adds:   “throw   new   System.Exception(“Not   implemented”)” while PowerDesigner only added the comment: “//TODO: Implement” .  [2]

Reverse Engineering:

 Visual  Paradigm did not  perform  the  UML-generation  due  to  an  internal  error, and not able to save the file in a correct format. t  Microsoft Visual Studio  presents  a  correct  class  diagram  after generating UML diagram. Furthermore, PowerDesigner is not able to generate 'modifier partial class' in class  diagram rather it generates an error message stating that PowerDesign doesn't support this functionality. [2]

Results:

An experiment was performed to test whether the use of UML influences maintenance in contrast to the use of only source code. The experiment was conducted between 20 professional software developers. Results showed that those who received UML diagrams require more time in code generation. UML also helped in generating efficient code when information about the scope of the system was limited. [5]

     Another experiment was conducted among 16 undergraduate students in order to test whether the comprehension of source code increases when participants are provided with UML class and sequence diagrams produced in the software. Results showed that participants comprehend source code better when it is added to class and sequence diagram together. [5]

A survey was conducted to check the amount of practice required to use UML in software development. A significant number of people participated in that survey. Results revealed that companies interviewed the people without keeing in view their proficiency in UML and actually intermediate level of expertise are required for using UML in software development. [5]

Conclusion & Discussion:

Different tools are tested for performing forward and reverse engineering. The modeling equipment which have been examined show, as expected, enormous similarities withinside the ensuing code and UML-diagrams. The finest variations are the ones connected to the individual tool’s fundamental focus. Microsoft Visual Studio is especially a software program improvement surroundings and as such does it lack a few of the state-of-the-art modeling techniques. Microsft Visual Studio 2005 .NET beta is likewise the primary model of Visual Studio that embody any modeling capability, and it best helps elegance diagrams (different modeling talents does not observe the UML popular and lays out of doors the scope of this article). Visual Paradigm differs from the fundamental flow modeling equipment in that experience that it's far integrated with Microsoft Visual Studio.

Unified Modeling Language is one of the fundamentals of software development. Before the use of this technique, the maintenance of code was literally a headache. Performing a change in even a small portion of code and handling that change was an uphill task. Since 1997, since the introduction of UML modeling, code maintenance has been improved and become efficient. UML provides complete understandings of business flow, software's key functionalities, application tiers, and integrated environment. For instance, if a certain level of the software engineering process, a change or update is required in the code or implementation model, we have every phase clear in front of us. We can pinpoint that particular area without disturbing the whole model.

 

Referrences:

1.    https://www.geeksforgeeks.org/difference-between-forward-engineering-and-reverse-engineering/#:~:text=In%20forward%20engineering%2C%20the%20application,collected%20from%20the%20given%20application.&text=Forward%20Engineering%20is%20high%20proficiency,engineering%20is%20low%20proficiency%20skill.

2.    https://www.researchgate.net/publication/276144909_A_Comparative_Study_of_Forward_and_Reverse_Engineering_in_UML_Tools

3.    https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-uml/

4.    https://www.ionos.com/digitalguide/websites/web-development/the-best-uml-tools/

5.    https://www.researchgate.net/requests/r80523810

No comments:

Post a Comment

Always be respectable and respect other's opinion. Criticism is acceptable but avoid using abusive language.

Forward Engineering vs Reverse Engineering

  Introduction: The process through which a detailed model is transformed into executable code is termed forwarding engineering. It is als...