SlideShare a Scribd company logo
1 of 93
Download to read offline
Shaping the Future of
Automatic Programming
Christos Tsakostas
ct@polygenesis.io
#1 Automatic Programming Meetup, June 19th 2019, Athens GR
https://arxiv.org/pdf/1712.00676.pdf
https://jaxenter.com/coding-in-2014-interview-billings-140066.html
“Good code generators will be the most helpful
and useful tools for coding by 2040”
Jay Jay Billings, Alexander J. McCaskey, Geoffroy Vallee, and Greg Watson
Oak Ridge National Laboratory
Agenda
- Goals of the “Automatic Programming” meetup
- Introduction
- Brief overview of the current state for generation
- PolyGenesis
- Future plans and resources
If you have any question, interrupt me!
Meetup Sponsor
ViaBill A/S (https://viabill.com/) is a FinTech company providing
seamless financing. Currently available in Denmark, Norway, the
United States of America and available soon in more countries.
For job openings contact the CTO Allan Noer
an@viabill.com
Goals of the
“Automatic Programming”
meetup
Mindset: Can you handle the responsibility?
● Embracing automatic programming is about handling the responsibility
● Code generators are not magic
● No code generator is good enough for your case
● Efficient generators require efficient modeling
● Be ready to model your case
Promote automation in software lifecycle
● Requirements
● Analysis
● Design
● Coding
● Testing
● Deployment
Acquire deep knowledge about modern best practices
● Microservices
● Event-driven architectures
● Event Sourcing / CQRS
● Automated Testing
● Infrastructure as code
● Domain-driven design
● Behavior-driven design
● ...etc.
Explore current and future technologies in automation
● Artificial Intelligence
● Machine Learning
● Deep Learning
● Computer Vision
● … etc.
Learn about PolyGenesis
● Present and enhance PolyGenesis
● An everyday companion tool for development
Promote Collaboration
● Bring people together, interested in automatic programming
● Hands-on workshops
● Open to new ideas, discussions and presentations
Introduction
What is Automatic Programming?
In computer science, the term automatic programming identifies a type of
computer programming in which some mechanism generates a computer
program to allow human programmers to write the code at a higher abstraction
level.
Wikipedia
Brief History of Automatic Programming
● 1940s: Automation of punching paper tape
● 1950s: Translation of high-level programming languages (i.e. Fortran)
● 1960s: Autocode: "simplified coding systems"
● 1960s/1970s: Generative Programming
● 1980s: Source-to-source compiler
● 1980s/1990s: Source-code generation
● 1990s/2000s: Low-code development
● 2010s: No-code development
● 2010s: Machine Learning & Programming / Code Generation
Why Automatic Programming?
● Productivity
● Quality
● Consistency
● Less coding (in Higher Abstraction Level)
Concerns with automatic programming
● Doing too much
● Not working with existing code bases
● Quality of output code
● Replace developers
● Complexity
● Technology support
● Maintenance
● Cost
Valid unless… you can handle the responsibility
If you “own” a generator
● It can do exactly what you need
● You can make it work with your existing code bases
● You can control the quality of output code
● It will definitely not replace you!
● You can tackle complexity
● You can support any technology
● You will maintain it
● With no extra cost
Who is concerned?
Brief overview of the current state
for generation
Current State
1. Apps / Websites - for end / business users & IT
2. Apps / Business Processes - for business users & IT
3. Machine Learning - for researchers & IT
4. Tools and methodologies - for IT
Current State
Apps / Websites
Samples of Website Generation
● Static website generation (e.g. Jekyll: https://jekyllrb.com)
● emyspot (https://www.emyspot.com)
● Wix (https://www.wix.com)
● ...
Samples of Apps Generation
● Appsbar (http://www.appsbar.com/)
● AppInstitute (https://appinstitute.com/)
● Appypie (https://www.appypie.com/)
● BuildFire (https://buildfire.com/)
● iBuildApp (https://ibuildapp.com/)
● Kinetize* (https://www.kinetise.com/)
● MIT App Inventor (http://appinventor.mit.edu/explore/)
● MobinCube (https://www.mobincube.com/)
● …
* Source code
Current State
Apps / Business Processes
Samples of Rapid App Development
● OpenXava (https://www.openxava.org/)
● Spring Roo (https://projects.spring.io/spring-roo/)
● Xojo (https://xojo.com)
● …
Samples of Business Processes, Workflows
● Activiti (https://www.activiti.org/)
● Camunda (https://camunda.com/)
● ...
Current State
Machine Learning & Code Generation
Machine Learning & Code Generation (UI)
● AirBnb Sketching Interfaces (https://airbnb.design/sketching-interfaces/,
https://www.youtube.com/watch?v=3MPc3PZ6dc4)
● Microsoft Sketch2Code (https://sketch2code.azurewebsites.net/,
https://www.youtube.com/watch?v=V6pqqPPHyYM)
● Pix2code (https://uizard.io/research/#pix2code,
https://www.youtube.com/watch?v=pqKeXkhFA3I)
● TeleportHQ (https://teleporthq.io/,
https://www.youtube.com/watch?v=_oet4GOzcRQ)
● ...
TeleportHQ
Machine Learning & Code Generation (Research)
● Awesome Machine Learning On Source Code
(https://github.com/src-d/awesome-machine-learning-on-source-code)
● Artificial Intelligence and auto-generation of code
(https://www.theseus.fi/bitstream/handle/10024/149252/report_v2.pdf?sequen
ce=1&isAllowed=y)
● DeepCoder: Learning to write programs
(https://openreview.net/pdf?id=ByldLrqlx)
● Using Machine Learning to Explore Neural Network Architecture
(https://ai.googleblog.com/2017/05/using-machine-learning-to-explore.html)
● ...
Machine Learning & Code Generation (Research)
● BAYOU - Neural sketch learning for conditional program generation
(http://www.askbayou.com/, https://arxiv.org/pdf/1703.05698.pdf)
● Prophet: Automatic Patch Generation by Learning Correct Code
(http://people.csail.mit.edu/rinard/paper/popl16.pdf)
● Intelligent code reviews using deep learning
(https://www.kdd.org/kdd2018/files/deep-learning-day/DLDay18_paper_40.pdf)
● Using Domain Specific Languages for Deep Learning Code Generation
(http://www.digital.hull.ac.uk/posters/DEFine-DSL-Poster-A0.pdf)
● ...
askbayou
Current State
Tools and methodologies for IT
Categorizations of Generators
● License
● Implementation Language
● Platform (windows, mac, linux, cross-platform)
● Active (generate always) / Passive (generate once)
● Input (UI, UML, XML, code, templates, text, shell commands, etc.)
● Output (Coding language, CSS, HTML, Documentation, Spreadsheet, etc.)
● Model
Categorization of Generators Models
● Code Munger (e.g. XDoclet)
● Inline code expander (e.g. ProC)
● Mixed code generator (e.g. Wizards)
● Partial class generator (works with abstract definitions)
● Tier generator (to be used as-is)
Generation Options
● Ad hoc
● Scaffolders
● Build-test-package
● Infrastructure
● DSL (Domain-specific language)
● Metaprogramming
● Model-Driven Architecture
Ad hoc
● IDE
● Build time (i.e. QueryDSL, Lombok, etc.)
● Quick and dirty solution (script, code)
● ...
Scaffolders
● Maven archetypes (https://maven.apache.org/archetypes/)
● Spring Initializr (https://start.spring.io/)
● Trinity for Java (https://github.com/oregor-projects/trinity-scaffolder-java)
● Yeoman (http://yeoman.io/)
● ...
Build-test-package
● CMake (https://cmake.org/)
● Gradle (https://gradle.org/)
● ...
Infrastructure
● Ansible (https://www.ansible.com/)
● Chef (https://www.chef.io/products/chef-infra/)
● Puppet (https://puppet.com/)
● Terraform (https://www.terraform.io/)
● ...
Samples of DSL Generation
● Jetbrains MPS (https://www.jetbrains.com/mps/)
● Xtext (https://www.eclipse.org/Xtext/)
● ...
Metaprogramming Languages
● Roslyn (https://github.com/dotnet/roslyn)
● Racket (https://racket-lang.org/)
● Julia (https://www.julialang.org/)
● ...
Model-Driven Architecture (MDA)
An Object Management Group (OMG) Standard
MDA Models
● Computation Independent Model (CIM)
● Platform Independent Model (PIM)
● Platform Specific Model (PSM)
The general pattern
Samples of Model-Driven code generation
● Acceleo (https://www.eclipse.org/acceleo)
● Celerio (https://www.jaxio.com/en/celerio.html)
● LLBLGen (https://www.llblgen.com)
● Telosys (http://www.telosys.org)
● Umple (https://cruise.eecs.uottawa.ca/umple/)
● ...
Comparison of code generation tools
https://en.wikipedia.org/wiki/Comparison_of_code_generation_tools
Common drawbacks of most Model-Driven tools
● Data-centric (focused on CRUD)
● Intrusive
● Lack of support for modern technologies such as microservices and
event-driven architectures
● Functional within specific IDEs
● Functional for specific platforms
The ideal solution
● Free & Open Source
● Cross-platform tool
● Cross-language source code generation
● No constraints (template engine, technology, IDE, etc.)
● Generation from single files to full apps
● Clean generated source code agnostic of generation tool
● Support of modern architectures and microservices
● Extensible (models, generators, etc.)
● Able to support Machine Learning and future technologies
The Software Lifecycle
The Software Lifecycle Rephrased
PolyGenesis Platform Core: High-Level Architecture
Why “Platform”?
Allows to use and develop any:
● Abstraction: High level specifications
● Metamodel: Model of concept / technology (e.g. REST, Domain, etc.)
● Deducer: Populates metamodels based on abstractions
● Generator: Transforms metamodels into specific output (e.g. source-code,
spreadsheet, etc.)
Data Model
Behavior-Driven Abstractions.
A novel approach
Why “Behavior-Driven”?
● Behavior-Driven Design
● Behavior-Driven Testing
● Task-based UIs
● Object-oriented programing done right
● Domain-driven design
● ...
What are “Behaviors” in technical terms?
Functions
What is a “function”?
Function is an activity that is natural to or the
purpose of a person or thing.
Google
What is a “function” closer to programming?
Function is an activity to or the purpose of a thing.
The anatomy of a function in programming
Optional<Data> functionName(Optional<Data> Arg 1, ...., N){
function body (Activity)
Optional<Data> ReturnValue
}
What is a “function” in programming?
Function is an activity to or the purpose of a thing,
which consists of a name, optional arguments (input
data) and optional return value (output data)
The elements of a function in programming
● Activity
● Purpose
● Thing
● Name
● Arguments (Input Data)
● Return Value (Output Data)
The Function Model
The “Purpose”
The “Activity”
Key-values metadata supporting the generation process
What is a “Thing”?
● Business feature
● Technical feature
● Concept / Idea
● Anything
Thing: A Behavior-Driven Abstraction
Thing Properties
● Automatically derived by function arguments (and purpose)
● Extra properties can manually be added
Thing Context
● Groups things together
● Useful for splitting a big model into smaller ones (a.k.a bounded contexts,
microservices)
● Useful for supporting domain messages (events / commands)
The “Abstraction Scope”
Deducers: Driving the Metamodels
Generators Architecture
Template Data
Activity Generators Architecture
What comes out of the box?
Current Metamodels (and 1:1 Deducers)
Generators
● Angular Material
● Trinity Backend for Java
The Trinity Architecture
The Trinity Architecture
How can i start using Polygenesis?
By handling the responsibility
How to handle the responsibility
● First, address the problem by hand
● Understand the concepts (abstractions, deducers, metamodels, generators)
● Most likely existing concepts will not fit 100% to your needs
● Be ready to develop your own implementations of the concepts
● Make it first-class citizen in your development efforts
● Generate only what you need when you need it
● Adjust the generation process as the project evolves
Generation accuracy reflects the
modeling accuracy
Pair-programming with PolyGenesis
Future Plans
Short-term Plans
● Stabilize the Platform
● Stabilize the Trinity Java Generator
● Angular Generator, UI & Page Objects Metamodels
● Documentation
● Explore alternative inputs instead of DSL
Mid-term Plans
● Rules
● Processes / Workflows
● Selenium
● Postman
● Migration Scripts (tracking changes)
● Merge functionality
● Infrastructure as code
● Explore / POC with Machine Learning
(https://blog.floydhub.com/turning-design-mockups-into-code-with-deep-learni
ng/)
Long-term Plans
Upcoming meetups
● Demos
● Testing & Page Object Metamodel
● Domain-Driven Design Metamodel and Microservices
● Event-Driven Architectures and Orchestration vs Choreography Metamodels
● The Trinity Architecture
● ...
Suggestions / Requests / Contribute?
https://www.linkedin.com/in/tsakostas/
ct@polygenesis.io
Resources
● Polygenesis Website: https://polygenesis.io/
● PolyGenesis Platform:
https://github.com/polygenesis-projects/polygenesis-platform
● The Trinity Architecture:
https://medium.com/oregor/the-trinity-architecture-c89ed5743c1e
● Trinity Scaffolder for Java:
https://github.com/oregor-projects/trinity-scaffolder-java
● Trinity4J: https://github.com/oregor-projects/trinity4j
● Example of Code Generated by PolyGenesis:
https://github.com/oregor-projects/trinity-demo-java
“For the things we have to learn before we
can do them, we learn by doing them.”
-Aristotle, The Nicomachean Ethics
Thank you!

More Related Content

What's hot

Introduction of Knowledge Graphs
Introduction of Knowledge GraphsIntroduction of Knowledge Graphs
Introduction of Knowledge GraphsJeff Z. Pan
 
An introduction to computer vision with Hugging Face
An introduction to computer vision with Hugging FaceAn introduction to computer vision with Hugging Face
An introduction to computer vision with Hugging FaceJulien SIMON
 
ML-Ops: Philosophy, Best-Practices and Tools
ML-Ops:Philosophy, Best-Practices and ToolsML-Ops:Philosophy, Best-Practices and Tools
ML-Ops: Philosophy, Best-Practices and ToolsJorge Davila-Chacon
 
Introduction To Artificial Intelligence Powerpoint Presentation Slides
Introduction To Artificial Intelligence Powerpoint Presentation SlidesIntroduction To Artificial Intelligence Powerpoint Presentation Slides
Introduction To Artificial Intelligence Powerpoint Presentation SlidesSlideTeam
 
Artificial Intelligence and Machine Learning
Artificial Intelligence and Machine LearningArtificial Intelligence and Machine Learning
Artificial Intelligence and Machine LearningMykola Dobrochynskyy
 
Introduction to AI & ML
Introduction to AI & MLIntroduction to AI & ML
Introduction to AI & MLMandy Sidana
 
AI and ML Series - Introduction to Generative AI and LLMs - Session 1
AI and ML Series - Introduction to Generative AI and LLMs - Session 1AI and ML Series - Introduction to Generative AI and LLMs - Session 1
AI and ML Series - Introduction to Generative AI and LLMs - Session 1DianaGray10
 
Ai for everyone
Ai for everyoneAi for everyone
Ai for everyoneTrang Tran
 
Machine Learning Ml Overview Algorithms Use Cases And Applications
Machine Learning Ml Overview Algorithms Use Cases And ApplicationsMachine Learning Ml Overview Algorithms Use Cases And Applications
Machine Learning Ml Overview Algorithms Use Cases And ApplicationsSlideTeam
 
Generative AI, WiDS 2023.pptx
Generative AI, WiDS 2023.pptxGenerative AI, WiDS 2023.pptx
Generative AI, WiDS 2023.pptxColleen Farrelly
 
Generative AI Art - The Dark Side
Generative AI Art - The Dark SideGenerative AI Art - The Dark Side
Generative AI Art - The Dark SideAbhinav Gupta
 
Artificial intelligence slides beginners
Artificial intelligence slides beginners Artificial intelligence slides beginners
Artificial intelligence slides beginners Antonio Fernandes
 
Computer Vision Presentation Artificial Intelligence (AI)
Computer Vision Presentation Artificial Intelligence (AI)Computer Vision Presentation Artificial Intelligence (AI)
Computer Vision Presentation Artificial Intelligence (AI)AshTheMidBenchers
 
Microsoft + OpenAI: Recent Updates (Machine Learning 15minutes! Broadcast #74)
Microsoft + OpenAI: Recent Updates (Machine Learning 15minutes! Broadcast #74)Microsoft + OpenAI: Recent Updates (Machine Learning 15minutes! Broadcast #74)
Microsoft + OpenAI: Recent Updates (Machine Learning 15minutes! Broadcast #74)Naoki (Neo) SATO
 
Artificial Intelligence Introduction & Business usecases
Artificial Intelligence Introduction & Business usecasesArtificial Intelligence Introduction & Business usecases
Artificial Intelligence Introduction & Business usecasesVikas Jain
 

What's hot (20)

Introduction of Knowledge Graphs
Introduction of Knowledge GraphsIntroduction of Knowledge Graphs
Introduction of Knowledge Graphs
 
An introduction to computer vision with Hugging Face
An introduction to computer vision with Hugging FaceAn introduction to computer vision with Hugging Face
An introduction to computer vision with Hugging Face
 
ML-Ops: Philosophy, Best-Practices and Tools
ML-Ops:Philosophy, Best-Practices and ToolsML-Ops:Philosophy, Best-Practices and Tools
ML-Ops: Philosophy, Best-Practices and Tools
 
Introduction To Artificial Intelligence Powerpoint Presentation Slides
Introduction To Artificial Intelligence Powerpoint Presentation SlidesIntroduction To Artificial Intelligence Powerpoint Presentation Slides
Introduction To Artificial Intelligence Powerpoint Presentation Slides
 
Artificial Intelligence and Machine Learning
Artificial Intelligence and Machine LearningArtificial Intelligence and Machine Learning
Artificial Intelligence and Machine Learning
 
Introduction to AI & ML
Introduction to AI & MLIntroduction to AI & ML
Introduction to AI & ML
 
AI and ML Series - Introduction to Generative AI and LLMs - Session 1
AI and ML Series - Introduction to Generative AI and LLMs - Session 1AI and ML Series - Introduction to Generative AI and LLMs - Session 1
AI and ML Series - Introduction to Generative AI and LLMs - Session 1
 
Intro to LLMs
Intro to LLMsIntro to LLMs
Intro to LLMs
 
Machine learning
Machine learning Machine learning
Machine learning
 
Ai for everyone
Ai for everyoneAi for everyone
Ai for everyone
 
Gdsc info session
Gdsc info session Gdsc info session
Gdsc info session
 
Machine Learning Ml Overview Algorithms Use Cases And Applications
Machine Learning Ml Overview Algorithms Use Cases And ApplicationsMachine Learning Ml Overview Algorithms Use Cases And Applications
Machine Learning Ml Overview Algorithms Use Cases And Applications
 
Generative AI, WiDS 2023.pptx
Generative AI, WiDS 2023.pptxGenerative AI, WiDS 2023.pptx
Generative AI, WiDS 2023.pptx
 
Generative AI Art - The Dark Side
Generative AI Art - The Dark SideGenerative AI Art - The Dark Side
Generative AI Art - The Dark Side
 
Artificial intelligence slides beginners
Artificial intelligence slides beginners Artificial intelligence slides beginners
Artificial intelligence slides beginners
 
Computer Vision Presentation Artificial Intelligence (AI)
Computer Vision Presentation Artificial Intelligence (AI)Computer Vision Presentation Artificial Intelligence (AI)
Computer Vision Presentation Artificial Intelligence (AI)
 
Aippt
AipptAippt
Aippt
 
Microsoft + OpenAI: Recent Updates (Machine Learning 15minutes! Broadcast #74)
Microsoft + OpenAI: Recent Updates (Machine Learning 15minutes! Broadcast #74)Microsoft + OpenAI: Recent Updates (Machine Learning 15minutes! Broadcast #74)
Microsoft + OpenAI: Recent Updates (Machine Learning 15minutes! Broadcast #74)
 
artificial intelligence
artificial intelligenceartificial intelligence
artificial intelligence
 
Artificial Intelligence Introduction & Business usecases
Artificial Intelligence Introduction & Business usecasesArtificial Intelligence Introduction & Business usecases
Artificial Intelligence Introduction & Business usecases
 

Similar to Shaping the Future of Automatic Programming

Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneursRodrigo Gil
 
DrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low CodeDrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low CodeAlejandro Moreno
 
Os hardware meets os software
Os hardware meets os softwareOs hardware meets os software
Os hardware meets os softwarePaul Tanner
 
Combining Machine Learning with Physical Computing - June 2023
Combining Machine Learning with Physical Computing - June 2023Combining Machine Learning with Physical Computing - June 2023
Combining Machine Learning with Physical Computing - June 2023Hal Speed
 
Cutting edge of web technology
Cutting edge of web technologyCutting edge of web technology
Cutting edge of web technologyTsutomu Ogasawara
 
Elm at large (companies)
Elm at large (companies)Elm at large (companies)
Elm at large (companies)Fangda Wang
 
Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023Chris Grundemann
 
Introduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKIntroduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKKriangkrai Chaonithi
 
Tolunay Mengi CV - English - 07.07.2022.pdf
Tolunay Mengi CV - English - 07.07.2022.pdfTolunay Mengi CV - English - 07.07.2022.pdf
Tolunay Mengi CV - English - 07.07.2022.pdfTolunay Mengi
 
Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016maiktoepfer
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Toolsbarciszewski
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLinaro
 
Build and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 MinsBuild and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 MinsJeff Hull
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019PhuocNT (Fresher.VN)
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)Ron Munitz
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do ThatNathan Smith
 
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoQCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoSzczepan Faber
 
Making machine learning model deployment boring - Big Data Expo 2019
Making machine learning model deployment boring - Big Data Expo 2019Making machine learning model deployment boring - Big Data Expo 2019
Making machine learning model deployment boring - Big Data Expo 2019webwinkelvakdag
 

Similar to Shaping the Future of Automatic Programming (20)

Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
DrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low CodeDrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low Code
 
Os hardware meets os software
Os hardware meets os softwareOs hardware meets os software
Os hardware meets os software
 
Combining Machine Learning with Physical Computing - June 2023
Combining Machine Learning with Physical Computing - June 2023Combining Machine Learning with Physical Computing - June 2023
Combining Machine Learning with Physical Computing - June 2023
 
SWAD-24-years.pdf
SWAD-24-years.pdfSWAD-24-years.pdf
SWAD-24-years.pdf
 
Cutting edge of web technology
Cutting edge of web technologyCutting edge of web technology
Cutting edge of web technology
 
Elm at large (companies)
Elm at large (companies)Elm at large (companies)
Elm at large (companies)
 
Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023
 
Introduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKIntroduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OK
 
Tolunay Mengi CV - English - 07.07.2022.pdf
Tolunay Mengi CV - English - 07.07.2022.pdfTolunay Mengi CV - English - 07.07.2022.pdf
Tolunay Mengi CV - English - 07.07.2022.pdf
 
Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 
LAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoTLAS16-108: JerryScript and other scripting languages for IoT
LAS16-108: JerryScript and other scripting languages for IoT
 
Build and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 MinsBuild and Deploy a Python Web App to Amazon in 30 Mins
Build and Deploy a Python Web App to Amazon in 30 Mins
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
 
IT Career Planning v2
IT Career Planning v2IT Career Planning v2
IT Career Planning v2
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
 
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoQCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
 
Making machine learning model deployment boring - Big Data Expo 2019
Making machine learning model deployment boring - Big Data Expo 2019Making machine learning model deployment boring - Big Data Expo 2019
Making machine learning model deployment boring - Big Data Expo 2019
 

Recently uploaded

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Recently uploaded (20)

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Shaping the Future of Automatic Programming

  • 1. Shaping the Future of Automatic Programming Christos Tsakostas ct@polygenesis.io #1 Automatic Programming Meetup, June 19th 2019, Athens GR
  • 2. https://arxiv.org/pdf/1712.00676.pdf https://jaxenter.com/coding-in-2014-interview-billings-140066.html “Good code generators will be the most helpful and useful tools for coding by 2040” Jay Jay Billings, Alexander J. McCaskey, Geoffroy Vallee, and Greg Watson Oak Ridge National Laboratory
  • 3. Agenda - Goals of the “Automatic Programming” meetup - Introduction - Brief overview of the current state for generation - PolyGenesis - Future plans and resources If you have any question, interrupt me!
  • 4. Meetup Sponsor ViaBill A/S (https://viabill.com/) is a FinTech company providing seamless financing. Currently available in Denmark, Norway, the United States of America and available soon in more countries. For job openings contact the CTO Allan Noer an@viabill.com
  • 5. Goals of the “Automatic Programming” meetup
  • 6. Mindset: Can you handle the responsibility? ● Embracing automatic programming is about handling the responsibility ● Code generators are not magic ● No code generator is good enough for your case ● Efficient generators require efficient modeling ● Be ready to model your case
  • 7. Promote automation in software lifecycle ● Requirements ● Analysis ● Design ● Coding ● Testing ● Deployment
  • 8. Acquire deep knowledge about modern best practices ● Microservices ● Event-driven architectures ● Event Sourcing / CQRS ● Automated Testing ● Infrastructure as code ● Domain-driven design ● Behavior-driven design ● ...etc.
  • 9. Explore current and future technologies in automation ● Artificial Intelligence ● Machine Learning ● Deep Learning ● Computer Vision ● … etc.
  • 10. Learn about PolyGenesis ● Present and enhance PolyGenesis ● An everyday companion tool for development
  • 11. Promote Collaboration ● Bring people together, interested in automatic programming ● Hands-on workshops ● Open to new ideas, discussions and presentations
  • 13. What is Automatic Programming? In computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level. Wikipedia
  • 14. Brief History of Automatic Programming ● 1940s: Automation of punching paper tape ● 1950s: Translation of high-level programming languages (i.e. Fortran) ● 1960s: Autocode: "simplified coding systems" ● 1960s/1970s: Generative Programming ● 1980s: Source-to-source compiler ● 1980s/1990s: Source-code generation ● 1990s/2000s: Low-code development ● 2010s: No-code development ● 2010s: Machine Learning & Programming / Code Generation
  • 15. Why Automatic Programming? ● Productivity ● Quality ● Consistency ● Less coding (in Higher Abstraction Level)
  • 16. Concerns with automatic programming ● Doing too much ● Not working with existing code bases ● Quality of output code ● Replace developers ● Complexity ● Technology support ● Maintenance ● Cost Valid unless… you can handle the responsibility
  • 17. If you “own” a generator ● It can do exactly what you need ● You can make it work with your existing code bases ● You can control the quality of output code ● It will definitely not replace you! ● You can tackle complexity ● You can support any technology ● You will maintain it ● With no extra cost
  • 19. Brief overview of the current state for generation
  • 20. Current State 1. Apps / Websites - for end / business users & IT 2. Apps / Business Processes - for business users & IT 3. Machine Learning - for researchers & IT 4. Tools and methodologies - for IT
  • 22. Samples of Website Generation ● Static website generation (e.g. Jekyll: https://jekyllrb.com) ● emyspot (https://www.emyspot.com) ● Wix (https://www.wix.com) ● ...
  • 23. Samples of Apps Generation ● Appsbar (http://www.appsbar.com/) ● AppInstitute (https://appinstitute.com/) ● Appypie (https://www.appypie.com/) ● BuildFire (https://buildfire.com/) ● iBuildApp (https://ibuildapp.com/) ● Kinetize* (https://www.kinetise.com/) ● MIT App Inventor (http://appinventor.mit.edu/explore/) ● MobinCube (https://www.mobincube.com/) ● … * Source code
  • 24. Current State Apps / Business Processes
  • 25. Samples of Rapid App Development ● OpenXava (https://www.openxava.org/) ● Spring Roo (https://projects.spring.io/spring-roo/) ● Xojo (https://xojo.com) ● …
  • 26. Samples of Business Processes, Workflows ● Activiti (https://www.activiti.org/) ● Camunda (https://camunda.com/) ● ...
  • 27. Current State Machine Learning & Code Generation
  • 28. Machine Learning & Code Generation (UI) ● AirBnb Sketching Interfaces (https://airbnb.design/sketching-interfaces/, https://www.youtube.com/watch?v=3MPc3PZ6dc4) ● Microsoft Sketch2Code (https://sketch2code.azurewebsites.net/, https://www.youtube.com/watch?v=V6pqqPPHyYM) ● Pix2code (https://uizard.io/research/#pix2code, https://www.youtube.com/watch?v=pqKeXkhFA3I) ● TeleportHQ (https://teleporthq.io/, https://www.youtube.com/watch?v=_oet4GOzcRQ) ● ...
  • 30. Machine Learning & Code Generation (Research) ● Awesome Machine Learning On Source Code (https://github.com/src-d/awesome-machine-learning-on-source-code) ● Artificial Intelligence and auto-generation of code (https://www.theseus.fi/bitstream/handle/10024/149252/report_v2.pdf?sequen ce=1&isAllowed=y) ● DeepCoder: Learning to write programs (https://openreview.net/pdf?id=ByldLrqlx) ● Using Machine Learning to Explore Neural Network Architecture (https://ai.googleblog.com/2017/05/using-machine-learning-to-explore.html) ● ...
  • 31. Machine Learning & Code Generation (Research) ● BAYOU - Neural sketch learning for conditional program generation (http://www.askbayou.com/, https://arxiv.org/pdf/1703.05698.pdf) ● Prophet: Automatic Patch Generation by Learning Correct Code (http://people.csail.mit.edu/rinard/paper/popl16.pdf) ● Intelligent code reviews using deep learning (https://www.kdd.org/kdd2018/files/deep-learning-day/DLDay18_paper_40.pdf) ● Using Domain Specific Languages for Deep Learning Code Generation (http://www.digital.hull.ac.uk/posters/DEFine-DSL-Poster-A0.pdf) ● ...
  • 33. Current State Tools and methodologies for IT
  • 34. Categorizations of Generators ● License ● Implementation Language ● Platform (windows, mac, linux, cross-platform) ● Active (generate always) / Passive (generate once) ● Input (UI, UML, XML, code, templates, text, shell commands, etc.) ● Output (Coding language, CSS, HTML, Documentation, Spreadsheet, etc.) ● Model
  • 35. Categorization of Generators Models ● Code Munger (e.g. XDoclet) ● Inline code expander (e.g. ProC) ● Mixed code generator (e.g. Wizards) ● Partial class generator (works with abstract definitions) ● Tier generator (to be used as-is)
  • 36. Generation Options ● Ad hoc ● Scaffolders ● Build-test-package ● Infrastructure ● DSL (Domain-specific language) ● Metaprogramming ● Model-Driven Architecture
  • 37. Ad hoc ● IDE ● Build time (i.e. QueryDSL, Lombok, etc.) ● Quick and dirty solution (script, code) ● ...
  • 38. Scaffolders ● Maven archetypes (https://maven.apache.org/archetypes/) ● Spring Initializr (https://start.spring.io/) ● Trinity for Java (https://github.com/oregor-projects/trinity-scaffolder-java) ● Yeoman (http://yeoman.io/) ● ...
  • 39. Build-test-package ● CMake (https://cmake.org/) ● Gradle (https://gradle.org/) ● ...
  • 40. Infrastructure ● Ansible (https://www.ansible.com/) ● Chef (https://www.chef.io/products/chef-infra/) ● Puppet (https://puppet.com/) ● Terraform (https://www.terraform.io/) ● ...
  • 41. Samples of DSL Generation ● Jetbrains MPS (https://www.jetbrains.com/mps/) ● Xtext (https://www.eclipse.org/Xtext/) ● ...
  • 42. Metaprogramming Languages ● Roslyn (https://github.com/dotnet/roslyn) ● Racket (https://racket-lang.org/) ● Julia (https://www.julialang.org/) ● ...
  • 43. Model-Driven Architecture (MDA) An Object Management Group (OMG) Standard
  • 44. MDA Models ● Computation Independent Model (CIM) ● Platform Independent Model (PIM) ● Platform Specific Model (PSM)
  • 46. Samples of Model-Driven code generation ● Acceleo (https://www.eclipse.org/acceleo) ● Celerio (https://www.jaxio.com/en/celerio.html) ● LLBLGen (https://www.llblgen.com) ● Telosys (http://www.telosys.org) ● Umple (https://cruise.eecs.uottawa.ca/umple/) ● ...
  • 47. Comparison of code generation tools https://en.wikipedia.org/wiki/Comparison_of_code_generation_tools
  • 48. Common drawbacks of most Model-Driven tools ● Data-centric (focused on CRUD) ● Intrusive ● Lack of support for modern technologies such as microservices and event-driven architectures ● Functional within specific IDEs ● Functional for specific platforms
  • 49. The ideal solution ● Free & Open Source ● Cross-platform tool ● Cross-language source code generation ● No constraints (template engine, technology, IDE, etc.) ● Generation from single files to full apps ● Clean generated source code agnostic of generation tool ● Support of modern architectures and microservices ● Extensible (models, generators, etc.) ● Able to support Machine Learning and future technologies
  • 50.
  • 53. PolyGenesis Platform Core: High-Level Architecture
  • 54. Why “Platform”? Allows to use and develop any: ● Abstraction: High level specifications ● Metamodel: Model of concept / technology (e.g. REST, Domain, etc.) ● Deducer: Populates metamodels based on abstractions ● Generator: Transforms metamodels into specific output (e.g. source-code, spreadsheet, etc.)
  • 57. Why “Behavior-Driven”? ● Behavior-Driven Design ● Behavior-Driven Testing ● Task-based UIs ● Object-oriented programing done right ● Domain-driven design ● ...
  • 58. What are “Behaviors” in technical terms? Functions
  • 59. What is a “function”? Function is an activity that is natural to or the purpose of a person or thing. Google
  • 60. What is a “function” closer to programming? Function is an activity to or the purpose of a thing.
  • 61. The anatomy of a function in programming Optional<Data> functionName(Optional<Data> Arg 1, ...., N){ function body (Activity) Optional<Data> ReturnValue }
  • 62. What is a “function” in programming? Function is an activity to or the purpose of a thing, which consists of a name, optional arguments (input data) and optional return value (output data)
  • 63. The elements of a function in programming ● Activity ● Purpose ● Thing ● Name ● Arguments (Input Data) ● Return Value (Output Data)
  • 66. The “Activity” Key-values metadata supporting the generation process
  • 67. What is a “Thing”? ● Business feature ● Technical feature ● Concept / Idea ● Anything
  • 69. Thing Properties ● Automatically derived by function arguments (and purpose) ● Extra properties can manually be added
  • 70. Thing Context ● Groups things together ● Useful for splitting a big model into smaller ones (a.k.a bounded contexts, microservices) ● Useful for supporting domain messages (events / commands)
  • 72. Deducers: Driving the Metamodels
  • 76. What comes out of the box?
  • 77. Current Metamodels (and 1:1 Deducers)
  • 78. Generators ● Angular Material ● Trinity Backend for Java
  • 81. How can i start using Polygenesis?
  • 82. By handling the responsibility
  • 83. How to handle the responsibility ● First, address the problem by hand ● Understand the concepts (abstractions, deducers, metamodels, generators) ● Most likely existing concepts will not fit 100% to your needs ● Be ready to develop your own implementations of the concepts ● Make it first-class citizen in your development efforts ● Generate only what you need when you need it ● Adjust the generation process as the project evolves
  • 84. Generation accuracy reflects the modeling accuracy
  • 87. Short-term Plans ● Stabilize the Platform ● Stabilize the Trinity Java Generator ● Angular Generator, UI & Page Objects Metamodels ● Documentation ● Explore alternative inputs instead of DSL
  • 88. Mid-term Plans ● Rules ● Processes / Workflows ● Selenium ● Postman ● Migration Scripts (tracking changes) ● Merge functionality ● Infrastructure as code ● Explore / POC with Machine Learning (https://blog.floydhub.com/turning-design-mockups-into-code-with-deep-learni ng/)
  • 90. Upcoming meetups ● Demos ● Testing & Page Object Metamodel ● Domain-Driven Design Metamodel and Microservices ● Event-Driven Architectures and Orchestration vs Choreography Metamodels ● The Trinity Architecture ● ...
  • 91. Suggestions / Requests / Contribute? https://www.linkedin.com/in/tsakostas/ ct@polygenesis.io
  • 92. Resources ● Polygenesis Website: https://polygenesis.io/ ● PolyGenesis Platform: https://github.com/polygenesis-projects/polygenesis-platform ● The Trinity Architecture: https://medium.com/oregor/the-trinity-architecture-c89ed5743c1e ● Trinity Scaffolder for Java: https://github.com/oregor-projects/trinity-scaffolder-java ● Trinity4J: https://github.com/oregor-projects/trinity4j ● Example of Code Generated by PolyGenesis: https://github.com/oregor-projects/trinity-demo-java
  • 93. “For the things we have to learn before we can do them, we learn by doing them.” -Aristotle, The Nicomachean Ethics Thank you!