arXiv ScienceSearch

arXiv · 1703.10858

Language Oriented Modularity: From Theory to Practice

Abstract

Language-oriented modularity (LOM) is a methodology that complements language-oriented programming (LOP) in providing on-demand language abstraction solutions during software development. It involves the implementation and immediate utilization of domain-specific languages (DSLs) that are also aspect-oriented (DSALs). However, while DSL development is affordable thanks to modern language workbenches, DSAL development lacks similar tool support. Consequently, LOM is often impractical and underutilized. The challenge we address is making the complexity of DSAL implementation comparable to that of DSLs and the effectiveness of programming with DSALs comparable to that of general-purpose aspect languages (GPALs). Today, despite being essentially both domain-specific and aspect-oriented, DSALs seem to be second-class. Aspect development tools (e.g., AJDT) do not work on DSAL code. DSL development tools like language workbenches (e.g., Spoofax) neither deal with the backend weaving nor handle the composition of DSALs. DSAL composition frameworks (e.g., Awesome) do not provide frontend development tools. DSAL code transformation approaches (e.g., XAspects) do not preserve the semantics of DSAL programs in the presence of other aspect languages. We extend AspectJ with a small set of annotations and interfaces that allows DSAL designers to define a semantic-preserving transformation to AspectJ and interface with AspectJ tools. Our transformation approach enables the use of standard language workbench to implement DSALs and use of standard aspect development tools to program with those DSALs. As a result, DSALs regain first-class status with respect to both DSLs and aspect languages. This, on the one hand, lowers the cost of developing DSALs to the level of DSLs and, on the other hand, raises the effectiveness of using a DSAL to the level of a GPAL. Consequently, LOM becomes cost-effective compared to the LOP baseline. We modified the ajc compiler to support our approach. Using two different language workbenches (Spoofax and Xtext) we then implemented several DSALs. AspectJ was supported out-of-the-box. We implemented Cool to demonstrate that the non-trivial composition of AspectJ and Cool can be accommodated using our approach. We applied LOM to crosscutting concerns in two open source projects (oVirt and muCommander), implementing in the process application-specific DSALs, thus providing a sense of the decrease in the cost of developing composable DSALs and the increase in the effectiveness of programming with them. Crosscutting concerns remain a problem in modern real-world projects (e.g., as observed in oVirt). DSALs are often the right tool for addressing these concerns. Our work makes LOM practical, thus facilitating use of DSAL solutions in the software development process.

Explore related subjects

Keep this discovery

Explore connections, maps & timelines

BibTeXRIS

Arik Hadas, David H Lorenz. 2017-03-31. Language Oriented Modularity: From Theory to Practice. https://doi.org/10.22152/programming-journal.org%2F2017%2F1%2F10

Cite the original work for its findings. Save a collection to share your selection of sources.

KEEP EXPLORING

Related papers

Search-based Trace Diagnostic for Cyber-Physical Systems

Cyber-physical systems (CPS) development requires verifying whether system behaviors violate their requirements. This analysis often considers system behaviors expressed by execution traces and requirements expressed by signal-based temporal properties. When an execution trace violates a requirement, engineers must solve the trace diagnostic problem---they need to understand the cause of the breach. Automated trace diagnostic techniques aim to support engineers in the trace diagnostic activity. This paper proposes search-based trace diagnostic (SBTD), a novel trace diagnostic technique for CPS requirements. Unlike existing techniques, SBTD relies on evolutionary search. SBTD starts from a set of candidate diagnoses, applies an evolutionary algorithm to generate new candidate diagnoses (via mutation, recombination, and selection), and uses a fitness function to determine the qualities of these solutions. Then, a diagnostic generator step is performed to explain the cause of the trace violation. We implemented Diagnosis, an SBTD tool for signal-based temporal logic requirements expressed using the Hybrid Logic of Signals (HLS). We evaluated Diagnosis by performing 34 experiments for 17 trace-requirement combinations for property violations. We assessed the effectiveness of SBTD in producing informative diagnoses and its efficiency. Diagnosis achieved expert-aligned diagnoses for 29/34 experiments and scaled to the full HLS benchmark, whereas state-of-the-art literature remained restricted to a subset due to performance and language limitations. SBTD treats trace-checking as a black box, which makes the checker replaceable. Substituting our HLS checker for an STL monitor, e.g., RTAMT, reproduces on two requirements the diagnoses at two to three orders of magnitude lower per-check cost.

cs.SE

Toward Secure Code Generation: Bridging Correctness and Security via Task-Adaptive Vulnerability Modeling and Execution-Based Benchmarking

Large language models (LLMs) are increasingly used for program synthesis, yet they often generate code that is functionally plausible but insecure. Progress in secure code generation has been hindered by benchmarks that are small, non-executable, leak mitigation details, or rely on noisy analyzers and subjective judgments, making it difficult to measure whether security improves without sacrificing correctness. We address these gaps with CodeSecEval, an execution-based benchmark for secure code generation, comprising 255 Python tasks spanning 77 CWE categories. Each task provides paired insecure and secure implementations together with executable functional and vulnerability-targeted security tests, enabling precise and reproducible evaluation of secure code generation and insecure-code repair. Building on CodeSecEval, we propose SecAwareCoder, an agent-based framework that shifts code generation toward secure-by-construction synthesis. SecAwareCoder performs task-adaptive threat modeling to identify security-sensitive regions and derive task-grounded vulnerability hypotheses, uses these hypotheses to guide both constraint-aware code generation and security-aware test synthesis, and leverages execution feedback for targeted refinement. Experiments across multiple LLM backbones show that SecAwareCoder consistently improves Pass@1 and security robustness over prompting and analyzer-driven baselines, narrowing the security--correctness gap in LLM code generation.

cs.SE

Enabling Communication via APIs for Mainframe Applications

Mainframe systems continue to support critical applications across industries such as banking, retail, and healthcare. Exposing their functionality through Application Programming Interfaces (APIs) enables reuse and development of new applications, but identifying and implementing APIs for legacy code remains challenging. It requires understanding complex programs, separating dependent components, introducing new artifacts, and preserving functionality and Service Level Agreements (SLAs) such as Turnaround Time (TAT). We propose a framework for APIfication of legacy mainframe applications. Candidate APIs are identified from artifacts such as transactions, screens, control-flow blocks, inter-microservice calls, business rules, and data accesses. Static analyses, including liveness and reaching definitions, are then used to traverse the code and automatically compute API signatures consisting of request and response fields. We evaluated the framework through a qualitative survey of nine mainframe developers with an average of 15 years of experience, using the public GENAPP application and two industrial mainframe applications. The results show that the framework identifies additional candidate APIs and reduces implementation effort for APIfication. The API-signature computation has been incorporated into IBM watsonx Code Assistant for Z Refactoring Assistant. We further validated the identified APIs by executing them on an IBM Z mainframe system, demonstrating the practical viability of the approach.

cs.SE