Education & Training

  • Ph.D. Degree 2015

    Ph.D. in Computer Science - Software Engineering

    Université de Montpellier, France

  • Master Degree 2011

    Computer Science

    Jordan University of Science and Technology, Jordan, Excellent, 93.4% (Ranked 1st)

  • Bachelor Degree 2007

    Computer Science

    Irbid National University, Jordan, Excellent, 93.9% (Ranked 1st)

Filter by type:

Sort by year:

Reverse Engineering Reusable Software Components from Object-Oriented APIs

Anas Shatnawi, Abdelhak Seriai, Houari Sahraoui and Zakarea Al Shara
JounalPapers Journal of Systems & Software (JSS), 2016-06-01

Abstract

Object-oriented Application Programing Interfaces (APIs) support software reuse by providing pre-implemented functionalities. Due to the huge number of included classes, reusing and understanding large APIs is a complex task. Otherwise, software components are accepted to be more reusable and understandable entities than object-oriented ones. Thus, in this paper, we propose an approach for reengineering object-oriented APIs into component-based ones. We mine components as a group of classes based on the frequency they are used together and their ability to form a quality-centric component. To validate our approach, we experimented on 100 Java applications that used four APIs.

Recovering Software Product Line Architecture of a Family of Object-Oriented Product Variants

Anas Shatnawi, Abdelhak Seriai and Houari Sahraou
JounalPapers The Journal of Systems and Software (JSS), 2016-06-01

Abstract

Software Product Line Engineering (SPLE) aims at applying a pre-planned systematic reuse of large-grained software artifacts to increase the software productivity and reduce the development cost. The idea of SPLE is to analyze the business domain of a family of products to identify the common and the variable parts between the products. However, it is common for companies to develop, in an ad-hoc manner (e.g. clone and own), a set of products that share common services and differ in terms of others. Thus, many recent research contributions are proposed to re-engineer existing product variants to a software product line. These contributions are mostly focused on managing the variability at the requirement level. Very few contributions address the variability at the architectural level despite its major importance. Starting from this observation, we propose an approach to reverse engineer the architecture of a set of product variants. Our goal is to identify the variability and dependencies among architectural-element variants. Our work relies on formal concept analysis to analyze the variability. To validate the proposed approach, we evaluated on two families of open-source product variants; Mobile Media and Health Watcher. The results of precision and recall metrics of the recovered architectural variability and dependencies are 81%, 91%, 67% and 100%, respectively.

Materializing Architecture Recovered from OO Source Code in Component-Based Languages

Zakarea Al Shara, Abdelhak Seriai, Chouki Tibermacine, Hinde Bouziane, Christophe Dony and Anas Shatnawi
ConferencePapers 10th European Conference on Software Architecture (ECSA 16), 2016-12-02

Abstract

In the literature of software engineering, many approaches have been proposed for the recovery of software architectures. These approaches propose to group classes into highly-cohesive and loosely-coupled clusters considered as architectural components. The recovered architecture plays mainly a documentation role, as high-level design views that enhance software understandability. In addition, architecture recovery can be considered as an intermediate step for migration to component-based platforms. This migration allows to fully benefit from all advantages brought by software component concept. For that, the recovered clusters should not be considered as simple packaging and deployment units. They should be treated as real components: true structural and behavior units that are instantiable from component descriptors and connected together to materialize the architecture of the software. In this paper, we propose an approach for revealing component descriptors, component instances and component-based architecture to materialize the recovered architecture of an object-oriented software in component-based languages. We applied our solution onto two well known component-based languages, OSGi and SOFA.

Migrating Large Object-oriented Applications into Component-based ones: Instantiation and Inheritance Transformation

Zakarea Al Shara, Abdelhak Seriai, Chouki Tibermacine, Hinde Bouziane, Christophe Dony and Anas Shatnawi
ConferencePapers 14th International Conference on Generative Programming: Concepts & Experience (GPCE 15), 2015-10-26

Abstract

In the literature of software engineering, many approaches have been proposed for the recovery of software architectures. These approaches propose to group classes into highly-cohesive and loosely-coupled clusters considered as architectural components. The recovered architecture plays mainly a documentation role, as high-level design views that enhance software understandability. In addition, architecture recovery can be considered as an intermediate step for migration to component-based platforms. This migration allows to fully benefit from all advantages brought by software component concept. For that, the recovered clusters should not be considered as simple packaging and deployment units. They should be treated as real components: true structural and behavior units that are instantiable from component descriptors and connected together to materialize the architecture of the software. In this paper, we propose an approach for revealing component descriptors, component instances and component-based architecture to materialize the recovered architecture of an object-oriented software in component-based languages. We applied our solution onto two well known component-based languages, OSGi and SOFA.

Mining Software Components from Object-Oriented APIs

Anas Shatnawi, Abdelhak Seriai, Houari Sahraoui and Zakarea Al Shara
ConferencePapers 14th International Conference on Software Reuse (ICSR 2015), 2015-01-04

Abstract

Object-oriented Application Programing Interfaces (APIs) support software reuse by providing pre-implemented functionalities. Due to the huge number of included classes, reusing and understanding large APIs is a complex task. Otherwise, software components are admitted to be more reusable and understandable entities than object-oriented ones. Thus, in this paper, we propose an approach for reengineering object- oriented APIs into component-based ones. We mine components as a group of classes based on the frequency they are used together and their ability to form a quality-centric component. To validate our approach, we experimented on 100 Java applications that used Android APIs.

Recovering Architectural Variability of a Family of Product Variants

Anas Shatnawi, Abdelhak Seriai and Houari Sahraou
ConferencePapers 14th International Conference on Software Reuse (ICSR 2015), 2015-01-04

Abstract

A Software Product Line (SPL) aims at applying a pre-planned systematic reuse of large-grained software artifacts to increase the software productivity and reduce the development cost. The idea of SPL is to analyze the business domain of a family of products to identify the common and the variable parts between the products. However, it is common for companies to develop, in an ad-hoc manner (e.g. clone
and own), a set of products that share common functionalities and differ in terms of others. Thus, many recent research contributions are proposed to re-engineer existing product variants to a SPL. Nevertheless, these contributions are mostly focused on managing the variability at the requirement level. Very few contributions address the variability at the architectural level despite its major importance. Starting from this observation, we propose, in this paper, an approach to reverse engineer the architecture of a set of product variants. Our goal is to identify the variability and dependencies among architectural-element variants at the architectural level. Our work relies on Formal Concept Analysis (FCA) to analyze the variability. To validate the proposed approach, we experimented on two families of open-source product variants; Mobile Media and Health Watcher. The results show that our approach is able to identify the architectural variability and the dependencies.

Service Identification Based on Quality Metrics - Object-Oriented Legacy System Migration Towards SOA

Seza Adjoyan, Abdelhak Seriai and Anas Shatnawi
ConferencePapers 26th International Conference on Software Engineering and Knowledge Engineering (SEKE 2014), 2014-08-14

Abstract

Migrating towards Service Oriented Architecture SOA has become a major topic of interest during the recent years. Since emerging service technologies have forced non-service based software systems to become legacy, many efforts and researches have been carried out to enable these legacy systems to survive. In this context, several service identification solutions have been proposed. These approaches are either manual, thus considered expensive, or rely on ad-hoc criteria that fail to identify relevant services. In this paper, within the big picture of migrating object-oriented legacy systems towards SOA, we address automatic service identification from source code based on service quality characteristics. To achieve this, we propose a quality measurement model where characteristics of services are refined to measurable metrics.

Mining Reusable Software Components from Object-Oriented Source Code of a Set of Similar Software

Anas Shatnawi and AD Seriai
ConferencePapers IEEE 14th International Conference on Information Reuse and Integration (IRI 2013), 2013-08-14

Abstract

One of the most important approaches that support software reuse is Component Based Software Engineering (CBSE). Nevertheless the lack of component libraries is one of the major obstacles to widely use CBSE in the industry. To help filling this need, many approaches have been proposed to identify components from existing object-oriented software. These approaches identify components from singular software. Therefore the reusability of these components may be limited. In this paper, we propose an approach to mine reusable components from a set of similar object-oriented software, which were developed in the same domain, ideally by the same developers. Our goal is to enhance the reusability of mined components compared to those mined from single software. In order to validate our approach, we have applied it onto two open source Java applications of different sizes; small and large-scale ones. The results show that the components mined from the analysis of similar software are more reusable than those which are mined from single ones.

A New Framework for Software Library Investment Metrics

Mohammad Shatnawi, Ismail Hmeidi and Anas Shatnawi
ConferencePapers The Second International Conference on Digital Enterprise and Information Systems (DEIS 2013), 2013-03-04

Abstract

Software quality is considered as one of the most important challenges in software engineering. It has many dimensions which differ from users’ point of view that depend on their requirements. Therefore, those dimensions lead to difficulty in measuring and defining the software quality properly. Software quality measurement is the main core of the software quality. Thus, it is necessary to study and develop the software measurements to meet the better quality. The use of libraries increases software quality more than that of using generic programming because these libraries are prepared and tested in advance. In addition, these libraries reduce the effort that is spent in designing, testing, and maintenance processes. In this research, we presented a new model to calculate the saved effort that results from using libraries instead of generic programming in the coding, testing, and productivity processes. The proposed model consists of three metrics that are Library Investment Ratio, Library Investment Level, and Program Simplicity. An empirical analyzes has been applied into ten projects to compare the results of the model with Reuse Percent. The results show that the model has better indication of the improvement of software quality and productivity rather than Reuse Percent.

An Approximation Algorithm for Vertex Cover Problem

Yaser Khamayseh, Wail Mardini and Anas Shatnawi
ConferencePapers International Conference on Computer Networks and Communication Systems (CNCS 2012), 2012-06-01

Abstract

Supporting Reuse by Reverse Engineering Software Architectures and Components from Object-Oriented Product Variants and APIs

Anas Shatnawi
Books Ph.D. Thesis, 147 pages, LIRMM, University of Montpellier, France, 2015-06-29

Abstract

It is widely recognized that software quality and productivity can be significantly improved by applying a systematic reuse approach. In this context, Component-Based Software Engineering (CBSE) and Software Product Line Engineering (SPLE) are considered as two important systematic reuse paradigms. CBSE aims at composing software systems based on pre-built software components and SPLE aims at building new products by managing commonalty and variability of a family of similar software. However, building components and SPL artifacts from scratch is a costly task. In this context, our dissertation proposes three contributions to reduce this cost. Firstly, we propose an approach that aims at mining reusable components from a set of similar object-oriented software product variants. The idea is to analyze the commonality and the variability of product variants, in order to identify pieces of code that may form reusable components. Our motivation behind the analysis of several existing product variants is that components mined from these variants are more reusable for the development of new software products than those mined from single ones. The experimental evaluation shows that the reusability of the components mined using our approach is better than those mined from single software. Secondly, we propose an approach that aims at restructuring object-oriented APIs as component-based ones. This approach exploits specificity of API entities by statically analyzing the source code of both APIs and their software clients to identify groups of API classes that are able to form components. Our assumption is based on the probability of classes to be reused together by API clients on the one hand, and on the structural dependencies between classes on the other hand. The experimental evaluation shows that structuring object-oriented APIs as component-based ones improves the reusability and the understandability of these APIs. Finally, we propose an approach that automatically recovers the component-based architecture of a set of object-oriented software product variants. Our contribution is twofold: the identification of the architectural component variability and the identification of the configuration variability. The configuration variability is based on the identification of dependencies between the architectural elements using formal concept analysis. The experimental evaluation shows that our approach is able to identify the architectural variability.

A New Framework for Software Library Investment Metrics

Anas Shatnawi
Books Master Thesis, 64 pages, Jordan University of Science and Technology, Jordan, 2011-12-27

Abstract

A Modified Framework for Labeling Images Based on Human Computation and Robust Technique

Mohammad Shatnawi, Qusai Aduain and Anas Shatnawi
ConferencePapers World Academy of Science, Engineering and Technology (WASET 2010), Paris, France, 2010-06-28

Abstract

At My Office

Office PK-2420

Department of Computer Science

University of Quebec at Montreal  

201, President-Kennedey Ave.,                             

H2X 3Y7, Montreal (Quebec), Canada