13 research outputs found
Design and Implementation of a Tracer Driver: Easy and Efficient Dynamic Analyses of Constraint Logic Programs
Tracers provide users with useful information about program executions. In
this article, we propose a ``tracer driver''. From a single tracer, it provides
a powerful front-end enabling multiple dynamic analysis tools to be easily
implemented, while limiting the overhead of the trace generation. The relevant
execution events are specified by flexible event patterns and a large variety
of trace data can be given either systematically or ``on demand''. The proposed
tracer driver has been designed in the context of constraint logic programming;
experiments have been made within GNU-Prolog. Execution views provided by
existing tools have been easily emulated with a negligible overhead.
Experimental measures show that the flexibility and power of the described
architecture lead to good performance. The tracer driver overhead is inversely
proportional to the average time between two traced events. Whereas the
principles of the tracer driver are independent of the traced programming
language, it is best suited for high-level languages, such as constraint logic
programming, where each traced execution event encompasses numerous low-level
execution steps. Furthermore, constraint logic programming is especially hard
to debug. The current environments do not provide all the useful dynamic
analysis tools. They can significantly benefit from our tracer driver which
enables dynamic analyses to be integrated at a very low cost.Comment: To appear in Theory and Practice of Logic Programming (TPLP),
Cambridge University Press. 30 pages
Management Aspects of Software Clone Detection and Analysis
Copying a code fragment and reusing it by pasting with or without minor modifications is a common practice in software development for improved productivity. As a result, software systems often have similar segments of code, called software clones or code clones. Due to many reasons, unintentional clones may also appear in the source code without awareness of the developer. Studies report that significant fractions (5% to 50%) of the code in typical software systems are cloned. Although code cloning may increase initial productivity, it may cause fault propagation, inflate the code base and increase maintenance overhead. Thus, it is believed that code clones should be identified and carefully managed. This Ph.D. thesis contributes in clone management with techniques realized into tools and large-scale in-depth analyses of clones to inform clone management in devising effective techniques and strategies.
To support proactive clone management, we have developed a clone detector as a plug-in to the Eclipse IDE. For clone detection, we used a hybrid approach that combines the strength of both parser-based and text-based techniques. To capture clones that are similar but not exact duplicates, we adopted a novel approach that applies a suffix-tree-based k-difference hybrid algorithm, borrowed from the area of computational biology. Instead of targeting all clones from the entire code base, our tool aids clone-aware development by allowing focused search for clones of any code fragment of the developer's interest.
A good understanding on the code cloning phenomenon is a prerequisite to devise efficient clone management strategies. The second phase of the thesis includes large-scale empirical studies on the characteristics (e.g., proportion, types of similarity, change patterns) of code clones in evolving software systems. Applying statistical techniques, we also made fairly accurate forecast on the proportion of code clones in the future versions of software projects. The outcome of these studies expose useful insights into the characteristics of evolving clones and their management implications.
Upon identification of the code clones, their management often necessitates careful refactoring, which is dealt with at the third phase of the thesis. Given a large number of clones, it is difficult to optimally decide what to refactor and what not, especially when there are dependencies among clones and the objective remains the minimization of refactoring efforts and risks while maximizing benefits. In this regard, we developed a novel clone refactoring scheduler that applies a constraint programming approach. We also introduced a novel effort model for the estimation of efforts needed to refactor clones in source code.
We evaluated our clone detector, scheduler and effort model through comparative empirical studies and user studies. Finally, based on our experience and in-depth analysis of the present state of the art, we expose avenues for further research and development towards a versatile clone management system that we envision
Scheduling of the TTEthernet communication
TTEthernet je rozĆĄĂĆenĂm Ethernetu o prostĆedky pro deterministickou komunikaci. V tĂ©to prĂĄci TTEthernet struÄnÄ pĆedstavĂme a uvedeme stĂĄvajĂcĂ metody rozvrhovĂĄnĂ provozu v nÄm. NĂĄslednÄ formulujeme tento rozvrhovacĂ problĂ©m jako MRCPSP-GPR (takĂ© znĂĄm jako multimodĂĄlnĂ RCPSP/max) a zhodnotĂme moĆŸnosti pouĆŸitĂ existujĂcĂch ĆeĆĄiÄĆŻ MRCPSP-GPR pro rozvrhovĂĄnĂ provozu v sĂti TTEthernet. S vyuĆŸitĂm heuristiky, kterou jsme navrhli, se tento postup jevĂ jako realistickĂœ. Mimo to jeĆĄtÄ uvĂĄdĂme opravu nedĂĄvno publikovanĂ© metody pro odhad maximĂĄlnĂho zpoĆŸdÄnĂ rate-constrained (RC) provozu v sĂti TTEthernet.TTEthernet is an extension of Ethernet for deterministic communication. We present an overview of TTEthernet and existing methods for scheduling TTEthernet traffic. Then we present a formulation of the scheduling problem as a MRCPSP-GPR (also known as multi-mode RCPSP/max) and evaluate the possibility of using existing MRCPSP-GPR solvers for scheduling TTEthernet traffic. With a heuristic we introduce, this approach appears practical. Apart from this, we present a correction of a state-of-the-art method for estimating worst-case delays of rate-constrained (RC) TTEthernet traffic
Automatic Test Data Generation Using Constraint Programming and Search Based Software Engineering Techniques
RĂSUMĂ
Prouver qu'un logiciel correspond à sa spécification ou exposer des erreurs cachées dans son implémentation est une tùche de test trÚs difficile, fastidieuse et peut coûter plus de 50% de coût total du logiciel. Durant la phase de test du logiciel, la génération des données de test est l'une des tùches les plus coûteuses. Par conséquent, l'automatisation de cette tùche permet de réduire considérablement le coût du logiciel, le temps de développement et les délais de commercialisation.
Plusieurs travaux de recherche ont proposé des approches automatisées pour générer des données de test. Certains de ces travaux ont montré que les techniques de génération des données de test qui sont basées sur des métaheuristiques (SB-STDG) peuvent générer automatiquement des données de test. Cependant, ces techniques sont trÚs sensibles à leur orientation qui peut avoir un impact sur l'ensemble du processus de génération des données de test. Une insuffisance d'informations pertinentes sur le problÚme de génération des données de test peut affaiblir l'orientation et affecter négativement l'efficacité et l'effectivité de SB-STDG.
Dans cette thÚse, notre proposition de recherche est d'analyser statiquement le code source pour identifier et extraire des informations pertinentes afin de les exploiter dans le processus de SB-STDG pourrait offrir davantage d'orientation et ainsi d'améliorer l'efficacité et l'effectivité de SB-STDG.
Pour extraire des informations pertinentes pour l'orientation de SB-STDG, nous analysons de maniÚre statique la structure interne du code source en se concentrant sur six caractéristiques, i.e., les constantes, les instructions conditionnelles, les arguments, les membres de données, les méthodes et les relations.
En mettant l'accent sur ces caractéristiques et en utilisant différentes techniques existantes d'analyse statique, i.e, la programmation par contraintes (CP), la théorie du schéma et certains analyses statiques légÚres,
nous proposons quatre approches:
(1) en mettant l'accent sur les arguments et les instructions conditionnelles, nous définissons une approche hybride qui utilise les techniques de CP pour guider SB-STDG à réduire son espace de recherche;
(2) en mettant l'accent sur les instructions conditionnelles et en utilisant des techniques de CP, nous dĂ©finissons deux nouvelles mĂ©triques qui mesurent la difficultĂ© Ă satisfaire une branche (i.e., condition), d'oË nous tirons deux nouvelles fonctions objectif pour guider SB-STDG;
(3) en mettant l'accent sur les instructions conditionnelles et en utilisant la théorie du schéma, nous adaptons l'algorithme génétique pour mieux répondre au problÚme de la génération de données de test;
(4) en mettant l'accent sur les arguments, les instructions conditionnelles, les constantes, les membres de données, les méthodes et les relations, et en utilisant des analyses statiques légÚres, nous définissons un générateur d'instance qui génÚre des données de test candidates pertinentes
et une nouvelle représentation du problÚme de génération des données de test orienté-objet qui réduit implicitement l'espace de recherche de SB-STDG.
Nous montrons que les analyses statiques aident à améliorer l'efficacité et l'effectivité de SB-STDG. Les résultats obtenus dans cette thÚse montrent des améliorations importantes en termes d'efficacité et d'effectivité. Ils sont prometteurs et nous espérons que d'autres recherches dans le domaine de la génération des données de test pourraient améliorer davantage l'efficacité ou l'effectivité.----------ABSTRACT
Proving that some software system corresponds to its specification or revealing hidden errors in its implementation is a time consuming and tedious testing process, accounting for 50% of the total software. Test-data generation is one of the most expensive parts of the software testing phase. Therefore, automating this task can significantly reduce software cost, development time, and time to market.
Many researchers have proposed automated approaches to generate test data.
Among the proposed approaches, the literature showed that Search-Based Software Test-data Generation (SB-STDG) techniques can automatically generate test data.
However, these techniques are very sensitive to their guidance which impact the whole test-data generation process. The insufficiency of information relevant about the test-data generation problem can weaken the SB-STDG guidance and negatively affect its efficiency and effectiveness.
In this dissertation, our thesis is statically analyzing source code to identify and extract relevant information to exploit them in the SB-STDG process could offer more guidance and thus improve the efficiency and effectiveness of SB-STDG.
To extract information relevant for SB-STDG guidance, we statically analyze the internal structure of the source code focusing on six features, i.e., constants, conditional statements, arguments, data members, methods, and relationships.
Focusing on these features and using different existing techniques of static analysis, i.e., constraints programming (CP), schema theory, and some lightweight static analyses,
we propose four approaches:
(1) focusing on arguments and conditional statements, we define a hybrid approach that uses CP techniques to guide SB-STDG in reducing its search space;
(2) focusing on conditional statements and using CP techniques, we define two new metrics that measure the difficulty to satisfy a branch, hence we derive two new fitness functions to guide SB-STDG;
(3) focusing on conditional statements and using schema theory, we tailor genetic algorithm to better fit the problem of test-data generation;
(4) focusing on arguments, conditional statements, constants, data members, methods, and relationships, and using lightweight static analyses, we define an instance generator that generates relevant test-data candidates
and a new representation of the problem of object-oriented test-data generation that implicitly reduces the SB-STDG search space.
We show that using static analyses improve the SB-STDG efficiency and effectiveness. The achieved results in this dissertation show an important improvements in terms of effectiveness and efficiency. They are promising and we hope that further research in the field of test-data generation might improve efficiency or effectiveness
Theoretical and Computational Research in Various Scheduling Models
Nine manuscripts were published in this Special Issue on âTheoretical and Computational Research in Various Scheduling Models, 2021â of the MDPI Mathematics journal, covering a wide range of topics connected to the theory and applications of various scheduling models and their extensions/generalizations. These topics include a road network maintenance project, cost reduction of the subcontracted resources, a variant of the relocation problem, a network of activities with generally distributed durations through a Markov chain, idea on how to improve the return loading rate problem by integrating the sub-tour reversal approach with the method of the theory of constraints, an extended solution method for optimizing the bi-objective no-idle permutation flowshop scheduling problem, the burn-in (B/I) procedure, the Pareto-scheduling problem with two competing agents, and three preemptive Pareto-scheduling problems with two competing agents, among others. We hope that the book will be of interest to those working in the area of various scheduling problems and provide a bridge to facilitate the interaction between researchers and practitioners in scheduling questions. Although discrete mathematics is a common method to solve scheduling problems, the further development of this method is limited due to the lack of general principles, which poses a major challenge in this research field
Operational Research IO2017, Valença, Portugal, June 28-30
This proceedings book presents selected contributions from the XVIII Congress of APDIO (the Portuguese Association of Operational Research) held in Valença on June 28â30, 2017. Prepared by leading Portuguese and international researchers in the field of operations research, it covers a wide range of complex real-world applications of operations research methods using recent theoretical techniques, in order to narrow the gap between academic research and practical applications. Of particular interest are the applications of, nonlinear and mixed-integer programming, data envelopment analysis, clustering techniques, hybrid heuristics, supply chain management, and lot sizing and job scheduling problems. In most chapters, the problems, methods and methodologies described are complemented by supporting figures, tables and algorithms.
The XVIII Congress of APDIO marked the 18th installment of the regular biannual meetings of APDIO â the Portuguese Association of Operational Research. The meetings bring together researchers, scholars and practitioners, as well as MSc and PhD students, working in the field of operations research to present and discuss their latest works. The main theme of the latest meeting was Operational Research Pro Bono. Given the breadth of topics covered, the book offers a valuable resource for all researchers, students and practitioners interested in the latest trends in this field.info:eu-repo/semantics/publishedVersio