37 research outputs found

    Program Slicing Based on Monadic Semantics

    Get PDF

    Dynamic slicing of aspect oriented programs

    Get PDF
    As software application grows larger and become more complex, program maintenance activities such as adding new functionality, debugging and testing consume increasing amount of available resources for software development. In order to cope with this increased complexity, programmer need effective computer supported methods for decomposition and dependence analysis of programs. Program slicing is one method for such decomposition and dependence analysis. Program slicing is a decomposition technique which extracts program elements related to a particular computation from a program. A program slice consists of those parts of a program that may directly or indirectly affect the values computed at some program point of interest, referred to as a slicing criterion. A program slice can be static or dynamic. Static slice contains all the statements that may affect the slicing criterion for every possible inputs to the program. Dynamic slice contains only those statements that actually affect the slicing criterion for a particular input to the program. Aspect-oriented programming is a new programming technique proposed for cleanly modularizing the cross- cutting structure of concerns. An aspect is an area of concern that cuts across the structure of a program. The main idea behind aspect-oriented programming (AOP) is to allow a program to be constructed by describing each concern separately. Aspect J is an aspect-oriented extension to the Java programming language. Aspect J adds new concepts and associated constructs called join points, pointcuts, advices, introductions, and aspects to Java. Zhao developed the aspect-oriented system dependence graph (ASDG) to represent aspect-oriented programs and used two-pass slicing algorithm to compute static slice of aspect-oriented programs. But the disadvantage of his ASDG is that the weaving process is not represented correctly and this graph cannot be used for dynamic slicing. Our objective was to develop a suitable intermediate representation of an aspectoriented program and to develop suitable dynamic slicing technique

    Design, implementation and calculation of circular programs

    Get PDF
    Tese de doutoramento em Informática (ramo do Conhecimento Fundamentos da Computação)Circular programming is a powerful technique to express multiple traversal algorithms as a single traversal function in a lazy setting. Such a (virtual) circular program may contain circular definitions, that is, arguments of function calls that are also results of that same calls. Although circular definitions always induce non-termination under a strict evaluation mechanism, they can sometimes be immediately evaluated using a lazy evaluation strategy. The lazy engine is able to compute the right evaluation order, if that order exists. Indeed, using this style of circular programming, the programmer does not have to concern him/herself with the definition and the scheduling of the different traversal functions, since a single (traversal) function has to be defined. Moreover, because there is a single traversal function, the programmer does not have to define intermediate gluing data structures to convey values computed in one traversal and needed in following ones, either. In this Thesis, we present our studies on the design, implementation and calculation of circular programs. We start by developing techniques to transform circular programs into strict ones. Then, we introduce calculation rules to obtain circular programs from strict equivalents, both in the context of pure and monadic programming. Because we use calculation techniques we guarantee that the resulting circular programs are equivalent to the strict ones we start with. In this Thesis, we also perform a series of benchmarks comparing the running performances of circular programs and the programs we are able to derive from circular programs.A utilização de programas circulares na implementação de algoritmos de programação é uma técnica poderosa que permite, num paradigma lazy, implementar soluções que efectuam múltiplas travessias sobre uma ou mais estruturas de dados como um programa que efectua apenas uma travessia sobre uma única estrutura de dados. Num programa (virtualmente) circular podem ocorrer definições circulares, isto é, invocações de funções onde um argumento da invocação é, ao mesmo tempo, um resultado da mesma invocação. Embora este tipo de definições induza não terminação num paradigma estrito, a verdade é que, num paradigma lazy, elas podem ser desde logo executadas utilizando uma estratégia baseada em lazy evaluation: a máquina lazy é capaz de determinar o escalonamento correcto das computações, se ele existir. Na verdade, utilizando este método de programação, o(a) programador(a) não tem de definir nem de escalonar as diferentes travessias, uma vez que apenas uma função necessita de ser implementada. Para além disso, porque existe apenas função, e uma vez que essa função realiza apenas uma travessia, o(a) programador(a) também não é forçado a definir estruturas de dados intermédias para colar as diferentes travessias. Nesta Tese são apresentados os nossos estudos relativos ao desenho, implementação e cálculo de programas circulares. Começamos por desenvolver técnicas de transformação de programas circulares em programas estritos. Depois apresentamos regras de cálculo que permitem obter programas circulares a partir de estritos, equivalentes, tanto no contexto de funções puras como no contexto de funções monádicas. Uma vez que, neste trabalho, utilizamos técnicas de cálculo de programas, é possível garantir a correcção da transformação que propomos. Por fim, realizamos uma bateria de testes que permitem comparar a performance de programas circulares com a dos programas que derivamos a partir deles.Fundacão para a Ciência e Tecnologia (FCT)grant No. SFRH/BD/19186/200

    R-Droid: Leveraging Android App Analysis with Static Slice Optimization

    Get PDF
    Today’s feature-rich smartphone apps intensively rely on access to highly sensitive (personal) data. This puts the user’s privacy at risk of being violated by overly curious apps or libraries (like advertisements). Central app markets conceptually represent a first line of defense against such invasions of the user’s privacy, but unfortunately we are still lacking full support for automatic analysis of apps’ internal data flows and supporting analysts in statically assessing apps’ behavior. In this paper we present a novel slice-optimization approach to leverage static analysis of Android applications. Building on top of precise application lifecycle models, we employ a slicing-based analysis to generate data-dependent statements for arbitrary points of interest in an application. As a result of our optimization, the produced slices are, on average, 49% smaller than standard slices, thus facilitating code understanding and result validation by security analysts. Moreover, by re-targeting strings, our approach enables automatic assessments for a larger number of use-cases than prior work. We consolidate our improvements on statically analyzing Android apps into a tool called R-Droid and conducted a large-scale data-leak analysis on a set of 22,700 Android apps from Google Play. R-Droid managed to identify a significantly larger set of potential privacy-violating information flows than previous work, including 2,157 sensitive flows of password-flagged UI widgets in 256 distinct apps

    Feature-based Approach to Bridge the Information Technology and Business Gap

    Get PDF
    The gap between business goals (problem domain), such as cost reduction, new business processes, increasing competitive advantage, etc., and the supporting Information Technology infrastructure (solution domain), such as the ability to implement software solutions to achieve these goals, is complex and challenging to bridge. This gap emerges for many reasons; for instance, inefficient communication, domain terminology misunderstanding or external factors, e.g. business change. As most business and software products can be described by a set of features, a promising solution would be to link both the problem and solution domains based on these features. Thus, the proposed approach aims to bridge the gap between the problem and the solution domains by using a feature-based technique in order to provide a quick and efficient means for understanding the relationships between IT solutions and business goals. The novelty of the proposed framework emanates from the three characteristics of the business-IT gap: the problem domain, the solution domain and the matching process. Besides the proposed feature-based IT-business framework, other contributions are proposed: a feature extracting method and feature matching algorithms. The proposed approach is achieved in three phases. The first phase is to decompose business needs and transform them into a feature model (presented in UML diagrams); this is represented as a top-to-middle process. The second phase is a reverse engineering process. A system program code is sliced into modules and transformed into feature-based models (again, in UML diagrams); these are represented as a bottom-to-middle process. The third phase is a model-driven engineering process. It uses model comparison techniques to match the UML feature models of the top-to-middle and bottom-to-middle phases. The presented approach in this research shows that features elicited from the business goals can be matched to features extracted from in the IT side. This proposed approach is feasible and able to provide a quick and efficient means for improving feature-based business IT matching. Two case studies are presented to demonstrate that the feature-oriented view of features from the users' perspective can be matched to the feature-oriented view of features in the IT side. This matching can serve to remove any ambiguities that may cause difficulties in the cases of system maintenance or system evolution, in particular when there are changes in requirements, which is to be expected when there is any business change

    Styring av hvitost-kvalitet – strategier og metoder for å oppnå riktig sensorisk kvalitet på produktene ved forbruk

    Get PDF
    An effective approach to quality control is an important issue for a food producer, as consumers expect consistent delivery of products. Two important strategies for control of food product end quality was discussed in this thesis: Process regulation and Statistical Process control (SPC). Extensive experiments were carried out in order to demonstrate different aspects of control of cheese quality. The sensory quality of a product is of great importance, as it is directly perceived at consumption. How do we define, and measure cheese quality? In paper 3 this subject was discussed, and quality scoring was found appropriate as a methodology for sensory quality, provided consumer input in definition of product specifications. Rapid, particularly non-destructive measurements are important in control strategies. In paper 4 spectroscopic methods were found promising for fast and reliable results. Spectroscopy was found to be able to substitute chemical measurements for the purpose of measuring relevant sensory attributes of cheese. In paper 2 X-ray methodology, found suitable for non-destructive on-line measurements of eye formation in cheese during ripening, was developed. In statistical process control, SPC, it is essential to understand the influence of all relevant factors from raw material through process to product. In paper 1 the effect of variation through all seasons of the year, as well as the effect of maturation after different ripening temperatures on sensory properties of cheese was examined. This gives us a better platform for adjustments with the aim of variability reduction for the actual cheese varieties.En effektiv tilnærming til kvalitetsstyring er viktig for næringsmiddelprodusenter, da forbrukerne forventer levering av produkter med jevn kvalitet. To viktige strategier for styring av matprodukters sluttkvalitet ble diskutert: Prosessregulering, og statistisk prosesskontroll (SPC). Omfattende forsøk ble utført for å vise ulike aspekter av styringen av ostekvalitet. Den sensoriske kvaliteten til produktene er av stor betydning, da den blir direkte oppfattet ved forbruk. Men hvordan definerer vi og maler ostekvalitet? I artikkel 3 diskuteres dette emnet, og kvalitetsbedømmelse med poeng ble funnet å vare en metode som passer for formålet, forutsatt at resultater fra forbrukerundersøkelser brukes som grunnlag for produktspesifikasjonene. Hurtigmetoder, spesielt ikke-destruktive malinger, er viktige styringsverktøy. I artikkel 4 vurderte man spektroskopiske metoder som lovende for raske og pålitelige analyser av ost. Spektroskopi ble funnet å kunne erstatte kjemiske malinger I forhold til å måle relevante sensoriske egenskaper I ost. I artikkel 2 ble det utviklet en røntgenmetode som passet for maling av hullsetting I ost under modning. I statistisk prosesskontroll, SPC, er det grunnleggende å ha forståelse for innvirkningen av alle relevante faktorer, fra råmaterialer gjennom prosessen til ferdig ost. I artikkel 1 ble effekter av variasjoner gjennom året, og ulike modningstemperaturer undersøkt, I forhold til påvirkning på sensorisk kvalitet. Dette gir oss en bedre plattform for justeringer med henblikk på reduksjon av variasjon for de undersøkte norske ostetypene
    corecore