ViennaTalk is an IDE for VDM-SL, a formal specification language, built on Pharo. It includes execution engines to simulate specifications, a web IDE, browser to explore solutions, and tools for UI prototyping and documentation. The presentation evaluates ViennaTalk, outlines future plans, and discusses how it brings Smalltalk's exploratory style to formal specification while leveraging Pharo technologies.
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.
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
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.