Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Live Software Development Environment for Java using Virtual Reality

JP
May 02, 2019

Live Software Development Environment for Java using Virtual Reality

Live Software Development Environment for Java using Virtual Reality presentation @ ENASE 2019, Crete, Greece

JP

May 02, 2019
Tweet

More Decks by JP

Other Decks in Research

Transcript

  1. Live Software Development Environment for Java using Virtual Reality Diogo

    Amaral, Gil Domingues, João Pedro Dias, Hugo Sereno Ferreira, Ademar Aguiar, Rui Nóbrega
  2. Outline 1. Introduction 2. Key Concepts and State-of-the-Art 3. Live

    VR Analysis System 4. Experiments & Results 5. Final Remarks
  3. Software Complexity • Any software system that has a considerable

    growing number of features will suffer from essential complexity, which makes the understanding of the software artifacts increasingly costly and time-consuming.
  4. Software Visualization • A key approach for reducing the software

    understanding complexity is the use of software visualizations techniques. CodeCity, Wettel et al.
  5. Live Programming & Liveness • Fundamental notion of liveness 

    Instead of having a traditional program development cycle involving four phases -- edit, compile, link, run -- there is only one phase with the program constantly running, even if various editing events occur. • Live programming, which embraces the concept of liveness, aims to ease the programming task by executing a program continuously during editing. • LISP machines, the Smalltalk language, and the Logo language
  6. Software Visualization • Mainly three approaches for software visualization: 

    Static  Dynamic  3D-based visualizations • Several examples of visualizations:  CodeCrawler: Software metric visualization from several reverse engineering tools.  Jinsight: Runtime data analysis.  Wettel et al. 3D representation of the architecture of software as a city. • Teyseyre et al. groups 3D representations in two: abstract visual or real- world representations.
  7. Structural and Dynamic Analysis • UML is an example of

    a high-level representation of a system's structure and behavior. • Feijs et al. Extract-Abstract-Present is a reference model for analysing architecture. • There are several strategies for extracting data, that can be summed as:  Reverse Engineering  Abstract Syntax Tree Analysis  Other Dynamic Analysis Approaches
  8. Virtual Reality • Virtual Reality (VR) is used to create

    the real or virtual simulations, applies the theory of immersion in a 3D virtual space where the senses resemble the real world. • Although still few software visualization tools use VR for comprehension tasks, there are some example, such as the VR City.
  9. High-Level Overview • Provide a VR environment to improve software

    comprehension through the visual representation of the software structure and runtime behavior.
  10. Extraction Framework • Software artifact metadata extracted with the framework

    (both static and dynamic) is then used by the visualization engine. • Reverse Engineering, Forward Engineering and Structural Analysis complemented with Runtime Analysis (AspectJ). • The framework is responsible for the extraction, storage, and distribution of information regarding a software project. • Key difference: Live changes, the ability to detect changes to the source code in real time and reanalyzing the changed elements.
  11. Visualization Engine • Combine liveness and virtual reality (VR). •

    The use of liveness increases and improves the feedback of the software that is transmitted to the user • City-based Metaphor:  Packages, classes, and invocations information are converted into districts, buildings, and connections. • Interaction Actions and Interface:  Pause  Start Live  Continue  Go back 1 Second
  12. Proof-of-Concept • Targeting the Java platform. • Plugin developed for

    Eclipse IDE. • Extract data from existent Java projects. • Represent it using a City Metaphor. • Interact with the visualization using a VR headset (HTC Vive or Oculus Rift). • The tangibility created with the city metaphor allows us to take a different stance on code understanding.
  13. Sample Projects • Maze Project:  Small project which allows

    easier verification while still having some degree of architectural complexity.  Used to test both the visualizations as well as the extraction framework. • JUnit Project:  Unit testing framework widely used in Java projects.,  Used only to test the extraction framework.d
  14. Results • The proper functioning of the static and dynamic

    analysis framework was paramount to the correct functioning of the visualization environment and as such, this visualization environment's validation can be correlated with the frameworks validation. • In order to validate the effectiveness of a live visualization environment two possible issues (not necessarily errors) were injected into the software, which does not appear as issues in a regular IDE: an infinite loop and an invocation with a number of null arguments greater than zero. • The visualization represented this two issues, preliminary validating the effectiveness static and dynamic analysis framework developed, as well as the visualization component.
  15. Main Contributions 1. A structural analysis tool for Java projects

    that can be included in any JDT enabled Eclipse IDE as a plug-in, capable of recognizing changes to several levels of the Java Model tree. 2. An execution analysis tool for Java projects that can be included in the relevant workspace and added to a project with minimal modifications to the concerning project required 3. A software repository ready to receive information from the previously mentioned analysis tools, and provide it in real-time to any external tools through an API. 4. A VR application that allows to create enriched experiences, such as interaction with objects or spatial movement in the generated virtual environment.
  16. Future Work • Addition of spatial and temporal interactions with

    a live software system through a VR platform. • Communication between the repository and the virtual environment engine sends all the static and dynamic information of the software system is performed unidirectionally, from the server to the engine. • A two-way communication would be an improvement to the current approach, where modifications in the virtual environment will be passed to the running system. • Further, several controlled experiments must be done to assert the usefulness of this work.