O PAPERS 1 OF 6 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 manipu- lation 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, bidi- rectional relationships, resource management, invariants and validation. These strategies for implementing these features are implemented once as reusable modules. Managed Data is a general concept that can be implemented in many 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 interpreta- tion of data models. The paper also discusses strategies for implementing Managed Data. In object-oriented languages, Managed Data typically requires programmer control over the meaning of the field/method access operator (the "dot" operator). Bootstrapping poses difficulties, because imple- menting the first data manager requires some data. As a case study, we used Managed Data in a web development frame- work from the Ens¯ o project to reuse database management and access control mechanisms across different data defini- tions.

[1]  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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[18]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

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

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

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

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

[23]  Michael Stonebraker,et al.  "One Size Fits All": An Idea Whose Time Has Come and Gone (Abstract) , 2005, ICDE.

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

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