Visible to the public Building White-box Abstractions by Program Refinement

TitleBuilding White-box Abstractions by Program Refinement
Publication TypeConference Paper
Year of Publication2016
AuthorsAfshari, Mehrdad, Su, Zhendong
Conference NameProceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software
Date PublishedOctober 2016
PublisherACM
Conference LocationNew York, NY, USA
ISBN Number978-1-4503-4076-2
Keywordscomposability, Metrics, program refinement, pubcrawl, Resiliency, reusability, syntactic manipulation, white box, white box cryptography, white-box abstractions
Abstract

Abstractions make building complex systems possible. Many facilities provided by a modern programming language are directly designed to build a certain style of abstraction. Abstractions also aim to enhance code reusability, thus enhancing programmer productivity and effectiveness. Real-world software systems can grow to have a complicated hierarchy of abstractions. Often, the hierarchy grows unnecessarily deep, because the programmers have envisioned the most generic use cases for a piece of code to make it reusable. Sometimes, the abstractions used in the program are not the appropriate ones, and it would be simpler for the higher level client to circumvent such abstractions. Another problem is the impedance mismatch between different pieces of code or libraries coming from different projects that are not designed to work together. Interoperability between such libraries are often hindered by abstractions, by design, in the name of hiding implementation details and encapsulation. These problems necessitate forms of abstraction that are easy to manipulate if needed. In this paper, we describe a powerful mechanism to create white-box abstractions, that encourage flatter hierarchies of abstraction and ease of manipulation and customization when necessary: program refinement. In so doing, we rely on the basic principle that writing directly in the host programming language is as least restrictive as one can get in terms of expressiveness, and allow the programmer to reuse and customize existing code snippets to address their specific needs.

URLhttp://doi.acm.org/10.1145/2986012.2986025
DOI10.1145/2986012.2986025
Citation Keyafshari_building_2016