Opentocs

ICSE Companion 2014- Companion Proceedings of the 36th International Conference on Software Engineering

ICSE Companion 2014- Companion Proceedings of the 36th International Conference on Software Engineering

Full Citation in the ACM Digital Library

SESSION: Keynote

Socio-technical coordination (keynote)

  • James Herbsleb

SESSION: Panel Session 1

Ready-set-transfer: exploring the technology transfer readiness of academic research projects (panel)

  • Jane Cleland-Huang
  • Daniela Damian
  • Smita Ghaisas

Software engineering for the web: the state of the practice

  • Alex Nederlof
  • Ali Mesbah
  • Arie van Deursen

SESSION: Dependability, Safety, and Reliability

An empirical study of structural defects in industrial use-cases

  • Deepti Parachuri
  • A. S. M. Sajeev
  • Rakesh Shukla

Where do developers log? an empirical study on logging practices in industry

  • Qiang Fu
  • Jieming Zhu
  • Wenlu Hu
  • Jian-Guang Lou
  • Rui Ding
  • Qingwei Lin
  • Dongmei Zhang
  • Tao Xie

Active files as a measure of software maintainability

  • Lukas Schulte
  • Hitesh Sajnani
  • Jacek Czerwonka

Nondeterminism in MapReduce considered harmful? an empirical study on non-commutative aggregators in MapReduce programs

  • Tian Xiao
  • Jiaxing Zhang
  • Hucheng Zhou
  • Zhenyu Guo
  • Sean McDirmid
  • Wei Lin
  • Wenguang Chen
  • Lidong Zhou

SESSION: Processes and Agile Development

Automated software integration flows in industry: a multiple-case study

  • Daniel Ståhl
  • Jan Bosch

How to build a good practice software project portfolio?

  • Hennie Huijgens
  • Rini van Solingen
  • Arie van Deursen

Distributed-pair programming can work well and is not just distributed pair-programming

  • Julia Schenk
  • Lutz Prechelt
  • Stephan Salinger

Empirical insights into the perceived benefits of agile software engineering practices: a case study from SAP

  • Christoph Tobias Schmidt
  • Srinivasa Ganesha Venkatesha
  • Juergen Heymann

Evidence-based decision making in lean software project management

  • Brian Fitzgerald
  • Mariusz Musiał
  • Klaas-Jan Stol

SESSION: Panel Session 2

Analyzing software data: after the gold rush (a goldfish-bowl panel)

  • Tim Menzies
  • Christian Bird
  • Thomas Zimmermann

Experiences gamifying developer adoption of practices and tools

  • Will Snipes
  • Anil R. Nair
  • Emerson Murphy-Hill

SESSION: Software Testing and Analysis

Objective safety compliance checks for source code

  • Alois Mayr
  • Reinhold Plösch
  • Matthias Saft

A case study on testing, commissioning, and operation of very-large-scale software systems

  • Michael Vierhauser
  • Rick Rabiser
  • Paul Grünbacher

Assessing model-based testing: an empirical study conducted in industry

  • Christoph Schulze
  • Dharmalingam Ganesan
  • Mikael Lindvall
  • Rance Cleaveland
  • Daniel Goldman

Collecting and leveraging a benchmark of build system clones to aid in quality assessments

  • Shane McIntosh
  • Martin Poehlmann
  • Elmar Juergens
  • Audris Mockus
  • Bram Adams
  • Ahmed E. Hassan
  • Brigitte Haupt
  • Christian Wagner

SESSION: Formal Development

Improving software through automatic untangling of cyclic dependencies

  • Maayan Goldstein
  • Dany Moshkovich

A systematic approach to transforming system requirements into model checking specifications

  • Daniel Aceituna
  • Hyunsook Do
  • Sudarshan Srinivasan

A candid industrial evaluation of formal software verification using model checking

  • Matthew Bennion
  • Ibrahim Habli

Architectural dependency analysis to understand rework costs for safety-critical systems

  • Robert L. Nord
  • Ipek Ozkaya
  • Raghvinder S. Sangwan
  • Ronald J. Koontz

SESSION: Panel Session 3

Characterization of operational failures from a business data processing SaaS platform

  • Catello Di Martino
  • Zbigniew Kalbarczyk
  • Ravishankar K. Iyer
  • Geetika Goel
  • Santonu Sarkar
  • Rajeshwari Ganesan

Extrinsic influence factors in software reliability: a study of 200,000 windows machines

  • Christian Bird
  • Venkatesh-Prasad Ranganath
  • Thomas Zimmermann
  • Nachiappan Nagappan
  • Andreas Zeller

SESSION: Configuration and Requirements

Configurations everywhere: implications for testing and debugging in practice

  • Dongpu Jin
  • Xiao Qu
  • Myra B. Cohen
  • Brian Robinson

Software feature location in practice: debugging aircraft simulation systems

  • Salman Hoseini
  • Abdelwahab Hamou-Lhadj
  • Patrick Desrosiers
  • Martin Tapp

Deriving requirements model from textual use cases

  • Kiran Prakash Sawant
  • Suman Roy
  • Srivibha Sripathi
  • François Plesse
  • A. S. M. Sajeev

Tracking requirements evolution by using issue tickets: a case study of a document management and approval system

  • Shinobu Saito
  • Yukako Iimura
  • Kenji Takahashi
  • Aaron K. Massey
  • Annie I. Antón

SESSION: MOOCs in Education and Training

Using MOOCs to reinvigorate software engineering education (keynote)

  • Armando Fox

Functional programming for all! scaling a MOOC for students and professionals alike

  • Heather Miller
  • Philipp Haller
  • Lukas Rytz
  • Martin Odersky

SESSION: Collaborative Teaching and Training

Knowledge transfer in collaborative teams: experiences from a two-week code camp

  • Terhi Kilamo
  • Antti Nieminen
  • Janne Lautamäki
  • Timo Aho
  • Johannes Koskinen
  • Jarmo Palviainen
  • Tommi Mikkonen

Quasi-crowdsourcing testing for educational projects

  • Zhenyu Chen
  • Bin Luo

Teaching reuse-driven software engineering through innovative role playing

  • Gerald Kotonya
  • Jaejoon Lee

Towards a supercollaborative software engineering MOOC

  • William Billingsley
  • Jim R. H. Steel

Teaching students to understand large programs by understanding historical context

  • Collin McMillan
  • Richard Oosterhoff

SESSION: Industry Needs and Innovative Teaching Methods

Investigating the skill gap between graduating students and industry expectations

  • Alex Radermacher
  • Gursimran Walia
  • Dean Knudson

Deploying an online software engineering education program in a globally distributed organization

  • John Hudepohl
  • Alpana Dubey
  • Sylvie Moisy
  • Jessica Thompson
  • Hans-Martin Niederer

Scenario-based programming: reducing the cognitive load, fostering abstract thinking

  • Giora Alexandron
  • Michal Armoni
  • Michal Gordon
  • David Harel

Lessons learned managing distributed software engineering courses

  • Reid Holmes
  • Michelle Craig
  • Karen Reid
  • Eleni Stroulia

SESSION: Improving Student Software Projects

State-based monitoring and goal-driven project steering: field study of the SEMAT essence framework

  • Cécile Péraire
  • Todd Sedano

Introduction of continuous delivery in multi-customer project courses

  • Stephan Krusche
  • Lukas Alperowitz

Process mining software repositories from student projects in an undergraduate software engineering course

  • Megha Mittal
  • Ashish Sureka

Comparing test quality measures for assessing student-written tests

  • Stephen H. Edwards
  • Zalia Shams

SESSION: Agility and Progressive Learning

An inverted classroom experience: engaging students in architectural thinking for agile projects

  • Jane Cleland-Huang
  • Muhammad Ali Babar
  • Mehdi Mirakhorli

Quantitative assessment with using ticket driven development for teaching scrum framework

  • Hiroshi Igaki
  • Naoki Fukuyasu
  • Sachio Saiki
  • Shinsuke Matsumoto
  • Shinji Kusumoto

Teaching students scrum using LEGO blocks

  • Maria Paasivaara
  • Ville Heikkilä
  • Casper Lassenius
  • Towo Toivola

A compiler project with learning progressions

  • Derek Rayside

SESSION: Collaboration and Cloud

Integrating software project resources using source code identifiers

  • Laura Inozemtseva
  • Siddharth Subramanian
  • Reid Holmes

Development context driven change awareness and analysis framework

  • Anita Sarma
  • Josh Branchaud
  • Matthew B. Dwyer
  • Suzette Person
  • Neha Rungta

New opportunities for extracting insights from cloud based IDEs

  • Yi Wang
  • Patrick Wagstrom
  • Evelyn Duesterwald
  • David Redmiles

Cloudlet-based cyber-foraging for mobile systems in resource-constrained edge environments

  • Grace A. Lewis
  • Sebastian Echeverría
  • Soumya Simanta
  • Ben Bradshaw
  • James Root

A runtime cloud efficiency software quality metric

  • Mark Shtern
  • Michael Smit
  • Bradley Simmons
  • Marin Litoiu

SESSION: Testing and Evolution

Metamorphic fault tolerance: an automated and systematic methodology for fault tolerance in the absence of test oracle

  • Huai Liu
  • Iman I. Yusuf
  • Heinz W. Schmidt
  • Tsong Yueh Chen

Software bug localization with markov logic

  • Sai Zhang
  • Congle Zhang

Steering model-based oracles to admit real program behaviors

  • Gregory Gay
  • Sanjai Rayadurgam
  • Mats P. E. Heimdahl

Shadow symbolic execution for better testing of evolving software

  • Cristian Cadar
  • Hristina Palikareva

Leveraging P2P networks to address the test scenario explosion problem

  • Mark Micallef
  • Conrad Attard
  • Andrea Mangion
  • Sebastian Attard

A framework to advise tests using tests

  • Yurong Wang
  • Suzette Person
  • Sebastian Elbaum
  • Matthew B. Dwyer

SESSION: Human Inputs in Software Engineering and Adaptation

Brainware: synergizing software systems and neural inputs

  • Shihong Huang
  • Emmanuelle Tognoli

Quantifying programmers' mental workload during program comprehension based on cerebral blood flow measurement: a controlled experiment

  • Takao Nakagawa
  • Yasutaka Kamei
  • Hidetake Uwano
  • Akito Monden
  • Kenichi Matsumoto
  • Daniel M. German

Who is the expert? combining intention and knowledge of online discussants in collaborative RE tasks

  • Itzel Morales-Ramirez
  • Matthieu Vergne
  • Mirko Morandini
  • Alberto Siena
  • Anna Perini
  • Angelo Susi

Who asked what: integrating crowdsourced FAQs into API documentation

  • Cong Chen
  • Kang Zhang

A world full of surprises: bayesian theory of surprise to quantify degrees of uncertainty

  • Nelly Bencomo
  • Amel Belaggoun

Modeling self-adaptive software systems with learning petri nets

  • Zuohua Ding
  • Yuan Zhou
  • MengChu Zhou

SESSION: Learning and Mining

Automatic search term identification for change tasks

  • Katja Kevic
  • Thomas Fritz

An automated approach to detect violations with high confidence in incremental code using a learning system

  • Radhika D. Venkatasubramanyam
  • Shrinath Gupta

A novel quantitative evaluation approach for software project schedules using statistical model checking

  • Dehui Du
  • Mingsong Chen
  • Xiao Liu
  • Yun Yang

Reusable execution replay: execution record and replay for source code reuse

  • Ameer Armaly
  • Casey Ferris
  • Collin McMillan

Mining precise performance-aware behavioral models from existing instrumentation

  • Tony Ohmann
  • Kevin Thai
  • Ivan Beschastnikh
  • Yuriy Brun

Writing bidirectional model transformations as intentional updates

  • Tao Zan
  • Hugo Pacheco
  • Zhenjiang Hu

SESSION: Bugs and Failures

Do the fix ingredients already exist? an empirical inquiry into the redundancy assumptions of program repair approaches

  • Matias Martinez
  • Westley Weimer
  • Martin Monperrus

Reproducing software failures by exploiting the action history of undo features

  • Tobias Roehm
  • Bernd Bruegge

Bugarium: 3d interaction for supporting large-scale bug repositories analysis

  • Papon Yongpisanpop
  • Hideaki Hata
  • Kenichi Matsumoto

RegViz: visual debugging of regular expressions

  • Fabian Beck
  • Stefan Gulan
  • Benjamin Biegel
  • Sebastian Baltes
  • Daniel Weiskopf

Characterizing defect trends in software support

  • Tung Thanh Nguyen
  • Evelyn Duesterwald
  • Tim Klinger
  • P. Santhanam
  • Tien N. Nguyen

On failure classification: the impact of "getting it wrong"

  • Davide Falessi
  • Bill Kidwell
  • Jane Huffman Hayes
  • Forrest Shull

SESSION: Process and Social Aspects

API as a social glue

  • Rohan Padhye
  • Debdoot Mukherjee
  • Vibha Singhal Sinha

Software engineering for 'social good': integrating action research, participatory design, and agile development

  • Maria Angela Ferrario
  • Will Simm
  • Peter Newman
  • Stephen Forshaw
  • Jon Whittle

Collaborative infrastructure for test-driven scientific model validation

  • Cyrus Omar
  • Jonathan Aldrich
  • Richard C. Gerkin

Lab-based action design research

  • Paul Ralph

Flexible product line engineering with a virtual platform

  • Michał Antkiewicz
  • Wenbin Ji
  • Thorsten Berger
  • Krzysztof Czarnecki
  • Thomas Schmorleiz
  • Ralf Lämmel
  • Ștefan Stănciulescu
  • Andrzej Wąsowski
  • Ina Schaefer

Compiler error notifications revisited: an interaction-first approach for helping developers more effectively comprehend and resolve error notifications

  • Titus Barik
  • Jim Witschey
  • Brittany Johnson
  • Emerson Murphy-Hill

SESSION: Automated Programming Support

ImpactMiner: a tool for change impact analysis

  • Bogdan Dit
  • Michael Wagner
  • Shasha Wen
  • Weilin Wang
  • Mario Linares-Vásquez
  • Denys Poshyvanyk
  • Huzefa Kagdi

Migrating code with statistical machine translation

  • Anh Tuan Nguyen
  • Tung Thanh Nguyen
  • Tien N. Nguyen

LTSA-PCA: tool support for compositional reliability analysis

  • Pedro Rodrigues
  • Emil Lupu
  • Jeff Kramer

DASHboards: enhancing developer situational awareness

  • Oleksii Kononenko
  • Olga Baysal
  • Reid Holmes
  • Michael W. Godfrey

Product assignment recommender

  • Jialiang Xie
  • Qimu Zheng
  • Minghui Zhou
  • Audris Mockus

Verily: a web framework for creating more reasonable web applications

  • John L. Singleton
  • Gary T. Leavens

VeriWS: a tool for verification of combined functional and non-functional requirements of web service composition

  • Manman Chen
  • Tian Huat Tan
  • Jun Sun
  • Yang Liu
  • Jin Song Dong

SESSION: Software Understanding for Programmers and Researchers

SEWordSim: software-specific word similarity database

  • Yuan Tian
  • David Lo
  • Julia Lawall

BOAT: an experimental platform for researchers to comparatively and reproducibly evaluate bug localization techniques

  • Xinyu Wang
  • David Lo
  • Xin Xia
  • Xingen Wang
  • Pavneet Singh Kochhar
  • Yuan Tian
  • Xiaohu Yang
  • Shanping Li
  • Jianling Sun
  • Bo Zhou

VMVM: unit test virtualization for Java

  • Jonathan Bell
  • Gail Kaiser

ViVA: a visualization and analysis tool for distributed event-based systems

  • Youn Kyu Lee
  • Jae young Bang
  • Joshua Garcia
  • Nenad Medvidovic

Cookbook: in situ code completion using edit recipes learned from examples

  • John Jacobellis
  • Na Meng
  • Miryung Kim

Atlas: a new way to explore software, build analysis tools

  • Tom Deering
  • Suresh Kothari
  • Jeremias Sauceda
  • Jon Mathews

Teamscale: software quality control in real-time

  • Lars Heinemann
  • Benjamin Hummel
  • Daniela Steidl

SESSION: Posters

APISynth: a new graph-based API recommender system

  • Chen Lv
  • Wei Jiang
  • Yue Liu
  • Songlin Hu

Shedding light on distributed system executions

  • Jenny Abrahamson
  • Ivan Beschastnikh
  • Yuriy Brun
  • Michael D. Ernst

Fault localization for build code errors in makefiles

  • Jafar Al-Kofahi
  • Hung Viet Nguyen
  • Tien N. Nguyen

Avoiding deadlocks using stalemate and dimmunix

  • Surabhi Pandey
  • Sushanth Bhat
  • Vivek Shanbhag

Assuring system goals under uncertainty with active formal models of self-adaptation

  • M. Usman Iftikhar
  • Danny Weyns

Timing challenges in automotive software architectures

  • Licong Zhang
  • Reinhard Schneider
  • Alejandro Masrur
  • Martin Becker
  • Martin Geier
  • Samarjit Chakraborty

An adaptive bayesian approach for URL selection to test performance of large scale web-based systems

  • Alim Ul Gias
  • Kazi Sakib

DEECo: an ecosystem for cyber-physical systems

  • Rima Al Ali
  • Tomas Bures
  • Ilias Gerostathopoulos
  • Petr Hnetynka
  • Jaroslav Keznikl
  • Michal Kit
  • Frantisek Plasil

Calibrating use case points

  • Ali Bou Nassif
  • Luiz Fernando Capretz
  • Danny Ho

The MechatronicUML method: model-driven software engineering of self-adaptive mechatronic systems

  • Steffen Becker
  • Stefan Dziwok
  • Christopher Gerking
  • Christian Heinzemann
  • Wilhelm Schäfer
  • Matthias Meyer
  • Uwe Pohlmann

Model-driven development of diverse user interfaces

  • Zhiyi Ma
  • Wei Zhang
  • Chih-Yi Yeh

Statistical learning of API mappings for language migration

  • Anh Tuan Nguyen
  • Hoan Anh Nguyen
  • Tung Thanh Nguyen
  • Tien N. Nguyen

Asymmetric software structures in the Linux kernel

  • Lei Wang
  • Ping Wang
  • Zhen Wang

Towards designing assistive software applications for discrete trial training

  • Valerie Picardo
  • Samuel Metson
  • Rashina Hoda
  • Robert Amor
  • Angela Arnold-Saritepe
  • Rebecca Sharp
  • Denys Brand

An optimized design approach for extending HMI systems with mobile devices

  • Manasvi Jain
  • Rahul Raj CP
  • Seshubabu Tolety

Proposing a theory of gamification effectiveness

  • Bilal Amir
  • Paul Ralph

Modeling and model checking by modular approach

  • Mo Xia
  • Guiming Luo
  • Mian Sun

Hybrid test data generation

  • Zicong Liu
  • Zhenyu Chen
  • Chunrong Fang
  • Qingkai Shi

Software defect prediction based on collaborative representation classification

  • Xiao-Yuan Jing
  • Zhi-Wu Zhang
  • Shi Ying
  • Feng Wang
  • Yang-Ping Zhu

SESSION: Mature A

COASTmed: software architectures for delivering customizable, policy-based differential web services

  • Alegria Baquero

Formal verification problems in a big data world: towards a mighty synergy

  • Matteo Camilli

Cross-platform testing and maintenance of web and mobile applications

  • Shauvik Roy Choudhary

SESSION: Mature B

Human aspects, gamification, and social media in collaborative software engineering

  • Bogdan Vasilescu

ReuseSEEM: an approach to support the definition, modeling, and analysis of software ecosystems

  • Rodrigo Pereira dos Santos

Summarization of complex software artifacts

  • Laura Moreno

SESSION: Initial A

Nirikshan: process mining software repositories to identify inefficiencies, imperfections, and enhance existing process capabilities

  • Monika Gupta

Performance analysis of object-oriented software

  • David Maplesden

Improving exception handling with recommendations

  • Eiji Adachi Barbosa

Verifying incomplete and evolving specifications

  • Claudio Menghi

Quantitative properties of software systems: specification, verification, and synthesis

  • Srđan Krstić

SESSION: Initial B

Automatic generation of cost-effective test oracles

  • Alberto Goffi

Dynamic data-flow testing

  • Mattia Vivanti

Holistic recommender systems for software engineering

  • Luca Ponzanelli

Understanding the dynamics of test-driven development

  • Davide Fucci

On the use of visualization for supporting software reuse

  • Marcelo Schots

SESSION: Initial C

Understanding the redundancy of software systems

  • Andrea Mattavelli

Study of task processes for improving programmer productivity

  • Damodaram Kamma

Improving enterprise software maintenance efficiency through mining software repositories in an industry context

  • Senthil Mani

Enhancing feature interfaces for supporting software product line maintenance

  • Bruno B. P. Cafeo

Supporting evolution and maintenance of Android apps

  • Mario Linares-Vásquez

SESSION: ACM Student Research Competition

Exception handling for dynamic information flow control

  • Abhishek Bichhawat

Automatic performance modeling of multithreaded programs

  • Alexander Tarvo

Incremental reachability checking of KernelC programs using matching logic

  • Alessandro Maria Rizzi

Exploiting undefined behaviors for efficient symbolic execution

  • Asankhaya Sharma

Identifying caching opportunities, effortlessly

  • Alejandro Infante

Program transformations to fix C buffer overflows

  • Alex Shaw

Characteristics of the vulnerable code changes identified through peer code review

  • Amiangshu Bosu

Privacy and security requirements framework for the internet of things (IoT)

  • Israa Alqassem

Continue reading

ICSE-NIER '18- Proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging Results

ICSE-NIER '18- Proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging Results

Full Citation in the ACM Digital Library

SESSION: Security, safety, and quality

Generative secure design, defined

  • Riccardo Scandariato
  • Jennifer Horkhoff
  • Robert Feldt

In software-intensive industries, companies face the constant challenge of not having enough security experts on staff in order to validate the design of the high-complexity projects they run. Many of these companies are now realizing that increasing automation in their secure development process is the only way forward in order to cope with the ultra-large scale of modern systems. This paper embraces that viewpoint. We chart the roadmap to the development of a generative design tool that iteratively produces several design alternatives, each attempting to solve the security goals by incorporating security mechanisms. The tool explores the possible solutions by starting from well-known security techniques and by creating variations via mutations and crossovers. By incorporating user feedback, the tool generates increasingly better design alternatives.

Continue reading

ICSE-NIER '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: New Ideas and Emerging Results

ICSE-NIER '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: New Ideas and Emerging Results

Full Citation in the ACM Digital Library

SESSION: Metastudies

Threats to validity in experimenting mutation-based fault localization

  • Juyoung Jeon
  • Shin Hong

Mutation-based fault localization (MBFL) is a promising direction toward improving fault localization accuracy by leveraging dynamic information extracted by mutation testing on a target program. One issue in investigating MBFL techniques is that experimental evaluations are prone to various validity threats because there are many factors to control in generating and running mutants for fault localization. To understand different validity threats in experimenting MBFL techniques, this paper reports our re-production of the MBFL assessments with Defects4J originally studied by Pearson et al. Having the JFreeChart artifacts of Defects4J (total 26 bug cases) as study objects, we conducted the same empirical evaluation on two MBFL (Metallaxis and MUSE) and six SBFL techniques (DStar, Op2, Ochiai, Jaccard, Barniel, Tarantula) while identifying and managing validity threats in alternative ways. As results, we found that the evaluation on the studied techniques change in many parts from the original results, thus, the identified validity threats should be managed carefully at designing and conducting empirical assessments on MBFL techniques.

Continue reading

ICSE-SEET '18- Proceedings of the 40th International Conference on Software Engineering: Software Engineering Education and Training

ICSE-SEET '18- Proceedings of the 40th International Conference on Software Engineering: Software Engineering Education and Training

Full Citation in the ACM Digital Library

SESSION: Reusable recipes

10+ years of teaching software engineering with itrust: the good, the bad, and the ugly

  • Sarah Heckman
  • Kathryn T. Stolee
  • Christopher Parnin

This paper presents an experience report with a junior-level software engineering course at North Carolina State University. We provide an overview of the course structure and the course project, iTrust, that has been developed by students over 25 semesters. We summarize reflections from faculty, teaching assistants, and students (through course evaluations). From our lessons learned, we present our course improvements as we prepare for the next ten years of software engineering courses. Our main lessons learned are 1) course technologies have a lifespan and require periodic updating to balance student learning and working with a legacy system; 2) teaching assistant longevity and support is critical to course success; and 3) the value of working with a large, legacy system in a semester long course is supported by faculty, teaching assistants, and eventually students.

Continue reading

ICSE-SEET '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering Education and Training

ICSE-SEET '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering Education and Training

Full Citation in the ACM Digital Library

SESSION: Novel approaches in SE education 1

Using public and free platform-as-a-service (PaaS) based lightweight projects for software architecture education

  • Zheng Li

Background: Software architecture is a crucial while significantly challenging topic in the computer science curriculum. Although "learning by doing" is widely advocated to address this topic's abstract and fuzzy nature, educators are still facing various difficulties in practice, especially including students' vicious circle of inexperience and the mental model dilemma in experiential learning.

Continue reading

ICSE-SEIP '18- Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice

ICSE-SEIP '18- Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice

Full Citation in the ACM Digital Library

SESSION: Cloud and devops

Adopting autonomic computing capabilities in existing large-scale systems: an industrial experience report

  • Heng Li
  • Tse-Hsun (Peter) Chen
  • Ahmed E. Hassan
  • Mohamed Nasser
  • Parminder Flora

In current DevOps practice, developers are responsible for the operation and maintenance of software systems. However, the human costs for the operation and maintenance grow fast along with the increasing functionality and complexity of software systems. Autonomic computing aims to reduce or eliminate such human intervention. However, there are many existing large systems that did not consider autonomic computing capabilities in their design. Adding autonomic computing capabilities to these existing systems is particularly challenging, because of 1) the significant amount of efforts that are required for investigating and refactoring the existing code base, 2) the risk of adding additional complexity, and 3) the difficulties for allocating resources while developers are busy adding core features to the system. In this paper, we share our industrial experience of re-engineering autonomic computing capabilities to an existing large-scale software system. Our autonomic computing capabilities effectively reduce human intervention on performance configuration tuning and significantly improve system performance. In particular, we discuss the challenges that we encountered and the lessons that we learned during this re-engineering process. For example, in order to minimize the change impact to the original system, we use a variety of approaches (e.g., aspect-oriented programming) to separate the concerns of autonomic computing from the original behaviour of the system. We also share how we tested such autonomic computing capabilities under different conditions, which has never been discussed in prior work. As there are numerous large-scale software systems that still require expensive human intervention, we believe our experience provides valuable insights to software practitioners who wish to add autonomic computing capabilities to these existing large-scale software systems.

Continue reading

ICSE-SEIP '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Practice

ICSE-SEIP '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Practice

Full Citation in the ACM Digital Library

SESSION: Empirical studies and requirements

Using a context-aware approach to recommend code reviewers: findings from an industrial case study

  • Anton Strand
  • Markus Gunnarson
  • Ricardo Britto
  • Muhmmad Usman

Code review is a commonly used practice in software development. It refers to the process of reviewing new code changes before they are merged with the code base. However, to perform the review, developers are mostly assigned manually to code changes. This may lead to problems such as: a time-consuming selection process, limited pool of known candidates and risk of over-allocation of a few reviewers. To address the above problems, we developed Carrot, a machine learning-based tool to recommend code reviewers. We conducted an improvement case study at Ericsson. We evaluated Carrot using a mixed approach. we evaluated the prediction accuracy using historical data and the metrical Mean Reciprocal Rank (MRR). Furthermore, we deployed the tool in one Ericsson project and evaluated how adequate the recommendations were from the point of view of the tool users and the recommended reviewers. We also asked the opinion of senior developers about the usefulness of the tool. The results show that Carrot can help identify relevant non-obvious reviewers and be of great assistance to new developers. However, there were mixed opinions on Carrot's ability to assist with workload balancing and the decrease code review lead time.

Continue reading

ICSE-SEIS '18- Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Society

ICSE-SEIS '18- Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Society

Full Citation in the ACM Digital Library

SESSION: Software by and for people

The role of foundations in open source projects

  • Javier Luis Cánovas Izquierdo
  • Jordi Cabot

In the last years, a number of Open-Source Systems (OSS) have created parallel foundations, as legal instruments to better articulate the structure, collaboration and financial model for the project. Some examples are Apache, Linux, Mozilia, Eclipse or Django foundations. Nevertheless, foundations largely differ in the kind of mission they have and the support they provide to their project/s. In this paper we study the role of foundations in open source software development. We analyze the nature of 89 software foundations and then focus on the 18 most relevant ones to study their openness and influence in the development practices taking place in the endorsed projects. Our results reveal the existence of a significant number of foundations with the sole purpose of promoting the importance of the free software movement and/or that limit them selves to core legal aspects but do not play any role in the day-to-day operations of the project (e.g., a few of them are just umbrelia organizations for a large variety of projects). Therefore, while useful, foundations do not remove the need for specific projects to develop their own governance, contribution and development policies.

Continue reading

ICSE-SEIS '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Society

ICSE-SEIS '20: Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering in Society

Full Citation in the ACM Digital Library

SESSION: Engineering tools for society

Is using deep learning frameworks free?: characterizing technical debt in deep learning frameworks

  • Jiakun Liu
  • Qiao Huang
  • Xin Xia
  • Emad Shihab
  • David Lo
  • Shanping Li

Developers of deep learning applications (shortened as application developers) commonly use deep learning frameworks in their projects. However, due to time pressure, market competition, and cost reduction, developers of deep learning frameworks (shortened as framework developers) often have to sacrifice software quality to satisfy a shorter completion time. This practice leads to technical debt in deep learning frameworks, which results in the increasing burden to both the application developers and the framework developers in future development.

Continue reading

ICSEW'20: Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops

ICSEW'20: Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops

Full Citation in the ACM Digital Library

WORKSHOP SESSION: 1st International Workshop on Automated Program Repair (APR)

Using API-Embedding for API-Misuse Repair

  • Sebastian Nielebock
  • Robert Heumüller
  • Jacob Krüger
  • Frank Ortmeier

Application Programming Interfaces (APIs) are a way to reuse existing functionalities of one application in another one. However, due to lacking knowledge on the correct usage of a particular API, developers sometimes commit misuses, causing unintended or faulty behavior. To detect and eventually repair such misuses automatically, inferring API usage patterns from real-world code is the state-of-the-art. A contradiction to an identified usage pattern denotes a misuse, while applying the pattern fixes the respective misuse. The success of this process heavily depends on the quality of the usage patterns and on the code from which these are inferred. Thus, a lack of code demonstrating the correct usage makes it impossible to detect and fix a misuse. In this paper, we discuss the potential of using machine-learning vector embeddings to improve automatic program repair and to extend it towards cross-API and cross-language repair. We illustrate our ideas using one particular technique for API-embedding (i.e., API2Vec) and describe the arising possibilities and challenges.

Continue reading