mojtaba vahidi | University of Westminster (original) (raw)

Papers by mojtaba vahidi

Research paper thumbnail of Finding Discriminative Weighted Sub-graphs to Identify Software Bugs

The aim has been to detect discriminative sub-graphs which are highly distinguishable between pro... more The aim has been to detect discriminative sub-graphs which are highly distinguishable between program failing and passing execution graphs resulted from different runs. In this paper, a novel approach to mine weighted-edge graphs is proposed. We also apply our efficient objective function to find most discriminative patterns between failing and passing graphs. To find bug relevant sub-graphs, a decision tree classifier is used to classify program failing and passing runs based on their discriminative sub-graphs. The experimental results on Siemens test suite reveal the effectiveness of the proposed approach specifically in finding multiple bugs. It also gives the debugger an infection path related to the discovered bug(s).

Research paper thumbnail of Fuzzy Clustering the Backward Dynamic Slices of Programs to Identify the Origins of Failure

In this paper a new technique for identifying the origins of program failure is presented. To ach... more In this paper a new technique for identifying the origins of program failure is presented. To achieve this, the outstanding features of both statistical debugging and dynamic slicing techniques are combined. The proposed Fuzzy-Slice technique, computes the full backward dynamic slice of variables used in output statement of a given program in several failing and passing executions. According to the statements presented in the slice of an execution, each run could be converted into an execution point within Euclidean space, namely execution space. Using fuzzy clustering technique, different program execution paths are identified and the fault relevant statements are ranked according to their presence in different clusters. The novel scoring method for identifying fault relevant statements considers the observation of a statement in all execution paths. The promising results on Siemens test suite reveal the high accuracy and precision of the proposed Fuzzy-Slice technique.

Research paper thumbnail of Software Fault Localization Using Elastic Net: A New Statistical Approach

Fault localization is an important task in software testing process. The aim is to find latent se... more Fault localization is an important task in software testing process. The aim is to find latent semantic faults which do not violate program syntactic rules. Statistical debugging techniques are amongst best methods for identifying faults in the program source code. However, they have some drawbacks. They require a large number of executions to identify faults. Furthermore, they do not consider the simultaneous effect of predicates on program termination status. To resolve the problems, in this paper a new approach based on elastic net has been proposed. The proposed approach finds the smallest effective subset of program predicates known as bug predictors. Detecting most effective bug predictors considering fewer amounts of executions as much as possible is highly desirable. The elastic net is advantageous when the number of executions is much smaller than the number of predicates. After selecting bug predictors, the main causes of faults are detected by using existing program slicing technique. The experimental results on two well-known test suites reveal the effectiveness and accuracy of the proposed approach.

Research paper thumbnail of Early Bug Detection in Deployed Software Using Support Vector Machine

Early Bug Detection in Deployed Software Using Support Vector Machine

Software crashes may be disastrous and cause great economical damages. Therefore, the reliability... more Software crashes may be disastrous and cause great economical damages. Therefore, the reliability and safety of software products in some circumstances may be very vital and critical. In this paper a new mechanism to detect errors and prevent software crashes at run time, is presented. The novelty of the proposed technique is the use of Support Vector Machine (SVM) method to accelerate the detection of bugs early before they cause program crashes. By applying the SVM method, two thoroughly distinguishable patterns of failing and passing execution of the program are constructed in a relatively short amount of time, before the program is actually deployed. The vectors are constructed from the decision making expressions or in other words predicates, appearing within the program text. These patterns are further applied, after the program deployment, to estimate the probability of program failure symptoms, early before the program crashes. Our experiments with bug prediction in Siemens software, demonstrate the ability of our proposed technique to predict errors before they can cause any damages.

Research paper thumbnail of A Learning Approach to Early Bug Prediction in Deployed Software

A Learning Approach to Early Bug Prediction in Deployed Software

In this paper the use of Support Vector Machines to build programs behavioral models predicting m... more In this paper the use of Support Vector Machines to build programs behavioral models predicting misbehaviors while executing the programs, is described. Misbehaviors can be detected more precisely if the model is built considering both the failing and passing runs. It is desirable to create a model which even after fixing the detected bugs is still applicable. To achieve this, the use of a bug seeding technique to test all different execution paths of the program in both failing and passing executions is suggested. Our experiments with a test suite, EXIF, demonstrate the applicability of our proposed approach.

Research paper thumbnail of Finding Causes of Software Failure Using Ridge Regression and Association Rule Generation Methods

An important challenge in finding latent errors in software is to find predicates which have the ... more An important challenge in finding latent errors in software is to find predicates which have the most effect on program failure. Since predicates have mutual effects on each other, it is not a good solution to analyze them in isolation, without considering the simultaneous effects of other predicates on failure. The aim is to detect those predicates which are best bug predictors and meanwhile have the least effects among themselves. To achieve this, Recursive Ridge regression method has been applied.

Research paper thumbnail of Analyzing program dynamic graphs for software fault localization

The aim of this paper is to extract dynamic behavioral graphs from different executions of a prog... more The aim of this paper is to extract dynamic behavioral graphs from different executions of a program and analyze them to find bug relevant sub-graphs. Similar graph mining methods for software fault localization extract discriminate sub-graphs in failing and passing executions. However, due to the nature of software bugs, a failure context does not necessarily appear in a discriminative sub-graph. Therefore, we have proposed a new formula to rank the edges based on their suspiciousness to the failure. These suspicious edges are further applied to form best candidate faulty sub-graphs. In order to show the significance of using weights to construct program dynamic graphs, we have analyzed both weighted and un-weighted graphs with proposed ranking technique. The experimental results on Siemens suite reveal high capability of the proposed technique on weighted dynamic graphs.

Research paper thumbnail of Statistical software debugging: From bug predictors to the main causes of failure

Detecting latent errors is a key challenging issue in the software testing process. Latent errors... more Detecting latent errors is a key challenging issue in the software testing process. Latent errors could be best detected by bug predictors. A bug predictor manifests the effect of a bug on the program execution state. The aim has been to find the smallest reasonable subset of the bug predictors, manifesting all possible bugs within a program. In this paper, a new algorithm for finding the smallest subset of bug predictors is presented. The algorithm, firstly, applies a LASSO method to detect program predicates which have relatively higher effect on the termination status of the program. Then, a ridge regression method is applied to select a subset of the detected predicates as independent representatives of all the program predicates. Program control and data dependency graphs can be best applied to find the causes of bugs represented by the selected bug predictors. Our proposed approach has been evaluated on two well-known test suites. The experimental results demonstrate the effectiveness and accuracy of the proposed approach.

Research paper thumbnail of Finding software fault relevant subgraphs a new graph mining approach for software debugging

Finding software fault relevant subgraphs a new graph mining approach for software debugging

... Francisco, 2006. [2] P. Arumuga Nainar, T. Chen, J. Rosin, B. Liblit, “Statistical debugging ... more ... Francisco, 2006. [2] P. Arumuga Nainar, T. Chen, J. Rosin, B. Liblit, “Statistical debugging using compound Boolean predicates,” International Symposium on Software Testing and Analysis, pp. 5-15. ACM Press, London 2007. [3 ...

Research paper thumbnail of Learn to Detect Phishing Scams Using Learning and Ensemble ?Methods

Phishing attack is a kind of identity theft which tries to steal confidential data like on -line ... more Phishing attack is a kind of identity theft which tries to steal confidential data like on -line bank account information . In a phishing attack scenario, attacker deceives users by a fake email which is called scam. In this paper we employ three different learning methods to detect phishing scams. Then, we use ensemble methods on their results to improve our scam detection mechanism. Experimental results show that the proposed method can detect 94.4% of scam emails correctly, while only 0.08% of legitimate emails are classified as scams.

Research paper thumbnail of A Zero Knowledge Password Proof Mutual Authentication Technique Against Real-Time Phishing Attacks

Phishing attack is a kind of identity theft trying to steal confidential data. Existing approache... more Phishing attack is a kind of identity theft trying to steal confidential data. Existing approaches against phishing attacks cannot prevent real-time phishing attacks. This paper proposes an Anti-Phishing Authentication (APA) technique to detect and prevent real-time phishing attacks. It uses 2-way authentication and zero-knowledge password proof. Users are recommended to customize their user interfaces and thus defend themselves against spoofing. The proposed technique assumes the preexistence of a shared secret key between any two communicating partners, and ignores the existence of any malware at client sides.

Research paper thumbnail of Learn to Detect Phishing Scams Using Learning and Ensemble ?Methods

Phishing attack is a kind of identity theft which tries to steal confidential data like on -line ... more Phishing attack is a kind of identity theft which tries to steal confidential data like on -line bank account information . In a phishing attack scenario, attacker deceives users by a fake email which is called scam. In this paper we employ three different learning methods to detect phishing scams. Then, we use ensemble methods on their results to improve our scam detection mechanism. Experimental results show that the proposed method can detect 94.4% of scam emails correctly, while only 0.08% of legitimate emails are classified as scams.

Research paper thumbnail of Finding Discriminative Weighted Sub-graphs to Identify Software Bugs

The aim has been to detect discriminative sub-graphs which are highly distinguishable between pro... more The aim has been to detect discriminative sub-graphs which are highly distinguishable between program failing and passing execution graphs resulted from different runs. In this paper, a novel approach to mine weighted-edge graphs is proposed. We also apply our efficient objective function to find most discriminative patterns between failing and passing graphs. To find bug relevant sub-graphs, a decision tree classifier is used to classify program failing and passing runs based on their discriminative sub-graphs. The experimental results on Siemens test suite reveal the effectiveness of the proposed approach specifically in finding multiple bugs. It also gives the debugger an infection path related to the discovered bug(s).

Research paper thumbnail of Fuzzy Clustering the Backward Dynamic Slices of Programs to Identify the Origins of Failure

In this paper a new technique for identifying the origins of program failure is presented. To ach... more In this paper a new technique for identifying the origins of program failure is presented. To achieve this, the outstanding features of both statistical debugging and dynamic slicing techniques are combined. The proposed Fuzzy-Slice technique, computes the full backward dynamic slice of variables used in output statement of a given program in several failing and passing executions. According to the statements presented in the slice of an execution, each run could be converted into an execution point within Euclidean space, namely execution space. Using fuzzy clustering technique, different program execution paths are identified and the fault relevant statements are ranked according to their presence in different clusters. The novel scoring method for identifying fault relevant statements considers the observation of a statement in all execution paths. The promising results on Siemens test suite reveal the high accuracy and precision of the proposed Fuzzy-Slice technique.

Research paper thumbnail of Software Fault Localization Using Elastic Net: A New Statistical Approach

Fault localization is an important task in software testing process. The aim is to find latent se... more Fault localization is an important task in software testing process. The aim is to find latent semantic faults which do not violate program syntactic rules. Statistical debugging techniques are amongst best methods for identifying faults in the program source code. However, they have some drawbacks. They require a large number of executions to identify faults. Furthermore, they do not consider the simultaneous effect of predicates on program termination status. To resolve the problems, in this paper a new approach based on elastic net has been proposed. The proposed approach finds the smallest effective subset of program predicates known as bug predictors. Detecting most effective bug predictors considering fewer amounts of executions as much as possible is highly desirable. The elastic net is advantageous when the number of executions is much smaller than the number of predicates. After selecting bug predictors, the main causes of faults are detected by using existing program slicing technique. The experimental results on two well-known test suites reveal the effectiveness and accuracy of the proposed approach.

Research paper thumbnail of Early Bug Detection in Deployed Software Using Support Vector Machine

Early Bug Detection in Deployed Software Using Support Vector Machine

Software crashes may be disastrous and cause great economical damages. Therefore, the reliability... more Software crashes may be disastrous and cause great economical damages. Therefore, the reliability and safety of software products in some circumstances may be very vital and critical. In this paper a new mechanism to detect errors and prevent software crashes at run time, is presented. The novelty of the proposed technique is the use of Support Vector Machine (SVM) method to accelerate the detection of bugs early before they cause program crashes. By applying the SVM method, two thoroughly distinguishable patterns of failing and passing execution of the program are constructed in a relatively short amount of time, before the program is actually deployed. The vectors are constructed from the decision making expressions or in other words predicates, appearing within the program text. These patterns are further applied, after the program deployment, to estimate the probability of program failure symptoms, early before the program crashes. Our experiments with bug prediction in Siemens software, demonstrate the ability of our proposed technique to predict errors before they can cause any damages.

Research paper thumbnail of A Learning Approach to Early Bug Prediction in Deployed Software

A Learning Approach to Early Bug Prediction in Deployed Software

In this paper the use of Support Vector Machines to build programs behavioral models predicting m... more In this paper the use of Support Vector Machines to build programs behavioral models predicting misbehaviors while executing the programs, is described. Misbehaviors can be detected more precisely if the model is built considering both the failing and passing runs. It is desirable to create a model which even after fixing the detected bugs is still applicable. To achieve this, the use of a bug seeding technique to test all different execution paths of the program in both failing and passing executions is suggested. Our experiments with a test suite, EXIF, demonstrate the applicability of our proposed approach.

Research paper thumbnail of Finding Causes of Software Failure Using Ridge Regression and Association Rule Generation Methods

An important challenge in finding latent errors in software is to find predicates which have the ... more An important challenge in finding latent errors in software is to find predicates which have the most effect on program failure. Since predicates have mutual effects on each other, it is not a good solution to analyze them in isolation, without considering the simultaneous effects of other predicates on failure. The aim is to detect those predicates which are best bug predictors and meanwhile have the least effects among themselves. To achieve this, Recursive Ridge regression method has been applied.

Research paper thumbnail of Analyzing program dynamic graphs for software fault localization

The aim of this paper is to extract dynamic behavioral graphs from different executions of a prog... more The aim of this paper is to extract dynamic behavioral graphs from different executions of a program and analyze them to find bug relevant sub-graphs. Similar graph mining methods for software fault localization extract discriminate sub-graphs in failing and passing executions. However, due to the nature of software bugs, a failure context does not necessarily appear in a discriminative sub-graph. Therefore, we have proposed a new formula to rank the edges based on their suspiciousness to the failure. These suspicious edges are further applied to form best candidate faulty sub-graphs. In order to show the significance of using weights to construct program dynamic graphs, we have analyzed both weighted and un-weighted graphs with proposed ranking technique. The experimental results on Siemens suite reveal high capability of the proposed technique on weighted dynamic graphs.

Research paper thumbnail of Statistical software debugging: From bug predictors to the main causes of failure

Detecting latent errors is a key challenging issue in the software testing process. Latent errors... more Detecting latent errors is a key challenging issue in the software testing process. Latent errors could be best detected by bug predictors. A bug predictor manifests the effect of a bug on the program execution state. The aim has been to find the smallest reasonable subset of the bug predictors, manifesting all possible bugs within a program. In this paper, a new algorithm for finding the smallest subset of bug predictors is presented. The algorithm, firstly, applies a LASSO method to detect program predicates which have relatively higher effect on the termination status of the program. Then, a ridge regression method is applied to select a subset of the detected predicates as independent representatives of all the program predicates. Program control and data dependency graphs can be best applied to find the causes of bugs represented by the selected bug predictors. Our proposed approach has been evaluated on two well-known test suites. The experimental results demonstrate the effectiveness and accuracy of the proposed approach.

Research paper thumbnail of Finding software fault relevant subgraphs a new graph mining approach for software debugging

Finding software fault relevant subgraphs a new graph mining approach for software debugging

... Francisco, 2006. [2] P. Arumuga Nainar, T. Chen, J. Rosin, B. Liblit, “Statistical debugging ... more ... Francisco, 2006. [2] P. Arumuga Nainar, T. Chen, J. Rosin, B. Liblit, “Statistical debugging using compound Boolean predicates,” International Symposium on Software Testing and Analysis, pp. 5-15. ACM Press, London 2007. [3 ...

Research paper thumbnail of Learn to Detect Phishing Scams Using Learning and Ensemble ?Methods

Phishing attack is a kind of identity theft which tries to steal confidential data like on -line ... more Phishing attack is a kind of identity theft which tries to steal confidential data like on -line bank account information . In a phishing attack scenario, attacker deceives users by a fake email which is called scam. In this paper we employ three different learning methods to detect phishing scams. Then, we use ensemble methods on their results to improve our scam detection mechanism. Experimental results show that the proposed method can detect 94.4% of scam emails correctly, while only 0.08% of legitimate emails are classified as scams.

Research paper thumbnail of A Zero Knowledge Password Proof Mutual Authentication Technique Against Real-Time Phishing Attacks

Phishing attack is a kind of identity theft trying to steal confidential data. Existing approache... more Phishing attack is a kind of identity theft trying to steal confidential data. Existing approaches against phishing attacks cannot prevent real-time phishing attacks. This paper proposes an Anti-Phishing Authentication (APA) technique to detect and prevent real-time phishing attacks. It uses 2-way authentication and zero-knowledge password proof. Users are recommended to customize their user interfaces and thus defend themselves against spoofing. The proposed technique assumes the preexistence of a shared secret key between any two communicating partners, and ignores the existence of any malware at client sides.

Research paper thumbnail of Learn to Detect Phishing Scams Using Learning and Ensemble ?Methods

Phishing attack is a kind of identity theft which tries to steal confidential data like on -line ... more Phishing attack is a kind of identity theft which tries to steal confidential data like on -line bank account information . In a phishing attack scenario, attacker deceives users by a fake email which is called scam. In this paper we employ three different learning methods to detect phishing scams. Then, we use ensemble methods on their results to improve our scam detection mechanism. Experimental results show that the proposed method can detect 94.4% of scam emails correctly, while only 0.08% of legitimate emails are classified as scams.