A Domain-Specific Language for Reconfigurable, Distributed Software

A program’s architecture—how it organizes the invocation of application-specific logic—influences important program characteristics including its scalability and security. Architecture details are usually expressed in the same programming language as the rest of a program, and can be difficult to di...

Full description

Saved in:
Bibliographic Details
Published inInternational Journal of Networking and Computing Vol. 14; no. 1; pp. 40 - 80
Main Authors Zhu, Henry, Zhao, Junyong, Sultana, Nik
Format Journal Article
LanguageEnglish
Published IJNC Editorial Committee 2024
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:A program’s architecture—how it organizes the invocation of application-specific logic—influences important program characteristics including its scalability and security. Architecture details are usually expressed in the same programming language as the rest of a program, and can be difficult to distinguish from non-architecture code. Once defined, a program’s architecture is difficult and risky to change because it couples tightly with application logic over time.We introduce C-Saw: an approach to express a software’s architecture using a new embedded domain-specific language (EDSL) designed for that purpose. It decouples application-specific logic from architecture, making it easier to identify architectural details of software. C-Saw leverages three ideas: (i) introducing a new, formally-specified EDSL to separate an application’s architecture description from its programming language; (ii) reducing architecture implementation to the definition and management of distributed key-value tables, and (iii) introducing an expressive state-management abstraction for distributed applications.We describe a prototype implementation of C-Saw for C programs and use its implementation to build end-to-end examples of expressing and changing the architecture of widely-used, thirdparty software. We evaluate this on Redis, cURL, and Suricata and find that C-Saw provides expressiveness and reusability, requires fewer lines of code when compared to directly using Cto express architectural patterns, and imposes low performance overhead on typical workloads.
ISSN:2185-2839
2185-2847
DOI:10.15803/ijnc.14.1_40