SlideServe
Menu
Préférences
© SlideServe · v2026

Declarative Meta-Programming Approach for Effective Framework Documentation

alia avatar
9 diapositives · 234 Views · Jul 14, 2014

This paper discusses the challenges of maintaining accurate and up-to-date framework documentation, which often becomes outdated due to constant evolution and lack of integration into the development process. The authors propose a solution using Declarative Meta-Programming (DMP) to document a framework's design succinctly. By leveraging design patterns and actively utilizing existing information, DMP allows for rigorous checks of completeness and correctness relative to the source code. The paper highlights DMP's powerful reasoning capabilities and close integration with development environments, illustrated through the use of SOUL in documenting designs.

Declarative Meta-Programming Approach for Effective Framework Documentation - slide 1
01 / 9Declarative Meta-Programming Approach for Effective Framework Documentation
1 / 17

Télécharger la présentation

Declarative Meta-Programming Approach for Effective Framework Documentation
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. A Declarative Meta-Programming Approach to Framework Documentation Tom Tourwé & Tom Mens {tom.tourwe,tom.mens}@vub.ac.be Programming Technology Lab Vrije Universiteit Brussel

  2. Motivation • Framework Documentation • Often non-existent • Outdated, due to constant evolution • Not integrated in the development process Problems for evolution & instantiation of the framework! Tom Tourwé

  3. Proposed Solution • Use declarative meta programming (DMP) • To document a framework’s design accurately and concisely • By means of design patterns used in the framework • Use the available information actively • Check completeness/correctness of the documentation w.r.t. the source code Concrete DMP Environment used: SOUL Tom Tourwé

  4. Why DMP? • Declarative • Represent knowledge in a straightforward and concise way • Powerful reasoning capabilities • Infer extra information from available information • Tight Integration • Of SOUL with the development environment • Allows to consult the source code Tom Tourwé

  5. Documenting the Design Tom Tourwé

  6. Documenting the Design dpRole([instance],[role],[source code artifact]) dpRole(astVisitor,abstractElement,ScExpression). dpRole(astVisitor,concreteElement,ScConsExpression). dpRole(astVisitor,concreteElement,ScBlockExpression). ... dpRole(astVisitor,acceptMethod,nodeDo:). dpRole(astVisitor,abstractVisitor,AbstractASTEnumerator). dpRole(astVisitor,concreteVisitor,SchemeToSmalltalkConverter). dpRole(astVisitor,visitMethod,doConsExpression:). dpRole(astVisitor,visitMethod,doBlockExpression:). ... dpRelation(astVisitor,<ScConsExpression,doConsExpression:>). dpRelation(astVisitor,<ScBlockExpression,doBlockExpression:>). Tom Tourwé

  7. Consult documentation Consult implementation Documenting the Design • Rather verbose • Use full power of DMP instead dpRole(astVisitor,abstractElement,ScExpression). … dpRole(?instance,concreteElement,?concreteElement) if dpInstance(?instance,visitorDP), dpRole(?instance,abstractElement,?root), hierarchy(abstractElement,?concreteElement), concreteClass(?concreteElement). Tom Tourwé

  8. Checking Completeness • Describe “required” roles • By means of logic facts • Check documentation for their presence • By means of logic rules • Report missing roles requiredRole(visitorDP,abstractElement). requiredRole(visitorDP,abstractVisitor). requiredRole(visitorDP,acceptMethod). checkPatternInstance(?pattern, ?instance, ?role) if requiredRole(?pattern,?role), not(dpRole(?instance,?role)) Tom Tourwé

  9. Consult documentation Check implementation Checking Consistency • Identify appropriate design constraints • Implement them by means of logic rules • Report conflicts & suggest possible actions patternConstraint(visitorDP,?instance, noAcceptMethod(?concreteElement,?acceptSelector)) if dpRole(?instance,acceptMethod,?acceptSelector), dpRole(?instance,concreteElement,?concreteElement), not(classImplements(?concreteElement,?acceptSelector)) Tom Tourwé