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

    View Slide

  2. Outline
    1. Introduction
    2. Key Concepts and State-of-the-Art
    3. Live VR Analysis System
    4. Experiments & Results
    5. Final Remarks

    View Slide

  3. Introduction

    View Slide

  4. 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.

    View Slide

  5. Software Visualization
    • A key approach for reducing the software understanding
    complexity is the use of software visualizations techniques.
    CodeCity, Wettel et al.

    View Slide

  6. Key Concepts and State-of-the-Art

    View Slide

  7. 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

    View Slide

  8. 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.

    View Slide

  9. 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

    View Slide

  10. 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.

    View Slide

  11. Live VR Analysis System

    View Slide

  12. High-Level Overview
    • Provide a VR environment to improve software comprehension through the
    visual representation of the software structure and runtime behavior.

    View Slide

  13. 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.

    View Slide

  14. 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

    View Slide

  15. 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.

    View Slide

  16. Experiments & Results

    View Slide

  17. 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

    View Slide

  18. Maze Example
    Static Visualization Dynamic Interactions

    View Slide

  19. 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.

    View Slide

  20. Final Remarks

    View Slide

  21. 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.

    View Slide

  22. 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.

    View Slide

  23. Thank you.
    Pedro Lourenço, João Pedro Dias, Ademar Aguiar and Hugo Sereno Ferreira
    [email protected]
    http://jpdias.me

    View Slide