Automatic Code Generation

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Automatic Code Generation - Presentation Transcript

    1. Automatic Code Generation Present by Jiajing Liu Team 10
    2. Outline
      • Introduction to CODE GENERATION
      • Forms of Auto-Code Generation
        • Click and Code
        • Generating Purpose Language
        • Code Generation Engine
        • Code Generator
      • Concerns and Constraints
      • Reference
      • Q & A
    3. Introduction
      • CODE GENERATION is code that writes code [1] .
      • Automatic Code Generation can
        • Maintain consistent code quality and allows your code to evolve quickly in response to metadata changes
        • Extend reuse to include code with similar patterns
      • Result: increased speed, reusability, agility, and consistency in your application development
    4. Forms of Code Generation
      • Click and Code - Visual IDE
        • Microsoft Visual Studio .net
        • Altova Enterprise XML Suite
        • Borland ECO (Enterprise Core Object)
      • Generating Purpose Language
        • XSL/XSLT
      • Code Generation Engine
        • Velocity
        • MiddleGen
    5. Example - Visual IDE
      • Microsoft VS.net
    6. Example - Visual IDE
      • Borland C# Builder
      • with
      • Enterprise Core Object (ECO)
    7. Example - XSL/XSLT
      • XSL/XSLT(Template) + XML (Data) = HTML Page (Static Code)
    8. Example – CodeGen Engine
      • #foreach($action in $actions)
      • ${action.Name}Action() {
      • int i;
      • web_submit_data("${wrapperName}DetailNavBarAction.do",
      • "Action=$actionURL/${wrapperName}DetailNavBarAction.do",
      • "Referer=$refererURL/${wrapperName}NavBar.jsp",
      • "Name=navToPage", "Value=$action.Name", ENDITEM,
      • LAST);
      • for(i=0; i<NO_OF_LIST_ENTRIES; i++) {
      • #foreach($vObj in $action.valueObjects)
      • #set($vObjName = $vObj.Name)
      • lr_start_transaction(&quot;${vObjName}DetailAction&quot;);
      • web_submit_data(&quot;${vObjName}DetailAction.do&quot;,
      • &quot;Action=$actionURL/${vObjName}DetailAction.do&quot;,
      • &quot;Referer=$refererURL/${vObjName}Detail.jsp&quot;,
      • ITEMDATA,
      • #foreach($parameter in $vObj.Parameters)
      • &quot;Name=valueObject.${parameter.Name}&quot;, &quot;Value=${parameter.Value}&quot;, ENDITEM,
      • #end
      • LAST);
      • lr_end_transaction(&quot;${vObjName}DetailAction&quot;,LR_AUTO);
      • #end
      • }
      • }
      • #end
      • CustomerDetailAction() {
      • int i;
      • web_submit_data(&quot;CustomerDetailNavBarAction.do&quot;,
      • &quot;Action=$actionURL/CustomerDetailNavBarAction.do&quot;,
      • &quot;Referer=$refererURL/CustomerNavBar.jsp&quot;,
      • &quot;Name=navToPage&quot;, &quot;Value=CustomerDetail&quot;, ENDITEM,
      • LAST);
      • for(i=0; i<NO_OF_LIST_ENTRIES; i++) {
      • lr_start_transaction(&quot;CustomerDetailDetailAction&quot;);
      • web_submit_data(&quot;CustomerDetailDetailAction.do&quot;,
      • &quot;Action=$actionURL/CustomerDetailDetailAction.do&quot;,
      • &quot;Referer=$refererURL/CustomerDetailDetail.jsp&quot;,
      • ITEMDATA,
      • &quot;Name=valueObject.IdName&quot;, &quot;Value=India&quot;, ENDITEM,
      • &quot;Name=valueObject.MasterMediaSysId&quot;, &quot;Value=45&quot;, ENDITEM,
      • &quot;Name=valueObject.TerritoryArray&quot;, &quot;Value=${parameter.Value}&quot;, ENDITEM,
      • &quot;Name=valueObject.MasterMedia&quot;, &quot;Value=Home Video&quot;, ENDITEM,
      • &quot;Name=valueObject.PartnerSysId&quot;, &quot;Value=20266&quot;, ENDITEM,
      • &quot;Name=valueObject.MediaName&quot;, &quot;Value=Home Video&quot;, ENDITEM,
      • &quot;Name=valueObject.Partner&quot;, &quot;Value=Satyam-Hyd5&quot;, ENDITEM,
      • &quot;Name=valueObject.PartnerChannelSysId&quot;, &quot;Value=89&quot;, ENDITEM,
      • &quot;Name=valueObject.Id&quot;, &quot;Value=163&quot;, ENDITEM,
      • LAST);
      • lr_end_transaction(&quot;CustomerDetailDetailAction&quot;,LR_AUTO);
      • }
      • }
      Velocity Template (left) and Generated Result (right)
    9. Forms of Code Generation
      • Code Generator
        • Template independent
          • Domain Specific
        • Template based
          • Code Munger
          • Inline Code Expander
          • Mixed Code Generator
          • Partial Class Generator
          • Tier Generator
    10. Example – Code Generator
      • CodeSmith
      • nHibernate Mapping Files Generation
    11. Concerns and Constraints
      • Code generation is a design smell.
      • Engineers will ignore the 'do not edit' comments.
      • The generator won't be used or maintained.
      • My application isn't complex enough for generation.
      • My application is too complex for generation.
    12. Reference
      • [1] Code Generation in Microsoft .NET . Kathleen Dollard. Apress.
      • [2] Generative Programming: Methods, Tools, and Applications . Krzysztof Czarnecki.
      • [3] Click and code [automatic code generation]. Maclay, D. IEE Review. Volume 46, Issue 3, May 2000.
      • [4] Graphical modelling and design with automatic code generation . Smith, M. Partitioning in Hardware-Software Codesigns, IEE Colloquium on.13 Feb 1995.
      • [5] Automatic code generation for actuator interfacing from a declarative specification . Jung, E.; Kapoor, C.; Batory, D. (IROS 2005). 2005 IEEE/RSJ International Conference on. 2-6 Aug. 2005
      • [6] Tools for the code generation . Johanna Ambrosio. Application Development Trends. 6/30/2003.
      • [7] http://www.codegeneration.net/tiki-index.php
      • [8] http://www.codesmithtools.com/
    13. Thank you
      • Question on Auto-Code Generation?
    SlideShare Zeitgeist 2009

    + adorepumpadorepump Nominate

    custom

    392 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 392
      • 392 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 4
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories