Technical Report CSI-0077

Domain Specific Aspect Languages for Runtime Inspection of Program Families

C. A. Maddra and K. A. Hawick

Archived: 2017

Abstract

Aspect Oriented Programming (AOP) allows runtime inspection to be performed with improved separation of concerns. Domain Specific AOP allows improved expression of concerns. Runtime inspection is emerging as a killer application for the resulting Domain Specific Aspect-Oriented languages (DSALs). We discuss how use of (application) domain knowledge for domain-specific point cuts and advice can enable expression of runtime inspection at a solution level with automatic weaving at implementation level. We present an approach for developing runtime inspection DSALs for program families using a mix of traditional DSL and middle out programming mindsets. Our solution aids reduction of cross-cutting concerns for language designers and end-users by splitting development processes into back-end program family generic runtime generation and front-end DSL formulations that are customisable for end-users. We demonstrate the utility of our approach using quantitative evaluations of generated codes for a family of agent-based modelling (ABM) simulations.

Keywords: domain specific languages; software engineering; agent based modelling; domain specific aspect languages; domain specific join point

Full Document Text: Not yet available.

Citation Information: BiBTeX database for CSI Notes.

BiBTeX reference:

@TechReport{CSI-0077,
        Title = {Domain Specific Aspect Languages for Runtime Inspection of Program Families},
        Author = {C. A. Maddra and K. A. Hawick},
        Institution = {Computer Science, University of Hull},
        Year = {2017},
        Address = {Cottingham Road, Hull, HU6 7RX},
        Month = {July},
        Number = {CSI-0077},
        Type = {Computational Science},
        Keywords = {domain specific languages; software engineering; agent based modelling; domain specific aspect languages; domain specific join point},
        Owner = {kahawick},
        Timestamp = {2017.07.16}
}