<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Växjö, Sweden
" sandro.speth@iste.uni-stuttgart.de (S. Speth); niklas.krieger@studi.informatik.uni-stuttgart.de (N. Krieger);
uwe.breitenbuecher@iaas.uni-stuttgart.de (U. Breitenbücher); stefen.becker@iste.uni-stuttgart.de (S. Becker)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Gropius-VSC: IDE Support for Cross-Component Issue Management</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Sandro Speth</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Niklas Krieger</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Uwe Breitenbücher</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stefen Becker</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Stuttgart</institution>
          ,
          <addr-line>Universitätsstraße 38, Stuttgart, 70569</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>Modern software systems are increasingly built as component-based architectures, e.g., as microservices. However, such architectural styles result in many challenges for development teams regarding issue management: Since the individual components are developed independently of each other, the teams manage the issues of the respective components often in separate issue management systems, making the tracking of cross-component issues much more dificult, i.e. issues that afect multiple components concurrently. To solve this problem, in previous work, we developed Gropius, which is a tool that acts as a wrapper for existing issue management systems enabling the management of issues across the diferent components managed in diferent issue management systems. While Gropius is particularly suitable for stakeholders who want to have an overall view of the architecture and the issues therein, a developer's daily work is primarily done in an IDE. Thus, frequent context switches between the issue management systems and the IDE reduce developer productivity, so IDE plugins for issue management have been developed in the past. However, these do not support cross-component issue management features as provided by Gropius. Therefore, in this work, we present Gropius-VSC, a Visual Studio Code extension that allows developers to manage cross-component issues directly in Visual Studio Code.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Issue Management</kwd>
        <kwd>Component-based Architecture</kwd>
        <kwd>Cross-Component Issues</kwd>
        <kwd>IDE Extension</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Component-based architectural styles, such as microservices, are becoming increasingly
common. Due to the independence in development and use of the individual components, these
architectures bring many advantages. At the same time, however, new challenges arise, such as
cross-component issue management: Due to the free choice of tools, the individual development
teams typically manage the issues of the components in independent issue management systems,
e.g. GitHub or Jira. As a result, tracking issues across component boundaries becomes much
more dificult [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
        ]. While an issue management system (IMS) helps individual teams to
report, track, assign, and archive issues [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], no established IMS supports managing issues that
afect components managed in other issue management systems. Thus, this requires manually
synchronising issues between multiple issue management systems. To solve this problem, we
introduced Gropius [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] in previous work, which is a tool that serves as a wrapper for existing
IMSs and that can synchronise and link issues between diferent issue management systems.
Gropius implements the Cross-Component Issue Metamodel [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and represents issues using the
graphical Gropius Cross-Component Issue Modelling Language [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], which enables modelling
of issues of each component of the system in a typical architectural view. Thus, the Gropius
Web Frontend [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is particularly suitable for software architects, product owners, and other
stakeholders who need an overall view of the system. The daily work of a developer, on the
other hand, takes place primarily in an IDE. Therefore, frequent context switches between the
IDE and issue management systems reduce the developer’s productivity. For this reason, many
IDEs ofer plugins and extensions for IMSs [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ]. However, existing issue management IDE
plugins and extensions do not support features for cross-component issue management in the
way Gropius supports. Therefore, in this demonstrator paper, we introduce Gropius-VSC, a
Visual Studio Code (VS Code) extension for the integrated management of issues in
componentbased architectures. Since Gropius-VSC uses the Gropius API, cross-component issues can be
propagated directly from the IDE to the underlying issue management systems, such as GitHub.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Research Design</title>
      <p>
        Before we describe the concept of Gropius-VSC, we explain our research design. First, we
developed the concept by asking various stakeholders for the required features of such an
IDE extension. Based on these requirements and the Cross-Component Issue Metamodel [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ],
the concept for the IDE extension was developed. For an initial evaluation of whether the
concept makes sense, a prototype was developed with the Eclipse Modelling Framework (EMF),
which we gave to industry experts for evaluation. The API connection to the Gropius backend
server [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and test data were mocked up. Questions for the evaluation were created using a
Goal-Question-Metric [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] approach. Due to the positive evaluation, we decided to build this
Gropius IDE extension integrated with the Gropius server instead of a mocked API. Based on
the limitations in generated views of EMF Parsley, the evaluation of the industry developers
and their feature requests, we decided to switch to VS Code as IDE.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. The Concept of Gropius-VSC</title>
      <p>
        The presented IDE extension Gropius-VSC is a client for the Gropius backend that supports the
Cross-Component Issue Metamodel [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and, thus, the cross-component features of Gropius [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
However, in contrast to the original Gropius Web Frontend [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], Gropius-VSC aims to provide a
focused component-specific view of cross-component issues while keeping the cross-component
issue management features, e.g., linking issues to other components’ issues and traversing these
links. A demonstrator video presenting our Gropius-VSC concept is available on YouTube1.
      </p>
      <p>Gropius-VSC consists of four components which are depicted in fig. 1: 1 a Component Detail
View, 2 an Issue List, 3 a Issue Detail View, which is a detailed view of a single issue, and
4 Issue Bookmarks, which display the areas afected by an issue in a file. The sidebar next to
the line numbers, which is also used for breakpoints, shows these issue bookmarks. After the
IDE extension is configured for a Gropius project’s component, the Component Detail View
1 provides the current component’s name and description and issue filter functionality 5 .
Additionally, the Issue List 2 shows all issues of the current component. This list can be filtered
in the Component Detail View 5 by the status of the issue (open or closed), type of issue, e.g.
bug report, and issues assigned to the developer using the extension. Issues assigned to the
developer show a star in the issue’s icon. Furthermore, the Component Detail View provides
a search bar to filter according to the issues’ titles and body matching to the filter text. The
individual Issue Detail View 3 shows the title, body, issue type, labels and assigned users of the
issue. Additionally, the semantical links to other issues 6 and artefact links 7 are displayed.
Ingoing or outgoing issue links to another issue are hinted with an ingoing or outgoing arrow
in the issue’s icon. The issue links can be traversed by clicking on the linked issue 6 , whereby
the detailed view 3 always opens the linked issue. Furthermore, the linked issues and artefacts
do not have to belong to the same component. If a linked issue concerns another component
or the issue concerns multiple components, the detail view shows all afected components’
names next to this issue to clarify that this issue’s location is another component. A click on an
artefact link opens the artefact, e.g. a source code file, in the text editor and jumps, if specified,
to the area afected by the issue 9 . All artefacts are specified as URIs. An URI is opened in the
web browser if it could not be transformed to a relative path to a file. In addition to displaying
an issue in the detailed view, issues can be edited, e.g., changing the body text or adding new
issue links and artefact links. Issue Bookmarks 4 in the sidebar show for a linked artefact file
which areas are afected by an issue. However, the Issue Bookmarks contain only open issues
to keep it more concise. Additionally, bookmarks cover a range of lines as shown in fig. 1. In
the concept, clicking on an issue bookmark opens the issue which is linking to this artefact.
However, since clickable custom sidebar elements are an open issue for VS Code, our extension
contains a filter button 8 for issues linking to this artefact until this issue is resolved.</p>
      <p>Component Detail Webview
Typescript, Vue Js
Issue Detail Webview
Typescript, Vue Js, lit-element</p>
      <p>Markdown Issue Body Renderer
monaco editor, markdown-it</p>
      <p>Messaging
Messaging</p>
      <p>Extension Core
Typescript, VS Code Extension API</p>
      <p>Issue List View</p>
      <p>Component Quickselect Provider
Editor Controller</p>
      <p>Gropius Backend Connector
Gropius Backend API</p>
      <p>GraphQL</p>
    </sec>
    <sec id="sec-4">
      <title>4. Architecture and Implementation</title>
      <p>The architecture for Gropius-VSC consists of three main components: (1) the Extension Core,
(2) the Issue Detail Webview, and (3) the Component Detail Webview. The components
communicate with each other via messaging, which is handled by VS Code. Figure 2 shows the overview
of the architecture. The extension is written in Vue JS and is open source available in GitHub2.</p>
      <p>The Extension Core uses the Gropius’ GraphQL API in the Gropius Backend Connector
component to communicate with the Gropius backend. The Component Quickselect Provider component
is a QuickInput which sets the component’s id of the current workspace. This allows the user
to search the name and description of all available components instead of setting the id in the
settings manually. The Editor Controller decorates the TextEditor with Issue Bookmark icons.
The Issue List View is a TreeView showing all issues of the current component. If the user clicks
on an issue, the Issue Detail Webview opens this issue to show the details of the selected issue
as stated in section 3 and enables editing it. The issue’s body is rendered with the Markdown
Issue Body Renderer which consists of two parts: (1) a Monaco Editor (the same editor VS Code
uses) for editing the body and (2) markdown-it with emoji plugin to render markdown. The
Component Detail Webview displays information about the selected component and provides
search and filter functionality for the Issue List View. VS Code Commands ofers some internal
commands to the user, e.g. create a new issue, reload issue view, and check API connection.</p>
      <p>VS Code’s flexible extension API allows web view extension panels which developers can
develop using modern web development tools and frameworks. As a current limitation, custom
sidebar elements like our Issue Bookmarks are not clickable.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Related Work</title>
      <p>
        In his PhD thesis [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], Janák introduces two categories for IMS IDE extensions: (1) universal
extensions, which allows integrating diferent IMSs while not supporting IMS-specific features,
and (2) extensions limited to specific issue management systems which provide support of
IMS-specific features. We classify Gropius-VSC as a universal IMS IDE extension since it
integrates through Gropius several IMSs while focuses on the features provided by Gropius.
Other universal extensions, e.g. Mylin3, do not support cross-component issue management
2https://github.com/ccims/ccims-vsc/tree/gropiusify
3https://marketplace.eclipse.org/content/mylyn
features as Gropius-VSC does. Therefore, such IMS IDE extensions are not suited for integrated
cross-component issue management. Examples for specific IMS IDE extensions are Atlassian
IntelliJ IDEA Connector4 and JiraBuddy - Eclipse Plugin for JIRA5. However, they do not provide
cross-component issue features. Furthermore, there is the Teamscale Integration for Eclipse6
which allows users to browse defects found by the Teamscale Software Quality Analysis Server.
However, all these IDE extensions are limited to the boundaries of a single IMS. Therefore, issues
cannot be managed beyond the boundaries of an IMS as supported by our Gropius approach.
      </p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion</title>
      <p>The presented VS Code extension Gropius-VSC can improve issue management in
componentbased architectures in a less error-prone and time-consuming way by allowing developers to
manage cross-component issues directly in their IDE without context switches. In particular,
traversing the links between issues of diferent components and opening the afected resources
enables eficient issue management. Especially in systems with many components, this could
significantly increase the focus on the issues that actually afect the developer’s components.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Mahmood</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Niazi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hussain</surname>
          </string-name>
          ,
          <article-title>Identifying the challenges for managing componentbased development in global software development: Preliminary results</article-title>
          ,
          <source>in: 2015 Science and Information Conference (SAI)</source>
          , IEEE,
          <year>2015</year>
          , pp.
          <fpage>933</fpage>
          -
          <lpage>938</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Speth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Breitenbücher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <article-title>Gropius-a tool for managing cross-component issues</article-title>
          ,
          <source>in: Communications in Computer and Information Science</source>
          , volume
          <volume>1269</volume>
          , Springer, Springer,
          <year>2020</year>
          , pp.
          <fpage>82</fpage>
          -
          <lpage>94</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>S.</given-names>
            <surname>Speth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Becker</surname>
          </string-name>
          , U. Breitenbücher,
          <article-title>Cross-component issue metamodel and modelling language</article-title>
          ,
          <source>in: Proceedings of the 11th International Conference on Cloud Computing and Services Science (CLOSER</source>
          <year>2021</year>
          ), INSTICC, SciTePress,
          <year>2021</year>
          , pp.
          <fpage>304</fpage>
          -
          <lpage>311</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Bertram</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Voida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Greenberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Walker</surname>
          </string-name>
          , Communication, collaboration, and
          <article-title>bugs: the social nature of issue tracking in small, collocated teams</article-title>
          ,
          <source>in: Proceedings of the 2010 ACM conference on Computer supported cooperative work</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>291</fpage>
          -
          <lpage>300</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S. H.-H.</given-names>
            <surname>Chang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Priest</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Plimmer</surname>
          </string-name>
          ,
          <article-title>Issues of extending the user interface of integrated development environments</article-title>
          ,
          <source>in: Proceedings of the 9th ACM SIGCHI New Zealand Chapter's International Conference on Human-Computer Interaction: Design Centered HCI</source>
          ,
          <year>2008</year>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>30</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>A. I. Wasserman</surname>
          </string-name>
          ,
          <article-title>Tool integration in software engineering environments</article-title>
          , in: Software Engineering Environments, Springer,
          <year>1990</year>
          , pp.
          <fpage>137</fpage>
          -
          <lpage>149</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>V. R. B. G.</given-names>
            <surname>Caldiera</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. D.</given-names>
            <surname>Rombach</surname>
          </string-name>
          ,
          <article-title>The goal question metric approach, Encyclopedia of software engineering (</article-title>
          <year>1994</year>
          )
          <fpage>528</fpage>
          -
          <lpage>532</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Janák</surname>
          </string-name>
          ,
          <article-title>Issue tracking systems</article-title>
          ,
          <source>Ph.D. thesis</source>
          , Masarykova univerzita,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>