Heidar Pirzadeh

dblp:30/1772 · DBLP profile ↗
← Back
8ranked-venue papers
8as first author
0since 2021 · last 2014
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 7 · 7 first-authorSecurity and privacy · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
2 papers
Software testing · 57% Program analysis · 38% Debugging and program repair · 6%

Topics — the 5 heaviest of 5, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software testing
test maintenance
0.212014
Resilient user interface level tests · ASE 2014
Software testing
UI testing
0.212014
Resilient user interface level tests · ASE 2014
Program analysis
dynamic analysis
0.112011
A software behaviour analysis framework based on the human perception systems · ICSE 2011
Program analysis › dynamic analysis
trace analysis
0.112011
A software behaviour analysis framework based on the human perception systems · ICSE 2011
Debugging and program repair
fault localization
0.012011
A software behaviour analysis framework based on the human perception systems · ICSE 2011

Methods — techniques the papers use, named apart from their topics

human perception models · 0.1
YearPublicationVenuePosition
2014 Resilient user interface level tests
abstract
About 60% of the software development cost for online applications is related to developing user interfaces commonly used by the end users to interact with those applications. Frequent small changes to user interfaces (UIs) however easily break about 70% of the test cases intended to mimic users' interactions. Fixing broken tests results in extra costs of maintenance while lessening the benefits of test automation. One of the biggest challenges in creating resilient UI level test cases is to identify and locate the elements of the UI in a way that small UI changes do not break the way in which an element was originally located.
Heidar Pirzadeh, Sara Shanian
ASE1
2013 Stratified sampling of execution traces: Execution phases serving as strata
Heidar Pirzadeh, Sara Shanian, Abdelwahab Hamou-Lhadj, Luay Alawneh, Arya Shafiee
Sci. Comput. Program.1
2011 A Novel Approach Based on Gestalt Psychology for Abstracting the Content of Large Execution Traces for Program Comprehension
abstract
The analysis of execution traces can reveal important information about the behavioral aspects of complex software systems, hence reducing the time and effort it takes to understand and maintain them. Traces, however, tend to be considerably large which hinders their effective analysis. Existing traces analysis tools rely on some sort of visualization techniques to help software engineers make sense of trace content. Many of these techniques have been studied and found to be limited in many ways. In this paper, we present a novel trace analysis technique that automatically divides the content of a large trace into meaningful segments that correspond to the program's main execution phases such as initializing variables, performing a specific computation, etc. These phases can simplify significantly the exploration of large traces by allowing software engineers to first understand the content of a trace at a high-level before they decide to dig into the details. Our phase detection method is inspired by Gestalt laws that characterize the proximity, similarity, and continuity of the elements of a data space. We model these concepts in the context of execution traces and show how they can be used as gravitational forces that yield the formation of dense groups of trace elements, which indicate candidate phases. We applied our approach to two software systems. The results are very promising.
Heidar Pirzadeh, Abdelwahab Hamou-Lhadj
ICECCS1
2011 A software behaviour analysis framework based on the human perception systems
abstract
Understanding software behaviour can help in a variety of software engineering tasks if one can develop effective techniques for analyzing the information generated from a system's run. These techniques often rely on tracing. Traces, however, can be considerably large and complex to process.
Heidar Pirzadeh, Abdelwahab Hamou-Lhadj
ICSE1
2011 Exploiting text mining techniques in the analysis of execution traces
abstract
The analysis of execution traces can be useful in many software engineering activities including debugging, feature enhancement, performance analysis, and any other task that requires some degree of understanding of the way a system behaves. Traces, however, tend to be considerably large, which often hinders effective analysis of their content. There is a need to investigate ways to help software engineers find and understand important information conveyed in a trace despite the trace being massive. Motivated by the work done in the area of text mining, we propose, in this paper, a trace exploration approach based on examining the trace execution phases. The approach consists of automatically identifying relevant information about the phases as well as the ability to provide an efficient representation of the flow of phases by detecting redundant phases using a cosine similarity metric. We applied our approach to large traces generated from two different systems and were able to quickly understand their content and extract higher level views that characterize the essence of the information conveyed in these traces.
Heidar Pirzadeh, Abdelwahab Hamou-Lhadj, Mohak Shah
ICSM1
2011 The Concept of Stratified Sampling of Execution Traces
abstract
Execution traces can be overwhelmingly large. To reduce their size, sampling techniques, especially the ones based on random sampling, have been extensively used. Random sampling, however, may result in samples that are not representative of the original trace. We propose a trace sampling framework based on stratified sampling that not only reduces the size of a trace but also results in a sample that is representative of the original trace by ensuring that the desired characteristics of an execution are distributed similarly in both the sampled and the original trace.
Heidar Pirzadeh, Sara Shanian, Abdelwahab Hamou-Lhadj, Ali Mehrabian
ICPC1
2010 An Approach for Detecting Execution Phases of a System for the Purpose of Program Comprehension
abstract
Understanding the behavioural aspects of a software system is an important activity in many software engineering activities including program comprehension and reverse engineering. The behaviour of software is typically represented in the form of execution traces. Traces, however, tend to be considerably large which makes analyzing their content a complex task. There is a need for trace simplification techniques that can help software engineers make sense of the content of a trace despite the trace being massive. In this paper, we present a novel algorithm that aims to simplify the analysis of a large trace by detecting the execution phases that compose it. An example of a phase could be an initialization phase, a specific computation, etc. Our algorithm processes a trace generated from running the program under study and divides it into phases that can be later used by software engineers to understand where and why a particular computation appears. We also show the effectiveness of our approach through a case study.
Heidar Pirzadeh, Akanksha Agarwal, Abdelwahab Hamou-Lhadj
SERA1
2008 Encoding the Program Correctness Proofs as Programs in PCC Technology
abstract
One of the key issues with the practical applicability of Proof-Carrying Code (PCC) and its related methods is the difficulty in communicating and storing the proofs which are inherently large. The approaches proposed to alleviate this, suffer from drawbacks of their own especially the enlargement of the Trusted Computing Base, in which any bug may cause an unsafe program to be accepted. We propose a generic extended PCC framework (EPCC) in which, instead of the proof, a proof generator for the program in question is transmitted. This framework enables the execution of the proof generator and the recovery of the proof on the consumer side in a secure manner.
Heidar Pirzadeh, Danny Dubé
PST1