EnSEmble 2018- Proceedings of the 1st ACM SIGSOFT International Workshop on Ensemble-Based Software Engineering
Towards an approach for developing and testing Node-RED IoT systems
Node-RED is a visual tool based on the flow-based programming paradigm and built on NodeJS, which is used for developing IoT systems. In Node-RED, the developer can follow her own personal flavour for wiring devices and online services together, and the same system can be developed in many different ways. Each day, the Node-RED community submits to users novel solutions, and even if there exist frameworks for testing Node-RED flows, they are not supported by a systematic testing technique. Hence, the freedom granted by Node-RED may hinder the understandability of the produced artefacts and the detection of faults.
EnSEmble 2019- Proceedings of the 2nd ACM SIGSOFT International Workshop on Ensemble-Based Software Engineering for Modern Computing Platforms
SESSION: Papers
EnergyAware: a non-intrusive load monitoring system to improve the domestic energy consumption awareness
The correct use of energy can heavily impact on a family monthly bills and can also contribute to reduce the global air pollution production. Despite many available systems for domestic energy consumption, the real understanding of how domestic devices affect the total energy consumption is still a challenge. The Internet of Things (IoT) technology may contribute to the improvement of the energy habits awareness, by connecting sensors and mobile devices to provide people real-time consumption of a domestic environment. Many attempts have been done to integrate environmental sensors, mobile devices and people but this remains a challenge. This paper presents the use of a cheap and easy to apply Non-Intrusive Load Monitoring (NILM) system that show people their historical and real-time domestic energy consumption on mobile devices and sends them alerts if an energy overload is about to occur.
ESEC/FSE 2021: Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
SESSION: Invited Presentations
Programming and execution models for next generation code intelligence systems (keynote)
McCarthy defined Artificial Intelligence (AI) as “the science and engineering of making intelligent computer programs”. I define Code Intelligence (CI) by specializing his definition to intelligent computer programs that analyze other computer programs (PAPs for short) and use it to structure the keynote in two parts. The first part argues for more research on engineering foundations of PAPs. The second part outlooks new directions of combining rule-based intelligence of current PAPs with learning capabilities. Together, novel engineering foundations and enhanced intelligence characterize what I think will be the next generation of PAPs.
ESEC/FSE 2015- Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering
SESSION: Adaptive Systems
Proactive self-adaptation under uncertainty: a probabilistic model checking approach
Automated multi-objective control for self-adaptive software design
Detecting event anomalies in event-based systems
SESSION: Software Quality
Suggesting accurate method and class names
Measure it? manage it? ignore it? software practitioners and technical debt
Automatically computing path complexity of programs
SESSION: Synthesis and Search-Based Approaches for Reactive Systems
Systematic testing of asynchronous reactive systems
Effective test suites for mixed discrete-continuous stateflow controllers
GR(1) synthesis for LTL specification patterns
SESSION: Testing I
Modeling readability to improve unit tests
Improving model-based test generation by model decomposition
Synthesizing tests for detecting atomicity violations
SESSION: Search-Based Approaches to Testing, Repair, and Energy Optimisation
Optimizing energy consumption of GUIs in Android apps: a multi-objective approach
Generating TCP/UDP network data for automated unit test generation
Staged program repair with condition synthesis
SESSION: Empirical Studies of Software Developers I
When, how, and why developers (do not) test in their IDEs
How developers search for code: a case study
Tracing software developers' eyes and interactions for change tasks
SESSION: Testing II
Assertions are strongly correlated with test suite effectiveness
Test report prioritization to assist crowdsourced testing
Comparing and combining test-suite reduction and regression test selection
SESSION: Security
Questions developers ask while diagnosing potential security vulnerabilities with static analysis
Quantifying developers' adoption of security tools
Auto-patching DOM-based XSS at scale
SESSION: Configurable Systems
Performance-influence models for highly configurable systems
Users beware: preference inconsistencies ahead
Hey, you have given me too many knobs!: understanding and dealing with over-designed configuration in system software
SESSION: Debugging
Crowd debugging
On the use of delta debugging to reduce recordings and facilitate debugging of web applications
MemInsight: platform-independent memory debugging for JavaScript
SESSION: Web Applications
JITProf: pinpointing JIT-unfriendly JavaScript code
Cross-language program slicing for dynamic web applications
Detecting JavaScript races that matter
SESSION: Studies of Software Engineering Research and Practice
The making of cloud applications: an empirical study on software development for the cloud
An empirical study of goto in C code from GitHub repositories
How practitioners perceive the relevance of software engineering research
SESSION: Concurrency
What change history tells us about thread synchronization
Finding schedule-sensitive branches
Effective and precise dynamic detection of hidden races for Java programs
SESSION: Program Analysis I
A user-guided approach to program analysis
Hidden truths in dead software paths
P3: partitioned path profiling
SESSION: Prediction and Recommendation
Heterogeneous cross-company defect prediction by unified metric representation and CCA-based transfer learning
Heterogeneous defect prediction
Clone-based and interactive recommendation for modifying pasted code
SESSION: Program Repair
Is the cure worse than the disease? overfitting in automated program repair
Responsive designs in a snap
CLOTHO: saving programs from malformed strings and incorrect string-handling
SESSION: Information Retrieval
Query-based configuration of text retrieval solutions for software engineering tasks
Information retrieval and spectrum based bug localization: better together
Rule-based extraction of goal-use case models from text
SESSION: Program Analysis II
Symbolic execution of programs with heap inputs
Automatically deriving pointer reference expressions from binary code for memory dump analysis
SESSION: Measurement and Metric
Summarizing and measuring development activity
A method to identify and correct problematic software activity data: exploiting capacity constraints and data redundancies
SESSION: Patterns and Coding Convention
Gamification for enforcing coding conventions
SESSION: Mobile Applications
String analysis for Java and Android applications
Auto-completing bug reports for Android applications
CLAPP: characterizing loops in Android applications
SESSION: Search, Synthesis, and Verification
TLV: abstraction through testing, learning, and validation
Mimic: computing models for opaque code
Witness validation and stepwise testification across software verifiers
SESSION: Java and Object-Oriented Programming
Efficient and reasonable object-oriented concurrency
FlexJava: language support for safe and modular approximate programming
Getting to know you: towards a capability model for Java
SESSION: Testing III
Efficient dependency detection for safe Java test acceleration
Turning programs against each other: high coverage fuzz-testing using binary-code mutation and dynamic slicing
Guided differential testing of certificate validation in SSL/TLS implementations
SESSION: Empirical Studies of Software Developers II
Quality and productivity outcomes relating to continuous integration in GitHub
Developer onboarding in GitHub: the role of prior social links and language experience
Impact of developer turnover on quality in open-source software
SESSION: Symbolic Execution
MultiSE: multi-path symbolic execution using value summaries
Assertion guided symbolic execution of multithreaded programs
Iterative distribution-aware sampling for probabilistic symbolic execution
SESSION: Human Aspects of Software Engineering
Bespoke tools: adapted to the concepts developers know
I heart hacker news: expanding qualitative research findings by analyzing social news websites
GitSonifier: using sound to portray developer conflict history
Automatically recommending test code examples to inexperienced developers
Using software theater for the demonstration of innovative ubiquitous applications
SESSION: Validation, Verification, and Testing
Behavioral log analysis with statistical guarantees
Inner oracles: input-specific assertions on internal states
Targeted program transformations for symbolic execution
Crash reproduction via test case mutation: let existing test cases help
RDIT: race detection from incomplete traces
SESSION: Maintenance and Evolution
TACO: test suite augmentation for concurrent programs
Navigating through the archipelago of refactorings
Detecting semantic merge conflicts with variability-aware execution
Product lines can jeopardize their trade secrets
SESSION: Tool Demonstrations
JSketch: sketching for Java
Don't panic: reverse debugging of kernel drivers
UMTG: a toolset to automatically generate system test cases from use case specifications
DexterJS: robust testing platform for DOM-based XSS vulnerabilities
T3i: a tool for generating and querying test suites for Java
iTrace: enabling eye tracking on software artifacts within the IDE to support software engineering tasks
Nyx: a display energy optimizer for mobile web apps
NARCIA: an automated tool for change impact analysis in natural language requirements
Commit guru: analytics and risk prediction of software commits
OSSMETER: a software measurement platform for automatically analysing open source software projects
Comprehensive service matching with MatchBox
UEDashboard: awareness of unusual events in commit histories
MatrixMiner: a red pill to architect informal product descriptions in the matrix
SESSION: Quality
Predicting field reliability
REMI: defect prediction for efficient API testing
OnSpot system: test impact visibility during code edits in real software
SESSION: Software Process
Products, developers, and milestones: how should I build my n-gram language model
Evaluating a formal scenario-based method for the requirements analysis in automotive software engineering
Barriers and enablers for shortening software development lead-time in mechatronics organizations: a case study
SESSION: Requirements and Specification
Semantic degrees for industrie 4.0 engineering: deciding on the degree of semantic formalization to select appropriate technologies
Towards automating the security compliance value chain
Requirements, architecture, and quality in a mission critical system: 12 lessons learned
SESSION: Doctoral Symposium
Decentralized self-adaptation in large-scale distributed systems
Vehicle level continuous integration in the automotive industry
Quantifying architectural debts
User-centric security: optimization of the security-usability trade-off
Automated unit test generation for evolving software
SESSION: Student Research Competition
Increasing the efficiency of search-based unit test generation using parameter control
Enhancing Android application bug reporting
Improving energy consumption in Android apps
Automated generation of programming language quizzes
Spotting familiar code snippet structures for program comprehension
Combining eye tracking with navigation paths for identification of cross-language code dependencies
A textual domain specific language for requirement modelling
Automated attack surface approximation
Pockets: a tool to support exploratory programming for novices and educators
ESEC/FSE 2017: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering
SESSION: Invited Papers
The rising tide lifts all boats: the advancement of science in cyber security (invited talk)
Stolen passwords, compromised medical records, taking the internet out through video cameras– cybersecurity breaches are in the news every day. Despite all this, the practice of cybersecurity today is generally reactive rather than proactive. That is, rather than improving their defenses in advance, organizations react to attacks once they have occurred by patching the individual vulnerabilities that led to those attacks. Researchers engineer solutions to the latest form of attack. What we need, instead, are scientifically founded design principles for building in security mechanisms from the beginning, giving protection against broad classes of attacks. Through scientific measurement, we can improve our ability to make decisions that are evidence-based, proactive, and long-sighted. Recognizing these needs, the US National Security Agency (NSA) devised a new framework for collaborative research, the “Lablet” structure, with the intent to more aggressively advance the science of cybersecurity. A key motivation was to catalyze a shift in relevant areas towards a more organized and cohesive scientific community. The NSA named Carnegie Mellon University, North Carolina State University, and the University of Illinois – Urbana Champaign its initial Lablets in 2011, and added the University of Maryland in 2014.
ESEC/FSE 2018: Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
SESSION: Invited Papers
Behind every great deep learning framework is an even greater programming languages concept (keynote)
In many areas, such as image recognition, natural language processing, search, recommendation, autonomous cars, systems software and infrastructure, and even Software Engineering tools themselves, Software 2.0 (= programming using learned models) is quickly swallowing Software 1.0 (= programming using handcrafted algorithms). Where the Software 1.0 Engineer formally specifies their problem, carefully designs algorithms, composes systems out of subsystems or decomposes complex systems into smaller components, the Software 2.0 Engineer amasses training data and simply feeds it into an ML algorithm that will synthesize an approximation of the function whose partial extensional definition is that training data. Instead of code as the artifact of interest, in Software 2.0 it is all about the data where compilation of source code is replaced by training models with data. This new style of programming has far-reaching consequences for traditional software engineering practices. Everything we have learned about life cycle models, project planning and estimation, requirements analysis, program design, construction, debugging, testing, maintenance and implementation, … runs the danger of becoming obsolete.
ESEC/FSE 2019: Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
SESSION: Keynotes
Living with feature interactions (keynote)
Feature-oriented software development enables rapid software creation and evolution, through incremental and parallel feature development or through product line engineering. However, in practice, features are often not separate concerns. They behave differently in the presence of other features, and they sometimes interfere with each other in surprising ways.
ESEC/FSE 2020: Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
SESSION: Analysis
A behavioral notion of robustness for software systems
Software systems are designed and implemented with assumptions about the environment. However, once the system is deployed, the actual environment may deviate from its expected behavior, possibly undermining desired properties of the system. To enable systematic design of systems that are robust against potential environmental deviations, we propose a rigorous notion of robustness for software systems. In particular, the robustness of a system is defined as the largest set of deviating environmental behaviors under which the system is capable of guaranteeing a desired property. We describe a new set of design analysis problems based on our notion of robustness, and a technique for automatically computing robustness of a system given its behavior description. We demonstrate potential applications of our robustness notion on two case studies involving network protocols and safety-critical interfaces.
ESEM '21: Proceedings of the 15th ACM / IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)
SESSION: Keynote Papers
How Empirical Research Supports Tool Development: A Retrospective Analysis and new Horizons
Empirical research provides two-fold support to the development of approaches and tools aimed at supporting software engineers. On the one hand, empirical studies help to understand a phenomenon or context of interest. On the other hand, studies compare approaches and evaluate how software engineers could benefit from them. Over the past decades, there has been a tangible evolution in how empirical evaluation is conducted in software engineering. This is due to multiple reasons. First, the research community has matured a lot thanks also to guidelines developed by several researchers. Second, the large availability of data and artifacts, mainly from the open-source, has made it possible to conduct larger evaluations, and in some cases to reach study participants. This keynote will first overview how empirical research has been used over the past decades to evaluate tools, and how this is changing over the years. Then, we will focus on the importance of combining quantitative and qualitative evaluations, and how sometimes "depth" turns out to be more useful than just "breadth". We will also emphasize how research is not a straightforward path, and negative results are often an essential component for future advances. Last, but not least, we will discuss how the role of empirical evaluation is changing with the pervasiveness of artificial intelligence methods in software engineering research.
ESEM '14- Proceedings of the 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement
SESSION: Testing
What do game developers test in their products?
The impact of test ownership and team structure on the reliability and effectiveness of quality test runs
A systematic mapping study on testing technique experiments: has the situation changed since 2000?
Evaluating the TESTAR tool in an industrial case study
SESSION: Defects
How is exploratory testing used?: a state-of-the-practice survey
The effect of evolutionary coupling on software defects: an industrial case study on a legacy system
Empirical and face validity of software maintenance defect models used at the jet propulsion laboratory
A replicated study on duplicate detection: using apache lucene to search among Android defects
Evaluating capture and replay and model-based performance testing tools: an empirical comparison
SESSION: Agile methods
Impact of process conformance on the effects of test-driven development
On knowledge transfer skill in pair programming
Networking in a large-scale distributed agile project
Sampling improvement in software engineering surveys
SESSION: Modeling
Comparing and contrasting model-driven engineering at three large companies
Productivity for proof engineering
An UML-based approach to software development cost estimation
A controlled experiment to evaluate the effects of mindfulness in software engineering
SESSION: Requirements
Improving requirements glossary construction via clustering: approach and industrial case studies
Engineering of quality requirements as perceived by near-shore development centers' architects in eastern Europe: the hole in the whole
Evaluation in practice: artifact-based requirements engineering and scenarios in smart mobility domains
On the impact of passive voice requirements on domain modelling
SESSION: Security
Using templates to elicit implied security requirements from functional requirements - a controlled experiment
Discovering buffer overflow vulnerabilities in the wild: an empirical study
Security triage: an industrial case study on the effectiveness of a lean methodology to identify security requirements
SESSION: Maintenance
FixerCache: unsupervised caching active developers for diverse bug triage
What's in a bug report?
Effect of temporal collaboration network, maintenance activity, and experience on defect exposure
SESSION: Evolution
Debsources: live and historical views on macro-level software evolution
A qualitative analysis of software build system changes and build ownership styles
Patterns of folder use and project popularity: a case study of github repositories
A replication case study to measure the architectural quality of a commercial system
SESSION: Social/human aspects
Motivated software engineers are engaged and focused, while satisfied ones are happy
Impact of developer reputation on code review outcomes in OSS projects: an empirical investigation
Software population pyramids: the current and the future of OSS development communities
Estimation of student's programming expertise
SESSION: Patterns
How do code refactorings affect energy usage?
Impacts of design pattern decay on system quality
Evolution of design patterns: a replication study
Design pattern decay: the case for class grime
Mining energy traces to aid in software development: an empirical case study
SESSION: Measurement
Measuring shared understanding in software project teams using pathfinder networks
ISBSG variables most frequently used for software effort estimation: a mapping review
Simple empirical software effort estimation model
An approach for effort estimation in incremental software development using cosmic function points
SESSION: Empirical methods
Evaluating strategies for study selection in systematic literature studies
Writing for synthesis of evidence in empirical software engineering
Using qualitative metasummary to synthesize empirical findings in literature reviews
Towards a framework to support large scale sampling in software engineering surveys
Towards a semantic knowledge base on threats to validity and control actions in controlled experiments
Support mechanisms to conduct empirical studies in software engineering
SESSION: SE in practice
Tracing back the history of commits in low-tech reviewing environments: a case study of the Linux kernel
Bridging the gap: SE technology transfer into practice: study design and preliminary results
The use of systematic reviews in evidence based software engineering: a systematic mapping study
What we have learned about the value of software assurance
SESSION: Distributed development
The role of mentoring and project characteristics for onboarding in open source software projects
An empirical simulation-based study of real-time speech translation for multilingual global project teams
Process mining can be applied to software too!
Where do we stand in requirements engineering improvement today?: first results from a mapping study
SESSION: Releases
Forking and coordination in multi-platform development: a case study
Monitoring bottlenecks in achieving release readiness: a retrospective case study across ten OSS projects
Factors impacting rapid releases: an industrial case study
Industrial evaluation of the impact of quality-driven release planning
POSTER SESSION: Posters
Empirical analysis of comments and fault-proneness in methods: can comments point to faulty methods?
Studying abbreviated vs. full-word identifier names when dealing with faults: an external replication
Classification of project team patterns for benchmarking
Function point structure and applicability validation using the ISBSG dataset: a replicated study
Enriching source code by empirical metadata
Tracking line changes in source code repositories
Cooperation between information system development and operations: a literature review
VCS-analyzer for software evolution empirical analysis
Reviewing technical approaches for sharing and preservation of experimental data
Process simulation for software engineering education
Copyright (c) 2020 - 2025, SIGSOFT; all rights reserved.
Template by Bootstrapious. Ported to Hugo by DevCows.
