In the Intelligent Software Engineering Lab (ISE Lab) in the Department of Computer Engineering at the Sharif University of Technology, which is led by Dr Abbas Heydarnoori, we perform world-class research in the field of Software Engineering. In particular, the areas of interest include but are not limited to Software Analytics, Empirical Software Engineering, Mining Software Repositories, and Software Maintenance and Evolution. More specifically, we apply artificial intelligence (AI) and data science techniques to automate and solve real software engineering problems developers encounter in their daily activities like fault localization and debugging, bug prediction, feature location, requirements engineering, code comprehension, and so on. To address these problems, we mine and analyze the vast amount of valuable data in software repositories like App stores (e.g., Google Play), Q&A forums (e.g., Stack Overflow), Source code repositories (e.g., GitHub), Bug repositories (e.g., Bugzilla) to discover interesting and actionable information about software systems and projects.

Software Engineering

Software Engineering

Software Engineering is the systematic application of engineering approaches to the development of software.

More Details

Software Analytics

Software Analytics

Software Analytics is the analytics specific to the domain of software systems taking into account source code, static and dynamic characteristics  as well as related processes of their development and evolution.

More Details

Mining Software Repositories

Mining Software Repositories

Mining Software Repositories (MSR) aims to analyze the rich data available in software repositories, such as version control repositories, mailing list archives, bug tracking systems, issue tracking systems, etc., to uncover interesting and actionable information about software systems and projects.

More Details

Software Maintenance and Evolution

Software Maintenance and Evolution

Software Maintenance and Evolution is a term which refers to the process of developing software initially, then timely updating it for various reasons, i.e., to add new features or to remove obsolete functionalities etc.

More Details

Empirical Software Engineering

Empirical Software Engineering

Empirical Software Engineering is a part of software engineering that focuses on gathering evidence, through measurements and experiments involving software systems (software products, processes, and resources). This data is intended to be used as the basis of theories about the processes involved in software engineering.

More Details