SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie 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
 
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
 
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
 
Synchronized Development for Distributed Teams
Synchronized Development for Distributed TeamsSynchronized Development for Distributed Teams
Synchronized Development for Distributed TeamsTogakangaroo
 

Ähnlich wie 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)
 
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
 
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
 
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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Kürzlich hochgeladen (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

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