Towards Lakosian Multilingual Software Design Principles
Damian M. Lyons, Saba B. Zahra, and Thomas M. Marshall

TL;DR
This paper extends Lakosian software design principles to multilingual systems using FFIs, focusing on pybind11, and evaluates their applicability on GitHub repositories to improve software robustness and security.
Contribution
It proposes an extension of Lakosian design rules specifically for multilingual software with FFIs, especially pybind11, and assesses their adoption in real-world repositories.
Findings
Approximately 20% of analyzed repositories adhere to the proposed rules.
The rules help identify potential design issues in multilingual software.
A generalized set of design principles is suggested for any FFI-based multilingual system.
Abstract
Large software systems often comprise programs written in different programming languages. In the case when cross-language interoperability is accomplished with a Foreign Function Interface (FFI), for example pybind11, Boost.Python, Emscripten, PyV8, or JNI, among many others, common software engineering tools, such as call-graph analysis, are obstructed by the opacity of the FFI. This complicates debugging and fosters potential inefficiency and security problems. One contributing issue is that there is little rigorous software design advice for multilingual software. In this paper, we present our progress towards a more rigorous design approach to multilingual software. The approach is based on the existing approach to the design of large-scale C++ systems developed by Lakos. The Lakosian approach is one of the few design methodologies to address physical design rather than just…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Logic, programming, and type systems · Advanced Software Engineering Methodologies
