Graph Transformation

Graph-oriented programming is a new programming para-digm that defines a graph-oriented way to build enterprise software, using directed attributed graph databases as backend. Graph-oriented programming is inspired by object-oriented programming, functional programming, design by contract, rule-based programming and the semantic web. It integrates all those programming paradigms consistently. Graph-oriented programming enables software developers to build enterprise software that does not generate technical debt. Its use is particularly adapted to enterprise software managing very complex data structures, evolving regulations and/or high numbers of business rules. Couplings in Enterprise Software The way the software industry currently builds enterprise software generates a lot of “structural and temporal couplings”. Structural coupling occurs when software and, in particular, data structures, are implemented such that artificial dependencies are generated. A dependency is artificial if it occurs in the implementation but not in the underlying semantic concepts. Temporal couplings are artificial dependencies generated by holding several versions of business rules in the same program, those rules being applicable to data that are stored in the last version of the data structures. Those couplings are at the very core of what is commonly called “technical debt”. This debt generates over-costs each time a software evolves. Generally, the requirements change, the software is partially redesigned to accommodate the modification, the data structures evolve, the existing data must be migrated, and all programs must be non-regressed. In order to implement a small modification in an enterprise software, a change in regulation for instance, overcoming the technical debt may represent up to 90–95% of the total workload [5, 6]. The software industry has, for a long time, identified the costs associated to technical debts, and in particular those costs seem to grow exponentially with time [5]. That means that the productivity of any maintenance team of fixed size will constantly decrease throughout the evolution process. In order to address this core issue of enterprise software, a lot of engineering-oriented work-arounds can be found: design patterns that are supposed to enhance software extensibility [1], software architecture practices that define modules and layers inside an enterprise software [2, 4], or best practices for software refactoring to reduce the costs of the refactoring phase itself [3]. However, every software vendor knows that the core problem of the technical debt has not been solved. Graph-Oriented Programming Graph-oriented programming is meant as an alternative programming paradigm not collecting technical debts. This paradigm is based on three concepts: (1) Using directed attributed graph databases to store the business entities without storing their relationships in the entities themselves, i.e. there are no foreign keys; (2) Designing programs so that the knowledge about relationships between entities (business nodes) is captured in functional code located “outside” of the nodes, encapsulated in graph transformation rules; (3) Using best practices in graph transformation design to guarantee a minimal or even no generation of technical debt. This programming paradigm can be applied using an object-oriented or functional programming language. The expected advantages of using graph-oriented programming are multiple: reusability of software is increased due to less software dependencies; multiple views of the same data can be implemented in the same application; multiple versions of data structures and business rules can cohabit, meaning that the software and the data can be timelined; software maintenance can be done by adding new software rather than by modifying existing software. At last, graph-oriented programming enables to build a different kind of enterprise software that proposes, through the use of a graph-oriented navigation, a new user experience, closer to our mental way of representing things. The Approach Taken at GraphApps At GraphApps, we developed a graph-oriented designer in Eclipse whose purpose is to model node and relationship types, as they occur in business applications, and to group them in semantic domains. Code generators, coupled to the designer, generate parameterized web pages proposing a default view of defined types of business entities. For each semantic domain, an independent jar file is generated. In addition, we developed a graph-oriented web framework, which loads the jar files and enables us to integrate them in the graphical web framework. All domains can be integrated without introducing any new code dependency. Each domain may include custom code, in order to implement graph transformations, web page modifications, or new pages. Moreover, the framework proposes reusable components that offer generic reusable mechanisms such as business node classification (every business node can be referenced in a tree of shared folders), business node timelines, navigation history, personalized links between business nodes, or alternate navigation. Those tools support a quick prototyping of large and complex applications, the implementation of time-based business rules, and the cooperative work of several teams collaborating to the same core model. The way the code is organized enables us to modify the behavior of the core system, without having to modify existing code, XII O. Rey

[1]  G. Pólya,et al.  Combinatorial Enumeration Of Groups, Graphs, And Chemical Compounds , 1988 .

[2]  G. Pólya Kombinatorische Anzahlbestimmungen für Gruppen, Graphen und chemische Verbindungen , 1937 .

[3]  J. H. Redfield,et al.  The Theory of Group-Reduced Distributions , 1927 .

[4]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Graph Transformation , 2006, Monographs in Theoretical Computer Science. An EATCS Series.

[5]  Gilbert N. Lewis,et al.  The Atom and the Molecule , 1916, Resonance.

[6]  Reiko Heckel,et al.  Molecular Analysis of Metabolic Pathway with Graph Transformation , 2006, ICGT.

[7]  Hans-Jörg Kreowski,et al.  Graph multiset transformation: a new framework for massively parallel computation inspired by DNA computing , 2011, Natural Computing.

[8]  Daniel Merkle,et al.  Generic Strategies for Chemical Space Exploration , 2013, Int. J. Comput. Biol. Drug Des..

[9]  Lynch,et al.  Correction-A Method for Generating Unique Computer Structural Representation of Stereoisomers , 1967 .

[10]  Francesc Rosselló,et al.  Graph Transformation in Molecular Biology , 2005, Formal Methods in Software and Systems Modeling.

[11]  Daniel Merkle,et al.  Inferring chemical reaction patterns using rule composition in graph grammars , 2012, ArXiv.

[12]  K. Funatsu,et al.  Novel Canonical Coding Method for Representation of Three‐Dimensional Structures. , 2000 .

[13]  T. Akutsu A New Method of Computer Representation of Stereochemistry. Transforming a Stereochemical Structure into a Graph. , 1991 .

[14]  L W Buss,et al.  What would be conserved if "the tape were played twice"? , 1994, Proceedings of the National Academy of Sciences of the United States of America.

[15]  Mario Vento,et al.  A (sub)graph isomorphism algorithm for matching large graphs , 2004, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[16]  W. Fontana,et al.  “The arrival of the fittest”: Toward a theory of biological organization , 1994 .

[17]  Peter F. Stadler,et al.  A Graph-Based Toy Model of Chemistry , 2003, J. Chem. Inf. Comput. Sci..

[18]  Encoding Rules,et al.  SMILES, a Chemical Language and Information System. 1. Introduction to Methodology , 1988 .

[19]  Hartmut Ehrig,et al.  Attributed graph transformation with node type inheritance , 2007, Theor. Comput. Sci..

[20]  Adalbert Kerber,et al.  Mathematical Chemistry and Chemoinformatics , 2013 .

[21]  W. KLYNE ORGANIC CHEMISTRY DIVISION COMMISSION ON NOMENCLATURE OF ORGANIC CHEMISTRY RULES FOR THE NOMENCLATURE OF ORGANIC CHEMISTRY SECTION E: STEREOCHEMISTRY , 2007 .

[22]  Ronald J. Gillespie,et al.  Fifty years of the VSEPR model , 2008 .

[23]  H. D. Flack,et al.  Louis Pasteur's discovery of molecular chirality and spontaneous resolution in 1848, together with a complete review of his crystallographic and chemical work. , 2009, Acta crystallographica. Section A, Foundations of crystallography.

[24]  Daniel Merkle,et al.  A Software Package for Chemically Inspired Graph Transformation , 2016, ICGT.

[25]  W. Todd Wipke,et al.  Simulation and evaluation of chemical synthesis. Computer representation and manipulation of stereochemistry , 1974 .

[26]  Gabriele Taentzer,et al.  AGG: A Graph Transformation Environment for Modeling and Validation of Software , 2003, AGTIVE.