Abbas Heydarnoori

Abbas Heydarnoori
Sharif University of Technology | SHARIF · Department of Computer Engineering

PhD

About

54
Publications
40,734
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,124
Citations
Citations since 2016
23 Research Items
963 Citations
2016201720182019202020212022050100150
2016201720182019202020212022050100150
2016201720182019202020212022050100150
2016201720182019202020212022050100150
Additional affiliations
April 2012 - present
Sharif University of Technology
Position
  • Professor (Assistant)
January 2010 - December 2010
University of Lugano
Position
  • PostDoc Position
September 2002 - June 2009
University of Waterloo
Position
  • PhD Student

Publications

Publications (54)
Preprint
Full-text available
Software-related platforms have enabled their users to collaboratively label software entities with topics. Tagging software repositories with relevant topics can be exploited for facilitating various downstream tasks. For instance, a correct and complete set of topics assigned to a repository can increase its visibility. Consequently, this improve...
Article
Full-text available
Software repositories such as GitHub host a large number of software entities. Developers collaboratively discuss, implement, use, and share these entities. Proper documentation plays an important role in successful software management and maintenance. Users exploit Issue Tracking Systems, a facility of software repositories, to keep track of issue...
Article
Full-text available
Many platforms exploit collaborative tagging to provide their users with faster and more accurate results while searching or navigating. Tags can communicate different concepts such as the main features, technologies, functionality, and the goal of a software repository. Recently, GitHub has enabled users to annotate repositories with topic tags. I...
Preprint
Full-text available
An issue documents discussions around required changes in issue-tracking systems, while a commit contains the change itself in the version control systems. Recovering links between issues and commits can facilitate many software evolution tasks such as bug localization, and software documentation. A previous study on over half a million issues from...
Preprint
Full-text available
Proper documentation plays an important role in successful software management and maintenance. Software repositories such as GitHub host a large number of software entities. Developers collaboratively discuss, implement, use, and share these entities. Users exploit Issue Tracking Systems, a facility of software repositories, to keep track of issue...
Preprint
Full-text available
In today's world, social networks have become one of the primary sources for creation and propagation of news. Social news aggregators are one of the actors in this area in which users post news items and use positive or negative votes to indicate their preference toward a news item. News items will be ordered and displayed according to their aggre...
Preprint
Full-text available
Many platforms exploit collaborative tagging to provide their users with faster and more accurate results while searching or navigating. Tags can communicate different concepts such as the main features, technologies, functionality, and the goal of a software repository. Recently, GitHub has enabled users to annotate repositories with topic tags. I...
Article
The lack of proper documentation makes program comprehension a cumbersome process for developers. Source code summarization is one of the existing solutions to this problem. Many approaches have been proposed to summarize source code in recent years. A prevalent weakness of these solutions is that they do not pay much attention to interactions amon...
Article
Software development nowadays is heavily based on libraries, frameworks and their proposed Application Programming Interfaces (APIs). However, due to challenges such as the complexity and the lack of documentation, these APIs may introduce various obstacles for developers and common defects in software systems. To resolve these issues, developers u...
Preprint
Full-text available
Community Question Answering platforms such as Stack Overflow help a wide range of users solve their challenges online. As the popularity of these communities has grown over the years, both the number of members and posts have escalated. Also, due to the diverse backgrounds, skills, expertise, and viewpoints of users, each question may obtain more...
Preprint
Full-text available
Python is a popular, widely used, and general-purpose programming language. In spite of its ever-growing community, researchers have not performed much analysis on Python's topics, trends, and technologies which provides insights for developers about Python community trends and main issues. In this article, we examine the main topics related to thi...
Article
Full-text available
Code reuse has well-known benefits on code quality, coding efficiency, and maintenance. Open Source Software (OSS) programmers gladly share their own code and they happily reuse others’. Social programming platforms like GitHub have normalized code foraging via their common platforms, enabling code search and reuse across different projects. Removi...
Preprint
Full-text available
Developers often dedicate a great amount of time to program comprehension. Program comprehension reduces the cost and time of software development and increases maintainability of a program. However, the lack of documentation makes this process cumbersome for developers. Source code summarization is one of the existing solutions to help developers...
Article
Full-text available
In software programs, most of the time, there is a chance of faults in general, and exception faults in particular. Localizing those pieces of code which are responsible for a particular fault is one of the most complicated tasks and it can make incorrect results if done manually. Semi-automated and fully-automated techniques have been introduced t...
Article
Full-text available
Microservices architectures are becoming the defacto standard for building continuously deployed systems. At the same time, there is a substantial growth in the demand for migrating on‐premise legacy applications to the cloud. In this context, organizations tend to migrate their traditional architectures into cloud‐native architectures using micros...
Article
To perform software maintenance, developers must have a relatively good understanding of the program's source code, which is often written by other developers. Code summaries, which describe a program's entities (for example, its methods), help developers better comprehend code more quickly. However, generating code summaries can be challenging. To...
Article
Full-text available
One of the first steps to perform most of the software maintenance activities, such as updating features or fixing bugs, is to have a relatively good understanding of the program's source code which is often written by other developers. A code summary is a description about a program's entities (e.g., its methods) which helps developers have a bett...
Article
Full-text available
When DevOps started gaining momentum in the software industry, one of the first service-based architectural styles to be introduced, be applied in practice, and become popular was microservices. Migrating monolithic architectures to cloud-native architectures such as microservices reaps many benefits, such as adaptability to technological changes a...
Conference Paper
Full-text available
Question and answer (Q&A) websites like Stack Overflow are one of the important sources of code examples in which developers can ask their questions and leave their answers about programming issues. Since the number of programmers who use these websites are increasing and a large number of questions and answers are being posted there by them, verif...
Article
Context: Object-oriented application frameworks, such as Java Swing, provide reusable code and design for implementing domain-specific concepts, such as Context Menu, in software applications. Hence, use of such frameworks not only can decrease the time and the cost of developing new software applications, but also can increase their maintainabilit...
Conference Paper
Full-text available
Migration to the cloud has been a popular topic in industry and academia in recent years. Despite many benefits that the cloud presents, such as high availability and scalability, most of the on-premise application architectures are not ready to fully exploit the benefits of this environment, and adapting them to this environment is a non-trivial t...
Conference Paper
Full-text available
In software programs, most of the time, there is a chance of error, even though they are tested carefully. Finding error-related pieces of code is one of the most complicated tasks and it can make incorrect results if done manually. Semi-automated and fully-automated methods have been introduced to overcome this issue. The rapid growth of developin...
Conference Paper
Full-text available
Despite the need for change, highly available software systems cannot be stopped to perform changes because disruption in their services may consequent irrecoverable losses. Current work on runtime evolution are either too disruptive, e.g., “blackouts” in unnecessary components in the quiescence criterion approach or presume restrictive assumptions...
Conference Paper
Full-text available
This paper positions an idea for an interactive code recommendation system. In this work, candidate recommendations are abstracted as a graph-based visualization of the API usages that are decorated with the API specifications and the usage rules mined from the unit test cases of the given API and its usage examples. The user can then progressively...
Article
Full-text available
It is now a common approach pursued by programmers to develop new software systems using Object-Oriented Application Frameworks such as Spring, Struts and, Eclipse. This improves the quality and the maintainability of the code. Furthermore, it reduces development cost and time. However, the main problem is that these frameworks usually have a compl...
Article
Full-text available
Nowadays, several non-automatic or semi-automatic software architecture evaluation methods have been proposed to evaluate their quality attributes as availability. In spite of their applicability, they are not effective in self-adaptive software architectures due to their off-line properties; e.g., scenario-based methods. Since the architectural ta...
Conference Paper
Full-text available
In order to be adapted to changes in user requirements and/or the environment, many software systems need to run continuously while they evolve. Most current approaches for such dynamic reconfiguration assume that the evolved system will behave as expected and thus will be reliable if the reconfiguration is consistent. This assumption may not corre...
Article
Full-text available
Object-oriented frameworks are widely used to develop new applications. They provide reusable concepts that are instantiated in application code through potentially complex implementation steps such as subclassing, implementing interfaces, and calling framework operations. Unfortunately, many modern frameworks are difficult to use because of their...
Article
Full-text available
Parallelization is attractive for speeding up dynamic program analysis on multicores. However, inter-thread communication overhead may outweigh any benefit from parallel execution. We propose deferred methods, a high-level Java framework to accelerate dynamic analysis on multicores. To minimize inter-thread communication overhead, invocations to an...
Article
Full-text available
With significant advances in software development technologies, it is now possible to have complex software applications, which include a large number of heterogeneous software components distributed over a large network of computers with different computational capabilities. To run such applications, their components must be instantiated on proper...
Article
Full-text available
Effective parallelization of fine-grained tasks, such as in dynamic program analysis, is challenging because thread communication overheads may outweigh the benefits of parallelism. In this paper, we address this issue with deferred methods, a novel Java framework that aggregates invocations of analysis methods in thread-local buffers and processes...
Article
Calling context profiling is an important technique for analyzing the performance of object-oriented software with complex inter-procedural control flow. The Calling Context Tree (CCT) is a common data structure that stores dynamic metrics, such as CPU time, separately for each calling context. As CCTs may comprise millions of nodes, there is a nee...
Conference Paper
Full-text available
Statically exploring the inter-procedural control flow of object-oriented applications is often difficult because of the use of abstraction, polymorphism, and dynamic binding. To ease this problem, in this tool demonstration, we present a new profiler that dynamically explores the inter-procedural control flow of Java applications while they are ex...
Conference Paper
Full-text available
Application frameworks provide reusable concepts that are instantiated in application code through potentially complex implementation steps such as subclassing, implementing callbacks, and making calls. Existing applications contain valuable examples of such steps, except that locating them in the application code is often challenging. We propose t...
Chapter
Full-text available
Software deployment comprises activities for placing an already developed application into its operational environment and making it ready for use. For complex component-based applications that constitute many heterogeneous components with various hardware and software requirements, this deployment process can become one of the most burning challen...
Conference Paper
Full-text available
Application developers often use example applications as a guide to learn how to implement a framework-provided concept. To ease applying this technique, we present a novel framework comprehension technique called FUDA. FUDA integrates a new dynamic slicing approach with clustering and data mining techniques to generate the implementation recipes o...
Conference Paper
Full-text available
Application developers often apply the Monkey See/Monkey Do rule for framework-based application development, i.e., they use existing applications as a guide to understand how to implement a desired framework-provided concept (e.g., a context menu in an Eclipse view). However, the code that implements the concept of interest might be scattered acro...
Article
Full-text available
Abstract A common,practice followed by many,application developers is to use existing framework,appli- cations as a guide to understand how,to implement,a framework-provided concept of interest. Un- fortunately, flnding the code that implements the concept of interest might be very di‐cult since the code might be scattered across and tangled with c...
Article
Full-text available
With significant advances in software development technologies in recent years, it is now possible to have complex software applications that include a large number of heterogeneous software components distributed over a large network of computers with different computational capabilities. To run such applications, their components must be instanti...
Article
Full-text available
In this paper, we present our work-in-progress on developing an automated deploy- ment planner for the composition of Web services as software components using the Reo coordination middleware in a distributed environment. Web services refer to accessing services over the Web. Reo is an exogenous coordination model for compositional construction of...
Conference Paper
Full-text available
Software deployment process is a sequence of related activities for installing an already developed application into its target environment, and bringing it into an executing state. For complex component-based applications that should be deployed into a large distributed environment, several deployment configurations are typically possible. These d...
Conference Paper
Full-text available
With significant advances in software development technologies in recent years, it is now possible to have complex software applications, which include a large number of heterogeneous software components distributed over a large network of computers with different computational capabilities. To run such applications, their components must be instan...
Conference Paper
Full-text available
Modeling agents’ behavior has always been a challenge in multiagent systems. In a competitive environment, predicting future behaviors of opponents helps to make plans to confront their actions properly. We have used the RoboCup soccer server environment [1] to design a coach, capable of analyzing simulated soccer games and making decisions to impr...
Article
RoboCup-2001 was the Fifth International RoboCup Competition and Conference. It was held for the first time in the United States, following RoboCup-2000 in Melbourne, Australia; RoboCup-99 in Stockholm; RoboCup-98 in Paris; and RoboCup-97 in Osaka. This article discusses in detail each one of the events at RoboCup-2001, focusing on the competition...
Conference Paper
Full-text available
A mobile robot should be able to analyze what it is seeing in real time rate and decide accordingly. Fast and reliable analysis of image data is one of the key points in soccer robot performance. In this paper we suggest a very fast method for object finding which uses the concept of perspective view. In our method, we introduce a set of jump point...
Conference Paper
Full-text available
Constructing soccer robots is an attempt in development of AI researches, done by defining a standard problem and solving it by many researchers all over the world. In this field, every year a formal federation holds international competitions, called RoboCup [1]. The Simulation League is one of the branches of the RoboCup. We have designed and im...
Article
Full-text available
. An important task for a mobile robot is to determine its location in the environment. This task is called positioning. In this paper we represent two algorithm for positioning in a noisy environment. The first one is for special use in simulation soccerserver [1] environment, while the second which is an extension of the method described in [3],...
Conference Paper
Full-text available
In real soccer goal keeper has a completely di erent behav-ior that the players. Thus we designed our goal keeper with some basic ideas taken from real soccer, which is moving mainly in goal area and using arms to take the balls. Our goal keeper has a moving mechanism based on 8 motors which enables it to move forward/backward, straight left/right...

Network

Cited By

Projects

Projects (2)
Project
We are proposed a novel approach to localizing exceptions in Android applications.
Project
text and code summarization using deep learning.