- Software Engineering Research
- Software Reliability and Analysis Research
- Software System Performance and Reliability
- Software Testing and Debugging Techniques
- Software Engineering Techniques and Practices
- Adversarial Robustness in Machine Learning
- Advanced Malware Detection Techniques
- Open Source Software Innovations
- Advanced Software Engineering Methodologies
- Cloud Computing and Resource Management
- Machine Learning and Data Classification
- Scientific Computing and Data Management
- IoT and Edge/Fog Computing
- Topic Modeling
- Web Data Mining and Analysis
- Green IT and Sustainability
- Big Data and Business Intelligence
- Explainable Artificial Intelligence (XAI)
- Anomaly Detection Techniques and Applications
- Service-Oriented Architecture and Web Services
- Ethics and Social Impacts of AI
- Mobile Crowdsensing and Crowdsourcing
- Advanced Neural Network Applications
- Reinforcement Learning in Robotics
- Expert finding and Q&A systems
Polytechnique Montréal
2016-2025
Université de Montréal
2008-2024
University of Manitoba
2024
Queen's University
2011-2023
Jack Miller Center
2022-2023
University of Saskatchewan
2022
McGill University
2020-2021
Virginia Commonwealth University
2021
Western University
2020
Institute of Electrical and Electronics Engineers
2020
Bug tracking systems are valuable assets for managing maintenance activities. They widely used in open-source projects as well the software industry. collect many different kinds of issues: requests defect fixing, enhancements, refactoring/restructuring activities and organizational issues. These issues simply labeled "bug" lack a better classification support or knowledge about possible kinds.
Code smells are poor implementation choices, thought to make object-oriented systems hard maintain. In this study, we investigate if classes with code more change-prone than without smells. Specifically, test the general hypothesis: not change prone other classes. We detect 29 in 9 releases of Azureus and 13 Eclipse, study relation between these class change-proneness. show that, almost all others, that specific correlated others These results justify a posteriori previous work on...
Antipatterns are "poor" solutions to recurring design problems which conjectured in the literature make object-oriented systems harder maintain. However, little quantitative evidence exists support this conjecture. We performed an empirical study investigate whether occurrence of antipatterns does indeed affect understandability by developers during comprehension and maintenance tasks. designed conducted three experiments, with 24 subjects each, collect data on performance basic tasks...
The presence of code and design smells can have a severe impact on the quality program. Consequently, their detection correction drawn attention both researchers practitioners who proposed various approaches to detect in programs. However, none these handle inherent uncertainty process. We propose Bayesian approach manage this uncertainty. First, we present systematic process convert existing state-of-the-art rules into probabilistic model. illustrate by generating model occurrences Blob...
Code review is the process of having other team members examine changes to a software system in order evaluate its technical content and quality. A lightweight variant this practice, often referred as Modern Review (MCR), widely adopted by organizations today. Previous studies have established relation between practice code occurrence post-release bugs. While prior work impact practices on release quality, it still unclear what design Therefore, using 7 different types anti-patterns (i.e.,...
Nowadays, many software companies are shifting from the traditional 18-month release cycle to shorter cycles. For example, Google Chrome and Mozilla Firefox new versions every 6 weeks. These cycles reduce users' waiting time for a offer better marketing opportunities companies, but it is unclear if quality of product improves as well, since result in testing periods. In this paper, we empirically study development process 2010 2011, period during which project transitioned cycle. We compare...
The First Symposium on Software Engineering for Machine Learning Applications (SEMLA) aimed to create a space in which machine learning (ML) and software engineering (SE) experts could come together discuss challenges, new insights, practical ideas regarding the of ML AI-based systems. Key challenges discussed included accuracy systems built using AI models, testing those systems, industrial applications AI, rift between SE communities. This article is part theme issue engineering's 50th anniversary.
We study the impact of design patterns on quality attributes in context software maintenance and evolution. show that, contrary to popular beliefs, practice negatively several attributes, thus providing concrete evidence against common lore. then object-oriented best practices by formulating a second hypothesis these principles quality. that results for some cannot be explained conclude need further studies. Thus, we bring should used with caution during development because they may actually impede
Two similar code segments, or clones, form a clone pair within software system. The changes to the clones over time create evolution history. In this work we study late propagation, specific pattern of evolution. one in is modified, causing become inconsistent. segments are then re-synchronized later revision. Existing has established propagation as pattern, and suggested that related high number faults. examine characteristics two long-lived systems using Simian CCFinder detection tools. We...
Nowadays, many software companies are shifting from the traditional 18-month release cycle to shorter cycles. For example, Google Chrome and Mozilla Firefox new versions every 6 weeks. These cycles reduce users' waiting time for a offer better marketing opportunities companies, but it is unclear if quality of product improves as well, since result in testing periods. In this paper, we empirically study development process 2010 2011, period during which project transitioned cycle. We compare...
Fixing bugs is an important activity of the software development process. A typical process bug fixing consists following steps: 1) a user files report, 2) assigned to developer, 3) developer fixes bug, 4) changed code reviewed and verified, 5) resolved. Many studies have investigated fixing. However, best our knowledge, none has explicitly analyzed interval between assignment time when starts. After assignment, some developers will immediately start while others after long period. We are...
Bug prediction models are often used to help allocate software quality assurance efforts. Software metrics (e.g., process and product metrics) at the heart of bug models. However, some these like churn not actionable, on contrary, antipatterns which refer specific design implementation styles can tell developers whether a choice is "poor" or not. Poor designs be fixed by refactoring. Therefore in this paper, we explore use for prediction, strive improve accuracy proposing various based...
The energy consumption of mobile apps is a trending topic and researchers are actively investigating the role coding practices on consumption. Recent studies suggest that design choices can conflict with Therefore, it important to take into account when evolving app. In this paper, we analyze impact eight type anti-patterns testbed 20 android extracted from F-Droid. We propose EARMO, novel anti-pattern correction approach accounts for refactoring anti-patterns. evaluate EARMO using three...
Developers use Question and Answer (Q&A) websites to exchange knowledge expertise. Stack Overflow is a popular Q&A website where developers discuss coding problems share code examples. Although all posts are free access, examples on governed by the Creative Commons Attribute-ShareAlike 3.0 Unported license that should obey when reusing from or posting Overflow. In this paper, we conduct case study with 399 Android apps, investigate whether respect terms (and other way around). We found 232...
Machine-learning (ML) techniques are becoming more prevalent. ML rely on mathematics and software engineering. Researchers practitioners studying best practices strive to design systems that address complexity quality issues. Such often formalized as architecture patterns by encapsulating reusable solutions common problems within given contexts. However, a systematic study collect, classify, discuss these software-engineering (SE) for have yet be reported. Our research collects good/bad SE...