Managed data: modular strategies for data abstraction

Managed Data is a two-level approach to data abstraction in which programmers first define data description and manipulation mechanisms, and then use these mechanisms to define specific kinds of data. Managed Data allows programmers to take control of many important aspects of data, including persistence, access/change control, reactivity, logging, bidirectional relationships, resource management, invariants and validation. These features are implemented once as reusable strategies that can apply to many different data types. Managed Data is a general concept that can be implemented in several ways, including reflection, metaclasses, and macros. In this paper we argue for the importance of Managed Data and present a novel implementation of Managed Data based on interpretation of data models. We show how to inherit and compose interpreters to implement the features described above. Our approach allows Managed Data to be used in object-oriented languages that support reflection over field access (overriding the "dot" operator) or dynamic method creation. We also show how self-describing data models are useful for bootstrapping, allowing Managed Data to be used definition of Data Managers themselves. As a case study, we used Managed Data in a web development framework from the Ensō project to reuse database management and access control mechanisms across different data definitions.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Henrik Loeser,et al.  "One Size Fits All": An Idea Whose Time Has Come and Gone? , 2011, BTW.

[3]  Brian A. Wichmann,et al.  Ada - language and methodology , 1987, Prentice Hall International Series in Computer Science.

[4]  Björn Karlsson,et al.  Beyond the C++ Standard Library: An Introduction to Boost , 2005 .

[5]  Frank Budinsky,et al.  EMF: Eclipse Modeling Framework 2.0 , 2009 .

[6]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[7]  Alexander Reelsen Play framework Cookbook , 2011 .

[8]  Éric Tanter,et al.  Processing , 1988 .

[9]  D. Flannanghan JavaScript: The definitive guide , 1999 .

[10]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[11]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[12]  Shan Shan Huang,et al.  Morphing: Safely Shaping a Class in the Image of Others , 2007, ECOOP.

[13]  Christian Bauer,et al.  Java Persistence with Hibernate , 2006 .

[14]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[15]  Yasuhiko Yokote Object-Oriented Programming Languages , 1990 .

[16]  Professor Dr. Niklaus Wirth,et al.  Programming in Modula-2 , 1982, Springer Berlin Heidelberg.

[17]  Jr. Guy L. Steele,et al.  Common LISP: the language (2nd ed.) , 1990 .

[18]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[19]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[20]  David Thomas,et al.  Programming Ruby: the pragmatic programmer's guide , 2000 .

[21]  Dave Thomas,et al.  Programming Ruby 1.9 & 2.0: The Pragmatic Programmers' Guide , 2013 .

[22]  Ralph E. Johnson,et al.  The Adaptive Object-Model Architectural Style , 2002, WICSA.

[23]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[24]  Frank Budinsky,et al.  Eclipse Modeling Framework , 2003 .

[25]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[26]  Harold Abelson,et al.  Revised5 report on the algorithmic language scheme , 1998, SIGP.

[27]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[28]  Ken Arnold,et al.  Java(TM) Programming Language, The (4th Edition) , 2005 .

[29]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[30]  Niklaus Wirth,et al.  Programming in MODULA-2 (3rd corrected ed.) , 1985 .

[31]  Shriram Krishnamurthi,et al.  Programming languages - application and interpretation , 2003 .

[32]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[33]  Robin Milner,et al.  Definition of standard ML , 1990 .

[34]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[35]  F. Tödtling,et al.  One size fits all?: Towards a differentiated regional innovation policy approach , 2005 .

[36]  Antonio Cisternino,et al.  Expert F# (Expert's Voice in .Net) , 2007 .

[37]  Peter P. Chen The Entity-Relationship Model: Towards a unified view of Data , 1976 .

[38]  Peter P. Chen The entity-relationship model: toward a unified view of data , 1975, VLDB '75.

[39]  William R. Cook Policy-Based Authorization , .

[40]  Pierre Cointe Une Extension de VLISP vers les Objets , 1984, Sci. Comput. Program..

[41]  Dave Thomas,et al.  Agile Web Development with Rails , 2005 .

[42]  Fred L. Drake,et al.  The Python Language Reference Manual , 1999 .

[43]  Brian R. Hunt,et al.  A Guide to MATLAB®: For Beginners and Experienced Users , 2014 .

[44]  Dennis McLeod,et al.  The semantic data model: a modelling mechanism for data base applications , 1978, SIGMOD Conference.