CINXE.COM
PRIDE 2020 - Practical Research IDEs 2020 - ECOOP 2020
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="https://2020.ecoop.org/favicon.ico?28d37e6d7e5e12d24c39bdba0f4f3cfd" rel="shortcut icon" type="image/x-icon" /> <link href="https://2020.ecoop.org/stylesheets/common_.css?d7bcca3579a066193caf560ede9d6399" rel="stylesheet" type="text/css" /> <title>PRIDE 2020 - Practical Research IDEs 2020 - ECOOP 2020</title> <script type="text/javascript">var show_webdsl_debug=false;</script> <script type="text/javascript">var contextpath="https://2020.ecoop.org";</script> <link rel="stylesheet" href="https://2020.ecoop.org/stylesheets/bootstrap/css/bootstrap.min.css?7f89537eaf606bff49f5cc1a7c24dbca" type="text/css" /><link rel="stylesheet" href="https://2020.ecoop.org/stylesheets/conf.css?e0c92ee5f52769e04d268b7588469bfe" type="text/css" /><link rel="stylesheet" href="https://2020.ecoop.org/getFile/a03c8d2f-435f-408e-bdb4-1f9c3de80d08/custom.css?1594641067716" type="text/css" /><link rel="stylesheet" href="https://2020.ecoop.org/stylesheets/theme.bootstrap_3.min.css?6867e70881e6ed2c03b6c9cf9c3152e0" type="text/css" /><script type="text/javascript" src="//code.jquery.com/jquery-3.5.1.min.js"></script> <script type="text/javascript" src="https://2020.ecoop.org/javascript/jquery.tablesorter.combined.min.js?285b21976326641f8f1b910492e6d5d0"></script> <script type="text/javascript" src="https://2020.ecoop.org/javascript/jquery.tablesorter.pager.min.js?4551cdfea66f45a11ae5548f3d50a06f"></script> <script type="text/javascript" src="https://2020.ecoop.org/javascript/tablesorter-init.js?ee6babedf1a6be960e4543a1bb57b421"></script> <script type="text/javascript" src="https://2020.ecoop.org/javascript/bootstrap/js/bootstrap.min.js?2f34b630ffe30ba2ff2b91e3f3c322a1"></script> <script type="text/javascript" src="https://2020.ecoop.org/javascript/notify.min.js?e86d399917a84b69a4683f504c7a7813"></script> <script type="text/javascript" src="https://2020.ecoop.org/javascript/ajax.js?2dbd1cc4f8f2d52ae9c879d7346f4f8a"></script> <meta prefix='og: http://ogp.me/ns#' property='og:title' content='PRIDE 2020 - Practical Research IDEs 2020 - ECOOP 2020'> <meta name='description' content=' Due to COVID-19, PRIDE will be postponed to 2021. Numerous program analyses have been presented at research conferences over the years, typically with detailed analysis using appropriate specific metrics to show that the new analysis improves results compared to previous approaches. While such evaluation shows the new analysis improves analysis per se, it is not always entirely clear how much impact these improvements would have on an overall system of which the analysis is one component. Our focus, in particular, is on one especially challenging aspect of this: programming tools and ...'> <script type="text/javascript">$(document).ready( function(){ $('#program-menu a[data-fltr-type]').on('click', function(event){ event.preventDefault(); window.location = $(this).attr('href') + "?" + encodeURIComponent( $(this).data('fltr-type') ) + '=' + encodeURIComponent( $(this).data('fltr-val') ); }) }) </script> <script type="text/javascript">(function($){ $(document).ready(function(){ $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); }); }); })(jQuery); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-4G0QWEKVQS"></script> <script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-4G0QWEKVQS', {'cookie_domain': 'auto', 'anonymizeIp': true });gtag('config', 'UA-9607501-2', {'cookie_domain': 'auto', 'anonymizeIp': true });</script> <script type="text/javascript">var ignoreHashChange = false; function hashChangeFunc(){ // show active tab on hash in url if (window.location.hash !== ''){ var hashTargetAll = $('a[href="' + window.location.hash + '"]'); if(hashTargetAll.length){ var hashTarget = hashTargetAll.filter('[data-toggle="tab"]') if( hashTarget.length ){ hashTarget = hashTarget.first(); hashTarget.tab('show'); } else { hashTarget = hashTargetAll.first(); } // and open parent tabs in case the target element is nested in a tab var parentPane = hashTarget.closest( '.tab-pane' ); if(parentPane.length){ $('.nav a[href="#'+ parentPane.attr('id') +'"]').tab('show'); } var parentCollapse = hashTarget.closest( '.panel-collapse:not(.in)' ).collapse('show'); } } return false; } $(document).ready(function(){ var tabFromRequestUrl = window.location.hash !== '' ? $('a[href="' + window.location.hash + '"][data-toggle="tab"]') : []; var initUrlHash = window.location.hash; hashChangeFunc() if( tabFromRequestUrl.length ){ //Prevent the browser to auto-scroll to the anchor of the tab window.location.hash = ""; } //make in-page #links open the tabs if ($._data( $(window)[0], 'events' ).hashchange == undefined){ $(window).on('hashchange', hashChangeFunc); } if(tabFromRequestUrl.length){ setTimeout( function(){ ignoreHashChange = true; history.replaceState(null, null, initUrlHash); ignoreHashChange = false; }, 10 ); } }); var autoTabFunction = function(node){ // remember the hash in the URL without jumping $('a[data-toggle="tab"]:not(.no-hash):not(.bound)').addClass('bound').on('shown.bs.tab', function(e){ var newhash = '#' + $(e.target).attr('href').substr(1); if(history.replaceState){ history.replaceState(null, null, newhash); } else{ location.hash = newhash; } }); //When no tab is active, set the first one to active $(node).find('.nav-tabs:not(.bound), .nav-pills:not(.bound)').addClass('bound').each(function(){ if( $(this).children().length > 0 && 1 > $(this).find('.active').length){ $(this).children().first().addClass('active'); } }); $(node).find('.tab-content:not(.bound)').addClass('bound').each(function(){ if( $(this).children().length > 0 && 1 > $(this).children('.active').length){ $(this).children('.tab-pane').first().addClass('active'); } }); } </script> <meta prefix='og: http://ogp.me/ns#' property='og:description' content=' Due to COVID-19, PRIDE will be postponed to 2021. Numerous program analyses have been presented at research conferences over the years, typically with detailed analysis using appropriate specific metrics to show that the new analysis improves results compared to previous approaches. While such evaluation shows the new analysis improves analysis per se, it is not always entirely clear how much impact these improvements would have on an overall system of which the analysis is one component. Our focus, in particular, is on one especially challenging aspect of this: programming tools and ...'> <script type="text/javascript">function addEventModalLoadOnClick( containerNode ){ $(containerNode).find( "a[data-event-modal]" ).on("click", function(e){ var eventId = $(this).data("event-modal"); var modalElem = $("#modal-" + eventId); if(modalElem.length){ modalElem.modal({ backdrop: 'static', keyboard: true}, 'show'); } else { var loaderElem = $("#event-modal-loader"); loaderElem.find("input.event-id-input").val( eventId ); loaderElem.find("#load-modal-action").click(); } e.preventDefault(); } ); } </script><script type="text/javascript">function addStarredEventOnClick( containerNode ){ $(containerNode).find( "[data-event-star]" ).on("click", function(e){ var eventId = $(this).data("event-star"); var starEventFormElem = $("#event-star-form"); starEventFormElem.find("input.event-id-input").val( eventId ); starEventFormElem.find("#star-event-action").click(); e.preventDefault(); e.stopPropagation(); } ); } </script><script type="text/javascript">function pauseOnCloseModal( modalid ){ //pauses video (only youtube at the moment) when closing modal $('#' + modalid).on('hidden.bs.modal', function () { $(this).find('.embed-container iframe[src*=enablejsapi]').each( function(){ this.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*') } ); } ) } </script> <meta prefix='og: http://ogp.me/ns#' property='og:image' content='https://2020.ecoop.org/getImage/carousel/5632590238_cc8c37673e_o.jpg?1570607225000'> <script>if(window.location.href.indexOf("2020.ecoop.org/program/") > 0 ) { window.location.replace("https://2020.splashcon.org/program/program-splash-2020"); }</script> <script>$(function() {$(":root").attr("lang", "en-US");}); $(function() {if ($('.carousel').length > 0) { /*$('body').addClass("with-carousel");*/ $('.carousel').remove(); /*replace program links to link to splash program*/ $('#program-menu a[href="https://2020.ecoop.org/program/program-ecoop-2020"]').attr('href', "https://2020.splashcon.org/program/program-splash-2020"); }})</script> </head> <body id="home"><div class="frame"><div class="logobar"><div class="container"><a href="https://2020.ecoop.org" class="navbar-brand navigate"><span class="brand-text">ECOOP 2020</span></a><div class="place">Sun 15 - Tue 17 November 2020 <a href="https://2020.ecoop.org/venue/splash-2020-venue" class="navigate">Online Conference</a></div><div class="place2">co-located with <a href="https://2020.splashcon.org" class="navigate">SPLASH 2020</a></div></div></div><div class="navbar navbar-default"><div class="container"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navigationbar" class="navbar-toggle"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div id="navigationbar" class="navigationbar collapse navbar-collapse"><ul class="block nav navbar-nav"><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Attending <span class="caret"></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/venue/splash-2020-venue" class="navigate">Venue: Online</a></li><li class="block"><a href="https://2020.ecoop.org/attending/sponsorship" class="navigate">Sponsorship</a></li><li class="block"><a href="https://2020.ecoop.org/attending/conduct" class="navigate">Conduct</a></li><li class="block"><a href="https://2020.ecoop.org/attending/awards" class="navigate">Awards</a></li><li class="block dropdown-header">SPLASH 2020</li><li class="block"><a href="https://2020.ecoop.org/attending/Students" class="indent navigate">Students</a></li><li class="block"><a href="https://2020.ecoop.org/attending/Registration" class="indent navigate">Registration</a></li><li class="block"><a href="https://2020.ecoop.org/attending/awards" class="indent navigate">Awards</a></li><li class="block"><a href="https://2020.ecoop.org/attending/sponsoring" class="indent navigate">Sponsoring</a></li><li class="block"><a href="https://2020.ecoop.org/attending/Conduct" class="indent navigate">Code of conduct</a></li><li class="block"><a href="https://2020.ecoop.org/attending/Certificate+of+Attendance" class="indent navigate">Certificate of Attendance</a></li></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Program <span class="caret"></span></a><ul id="program-menu" class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/program/program-ecoop-2020/" class="navigate">ECOOP Program</a></li><li class="block"><a href="https://2020.ecoop.org/program/program-ecoop-2020/" data-fltr-type="prog" data-fltr-val="Your Program" class="navigate"><span class="glyphicon glyphicon-star"></span> Your Program</a></li><li class="block divider"></li><li class="block"><a href="https://2020.ecoop.org/program/program-ecoop-2020/" data-fltr-type="date" data-fltr-val="Sun 15 Nov 2020" class="navigate">Sun 15 Nov</a></li><li class="block"><a href="https://2020.ecoop.org/program/program-ecoop-2020/" data-fltr-type="date" data-fltr-val="Mon 16 Nov 2020" class="navigate">Mon 16 Nov</a></li><li class="block"><a href="https://2020.ecoop.org/program/program-ecoop-2020/" data-fltr-type="date" data-fltr-val="Tue 17 Nov 2020" class="navigate">Tue 17 Nov</a></li></ul></li><li id="tracks-in-navbar" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Tracks <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-3"><div class="row"><div class="col-sm-5"><ul class="block multi-column-dropdown"><li class="block dropdown-header">ECOOP 2020</li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-papers" class="navigate">Research Papers</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-artifacts" class="navigate">Artifacts</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-Student-Volunteers" class="navigate">Student Volunteers</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-doctoral-symposium" class="navigate">Doctoral Symposium</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-tutorials" class="navigate">Tutorials</a></li><li class="block"><a href="https://2020.ecoop.org/track/ecoop-2020-Posters" class="navigate">Posters</a></li></ul></div><div class="col-sm-7"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Workshops</li><li class="block"><a href="https://2020.ecoop.org/home/COP-2020" class="navigate"><strong>COP</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/track/FTfJP-2020-papers" class="navigate"><strong>FTfJP</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/ICOOOLPS-2020" class="navigate"><strong>ICOOOLPS</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/iwaco-2020" class="navigate"><strong>IWACO</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/JSTools-2020" class="navigate"><strong>JSTools</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/pride-2020" class="navigate"><strong>PRIDE</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/soop-2020" class="navigate"><strong>SOOP</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/sysepl-2020" class="navigate"><strong>SySEPL</strong> </a></li><li class="block"><a href="https://2020.ecoop.org/home/vortex-2020" class="navigate"><strong>VORTEX</strong> </a></li><li class="block dropdown-header">Co-hosted Symposia</li><li class="block"><a href="https://2020.ecoop.org/home/scala-2020" class="navigate"><strong>Scala</strong> </a></li></ul></div></div></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Organization <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-2"><div class="row"><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">ECOOP 2020 Committees</li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block dropdown-header">Track Committees </li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Research Papers</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-papers-external-review-committee" class="navigate">External Review Committee</a></li></ul></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-artifacts-artifact-evaluation-committee" class="navigate"><strong>Artifacts</strong></a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-Student-Volunteers-committee" class="navigate"><strong>Student Volunteers</strong></a></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Doctoral Symposium</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-doctoral-symposium-academic-panel" class="navigate">Academic Panel</a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-doctoral-symposium-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-doctoral-symposium-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="block"><a href="https://2020.ecoop.org/committee/ecoop-2020-Posters-posters-committee" class="navigate"><strong>Posters</strong></a></li><li class="block dropdown-header">Contributors</li><li class="block"><a href="https://2020.ecoop.org/people-index" class="navigate"><span class="glyphicon glyphicon-search"></span><sup><span class="glyphicon glyphicon-user"></span></sup> People Index</a></li></ul></div><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Workshops</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>COP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/COP-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/COP-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>FTfJP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/FTfJP-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/FTfJP-2020-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/FTfJP-2020-papers-steering-commitee" class="navigate">Steering Commitee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>ICOOOLPS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/ICOOOLPS-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/ICOOOLPS-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>IWACO</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/iwaco-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/iwaco-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>JSTools</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/JSTools-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/JSTools-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>PRIDE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/pride-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/pride-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>SOOP</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/soop-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/soop-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>SySEPL</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/sysepl-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/sysepl-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>VORTEX</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/vortex-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/vortex-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="block dropdown-header">Co-hosted Symposia</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Scala</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/committee/scala-2020-papers-invited-speakers" class="navigate">Keynote</a></li><li class="block"><a href="https://2020.ecoop.org/committee/scala-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></li><li class="block"><a href="https://2020.ecoop.org/committee/scala-2020-papers-program-committee" class="navigate">Program Committee</a></li></ul></li></ul></div></div></ul></li><li class="block"><a href="https://2020.ecoop.org/search//all" class="navigate"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> Search</span></a></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle"><span class="hidden-sm">Series <span class="caret"></span></span><span title="Series" class="visible-sm"><span class="glyphicon glyphicon-repeat"></span> <span class="caret"></span></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2020.ecoop.org/series/ecoop" class="navigate"><span class="glyphicon glyphicon-home"></span> Series</a></li><li class="block divider"></li><li class="block"><a href="https://2025.ecoop.org" class="navigate">ECOOP 2025</a></li><li class="block"><a href="https://2024.ecoop.org" class="navigate">ECOOP 2024</a></li><li class="block"><a href="https://2023.ecoop.org" class="navigate">ECOOP 2023</a></li><li class="block"><a href="https://2022.ecoop.org" class="navigate">ECOOP 2022</a></li><li class="block"><a href="https://2021.ecoop.org" class="navigate">ECOOP 2021</a></li><li class="block"><span class="text-muted" style="margin-left: 2px;"><span class="glyphicon glyphicon-hand-right"></span> ECOOP 2020</span></li><li class="block"><a href="https://2019.ecoop.org" class="navigate">ECOOP 2019</a></li><li class="block"><a href="https://2018.ecoop.org" class="navigate">ECOOP 2018</a></li><li class="block"><a href="https://2017.ecoop.org" class="navigate">ECOOP 2017</a></li><li class="block"><a href="https://2016.ecoop.org" class="navigate">ECOOP 2016</a></li><li class="block"><a href="https://2015.ecoop.org" class="navigate">ECOOP 2015</a></li><li class="block"></li><li class="block"><a href="http://2014.ecoop.org" target="_blank" class="navigate">2014: Uppsala <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://2013.ecoop.org" target="_blank" class="navigate">2013: Montpellier <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://ecoop12.cs.purdue.edu" target="_blank" class="navigate">2012: Beijing <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://scc-sentinel.lancs.ac.uk/ecoop11/" target="_blank" class="navigate">2011: Lancaster <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://ecoop2010.uni-mb.si" target="_blank" class="navigate">2010: Maribor <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://ecoop09.disi.unige.it" target="_blank" class="navigate">2009: Genova <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="https://ecoop08.cs.ucy.ac.cy" target="_blank" class="navigate">2008: Cyprus <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://ecoop07.swt.cs.tu-berlin.de" target="_blank" class="navigate">2007: Berlin <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.emn.fr/z-info/ecoop2006/" target="_blank" class="navigate">2006: Nice <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://2005.ecoop.org/" target="_blank" class="navigate">2005: Glasgow <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li></ul></li></ul><div class="navbar-right"><ul class="block nav navbar-nav"><li class="block"><a href="https://conf.researchr.org/signin/ecoop-2020/https%3A%5Es%5Es2020.ecoop.org%5Eshome%5Espride-2020" rel="nofollow" class="navigate">Sign in</a></li><li class="block"><a href="https://2020.ecoop.org/signup" class="navigate">Sign up</a></li></ul></div></div></div></div><div id="content" class="container"><div class="page-header"><span class="text-muted small"><span class="glyphicon glyphicon-home"></span> <a href="https://2020.splashcon.org" class="navigate">SPLASH 2020</a> (<a href="https://2020.ecoop.org/series/splash" class="navigate">series</a>) / </span><span class="text-muted small"><span class="glyphicon glyphicon-home"></span> <a href="https://2020.ecoop.org" class="navigate">ECOOP 2020</a> (<a href="https://2020.ecoop.org/series/ecoop" class="navigate">series</a>) / </span><span class="text-muted small">PRIDE 2020 (<a href="https://2020.ecoop.org/series/pride" class="navigate">series</a>) / </span><h1>Practical Research IDEs 2020<span class="pull-right small h1">PRIDE 2020</span></h1></div><div class="row"><div class="col-sm-8"><ul id="tab" class="nav nav-pills"><li><a href="#About" data-toggle="tab">About</a></li><li><a href="#Call-for-Participation" data-toggle="tab">Call for Participation</a></li></ul><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; autoTabFunction(node); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><div class="tab-content"><div id="About" class="tab-pane "><div style="color: #856404; border: 2px solid #ffeeba; background-color: #fff3cd; padding: 6px; margin: 20px; text-align: center"> <h4>Due to <a href="https://2020.ecoop.org/">COVID-19</a>, PRIDE will be postponed to 2021.</h4> </div> <p>Numerous program analyses have been presented at research conferences over the years, typically with detailed analysis using appropriate specific metrics to show that the new analysis improves results compared to previous approaches. While such evaluation shows the new analysis improves analysis per se, it is not always entirely clear how much impact these improvements would have on an overall system of which the analysis is one component. Our focus, in particular, is on one especially challenging aspect of this: programming tools and understanding how much new analysis improves the information displayed by a tool. In this case, creating the needed tools is a challenge since it requires mastering the workflows and idioms of IDE tools and integrating the analysis code into the IDE. While most IDE tools have plugin architectures to make this process more manageable, even plugins often require significant expertise and programming. Worse yet, there is much diversity in IDE tools, and nothing that can be considered dominant except in certain niches, e.g. Xcode for iOS and AndroidStudio for Android. On the one hand, it does not seem reasonable to expect analysis experts to expend the effort to master and use diverse IDE ecosystems; on the other hand, it would be nice to be able to evaluate new analysis work in the context of IDE usage.</p> <p>The recent MagpieBridge system provides a potential way out of this dilema; MagpieBridge provides a way to connect arbitrary program analyses to most popular IDE tools, in particular any that support the Language Server Protocol. Experiments with MagpieBridge (published at ECOOP 2019) have shown its ability to integrate several existing analyses into many IDE tools with minimal effort. These analyses include FlowDroid, CogniCrypt and Ariadne, and similar analyses. These analyses span multiple languages鈥擩ava, JavaScript, Python鈥攎ultiple domains鈥攑rivacy, cryptography, data science鈥攎ultiple analysis frameworks鈥擶ALA and Soot鈥攁nd have been shown in many IDE tools鈥擡clipse, Visual Studio Code, IntelliJ鈥攁nd editors鈥擲ublime Text, Microsoft Monaco. The analyses have been integrated into all these tools using MagpieBridge with glue code comprising a couple of hundred lines of code in total that provides rich information such as highlighting program traces and enabling quick fixes. Thus, MagpieBridge could allow numerous analyses to easily render their results in many IDE tools to provide a new form of evaluation. If such evaluation became standard where appropriate, it could greatly accelerate the process of incorporating novel analyses into existing tools.</p> <p>The purpose of this workshop would be to assess how amenable work appearing at recent conferences is to being incorporated into modern IDE tools, and to actually incorporate at least some of the work to the extent possible. To facilitate this process, we propose a hack-a-thon style workshop in which the creators of novel analyses would work with the creators of MagpieBridge to create IDE integrations of their results and show it in a range of IDE tools. We hope that the ease of IDE integration that MagpieBridge has enabled in out work so far will encourage others to assess, as part of their analysis work, how easily it can also be included in an IDE. To provide a demonstration, we propose to invite the authors of relevant papers to submit their accepted papers to PRIDE, and work with the MagpieBridge authors at PRIDE to integrate their work into IDE tools. To highlight any successful IDE integration of papers, we propose that such integrations be shown at the poster session.</p> </div><div id="Call-for-Participation" class="tab-pane "><h2>Call for Participation</h2><p><h3><a href="#goal" id="goal" class="anchor-link">Goal</a></h3> <p>The goal of this workshop is to help researchers take their research developments and integrate them easily into existing IDE tools. We are seeking participation from researchers who have developed novel analysis technology and would like an easy way to deploy this technology in existing IDE tools.</p> <p>For example, a new, more-precise taint analysis is nice, but it will be potentially much easier to use and to evaluate if it is available in popular IDE鈥檚鈥攅.g. IntelliJ, VisualStudio Code, PyCharm, JupyterLab鈥攊n editors鈥攅.g. Subime Text, Atom鈥攁nd traditional editors used by programmers鈥攅.g. Emacs, Vim.</p> <p>MagpieBridge provides support for accomplishing this: it provides a framework in which a research analysis can be invoked from standard IDE鈥檚. The underlying mechanism makes use of the Language Server Protocol (LSP), but that is completely hidden by a straightforward API that allows analyses to be invoked on source projects from IDE鈥檚 and report results that get displayed in idioms natural to each IDE.</p> <p>Such functionality could benefit a wide range of research tools, and so we encourage participation by bringing either your own research analysis or any analysis that you would like to see in a tool. To participate, it suffices to indicate your interest by email to the organizers, including a description of the analysis you would like to integrate into tools.</p> <p>MagpieBridge is designed to be broadly useful, but there are a few guidelines as to what sort of analysis would likely work best. Consult these guidelines to understand whether your analysis would be easy to integrate and whether you could display information as you would like.</p> <h4><a href="#performance-and-language-requirements" id="performance-and-language-requirements" class="anchor-link">Performance and language requirements.</a></h4> <ul> <li>MagpieBridge is largely asynchronous with respect to the IDE, so analysis computation time will never block the IDE and results are reported when they are ready. Latency-sensitive features such as hovers can have results computed during analysis, so analysis computation time can be hidden even there. This increases the amount of analysis time that is tolerable compared to on-demand analysis; however, analyses that take excessive amounts of time would not be suitable.</li> <li>MagpieBridge is written in Java, which makes integrating analyses also written in Java simplest. However, the protocol for communicating with analyses is straightforward, and we will support projects communicating with other languages with JNI bindings when appropriate and also with JSON messaging when that is most convenient. As such, the language in which your analysis is written should not be an issue for taking part in the hackathon.</li> </ul> <h4><a href="#how-analysis-results-can-be-displayed" id="how-analysis-results-can-be-displayed" class="anchor-link">How analysis results can be displayed.</a></h4> <ul> <li>MagpieBridge largely supports functionality provided by LSP, with a focus on three features given below, but also provides a mechanism to integrate arbitrary HTML including forms and JavaScript. The three focus features are the following: <ul> <li>Diagnostics are the kind of error, warning and informational messages commonly supported in IDE's. MagpieBridge provides an API for returning these kinds of messages, which then get displayed by the IDE using its usual mechanisms.</li> <li>Hovers are messages that pop up when a user lets the mouse hover in a specific location. Note that LSP in most IDE's integrates its hovers seamlessly with any other hover messages that the IDE generates.</li> <li>Code lenses are comments injected into program buffers by the IDE, typically distinguished by using a different font or color. These lenses can be linked to actions that interact with the analysis.</li> </ul> </li><li>MagpieBridge does not support wholesale changes to the IDE, but, using the HTML integration mechanism, it allows non-trivial views to e.g. configure an analysis or display results. This HTML integration is robust across all IDE's supported: if an IDE provides such a mechanism, then MagpieBridge uses it, and otherwise these views show up in the user's Web browser.</li> </ul> <h4><a href="#how-analysis-results-can-be-used" id="how-analysis-results-can-be-used" class="anchor-link">How analysis results can be used.</a></h4> <ul> <li>MagpieBridge supports the LSP notion of code fixes, in which an analysis provides a code range from the program and the text with which it would like to replace that range. This is the primary mechanism, but it is straightforward to extend it to multiple ranges for a single fix.</li> <li>MagpieBridge supports arbitrary HTML documents, which can be used by an analysis to display more complex information than can be easily rendered in a hover. For example, a detailed description of a security warning could be display for a brief error message.</li> </ul> </p></div></div></div><div class="col-sm-4 sidebar"><div class="panel panel-primary"><div class="panel-heading clearfix"><div class="panel-title"><a href="https://2020.ecoop.org/committee/pride-2020-papers-organizing-committee" class="navigate">Organizing Committee</a></div></div><ul class="list-group"><li class="list-group-item"><a href="https://2020.ecoop.org/profile/juliandolby" class="navigate"><div class="media"><span class="pull-left"><img alt="Julian Dolby" src="https://2020.ecoop.org/getProfileImage/juliandolby/e6e4ec90-3676-4aa3-809d-7b0b0d8c33a2/micro-avatar.jpg?1711457887000" class="outputimage media-object thumbnail no-bottom-margin"/></span><div class="media-body"><h5 class="media-heading">Julian Dolby<span class="pull-right"><small></small></span></h5><h5 class="media-heading"><span class="text-black">IBM Research, USA</span></h5></div></div></a></li><li class="list-group-item"><a href="https://2020.ecoop.org/profile/linghuiluo" class="navigate"><div class="media"><span class="pull-left"><img alt="Linghui Luo" src="https://2020.ecoop.org/getProfileImage/linghuiluo/7ce03c9c-9a47-486f-8dac-2f4da9674f80/micro-avatar.jpg?1711520655000" class="outputimage media-object thumbnail no-bottom-margin"/></span><div class="media-body"><h5 class="media-heading">Linghui Luo<span class="pull-right"><small></small></span></h5><h5 class="media-heading"><span class="text-black">Paderborn University, Germany</span></h5></div></div></a></li></ul></div><div class="panel panel-primary"><div class="panel-heading clearfix"><div class="panel-title"><a href="https://2020.ecoop.org/committee/pride-2020-papers-program-committee" class="navigate">Program Committee</a></div></div><ul class="list-group"><li class="list-group-item">No members yet</li></ul></div></div></div><div id="messages-placeholder" class="alert alert-warning" style="display:none;"><a data-dismiss="alert" class="close">x</a><em>Sun 24 Nov 12:39</em></div></div><div id="notifications-ph" class="webdsl-placeholder"></div><div id="event-modal-loader" class="webdsl-placeholder"><form name="form_131600131703c411e65b13378d08eb1f6672b5a0259" id="form_131600131703c411e65b13378d08eb1f6672b5a0259" action="https://2020.ecoop.org/eventDetailsModalByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_131600131703c411e65b13378d08eb1f6672b5a0259" value="1" /><input type="hidden" name="context" value="ecoop-2020" /><input name="ae03f7f6f951d515a297b161e922205d" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2020.ecoop.org/eventDetailsModalByAjaxConferenceEdition","eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259", [{"name":"context", "value":"ecoop-2020"},],"form_131600131703c411e65b13378d08eb1f6672b5a0259", this.nextSibling, false,"event-modal-loader"); return false;'></button><a submitid="eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="load-modal-action"></a></form></div><div id="event-star-form" class="webdsl-placeholder"><form name="form_509860938088b48fd14544d4239b498a2cf339e02b" id="form_509860938088b48fd14544d4239b498a2cf339e02b" action="https://2020.ecoop.org/eventStarByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_509860938088b48fd14544d4239b498a2cf339e02b" value="1" /><input type="hidden" name="context" value="ecoop-2020" /><input name="a0b55aa29cf9431a9461b359872014e3" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2020.ecoop.org/eventStarByAjaxConferenceEdition","eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b", [{"name":"context", "value":"ecoop-2020"},],"form_509860938088b48fd14544d4239b498a2cf339e02b", this.nextSibling, false,"event-star-form"); return false;'></button><a submitid="eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="star-event-action"></a></form></div><div id="event-modals" class="webdsl-placeholder"></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; addEventModalLoadOnClick(node); addStarredEventOnClick(node); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><footer class="footer"><div class="container"><div class="footer-box"><div class="row"><div class="col-sm-3"><h3><a href="https://2020.ecoop.org" class="navigate"><span class="glyphicon glyphicon-home"></span> ECOOP 2020</a></h3><div><a href="https://2020.ecoop.org/contact" class="navigate"><span class="glyphicon glyphicon-envelope"></span> contact form</a></div><hr/>using <a href="https://conf.researchr.org" class="navigate">conf.researchr.org</a> (<a href="http://yellowgrass.org/roadmap/conf.researchr.org" class="navigate">v1.67.1</a>)<br/><small><a href="https://2020.ecoop.org/support" target="_blank" class="navigate"><span class="glyphicon glyphicon-question-sign"></span> Support page</a></small><br/><small></small></div><div class="col-sm-5"><div class="row"><div class="col-sm-6"><h4>Tracks</h4><a href="https://2020.ecoop.org/track/ecoop-2020-papers" class="navigate">Research Papers</a><br/><a href="https://2020.ecoop.org/track/ecoop-2020-artifacts" class="navigate">Artifacts</a><br/><a href="https://2020.ecoop.org/track/ecoop-2020-Student-Volunteers" class="navigate">Student Volunteers</a><br/><a href="https://2020.ecoop.org/track/ecoop-2020-doctoral-symposium" class="navigate">Doctoral Symposium</a><br/><a href="https://2020.ecoop.org/track/ecoop-2020-tutorials" class="navigate">Tutorials</a><br/><a href="https://2020.ecoop.org/track/ecoop-2020-Posters" class="navigate">Posters</a></div><div class="col-sm-6"><h4>Workshops</h4><a href="https://2020.ecoop.org/home/COP-2020" class="navigate">COP</a><br/><a href="https://2020.ecoop.org/track/FTfJP-2020-papers" class="navigate">FTfJP 2020</a><br/><a href="https://2020.ecoop.org/home/ICOOOLPS-2020" class="navigate">ICOOOLPS 2020</a><br/><a href="https://2020.ecoop.org/home/iwaco-2020" class="navigate">IWACO 2020</a><br/><a href="https://2020.ecoop.org/home/JSTools-2020" class="navigate">JSTools 2020</a><br/><a href="https://2020.ecoop.org/home/pride-2020" class="navigate">PRIDE 2020</a><br/><a href="https://2020.ecoop.org/home/soop-2020" class="navigate">SOOP'20</a><br/><a href="https://2020.ecoop.org/home/sysepl-2020" class="navigate">SySEPL 2020</a><br/><a href="https://2020.ecoop.org/home/vortex-2020" class="navigate">VORTEX 2020</a><br/><h4>Co-hosted Symposia</h4><a href="https://2020.ecoop.org/home/scala-2020" class="navigate">Scala 2020</a></div></div></div><div class="col-sm-2"><h4>Attending</h4><a href="https://2020.ecoop.org/venue/splash-2020-venue" class="navigate">Venue: Online</a><br><a href="https://2020.ecoop.org/attending/sponsorship" class="navigate">Sponsorship</a><br><a href="https://2020.ecoop.org/attending/conduct" class="navigate">Conduct</a><br><a href="https://2020.ecoop.org/attending/awards" class="navigate">Awards</a><br><a href="https://2020.ecoop.org/attending/Students" class="navigate">Students</a><br><a href="https://2020.ecoop.org/attending/Registration" class="navigate">Registration</a><br><a href="https://2020.ecoop.org/attending/awards" class="navigate">Awards</a><br><a href="https://2020.ecoop.org/attending/sponsoring" class="navigate">Sponsoring</a><br><a href="https://2020.ecoop.org/attending/Conduct" class="navigate">Code of conduct</a><br><a href="https://2020.ecoop.org/attending/Certificate+of+Attendance" class="navigate">Certificate of Attendance</a></div><div class="col-sm-2"><a href="https://2020.ecoop.org/signup" class="navigate">Sign Up</a></div></div></div></div></footer></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; var defaultplacement = $(document).scrollLeft() > 100 ? 'auto left' : 'auto top'; $(node).find('[title]').tooltip({placement: function(tt, elem){ var attval = elem.getAttribute('data-placement'); return attval ? attval : defaultplacement; }, container: false, sanitize: false}); $('.tooltip.fade.in, .ui-tooltip-content').remove(); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><script type="text/javascript">jQuery(document).ready(function($) { $(".clickable-row").click(function() { var href = $(this).attr("href"); if( window.location.href.indexOf( href ) < 0 ){ if ($(this).hasClass('new-window') ){ window.open( href ); } else { window.document.location = href; } } }); }); </script></body></html>