SlideShare a Scribd company logo
1 of 16
Download to read offline
© Integrated Computer Solutions, Inc. All Rights Reserved
10 Keys to Ensuring Success
for Your Next Qt Project
Justin Noel
Senior Consulting Engineer, ICS, Inc.
1
© Integrated Computer Solutions, Inc. All Rights Reserved
The Right Tools
• Qt is huge!
• Study the API and docs for hidden treasure:
• QML Styling: QQmlFileSelector
• Web Services: QNetworkAccessManager
• There are other toolkits to help
• Boost, Vtk, FFMpeg, libusb
• Don’t be afraid to look around for solutions
• Complex video rendering?
• Maybe QtMultimedia fits. Maybe not.
2
© Integrated Computer Solutions, Inc. All Rights Reserved
The Right People
• Staff the project up early.
• Don’t hold your “big push” for the end
• Consult with experts (internally or externally)
• For each of your “hard parts”
• Also for each toolkit
• Get training!
• Avoid re-inventing the wheel!
• Get advice early!
3
© Integrated Computer Solutions, Inc. All Rights Reserved
User Experience (UX)
• User Experience is vital to a project’s success
• Start early with a Human Centered Design
• Good UX should optimize and simplify the user’s workflow
• Especially true for embedded devices and mobile
4
© Integrated Computer Solutions, Inc. All Rights Reserved
Iterative UX
• Engineering must be a stake holder in all UX activity
• Make sure UX maps to realities of HW and SW stack
• Rework UX? Or does the stack need changing?
• User Experience process needs to be iterative just like the software process
• UX needs to start the project a month ahead of engineering
• You will catch them. Also you will need UX support.
5
© Integrated Computer Solutions, Inc. All Rights Reserved
Be Agile
• Agile is more than just daily standups and design on demand
• Although both of these help quite a bit
• The next 5 points are all agile related
• Keep standup very short. Three questions:
• What did I do yesterday?
• What will I do today?
• Does anything prevent work from continuing?
6
© Integrated Computer Solutions, Inc. All Rights Reserved
Test Early
• Earlier you can test code the more traceable it is.
• What went wrong? Why?
• Can we stop it from happening again?
• Is our pattern wrong?
• QTest is good unit testing framework
• Has Qt specific things: Test events and signals
• GTest and GMock are much more powerful
• Qt compatible. Can use features of QTest
7
© Integrated Computer Solutions, Inc. All Rights Reserved
Be Testable
• Structure code and design
to be testable
• Build as libraries, DI,
Signals/Slot Interfaces
8
Backend.dll
App.exe
(only main.cpp)
Ui.dll
BackendTests.exe UiTests.exe
C++ Test Fixtures QML Test Fixtures
© Integrated Computer Solutions, Inc. All Rights Reserved
Layered Design
Qt and a Layered Design can help Testability and Demo-ability
9
Signals
Up
Visualization Layer (QML)
Presentation Layer (QObjects)
Data Layer (Local Data Storage)
Communications Layer (TCP)
Calls
Down
© Integrated Computer Solutions, Inc. All Rights Reserved
QML as Visualization Only
• The best QML advice is Keep It Simple!
• QML is the best UI visualization toolkit
• Let it do what it does best: Draw and Animate.
• Let C++ classes take care of the rest
• Business logic, Storage, etc
• Even UI flow in some cases
• See the Qt State Machine talks!
10
© Integrated Computer Solutions, Inc. All Rights Reserved
Always Be Delivering
• Deliver from Day 1
• Spend Day 0 setting up a Continuous Integration Server
• Create installer scripts for what little code you have
• Always be ready to distribute or demo the code.
• Being able to run “off device” is quite helpful for getting stake holder feedback.
11
© Integrated Computer Solutions, Inc. All Rights Reserved
Always Be Reviewing
• Code review is essential
• Is the code correct?
• Does it follow project patterns and style?
• Cross-pollination of developer knowledge
• Code review servers are best
• ICS suggests Gerrit
• Pre-commit checks / review
• Same system that the Qt Project uses
12
© Integrated Computer Solutions, Inc. All Rights Reserved
Don’t Be Too Agile
• Know your schedule.
• It’s easy to put off creating stories until immediately before the sprint starts.
• Create rough estimates for large tasks as soon as they are known
• Don’t need to be super accurate. Iterate over time.
• Points or time
• Having these will provide a rough estimate for completion
• Also as new requirements arise you can predict schedule impact
13
© Integrated Computer Solutions, Inc. All Rights Reserved
Checklist Big Items
• You should know what to expect for “the hard parts”
• External Interfaces
• Fancy Renderings
• Performance Requirements
• Create a checklist and assign research tasks
• Find “Unknown Unknowns”
• These can kill your schedule if they arise late
14
© Integrated Computer Solutions, Inc. All Rights Reserved
Internationalize Early
• Internationalize from Day 1
• Wrap user visible string in tr / translate
• Use QLocale for all numbers and dates
• Create a dummy translation file for testing
• A script can update a .ts with fake translations
• Be sure to use some non-latin1 characters
• Verify all the strings / dates / numbers change
• As you deliver each screen!
15
© Integrated Computer Solutions, Inc. All Rights Reserved
Thank You!
16
Justin Noel
Senior Consulting Engineer, ICS, Inc.

More Related Content

What's hot

Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)
Babul Mirdha
 
LV Dev Efficiency NIDays 2015
LV Dev Efficiency NIDays 2015LV Dev Efficiency NIDays 2015
LV Dev Efficiency NIDays 2015
Jeffrey Habets
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
toteb5
 

What's hot (20)

Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)Test Driven iOS Development (TDD)
Test Driven iOS Development (TDD)
 
"OpenCV for Embedded: Lessons Learned," a Presentation from itseez
"OpenCV for Embedded: Lessons Learned," a Presentation from itseez"OpenCV for Embedded: Lessons Learned," a Presentation from itseez
"OpenCV for Embedded: Lessons Learned," a Presentation from itseez
 
Real-world Vision Systems Design: Challenges and Techniques
Real-world Vision Systems Design: Challenges and TechniquesReal-world Vision Systems Design: Challenges and Techniques
Real-world Vision Systems Design: Challenges and Techniques
 
Automated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesAutomated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and Challenges
 
The New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by PythonThe New York Times: Sustainable Systems, Powered by Python
The New York Times: Sustainable Systems, Powered by Python
 
Cross platform computer vision optimization
Cross platform computer vision optimizationCross platform computer vision optimization
Cross platform computer vision optimization
 
How to Get the Best Deep Learning performance with OpenVINO Toolkit
How to Get the Best Deep Learning performance with OpenVINO ToolkitHow to Get the Best Deep Learning performance with OpenVINO Toolkit
How to Get the Best Deep Learning performance with OpenVINO Toolkit
 
Enabling Cross-platform Deep Learning Applications with Intel OpenVINO™
Enabling Cross-platform Deep Learning Applications with Intel OpenVINO™Enabling Cross-platform Deep Learning Applications with Intel OpenVINO™
Enabling Cross-platform Deep Learning Applications with Intel OpenVINO™
 
Design For Testability
Design For TestabilityDesign For Testability
Design For Testability
 
Design for Testability
Design for Testability Design for Testability
Design for Testability
 
Codeception Testing Framework -- English #phpkansai
Codeception Testing Framework -- English #phpkansaiCodeception Testing Framework -- English #phpkansai
Codeception Testing Framework -- English #phpkansai
 
LV Dev Efficiency NIDays 2015
LV Dev Efficiency NIDays 2015LV Dev Efficiency NIDays 2015
LV Dev Efficiency NIDays 2015
 
Trunk based development for Beginners
Trunk based development for BeginnersTrunk based development for Beginners
Trunk based development for Beginners
 
Dev ops using Jenkins
Dev ops using JenkinsDev ops using Jenkins
Dev ops using Jenkins
 
Meetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCMeetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaC
 
Automation and Technical Debt
Automation and Technical DebtAutomation and Technical Debt
Automation and Technical Debt
 
Unit Testing in Swift
Unit Testing in SwiftUnit Testing in Swift
Unit Testing in Swift
 
Meet Qt
Meet QtMeet Qt
Meet Qt
 
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
[Webinar] The Frog And The Butler: CI Pipelines For Modern DevOps
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
 

Viewers also liked

Viewers also liked (20)

Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
 
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIBest Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part III
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgets
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
 
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part IIBest Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
 
State of the Art OpenGL and Qt
State of the Art OpenGL and QtState of the Art OpenGL and Qt
State of the Art OpenGL and Qt
 
Qt for beginners part 5 ask the experts
Qt for beginners part 5   ask the expertsQt for beginners part 5   ask the experts
Qt for beginners part 5 ask the experts
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
 
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong? QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
 
Qt multi threads
Qt multi threadsQt multi threads
Qt multi threads
 
[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework
 
Incident Command System
Incident Command SystemIncident Command System
Incident Command System
 
Optimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based ApplicationsOptimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based Applications
 
Practical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme ChangePractical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme Change
 
Resume Pavel Krizskiy
Resume Pavel KrizskiyResume Pavel Krizskiy
Resume Pavel Krizskiy
 
Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009Qt in depth - presentation for Symbian expo 2009
Qt in depth - presentation for Symbian expo 2009
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
 

Similar to [Webinar] 10 Keys to Ensuring Success for Your Next Qt Project

AgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpAgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel Harp
Barry Gavril
 
Accelerate Time to Market by Pipelining UX with Development - Part 1
Accelerate Time to Market by Pipelining UX with Development - Part 1Accelerate Time to Market by Pipelining UX with Development - Part 1
Accelerate Time to Market by Pipelining UX with Development - Part 1
ICS
 

Similar to [Webinar] 10 Keys to Ensuring Success for Your Next Qt Project (20)

DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013DevOps / Agile Tools Seminar 2013
DevOps / Agile Tools Seminar 2013
 
7 Secrets to Becoming a Citrix Hero
7 Secrets to Becoming a Citrix Hero7 Secrets to Becoming a Citrix Hero
7 Secrets to Becoming a Citrix Hero
 
Kanban testing
Kanban testingKanban testing
Kanban testing
 
Break Up the Monolith- Testing Microservices by Marcus Merrell
Break Up the Monolith- Testing Microservices by Marcus MerrellBreak Up the Monolith- Testing Microservices by Marcus Merrell
Break Up the Monolith- Testing Microservices by Marcus Merrell
 
Hyd virtual meetupslides11jul
Hyd virtual meetupslides11julHyd virtual meetupslides11jul
Hyd virtual meetupslides11jul
 
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTUtilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
 
Info dev flexibility in agile
Info dev flexibility in agileInfo dev flexibility in agile
Info dev flexibility in agile
 
Is Being Agile a Good Thing?
Is Being Agile a Good Thing?Is Being Agile a Good Thing?
Is Being Agile a Good Thing?
 
User Experience Design for Embedded Devices
User Experience Design for Embedded DevicesUser Experience Design for Embedded Devices
User Experience Design for Embedded Devices
 
WebVisions: ISITE Design and CCLI on Platformication
WebVisions: ISITE Design and CCLI on PlatformicationWebVisions: ISITE Design and CCLI on Platformication
WebVisions: ISITE Design and CCLI on Platformication
 
from 0 to continuous delivery in 30 minutes
from 0 to continuous delivery in 30 minutesfrom 0 to continuous delivery in 30 minutes
from 0 to continuous delivery in 30 minutes
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
10 skills developers should invest in for 2014
10 skills developers should invest in for 201410 skills developers should invest in for 2014
10 skills developers should invest in for 2014
 
DevOps Days Ohio
DevOps Days OhioDevOps Days Ohio
DevOps Days Ohio
 
Requirements the Last Bottleneck
Requirements the Last BottleneckRequirements the Last Bottleneck
Requirements the Last Bottleneck
 
DevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile GamesDevOpsCon 2015 - DevOps in Mobile Games
DevOpsCon 2015 - DevOps in Mobile Games
 
AgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpAgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel Harp
 
Accelerate Time to Market by Pipelining UX with Development - Part 1
Accelerate Time to Market by Pipelining UX with Development - Part 1Accelerate Time to Market by Pipelining UX with Development - Part 1
Accelerate Time to Market by Pipelining UX with Development - Part 1
 
Moving from Monolith to Microservices
Moving from Monolith to MicroservicesMoving from Monolith to Microservices
Moving from Monolith to Microservices
 
PM, Scrum and TFS - Ivan Marković
PM, Scrum and TFS - Ivan MarkovićPM, Scrum and TFS - Ivan Marković
PM, Scrum and TFS - Ivan Marković
 

More from ICS

Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
ICS
 

More from ICS (20)

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdf
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
 
Overcoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarOvercoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues Webinar
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfDesigning and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
 
Quality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfQuality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdf
 
Creating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfCreating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdf
 
Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up
 
Cybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfCybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdf
 
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesMDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
 
How to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionHow to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management Solution
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory Teams
 
IoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureIoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with Azure
 
Basic Cmake for Qt Users
Basic Cmake for Qt UsersBasic Cmake for Qt Users
Basic Cmake for Qt Users
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
 
Qt Installer Framework
Qt Installer FrameworkQt Installer Framework
Qt Installer Framework
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory Teams
 
Overcome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyOvercome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case Study
 
User Experience Design for IoT
User Experience Design for IoTUser Experience Design for IoT
User Experience Design for IoT
 

Recently uploaded

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Recently uploaded (20)

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 

[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project

  • 1. © Integrated Computer Solutions, Inc. All Rights Reserved 10 Keys to Ensuring Success for Your Next Qt Project Justin Noel Senior Consulting Engineer, ICS, Inc. 1
  • 2. © Integrated Computer Solutions, Inc. All Rights Reserved The Right Tools • Qt is huge! • Study the API and docs for hidden treasure: • QML Styling: QQmlFileSelector • Web Services: QNetworkAccessManager • There are other toolkits to help • Boost, Vtk, FFMpeg, libusb • Don’t be afraid to look around for solutions • Complex video rendering? • Maybe QtMultimedia fits. Maybe not. 2
  • 3. © Integrated Computer Solutions, Inc. All Rights Reserved The Right People • Staff the project up early. • Don’t hold your “big push” for the end • Consult with experts (internally or externally) • For each of your “hard parts” • Also for each toolkit • Get training! • Avoid re-inventing the wheel! • Get advice early! 3
  • 4. © Integrated Computer Solutions, Inc. All Rights Reserved User Experience (UX) • User Experience is vital to a project’s success • Start early with a Human Centered Design • Good UX should optimize and simplify the user’s workflow • Especially true for embedded devices and mobile 4
  • 5. © Integrated Computer Solutions, Inc. All Rights Reserved Iterative UX • Engineering must be a stake holder in all UX activity • Make sure UX maps to realities of HW and SW stack • Rework UX? Or does the stack need changing? • User Experience process needs to be iterative just like the software process • UX needs to start the project a month ahead of engineering • You will catch them. Also you will need UX support. 5
  • 6. © Integrated Computer Solutions, Inc. All Rights Reserved Be Agile • Agile is more than just daily standups and design on demand • Although both of these help quite a bit • The next 5 points are all agile related • Keep standup very short. Three questions: • What did I do yesterday? • What will I do today? • Does anything prevent work from continuing? 6
  • 7. © Integrated Computer Solutions, Inc. All Rights Reserved Test Early • Earlier you can test code the more traceable it is. • What went wrong? Why? • Can we stop it from happening again? • Is our pattern wrong? • QTest is good unit testing framework • Has Qt specific things: Test events and signals • GTest and GMock are much more powerful • Qt compatible. Can use features of QTest 7
  • 8. © Integrated Computer Solutions, Inc. All Rights Reserved Be Testable • Structure code and design to be testable • Build as libraries, DI, Signals/Slot Interfaces 8 Backend.dll App.exe (only main.cpp) Ui.dll BackendTests.exe UiTests.exe C++ Test Fixtures QML Test Fixtures
  • 9. © Integrated Computer Solutions, Inc. All Rights Reserved Layered Design Qt and a Layered Design can help Testability and Demo-ability 9 Signals Up Visualization Layer (QML) Presentation Layer (QObjects) Data Layer (Local Data Storage) Communications Layer (TCP) Calls Down
  • 10. © Integrated Computer Solutions, Inc. All Rights Reserved QML as Visualization Only • The best QML advice is Keep It Simple! • QML is the best UI visualization toolkit • Let it do what it does best: Draw and Animate. • Let C++ classes take care of the rest • Business logic, Storage, etc • Even UI flow in some cases • See the Qt State Machine talks! 10
  • 11. © Integrated Computer Solutions, Inc. All Rights Reserved Always Be Delivering • Deliver from Day 1 • Spend Day 0 setting up a Continuous Integration Server • Create installer scripts for what little code you have • Always be ready to distribute or demo the code. • Being able to run “off device” is quite helpful for getting stake holder feedback. 11
  • 12. © Integrated Computer Solutions, Inc. All Rights Reserved Always Be Reviewing • Code review is essential • Is the code correct? • Does it follow project patterns and style? • Cross-pollination of developer knowledge • Code review servers are best • ICS suggests Gerrit • Pre-commit checks / review • Same system that the Qt Project uses 12
  • 13. © Integrated Computer Solutions, Inc. All Rights Reserved Don’t Be Too Agile • Know your schedule. • It’s easy to put off creating stories until immediately before the sprint starts. • Create rough estimates for large tasks as soon as they are known • Don’t need to be super accurate. Iterate over time. • Points or time • Having these will provide a rough estimate for completion • Also as new requirements arise you can predict schedule impact 13
  • 14. © Integrated Computer Solutions, Inc. All Rights Reserved Checklist Big Items • You should know what to expect for “the hard parts” • External Interfaces • Fancy Renderings • Performance Requirements • Create a checklist and assign research tasks • Find “Unknown Unknowns” • These can kill your schedule if they arise late 14
  • 15. © Integrated Computer Solutions, Inc. All Rights Reserved Internationalize Early • Internationalize from Day 1 • Wrap user visible string in tr / translate • Use QLocale for all numbers and dates • Create a dummy translation file for testing • A script can update a .ts with fake translations • Be sure to use some non-latin1 characters • Verify all the strings / dates / numbers change • As you deliver each screen! 15
  • 16. © Integrated Computer Solutions, Inc. All Rights Reserved Thank You! 16 Justin Noel Senior Consulting Engineer, ICS, Inc.