SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 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
 

Similaire à 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
 

Plus de 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
 

Plus de 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
 

Dernier

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Dernier (20)

Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

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