SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
A Formal Method Environment on Pharo
Tomohiro Oda
Software Research Associates, Inc.
Tomo openInEsug
● Smalltalking since 1994
○ Smalltalk/V, VisualSmalltalk, VisualWorks, Squeak and then Pharo
○ 3D graphics (Jun on VW and later on Pharo), research prototypes
○ a big fan of ESUG since 2016
● Working for Software Research Associates, Inc.
○ SRA is a software vendor since 1967
○ one of the early adapters of OO in Japan
○ co-organized Smalltalk Day Japan 2019 with Smalltalk Study Group
Tokyo.
● Collaborating with
○ smalltalkers: YOU
○ formal methods: VDM communities in Europe and Japan
○ scientists: chemists, biologists, economists and so on. 2
ViennaTalk is LIVE and FORMAL
(formal tools with the spirit of Smalltalk)
IDE for VDM-SL (Vienna Development Method - Specification Language)
● Execution engines to simulate the specified system
○ external interpreter (with VDMJ)
○ cloud interpreter (by ViennaTalk)
○ Smalltalk code generators
● VDMPad: Web IDE to scratch idea
● VDMBrowser: Smalltalk-like Browser to explore solutions
○ pretty printer / syntax highlighter / Workspace / Inspector / DoIt-PrintIt
● Lively Walk-Through: UI prototyping tool to communicate with UI designers
● Webly Walk-Through: HTTP server to publish a spec as an Web API
● ViennaDoc: JavaScript library to document a specification with eval and test.
3
Smalltalk is not alone.
4
1. We build systems using many languages.
2. Building dev envs for guest languages is fun.
VDM-SL at a glance
5
Smalltalk vs VDM-SL
● dynamically typed
● object oriented
● programming language
● that values interactions
● statically typed
● functional and procedural
● specification language
● that values computations
They are too different to suffer from subtle conflicts.
6
Smalltalk vs VDM-SL
● rich class library
● context reification
● reflection
● simple messaging
● can start execution
before finish coding
● no library mechanism
● pre/post conditions
● invariants on types and variables
● powerful pattern matching
● can simulate execution before
start coding
They rather complement each other.
7
Why exploratory specification?
Because there's no perfect specification
● The world is always changing.
● Everyone has only limited knowledge.
● We learn from our products in action.
Smalltalk's exploratory programming style
to formal specification!
8
demo
9
ViennaTalk is LIVE and FORMAL
(formal tools with the spirit of Smalltalk)
IDE for VDM-SL (Vienna Development Method - Specification Language)
● Execution engines to simulate the specified system
○ external interpreter (with VDMJ)
○ cloud interpreter (by ViennaTalk)
○ Smalltalk code generators
● VDMPad: Web IDE to scratch idea
● VDMBrowser: Smalltalk-like Browser to explore solutions
○ pretty printer / syntax highlighter / Workspace / Inspector / DoIt-PrintIt
● Lively Walk-Through: UI prototyping tool to communicate with UI designers
● Webly Walk-Through: HTTP server to publish a spec as an Web API
● ViennaDoc: JavaScript library to document a specification with eval and test.
10
Evaluations so far
Good
● VDMPad got many thumbs-ups in classrooms.
(by both tutors and students)
Bad
● Auto-generated methods sometimes exceeds
the limitation of bytecode (e.g. jump range).
● Users are often confused by image save vs file save.
11
a pile of todos
● git support
● spec2 migration
● type checker / type inference
● code completion
● ViennaVM (VM for VDM)
● code generator for ViennaVM
12
Packages in ViennaTalk
● ViennaTalk-Animation-Core
● ViennaTalk-Animation-Transpiler
● ViennaTalk-Browser-Core
● ViennaTalk-Engine-Core
● ViennaTalk-Html-Core
● ViennaTalk-Launcher-Core
● ViennaTalk-LivelyWalkThrough-Core
● ViennaTalk-LivelyWalkThrough-Widgets
● ViennaTalk-Parser-Core
● ViennaTalk-Parser-Formatters
● ViennaTalk-Parser-Highlighters
● ViennaTalk-Parser-UI
● ViennaTalk-Transpiler-Core
13
● ViennaTalk-Transpiler-Debugger
● ViennaTalk-Transpiler-Test
● ViennaTalk-Type-Core
● ViennaTalk-VDMPad-Core
● ViennaTalk-Value-Core
● ViennaTalk-WeblyWalkThrough-Server
● ViennaTalk-WeblyWalkThrough-Translators
● ViennaTalk-Animation-Tests
● ViennaTalk-Engine-Tests
● ViennaTalk-Parser-Tests
● ViennaTalk-Type-Tests
● ViennaTalk-Value-Tests
14
ViennaTalk uses many Smalltalk/Pharo technologies
● Pharo (OpalCompiler, Slot)
● CogVM
● Zinc/NeoJSON
● PetitParser2
● OSSubprocess/ProcessWrapper
● MoldableDebugger
visit http://viennatalk.org/ for details.
supported by Grant-in-Aid for Scientific Research (S) 24220001,
Grant-in-Aid for Scientific Research (C) 26330099, and
JSPS KAKENHI Grant Number JP 18K18033.

Weitere Àhnliche Inhalte

Was ist angesagt?

Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...
Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...
Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...
DEVCON
 

Was ist angesagt? (8)

App inventor for android and similar tools
App inventor for android and similar toolsApp inventor for android and similar tools
App inventor for android and similar tools
 
Ansible in DevOps Torun-Bydgoszcz (Jan 2020) - Ansible Community in Europe an...
Ansible in DevOps Torun-Bydgoszcz (Jan 2020) - Ansible Community in Europe an...Ansible in DevOps Torun-Bydgoszcz (Jan 2020) - Ansible Community in Europe an...
Ansible in DevOps Torun-Bydgoszcz (Jan 2020) - Ansible Community in Europe an...
 
Open Source Technology and Community
Open Source Technology and CommunityOpen Source Technology and Community
Open Source Technology and Community
 
Software Freedom and Open Source Community
Software Freedom and Open Source CommunitySoftware Freedom and Open Source Community
Software Freedom and Open Source Community
 
Exploring design-alternatives-using-tdd
Exploring design-alternatives-using-tddExploring design-alternatives-using-tdd
Exploring design-alternatives-using-tdd
 
Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...
Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...
Android Development Lightning Talk by Lope Emano (Campus DevCon at STI Southw...
 
Professional development
Professional developmentProfessional development
Professional development
 
BSides Rochester 2018: Dave Kukfa: BinDbg: Easy Windows Debugging for Binary ...
BSides Rochester 2018: Dave Kukfa: BinDbg: Easy Windows Debugging for Binary ...BSides Rochester 2018: Dave Kukfa: BinDbg: Easy Windows Debugging for Binary ...
BSides Rochester 2018: Dave Kukfa: BinDbg: Easy Windows Debugging for Binary ...
 

Ähnlich wie ViennaTalk: A Formal Method Environment on Pharo

Java User Groups in Austria (2013)
Java User Groups in Austria (2013)Java User Groups in Austria (2013)
Java User Groups in Austria (2013)
Peter Kofler
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
Rodrigo Gil
 

Ähnlich wie ViennaTalk: A Formal Method Environment on Pharo (20)

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
 
Flutter not yet another mobile cross-platform framework - i ox-kl19
Flutter   not yet another mobile cross-platform framework - i ox-kl19Flutter   not yet another mobile cross-platform framework - i ox-kl19
Flutter not yet another mobile cross-platform framework - i ox-kl19
 
Java User Groups in Austria (2013)
Java User Groups in Austria (2013)Java User Groups in Austria (2013)
Java User Groups in Austria (2013)
 
Glimworm 21-11-2013
Glimworm 21-11-2013Glimworm 21-11-2013
Glimworm 21-11-2013
 
SFScon18 - Armin Le Grand - Collective action come and see how LibreOffice go...
SFScon18 - Armin Le Grand - Collective action come and see how LibreOffice go...SFScon18 - Armin Le Grand - Collective action come and see how LibreOffice go...
SFScon18 - Armin Le Grand - Collective action come and see how LibreOffice go...
 
Open source, What | Why | How
Open source, What | Why | How Open source, What | Why | How
Open source, What | Why | How
 
OpenNebulaConf2019 - Welcome and Project Update - Ignacio M. Llorente, Rubén ...
OpenNebulaConf2019 - Welcome and Project Update - Ignacio M. Llorente, Rubén ...OpenNebulaConf2019 - Welcome and Project Update - Ignacio M. Llorente, Rubén ...
OpenNebulaConf2019 - Welcome and Project Update - Ignacio M. Llorente, Rubén ...
 
DrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low CodeDrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low Code
 
Introduction to Open Source
Introduction to Open SourceIntroduction to Open Source
Introduction to Open Source
 
Linux day 2015 presentation of Open Hardware Source PowerPC Notebook
Linux day 2015 presentation of Open Hardware Source PowerPC NotebookLinux day 2015 presentation of Open Hardware Source PowerPC Notebook
Linux day 2015 presentation of Open Hardware Source PowerPC Notebook
 
BUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open SourceBUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open Source
 
Philosophy of Open Source - SFO17-TR01
Philosophy of Open Source - SFO17-TR01Philosophy of Open Source - SFO17-TR01
Philosophy of Open Source - SFO17-TR01
 
NE Scala 2016 roundup
NE Scala 2016 roundupNE Scala 2016 roundup
NE Scala 2016 roundup
 
Summit 16: NetIDE: Integrating and Orchestrating SDN Controllers
Summit 16: NetIDE: Integrating and Orchestrating SDN ControllersSummit 16: NetIDE: Integrating and Orchestrating SDN Controllers
Summit 16: NetIDE: Integrating and Orchestrating SDN Controllers
 
Blender presentation at SIGGRAPH 2013
Blender presentation at SIGGRAPH 2013Blender presentation at SIGGRAPH 2013
Blender presentation at SIGGRAPH 2013
 
Nuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo World Session: Becoming a Contributor: How to Get StartedNuxeo World Session: Becoming a Contributor: How to Get Started
Nuxeo World Session: Becoming a Contributor: How to Get Started
 
2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meeting2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meeting
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektowe
 
Game Development in VR
Game Development in VR Game Development in VR
Game Development in VR
 

Mehr von ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Mehr von ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

KĂŒrzlich hochgeladen

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
Anusha Are
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

KĂŒrzlich hochgeladen (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
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
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
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
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïž
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïžcall girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïž
call girls in Vaishali (Ghaziabad) 🔝 >àŒ’8448380779 🔝 genuine Escort Service đŸ”âœ”ïžâœ”ïž
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Chinsurah Escorts ☎8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎8617697112 Starting From 5K to 15K High Profile Escorts ...
 
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
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 

ViennaTalk: A Formal Method Environment on Pharo

  • 1. A Formal Method Environment on Pharo Tomohiro Oda Software Research Associates, Inc.
  • 2. Tomo openInEsug ● Smalltalking since 1994 ○ Smalltalk/V, VisualSmalltalk, VisualWorks, Squeak and then Pharo ○ 3D graphics (Jun on VW and later on Pharo), research prototypes ○ a big fan of ESUG since 2016 ● Working for Software Research Associates, Inc. ○ SRA is a software vendor since 1967 ○ one of the early adapters of OO in Japan ○ co-organized Smalltalk Day Japan 2019 with Smalltalk Study Group Tokyo. ● Collaborating with ○ smalltalkers: YOU ○ formal methods: VDM communities in Europe and Japan ○ scientists: chemists, biologists, economists and so on. 2
  • 3. ViennaTalk is LIVE and FORMAL (formal tools with the spirit of Smalltalk) IDE for VDM-SL (Vienna Development Method - Specification Language) ● Execution engines to simulate the specified system ○ external interpreter (with VDMJ) ○ cloud interpreter (by ViennaTalk) ○ Smalltalk code generators ● VDMPad: Web IDE to scratch idea ● VDMBrowser: Smalltalk-like Browser to explore solutions ○ pretty printer / syntax highlighter / Workspace / Inspector / DoIt-PrintIt ● Lively Walk-Through: UI prototyping tool to communicate with UI designers ● Webly Walk-Through: HTTP server to publish a spec as an Web API ● ViennaDoc: JavaScript library to document a specification with eval and test. 3
  • 4. Smalltalk is not alone. 4 1. We build systems using many languages. 2. Building dev envs for guest languages is fun.
  • 5. VDM-SL at a glance 5
  • 6. Smalltalk vs VDM-SL ● dynamically typed ● object oriented ● programming language ● that values interactions ● statically typed ● functional and procedural ● specification language ● that values computations They are too different to suffer from subtle conflicts. 6
  • 7. Smalltalk vs VDM-SL ● rich class library ● context reification ● reflection ● simple messaging ● can start execution before finish coding ● no library mechanism ● pre/post conditions ● invariants on types and variables ● powerful pattern matching ● can simulate execution before start coding They rather complement each other. 7
  • 8. Why exploratory specification? Because there's no perfect specification ● The world is always changing. ● Everyone has only limited knowledge. ● We learn from our products in action. Smalltalk's exploratory programming style to formal specification! 8
  • 10. ViennaTalk is LIVE and FORMAL (formal tools with the spirit of Smalltalk) IDE for VDM-SL (Vienna Development Method - Specification Language) ● Execution engines to simulate the specified system ○ external interpreter (with VDMJ) ○ cloud interpreter (by ViennaTalk) ○ Smalltalk code generators ● VDMPad: Web IDE to scratch idea ● VDMBrowser: Smalltalk-like Browser to explore solutions ○ pretty printer / syntax highlighter / Workspace / Inspector / DoIt-PrintIt ● Lively Walk-Through: UI prototyping tool to communicate with UI designers ● Webly Walk-Through: HTTP server to publish a spec as an Web API ● ViennaDoc: JavaScript library to document a specification with eval and test. 10
  • 11. Evaluations so far Good ● VDMPad got many thumbs-ups in classrooms. (by both tutors and students) Bad ● Auto-generated methods sometimes exceeds the limitation of bytecode (e.g. jump range). ● Users are often confused by image save vs file save. 11
  • 12. a pile of todos ● git support ● spec2 migration ● type checker / type inference ● code completion ● ViennaVM (VM for VDM) ● code generator for ViennaVM 12
  • 13. Packages in ViennaTalk ● ViennaTalk-Animation-Core ● ViennaTalk-Animation-Transpiler ● ViennaTalk-Browser-Core ● ViennaTalk-Engine-Core ● ViennaTalk-Html-Core ● ViennaTalk-Launcher-Core ● ViennaTalk-LivelyWalkThrough-Core ● ViennaTalk-LivelyWalkThrough-Widgets ● ViennaTalk-Parser-Core ● ViennaTalk-Parser-Formatters ● ViennaTalk-Parser-Highlighters ● ViennaTalk-Parser-UI ● ViennaTalk-Transpiler-Core 13 ● ViennaTalk-Transpiler-Debugger ● ViennaTalk-Transpiler-Test ● ViennaTalk-Type-Core ● ViennaTalk-VDMPad-Core ● ViennaTalk-Value-Core ● ViennaTalk-WeblyWalkThrough-Server ● ViennaTalk-WeblyWalkThrough-Translators ● ViennaTalk-Animation-Tests ● ViennaTalk-Engine-Tests ● ViennaTalk-Parser-Tests ● ViennaTalk-Type-Tests ● ViennaTalk-Value-Tests
  • 14. 14 ViennaTalk uses many Smalltalk/Pharo technologies ● Pharo (OpalCompiler, Slot) ● CogVM ● Zinc/NeoJSON ● PetitParser2 ● OSSubprocess/ProcessWrapper ● MoldableDebugger visit http://viennatalk.org/ for details. supported by Grant-in-Aid for Scientific Research (S) 24220001, Grant-in-Aid for Scientific Research (C) 26330099, and JSPS KAKENHI Grant Number JP 18K18033.