35 research outputs found

    Orthogonal persistence in Java supported by aspect- oriented programming and reflection

    Get PDF
    The persistence concern implemented as an aspect has been studied since the appearance of the Aspect-Oriented paradigm. Frequently, persistence is given as an example that can be aspectized, but until today no real world solution has applied that paradigm. Such solution should be able to enhance the programmer productivity and make the application less prone to errors. To test the viability of that concept, in a previous study we developed a prototype that implements Orthogonal Persistence as an aspect. This first version of the prototype was already fully functional with all Java types including arrays. In this work the results of our new research to overcome some limitations that we have identified on the data type abstraction and transparency in the prototype are presented. One of our goals was to avoid the Java standard idiom for genericity, based on casts, type tests and subtyping. Moreover, we also find the need to introduce some dynamic data type abilities. We consider that the Reflection is the solution to those issues. To achieve that, we have extended our prototype with a new static weaver that preprocesses the application source code in order to introduce changes to the normal behavior of the Java compiler with a new generated reflective code

    Declarative Aspect Composition

    Get PDF
    Aspect-oriented languages provide means to attach certain program units (e.g. advice, filters) to a given set of join points. It is possible that not just a single , but several units need to execute at the same join point. Aspects that specify the insertion of these units are said to "share" the same join point. Such shared join points may give rise to several issues, such as determining the exact execution order and the dependencies among the aspects. In this position paper, we outline a declarative approach that addresses this problem. We evaluate it with respect to several software engineering properties, in particular comprehensibility, predictability and evolvability

    An aspect-oriented framework for orthogonal persistence

    Get PDF
    The life cycle of software applications in general is very short and with extreme volatile requirements. Within these conditions programmers need development tools and techniques with an extreme level of productivity. We consider the code reuse as the most prominent approach to solve that problem. Our proposal uses the advantages provided by the Aspect-Oriented Programming in order to build a reusable framework capable to turn both programmer and application oblivious as far as data persistence is concerned, thus avoiding the need to write any line of code about that concern. Besides the benefits to productivity, the software quality increases. This paper describes the actual state of the art, identifying the main challenge to build a complete and reusable framework for Orthogonal Persistence in concurrent environments with support for transactions. The present work also includes a successfully developed prototype of that framework, capable of freeing the programmer of implementing any read or write data operations. This prototype is supported by an object oriented database and, in the future, will also use a relational database and have support for transactions

    Composing Aspects at Shared Join Points

    Get PDF
    Aspect-oriented languages provide means to superimpose aspectual behavior on a given set of join points. It is possible that not just a single, but several units of aspectual behavior need to be superimposed on the same join point. Aspects that specify the superimposition of these units are said to "share" the same join point. Such shared join points may give rise to issues such as\ud determining the exact execution order and the dependencies among the aspects. In this paper, we present a detailed analysis of the problem, and identify a set of requirements upon mechanisms for composing aspects at shared join points. To address the identified issues, we propose a general and declarative model for defining constraints upon the possible compositions of aspects at a shared join point. Finally, by using an extended notion of join points, we show how concrete aspectoriented programming languages, particularly AspectJ and Compose*, can adopt the proposed model

    Designing an Aspect-Oriented Persistence Layer Supporting Object-Oriented Query Using the .NET Framework 3.5

    Get PDF
    In this article, we discuss aspect persistence, how it can be implemented in the .NET framework, and how to use the .NET framework to provide object-oriented queries for aspect-oriented persistence layers. The manner in which aspect-orientation can be available in the .NET framework is investigated in the first part of this article. Then the procedure through which adding persistence concepts to the .NET framework as aspects will be explained. In the next step, providing object-oriented querying is discussed, which is the main part of this article. Having object-oriented querying ability helps processes query in the same object-oriented domain in which objects are defined (not in the relation entities' domain). Language Integrated Query (LINQ) is used to provide the ability of querying in an object-oriented manner. Then, the translation of queries from the real objects' domain to the storage-objects' domain is explained. After such translation, the queries can be run by using the existing LINQ providers (for example LINQ to SQL). Finally, translating the result of queries back into the real objects' domain is discussed

    The Good, the Bad, and the Badass: On the Descriptive Adequacy of Kant's Conception of Moral Evil

    Get PDF
    This chapter argues for an interpretation of Kant's psychology of moral evil that accommodates the so-called excluded middle cases and allows for variations in the magnitude of evil. The strategy involves distinguishing Kant's transcendental psychology from his empirical psychology and arguing that Kant's character rigorism is restricted to the transcendental level. The chapter also explains how Kant's theory of moral evil accommodates 'the badass'; someone who does evil for evil's sake

    Engineering sustainability through language

    Get PDF
    As our understanding and care for sustainability concerns increases, so does the demand for incorporating these concerns into software. Yet, existing programming language constructs are not well-aligned with concepts of the sustainability domain. This undermines what we term technical sustainability of the software due to (i) increased complexity in programming of such concerns and (ii) continuous code changes to keep up with changes in (environmental, social, legal and other) sustainability-related requirements. In this paper we present a proof-of-concept approach on how technical sustainability support for new and existing concerns can be provided through flexible language-level programming. We propose to incorporate sustainability-related behaviour into programs through micro-languages enabling such behaviour to be updated and/or redefined as and when required
    corecore