6 research outputs found

    Décomposition sous-directe d'un treillis en facteurs irréductibles

    Get PDF
    National audienceLa taille d'un treillis de concepts peut augmenter de façon exponentielle avec la taille du contexte. Lorsque le nombre de noeuds devient important, l'´ etude et la génération d'un tel treillis devient impossible. Décomposer le treillis en petit sous-treillis est un moyen de contourner ceprobì eme. Dans la décomposition sous-directe, les petits sous-treillis générés sont des quotients qui ont une interprétation intéressante dans le cadre de l'Analyse de Concepts Formels. Dans cet article, nous présentons les etapes pour obtenir une décomposition sous-directe en treillis irréductibles , en partant d'un contexte fini et réduit. Cette décomposition est obtenue en utilisant trois points de vue : les treillis quotients, les relationsfì eches et les sous-contextes compatibles. Cette approche est essentiellement algébrique car elle repose sur la théorie des treillis, sauf pour le dernier point. Nous donnons un algorithme polynomial permettant de générer cette décomposition a partir d'un contexte initial. Cette méthode peut etré etendue pour permettre l'exploration interactive ou la fouille dans de grands contextes

    Identification et localisation des préoccupations fonctionnelles dans un code légataire Java

    Full text link
    Traditionnellement, les applications orientées objets légataires intègrent différents aspects fonctionnels. Ces aspects peuvent être dispersés partout dans le code. Il existe différents types d’aspects : • des aspects qui représentent des fonctionnalités métiers ; • des aspects qui répondent à des exigences non fonctionnelles ou à d’autres considérations de conception comme la robustesse, la distribution, la sécurité, etc. Généralement, le code qui représente ces aspects chevauche plusieurs hiérarchies de classes. Plusieurs chercheurs se sont intéressés à la problématique de la modularisation de ces aspects dans le code : programmation orientée sujets, programmation orientée aspects et programmation orientée vues. Toutes ces méthodes proposent des techniques et des outils pour concevoir des applications orientées objets sous forme de composition de fragments de code qui répondent à différents aspects. La séparation des aspects dans le code a des avantages au niveau de la réutilisation et de la maintenance. Ainsi, il est important d’identifier et de localiser ces aspects dans du code légataire orienté objets. Nous nous intéressons particulièrement aux aspects fonctionnels. En supposant que le code qui répond à un aspect fonctionnel ou fonctionnalité exhibe une certaine cohésion fonctionnelle (dépendances entre les éléments), nous proposons d’identifier de telles fonctionnalités à partir du code. L’idée est d’identifier, en l’absence des paradigmes de la programmation par aspects, les techniques qui permettent l’implémentation des différents aspects fonctionnels dans un code objet. Notre approche consiste à : • identifier les techniques utilisées par les développeurs pour intégrer une fonctionnalité en l’absence des techniques orientées aspects • caractériser l’empreinte de ces techniques sur le code • et développer des outils pour identifier ces empreintes. Ainsi, nous présentons deux approches pour l’identification des fonctionnalités existantes dans du code orienté objets. La première identifie différents patrons de conception qui permettent l’intégration de ces fonctionnalités dans le code. La deuxième utilise l’analyse formelle de concepts pour identifier les fonctionnalités récurrentes dans le code. Nous expérimentons nos deux approches sur des systèmes libres orientés objets pour identifier les différentes fonctionnalités dans le code. Les résultats obtenus montrent l’efficacité de nos approches pour identifier les différentes fonctionnalités dans du code légataire orienté objets et permettent de suggérer des cas de refactorisation.Object oriented applications integrate various functional aspects. These aspects can be scattered everywhere in the code. There are various types of aspects : • aspects which represent business functionalities ; • aspects related to non functional requirements or to design concerns such as robustness, distribution, and security. The code representing such aspects can be located in different class hierarchies. Researchers have been interested in the problem of the modularisation of these aspects and many approaches were proposed : oriented programming subjects, oriented programming Aspects and oriented programming view. These approaches offer techniques and tools for designing object oriented applications based on the composition of slices of various aspects. The main benefit of the separation of aspects is supporting reuse and maintenance. Consequently, it is well worth identifying and extracting aspects of legacy object oriented applications. Our work mainly focuses on functional aspects. Assuming that the code of a functional aspect or a feature has a functional cohesion (dependencies between elements), we suggest methods for identifying such features from the code. The idea is to identify, in the absence of any aspect oriented paradigm, the techniques used for implementing a feature in the code. Our approach consists of : • identifying techniques used by developers to integrate a feature in the absence of aspect oriented techniques • characterizing the patterns of these techniques • and developing tools to identify these patterns. We present two approaches for the identification of the existing features in the object oriented code. The first one identifies various design patterns which integrates these features in the code. The second approach uses the formal concept analysis to identify the recurring features in the code. We experiment our approaches to identify functional features in different open source object oriented applications. The results show the efficiency of our approaches in identifying various functional features in the legacy object oriented, and can some times suggest refactoring

    Automatic Ontology Generation Based On Semantic Audio Analysis

    Get PDF
    PhDOntologies provide an explicit conceptualisation of a domain and a uniform framework that represents domain knowledge in a machine interpretable format. The Semantic Web heavily relies on ontologies to provide well-defined meaning and support for automated services based on the description of semantics. However, considering the open, evolving and decentralised nature of the SemanticWeb – though many ontology engineering tools have been developed over the last decade – it can be a laborious and challenging task to deal with manual annotation, hierarchical structuring and organisation of data as well as maintenance of previously designed ontology structures. For these reasons, we investigate how to facilitate the process of ontology construction using semantic audio analysis. The work presented in this thesis contributes to solving the problems of knowledge acquisition and manual construction of ontologies. We develop a hybrid system that involves a formal method of automatic ontology generation for web-based audio signal processing applications. The proposed system uses timbre features extracted from audio recordings of various musical instruments. The proposed system is evaluated using a database of isolated notes and melodic phrases recorded in neutral conditions, and we make a detailed comparison between musical instrument recognition models to investigate their effects on the automatic ontology generation system. Finally, the automatically-generated musical instrument ontologies are evaluated in comparison with the terminology and hierarchical structure of the Hornbostel and Sachs organology system. We show that the proposed system is applicable in multi-disciplinary fields that deal with knowledge management and knowledge representation issues.Fundings from EPSRC, OMRAS-2 and NEMA projects

    KABA - ein System fĂĽr Refactoring von Java-Programmen

    Get PDF
    Refactoring is a well known technique to enhance various aspects of an object-oriented program. It has become very popular during recent years, as it allows to overcome deficits present in many programs. Doing refactoring by hand is almost impossible due to the size and complexity of modern software systems. Automated tools provide support for the application of refactorings, but do not give hints, which refactorings to apply and why. The Snelting/Tip analysis is a program analysis, which creates a refactoring proposal for a class hierarchy by analyzing how class members are used inside a program. KABA is an adaption and extension of the Snelting/Tip analysis for Java. It has been implemented and expanded to become a semantic preserving, interactive refactoring system. Case studies of real world programs will show the usefulness of the system and its practical value

    Arquitectura y metodologĂ­a para el desarrollo de sistemas educativos basados en videojuegos

    Get PDF
    Este trabajo de Tesis Doctoral presenta una arquitectura y metodología de desarrollo de sistemas educativos basados en videojuegos. El objetivo principal es: 1. Minimizar la dependencia entre el conocimiento específico del dominio que se enseña y el resto del sistema. De esta forma, el conocimiento del dominio puede aprovecharse para implementar otros videojuegos educativos que enseñen lo mismo pero de distinta forma. También permite utilizar las partes no específicas del dominio en varios juegos educativos. En definitiva, permite la reutilización, de forma que se reduzcan los costes de creación de este tipo de aplicaciones. 2. Permitir que en desarrollos posteriores sean fácilmente sustituibles algunos módulos. Principalmente se persigue poder intercambiar fácilmente aquellos módulos susceptibles de quedar obsoletos con el avance tecnológico. 3. Permitir que los distintos profesionales que entran en juego durante el periodo de desarrollo puedan trabajar sin solaparse unos con otros, minimizando las dependencias entre ellos. La metodología propuesta aboga por una clara división entre los contenidos pedagógicos y los contenidos lúdicos que los rodean. Para poderla hacer efectiva, la arquitectura software subyacente divide la aplicación en módulos con unas responsabilidades claras y no solapadas. Como prueba del correcto funcionamiento de la metodología y arquitectura aquí propuesta, el trabajo incluye la descripción detallada del desarrollo de JV2M, un sistema educativo para enseñar la compilación de un lenguaje de alto nivel orientado a objetos como es Java

    Concept Lattices in Software Analysis

    No full text
    About ten years ago, the first serious applications of concept lattices in software analysis were published. Today, a wide range of applications of concept lattices in static and dynamic analysis of software artefacts is known. This overview summarizes important papers from the last ten years, and presents three methods in some detail: 1. methods to extract classes and modules from legacy software; 2. the Snelting/Tip algorithm for application-specific, semantics-preserving refactoring of class hierarchies; 3. Ball's method for infering dynamic dominators and control flow regions from program traces. We conclude with some perpectives on further uses of concept lattices in software technology
    corecore