SlideShare a Scribd company logo
1 of 26
Download to read offline
05.04.2019 Pavel Krivanek
05.04.2019 Pavel Krivanek
 started in late 2016 by Richard Uttner
 support of an existing application
– per documaps
– document management
 target:
– domain-specific solutions
– database-centric
– fat clients with platform-specific GUI
05.04.2019 Pavel Krivanek
05.04.2019 Pavel Krivanek
05.04.2019 Pavel Krivanek
 layers separation
 minimize redundancy, improve re-usability
 minimize work required for the UI and “glue” layers
 improve testability
 support for the common business application
patterns
 ...
goals
production quality small business application in few days
05.04.2019 Pavel Krivanek
 modelling level:
– parts forming the “skeleton” of the application
– objects exposed by parts (conditions, values, actions)
 UI level:
– generic GUI clients of the framework
– application specific objects (widget, models,…)
 “glue” level:
– arbitrary objects (startup, environment, use cases,...)
participants and roles
05.04.2019 Pavel Krivanek
Clients separation
05.04.2019 Pavel Krivanek
05.04.2019 Pavel Krivanek
 data
 aspects (redirections)
 conditions
– a user can see the reason why something is disabled
(APCondition on: [stringField size > 0] ifNot: #StringFieldIsEmpty)
& self enablementInputEnabled
 actions, triggers
 subpatrs
Parts
05.04.2019 Pavel Krivanek
 predefined parts (for lists, trees…)
 enumerations (combo-boxes, menus...)
 prompts, modal windows
 layouts
 Glorp
 Trachel
aPart
05.04.2019 Pavel Krivanek
 connected via:
– their creators (typically parts)
– framework condition objects
– part actions
– callbacks to parts maintaining separation from GUI
 do not reference parts, initialized with objects needed for
running
 named callback requests (from the creator)
 workflow editor
use cases
05.04.2019 Pavel Krivanek
 typically just GUI clients
 headless clients, forwarding clients…
 particularly useful for tests
 aPart entities with native support of state changes
records
 recording client
clients
05.04.2019 Pavel Krivanek
 open recording client on your part with
SUTAPInteractionPrinter, manual interaction
 use the generated SUnit test code
 unit tests repeat the interactions, check states
 prompts/multiple windows support
automatic unit tests code generation
self afterDoing: [
self setAspect: #stringField value: 'foo'. ]
expectStates: [
APExpectedStates
expectAllInactive: #(#clearNumber #confirmNumber #saveData)
expectAllActive: #(#clearString #confirmString
#disableInput #intField #stringField) ].
05.04.2019 Pavel Krivanek
 developers should prefer the framework
 not always the most straightforward solution
framework usage
05.04.2019 Pavel Krivanek
framework usage
 locate functionality?
 dependencies?
 estimations?
 impacts?
 plan
 tools
 additional effort
05.04.2019 Pavel Krivanek
 from VisualWorks
 part of porting of per documaps application
 close collaboration with Pharo Consortium and
INRIA (RMoD)
port to
05.04.2019 Pavel Krivanek
 Language differences
– namespaces
Store.Model
UI.Model
– qualified literals
#{UI.CheckBoxSpec}
– FFI calls
<C:typedef int64_t (*callb_after_send_t)(unsigned char* handlerID,
int PortServerID, unsigned char* inputBuffer, int cbInput)>
Challenges
05.04.2019 Pavel Krivanek
Challenges
 Semantics differences
– object initialization (new)
● inherit from class that behave differently
– same methods with different behavior (Pragma>>#selector)
– dependencies mechanism
– (#Smalltalk = 'Smalltalk') = false
– 'asdf' readStream upToAll: 'd'; upToEnd
● 'f' in Pharo, 'df' in VW
– and many more…
05.04.2019 Pavel Krivanek
Challenges
 Different code management tools, source formats
– VW: Store, XML
– Pharo: Git
 Completely different UI framework
– UI Painter, different data flow
● VW: Aspect adaptors
● Pharo: Value holders
05.04.2019 Pavel Krivanek
Challenges
 Application strongly Windows oriented
– first-and-half-class citizen in Pharo
 Application still under active development
– bi-directional transformation
 Target platform under active development
– Spec2
05.04.2019 Pavel Krivanek
Why should you care?
 Most of us will port applications to Pharo
...if you are lucky, from some older Pharo version
05.04.2019 Pavel Krivanek
Approach
 export code from VW in XML form (*.pst)
(not stable order, unusable for versioning)
 import into Ring2 model
– modified scanner & parser
 apply well known code transformations
 store VW metadata (for reverse direction)
 save Ring2 model in Tonel format
 manage with Git
 load into Pharo
05.04.2019 Pavel Krivanek
Tests!
 with so many small hidden incompatibilities,
tests are absolutely necessary
 good code coverage, mutation testing, UI tests
 cheap in long term
05.04.2019 Pavel Krivanek
UI layers adoption
 VisualWorks
 Pharo
– “compatible”
ApplicationModel
– UIBuilder replacement
05.04.2019 Pavel Krivanek
Future
 aPart Framework will be open-sourced
 native UI with Spec2 (GTK)
 full-featured reference example including database
handling with Glorp
 extended documentation
 workflow editor...
05.04.2019 Pavel Krivanek
the side-effect of
SCHMIDT, Pharo Consortium and INRIA
collaboration
for you business
better

More Related Content

Similar to apart Framework: Porting from VisualWorks

SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDESAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDEMarkus Van Kempen
 
Int4 and IFTT @ SAP SIT Berlin 2017
Int4 and IFTT @ SAP SIT Berlin 2017Int4 and IFTT @ SAP SIT Berlin 2017
Int4 and IFTT @ SAP SIT Berlin 2017Michal Kowalczewski
 
Improving Software quality for the Modern Web
Improving Software quality for the Modern WebImproving Software quality for the Modern Web
Improving Software quality for the Modern WebEuan Garden
 
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...Dave Bost
 
deliver:Agile 2019 "Testing Microservices: From Development to Production
deliver:Agile 2019 "Testing Microservices: From Development to Productiondeliver:Agile 2019 "Testing Microservices: From Development to Production
deliver:Agile 2019 "Testing Microservices: From Development to ProductionDaniel Bryant
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technologyEldos Kuriakose
 
Improving the software integration with the use of REST API
Improving the software integration with the use of REST APIImproving the software integration with the use of REST API
Improving the software integration with the use of REST APIIlya Beketov
 
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...Anil Sharma
 
Resume (Ronnie B. Pedarios)
Resume (Ronnie B. Pedarios)Resume (Ronnie B. Pedarios)
Resume (Ronnie B. Pedarios)Ronnie Pedarios
 
Building Composite Applications with Silverlight - Prism 2.0
Building Composite Applications with Silverlight - Prism 2.0Building Composite Applications with Silverlight - Prism 2.0
Building Composite Applications with Silverlight - Prism 2.0Christian Thilmany
 
Creating UX Applications that Target both Silverlight and WPF
Creating UX Applications that Target both Silverlight and WPFCreating UX Applications that Target both Silverlight and WPF
Creating UX Applications that Target both Silverlight and WPFChristian Thilmany
 
Synchronized Development for Distributed Teams
Synchronized Development for Distributed TeamsSynchronized Development for Distributed Teams
Synchronized Development for Distributed TeamsTogakangaroo
 

Similar to apart Framework: Porting from VisualWorks (20)

SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDESAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
SAPTechED 2015 UX114 -Building custom SAP Fiori Apps Using SAP Web IDE
 
Gowrisankar_Resume
Gowrisankar_ResumeGowrisankar_Resume
Gowrisankar_Resume
 
Int4 and IFTT @ SAP SIT Berlin 2017
Int4 and IFTT @ SAP SIT Berlin 2017Int4 and IFTT @ SAP SIT Berlin 2017
Int4 and IFTT @ SAP SIT Berlin 2017
 
Manikanta_Chimata
Manikanta_ChimataManikanta_Chimata
Manikanta_Chimata
 
Improving Software quality for the Modern Web
Improving Software quality for the Modern WebImproving Software quality for the Modern Web
Improving Software quality for the Modern Web
 
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
Shine a Light with Prism (the Composite Application Guidance for WPF and Silv...
 
Narmada Kannan_Resume
Narmada Kannan_ResumeNarmada Kannan_Resume
Narmada Kannan_Resume
 
deliver:Agile 2019 "Testing Microservices: From Development to Production
deliver:Agile 2019 "Testing Microservices: From Development to Productiondeliver:Agile 2019 "Testing Microservices: From Development to Production
deliver:Agile 2019 "Testing Microservices: From Development to Production
 
Raman O
Raman ORaman O
Raman O
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technology
 
Improving the software integration with the use of REST API
Improving the software integration with the use of REST APIImproving the software integration with the use of REST API
Improving the software integration with the use of REST API
 
CV_AmalMandal
CV_AmalMandalCV_AmalMandal
CV_AmalMandal
 
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
 
Anand gupta
Anand guptaAnand gupta
Anand gupta
 
Resume (Ronnie B. Pedarios)
Resume (Ronnie B. Pedarios)Resume (Ronnie B. Pedarios)
Resume (Ronnie B. Pedarios)
 
Building Composite Applications with Silverlight - Prism 2.0
Building Composite Applications with Silverlight - Prism 2.0Building Composite Applications with Silverlight - Prism 2.0
Building Composite Applications with Silverlight - Prism 2.0
 
Creating UX Applications that Target both Silverlight and WPF
Creating UX Applications that Target both Silverlight and WPFCreating UX Applications that Target both Silverlight and WPF
Creating UX Applications that Target both Silverlight and WPF
 
Synchronized Development for Distributed Teams
Synchronized Development for Distributed TeamsSynchronized Development for Distributed Teams
Synchronized Development for Distributed Teams
 
Portfolio
PortfolioPortfolio
Portfolio
 
Muhammad_Arshad
Muhammad_ArshadMuhammad_Arshad
Muhammad_Arshad
 

More from Pharo

Yesplan: 10 Years later
Yesplan: 10 Years laterYesplan: 10 Years later
Yesplan: 10 Years laterPharo
 
Object-Centric Debugging: a preview
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a previewPharo
 
The future of testing in Pharo
The future of testing in PharoThe future of testing in Pharo
The future of testing in PharoPharo
 
Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Pharo
 
UI Testing with Spec
 UI Testing with Spec UI Testing with Spec
UI Testing with SpecPharo
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPharo
 
Easy REST with OpenAPI
Easy REST with OpenAPIEasy REST with OpenAPI
Easy REST with OpenAPIPharo
 
Comment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlComment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlPharo
 
XmppTalk
XmppTalkXmppTalk
XmppTalkPharo
 
A living programming environment for blockchain
A living programming environment for blockchainA living programming environment for blockchain
A living programming environment for blockchainPharo
 
Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and PharoPharo
 
Welcome: PharoDays 2017
Welcome: PharoDays 2017Welcome: PharoDays 2017
Welcome: PharoDays 2017Pharo
 
Pharo 6
Pharo 6Pharo 6
Pharo 6Pharo
 
Robotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoRobotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoPharo
 
Pharo 64bits
Pharo 64bitsPharo 64bits
Pharo 64bitsPharo
 
Smack: Behind the Refactorings
Smack: Behind the RefactoringsSmack: Behind the Refactorings
Smack: Behind the RefactoringsPharo
 
Pharo VM Performance
Pharo VM PerformancePharo VM Performance
Pharo VM PerformancePharo
 
Git with Style
Git with StyleGit with Style
Git with StylePharo
 
Pharo JS
Pharo JSPharo JS
Pharo JSPharo
 

More from Pharo (20)

Yesplan: 10 Years later
Yesplan: 10 Years laterYesplan: 10 Years later
Yesplan: 10 Years later
 
Object-Centric Debugging: a preview
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a preview
 
The future of testing in Pharo
The future of testing in PharoThe future of testing in Pharo
The future of testing in Pharo
 
Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI
 
UI Testing with Spec
 UI Testing with Spec UI Testing with Spec
UI Testing with Spec
 
Pharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alpha
 
PHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous Integration
 
Easy REST with OpenAPI
Easy REST with OpenAPIEasy REST with OpenAPI
Easy REST with OpenAPI
 
Comment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowlComment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowl
 
XmppTalk
XmppTalkXmppTalk
XmppTalk
 
A living programming environment for blockchain
A living programming environment for blockchainA living programming environment for blockchain
A living programming environment for blockchain
 
Raspberry and Pharo
Raspberry and PharoRaspberry and Pharo
Raspberry and Pharo
 
Welcome: PharoDays 2017
Welcome: PharoDays 2017Welcome: PharoDays 2017
Welcome: PharoDays 2017
 
Pharo 6
Pharo 6Pharo 6
Pharo 6
 
Robotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with PharoRobotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with Pharo
 
Pharo 64bits
Pharo 64bitsPharo 64bits
Pharo 64bits
 
Smack: Behind the Refactorings
Smack: Behind the RefactoringsSmack: Behind the Refactorings
Smack: Behind the Refactorings
 
Pharo VM Performance
Pharo VM PerformancePharo VM Performance
Pharo VM Performance
 
Git with Style
Git with StyleGit with Style
Git with Style
 
Pharo JS
Pharo JSPharo JS
Pharo JS
 

Recently uploaded

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesExploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesSanjay Willie
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Recently uploaded (20)

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesExploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

apart Framework: Porting from VisualWorks

  • 2. 05.04.2019 Pavel Krivanek  started in late 2016 by Richard Uttner  support of an existing application – per documaps – document management  target: – domain-specific solutions – database-centric – fat clients with platform-specific GUI
  • 5. 05.04.2019 Pavel Krivanek  layers separation  minimize redundancy, improve re-usability  minimize work required for the UI and “glue” layers  improve testability  support for the common business application patterns  ... goals production quality small business application in few days
  • 6. 05.04.2019 Pavel Krivanek  modelling level: – parts forming the “skeleton” of the application – objects exposed by parts (conditions, values, actions)  UI level: – generic GUI clients of the framework – application specific objects (widget, models,…)  “glue” level: – arbitrary objects (startup, environment, use cases,...) participants and roles
  • 9. 05.04.2019 Pavel Krivanek  data  aspects (redirections)  conditions – a user can see the reason why something is disabled (APCondition on: [stringField size > 0] ifNot: #StringFieldIsEmpty) & self enablementInputEnabled  actions, triggers  subpatrs Parts
  • 10. 05.04.2019 Pavel Krivanek  predefined parts (for lists, trees…)  enumerations (combo-boxes, menus...)  prompts, modal windows  layouts  Glorp  Trachel aPart
  • 11. 05.04.2019 Pavel Krivanek  connected via: – their creators (typically parts) – framework condition objects – part actions – callbacks to parts maintaining separation from GUI  do not reference parts, initialized with objects needed for running  named callback requests (from the creator)  workflow editor use cases
  • 12. 05.04.2019 Pavel Krivanek  typically just GUI clients  headless clients, forwarding clients…  particularly useful for tests  aPart entities with native support of state changes records  recording client clients
  • 13. 05.04.2019 Pavel Krivanek  open recording client on your part with SUTAPInteractionPrinter, manual interaction  use the generated SUnit test code  unit tests repeat the interactions, check states  prompts/multiple windows support automatic unit tests code generation self afterDoing: [ self setAspect: #stringField value: 'foo'. ] expectStates: [ APExpectedStates expectAllInactive: #(#clearNumber #confirmNumber #saveData) expectAllActive: #(#clearString #confirmString #disableInput #intField #stringField) ].
  • 14. 05.04.2019 Pavel Krivanek  developers should prefer the framework  not always the most straightforward solution framework usage
  • 15. 05.04.2019 Pavel Krivanek framework usage  locate functionality?  dependencies?  estimations?  impacts?  plan  tools  additional effort
  • 16. 05.04.2019 Pavel Krivanek  from VisualWorks  part of porting of per documaps application  close collaboration with Pharo Consortium and INRIA (RMoD) port to
  • 17. 05.04.2019 Pavel Krivanek  Language differences – namespaces Store.Model UI.Model – qualified literals #{UI.CheckBoxSpec} – FFI calls <C:typedef int64_t (*callb_after_send_t)(unsigned char* handlerID, int PortServerID, unsigned char* inputBuffer, int cbInput)> Challenges
  • 18. 05.04.2019 Pavel Krivanek Challenges  Semantics differences – object initialization (new) ● inherit from class that behave differently – same methods with different behavior (Pragma>>#selector) – dependencies mechanism – (#Smalltalk = 'Smalltalk') = false – 'asdf' readStream upToAll: 'd'; upToEnd ● 'f' in Pharo, 'df' in VW – and many more…
  • 19. 05.04.2019 Pavel Krivanek Challenges  Different code management tools, source formats – VW: Store, XML – Pharo: Git  Completely different UI framework – UI Painter, different data flow ● VW: Aspect adaptors ● Pharo: Value holders
  • 20. 05.04.2019 Pavel Krivanek Challenges  Application strongly Windows oriented – first-and-half-class citizen in Pharo  Application still under active development – bi-directional transformation  Target platform under active development – Spec2
  • 21. 05.04.2019 Pavel Krivanek Why should you care?  Most of us will port applications to Pharo ...if you are lucky, from some older Pharo version
  • 22. 05.04.2019 Pavel Krivanek Approach  export code from VW in XML form (*.pst) (not stable order, unusable for versioning)  import into Ring2 model – modified scanner & parser  apply well known code transformations  store VW metadata (for reverse direction)  save Ring2 model in Tonel format  manage with Git  load into Pharo
  • 23. 05.04.2019 Pavel Krivanek Tests!  with so many small hidden incompatibilities, tests are absolutely necessary  good code coverage, mutation testing, UI tests  cheap in long term
  • 24. 05.04.2019 Pavel Krivanek UI layers adoption  VisualWorks  Pharo – “compatible” ApplicationModel – UIBuilder replacement
  • 25. 05.04.2019 Pavel Krivanek Future  aPart Framework will be open-sourced  native UI with Spec2 (GTK)  full-featured reference example including database handling with Glorp  extended documentation  workflow editor...
  • 26. 05.04.2019 Pavel Krivanek the side-effect of SCHMIDT, Pharo Consortium and INRIA collaboration for you business better