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 is the systematic application of engineering approaches to the development of software.
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.
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.
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.
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.