Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Abdelwahab Hamou-Lhadj is active.

Publication


Featured researches published by Abdelwahab Hamou-Lhadj.


international conference on program comprehension | 2006

Summarizing the Content of Large Traces to Facilitate the Understanding of the Behaviour of a Software System

Abdelwahab Hamou-Lhadj; Timothy C. Lethbridge

In this paper, we present a semi-automatic approach for summarizing the content of large execution traces. Similar to text summarization, where abstracts can be extracted from large documents, the aim of trace summarization is to take an execution trace as input and return a summary of its main content as output. The resulting summary can then be converted into a UML sequence diagram and used by software engineers to understand the main behavioural aspects of the system. Our approach to trace summarization is based on the removal of implementation details such as utilities from execution traces. To achieve our goal, we have developed a metric based on fan-in and fan-out to rank the system components according to whether they implement key system concepts or they are mere implementation details. We applied our approach to a trace generated from an object-oriented system called Weka that initially contains 97413 method calls. We succeeded to extract a summary from this trace that contains 453 calls. According to the developers of the Weka system, the resulting summary is an adequate high-level representation of the main interactions of the traced scenario


conference on software maintenance and reengineering | 2005

Recovering behavioral design models from execution traces

Abdelwahab Hamou-Lhadj; Edna Braun; Daniel Amyot; Timothy C. Lethbridge

Recovering behavioral design models from execution traces is not an easy task due to the sheer size of typical traces. In this paper, we describe a novel technique for achieving this. Our approach is based on filtering traces by distinguishing the utility components from the ones that implement high-level concepts. In the paper, we first define the concept of utilities; then we present an algorithm based on fan-in analysis that can be used for the detection of utilities. To represent the high-level behavioral models, we explore the use case map (UCM) notation, which is a language used to describe and understand emergent behavior of complex and dynamic systems. Finally, we test the validity of our approach on an object-oriented system called TConfig.


workshop on program comprehension | 2002

Compression techniques to simplify the analysis of large execution traces

Abdelwahab Hamou-Lhadj; Timothy C. Lethbridge

Dynamic analysis consists of analyzing the behavior of a software system to extract its properties. There have been many studies that use dynamic information to extract high-level views of a software system or simply to help software engineers to perform their daily maintenance activities more effectively. One of the biggest challenges that such tools face is to deal with very large execution traces. By analyzing the execution traces of the software systems we are working on, we noticed that they contain many redundancies that can be removed. This led us to create a comprehension-driven compression framework that compresses the traces to make them more understandable. In this paper, we present and explain its components. The compression framework is reversible that is the original trace can be reconstructed from its compressed version. In addition to that, we conducted an experiment with the execution traces of two software systems to measure the gain attained by such compression.


conference on software maintenance and reengineering | 2009

Software Clustering Using Dynamic Analysis and Static Dependencies

Chiragkumar Patel; Abdelwahab Hamou-Lhadj; Juergen Rilling

Decomposing a software system into smaller, more manageable clusters is a common approach to support the comprehension of large systems. In recent years, researchers have focused on clustering techniques to perform such architectural decomposition, with the most predominant clustering techniques relying on the static analysis of source code. We argue that these static structural relationships are not sufficient for software clustering due to the increased complexity and behavioral aspects found in software systems. In this paper, we present a novel software clustering approach that combines dynamic and static analysis to identify component clusters. We introduce a two-phase clustering technique that combines software features to build a core skeleton decomposition with structural information to further refine these clusters. A case study is presented to evaluate the applicability and effectiveness of our approach.


Computers & Security | 2014

Taxonomy of intrusion risk assessment and response system

Alireza Shameli-Sendi; Mohamed Cheriet; Abdelwahab Hamou-Lhadj

In recent years, we have seen notable changes in the way attackers infiltrate computer systems compromising their functionality. Research in intrusion detection systems aims to reduce the impact of these attacks. In this paper, we present a taxonomy of Intrusion Response Systems (IRS) and Intrusion Risk Assessment (IRA), two important components of an intrusion detection solution. We achieve this by classifying a number of studies published during the last two decades. We discuss the key features of existing IRS and IRA. We show how characterizing security risks and choosing the right countermeasures are an important and challenging part of designing an IRS and an IRA. Poorly designed IRS and IRA may reduce network performance and wrongly disconnect users from a network. We propose techniques on how to address these challenges and highlight the need for a comprehensive defense mechanism approach. We believe that this taxonomy will open up interesting areas for future research in the growing field of intrusion risk assessment and response systems.


international conference on program comprehension | 2008

An Approach for Mapping Features to Code Based on Static and Dynamic Analysis

Abhishek Rohatgi; Abdelwahab Hamou-Lhadj; Juergen Rilling

System evolution depends greatly on the ability of a maintainer to locate source code that is specific to feature implementation. Existing feature location techniques require either exercising several features of the system, or rely heavily on domain experts to guide the feature location process. In this paper, we present a novel approach for feature location that combines static and dynamic analysis techniques. An execution trace is generated by exercising the feature under study (dynamic analysis). A component dependency graph (static analysis) is used to rank the components invoked in the trace according to their relevance to the feature. Our ranking technique is based on the impact of a component modification on the rest of the system. The proposed approach is automatic to a large extent relieving users from any decision that would otherwise require extensive domain knowledge of the system. A case study is presented to support and evaluate the applicability of our approach.


international conference on quality software | 2009

A Survey of Model-Driven Testing Techniques

Mohamed Mussa; Samir Ouchani; Waseem Al Sammane; Abdelwahab Hamou-Lhadj

The model-driven approach to software development has not only changed the way software systems are built and maintained but also the way they are tested. For such systems, a model-based testing approach is much recommended since it is aligned with the new model-driven development paradigm that favors models over code with the objective being to reduce time to market while improving product quality. There has been a noticeable increase in the number of model-driven testing techniques in recent years. Although these techniques have a common objective they tend to vary significantly in their design. In this paper, we discuss the model-driven testing techniques presented in 15 different studies. We compare these techniques according to specific criteria including the modeling language used to represent the system design artifacts, the ability to automatically generate test cases, the testing target, and tool support.


availability, reliability and security | 2009

Generating AMF Configurations from Software Vendor Constraints and User Requirements

Ali Kanso; Maria Toeroe; Abdelwahab Hamou-Lhadj; Ferhat Khendek

The Service Availability Forum (SAF) has defined a set of service API specifications addressing the growing need of commercial-off-the-shelf high availability solutions. Among these services, the Availability Management Framework (AMF) is the service responsible for managing the high availability of the application services by coordinating redundant application components. To achieve this task, an AMF implementation requires a specific logical view of the organization of the applications services and components known as an AMF configuration. Developing manually such a configuration is a complex, error prone, and time consuming task. In this paper, we present an approach for automatic generation of AMF configurations from a set of requirements given by the configuration designer and the description of the software as provided by the vendor. Our approach alleviates the need of configuration designers dealing with a large number of AMF entities and their relations.


international conference on engineering of complex computer systems | 2005

Measuring various properties of execution traces to help build better trace analysis tools

Abdelwahab Hamou-Lhadj; Timothy C. Lethbridge

Understanding the behavior of a software system by studying its execution traces can be extremely difficult due to the sheer size and complexity of typical traces. In this paper, we propose that if various aspects that contribute to a traces complexity could be measured and if this information could be used by tools, then trace analysis could be facilitated. For this purpose, we present a set of simple and practical metrics that aim at measuring various properties of execution traces. We also show the results of applying these metrics to traces of three software systems and suggest how the results could be used to improve existing trace analysis tools.


international conference on software engineering | 2010

An Approach for Detecting Execution Phases of a System for the Purpose of Program Comprehension

Heidar Pirzadeh; Akanksha Agarwal; Abdelwahab Hamou-Lhadj

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.

Collaboration


Dive into the Abdelwahab Hamou-Lhadj's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Luay Alawneh

Jordan University of Science and Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Mario Couture

Defence Research and Development Canada

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Jameleddine Hassine

King Fahd University of Petroleum and Minerals

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge