Modern Development Workflows in LabVIEW
Greg Richardson
Distinguished Engineer and� LabVIEW Product Architect�NI Product R&D
Margaret Hamilton�First programmer hired�for Apollo module�flight software
"I began to use the term 'software engineering' to distinguish it from hardware and other kinds of engineering, yet treat each type of engineering as part of the overall systems engineering process."
#ourgiantsarefemale
>32 years in LabVIEW R&D
App�Builder
Run Time Engine
DLL�Builder
lvlib
SuperSecretPrivateSpecialStuff=true
WindowsLongPaths=true (LV2021SP1)
DDE
Elements of modern development workflows
Post-commit validation
per change/
batched/scheduled
Local dev�per worktree
Dev machine setup
Agent setup
Get source
Modify
Build
Get dependencies
Validate
Test
Get dependencies
Export creation
Build
Get source
Convention validation
Pre-commit validation
per change
Get dependencies
Code review
Build
Get source
Convention validation
Test
Machine Setup
Dev machine setup
Agent setup
Source Control
Get source
Code review
Backup
History
Release mgt
Code review
Source Control
Mainline branching model
Get source
main
release2
patch
release1
Code Review
Multiple approaches
Tooling for diff reports
Code review
Dependency Management
Files not authored by your team & files built from your team’s source
Get dependencies
Export creation
Dependency Locations
Avoid cross contamination of dependencies between builds
Don’t assume all machines have the same absolute paths
Get dependencies
Build
Build Output Locations
Instead of DNatt’s c:\PPLs, build and install to custom <userlib>
(Starting in LV 2023 Q3)
Get dependencies
Build
Build Output Locations (alt)
“TargetClass”.LibraryPaths
(Starting in LV 2023 Q3)
Get dependencies
Build
Static Analysis
What to enforce?
Tooling
Convention validation
Testing
Avoid building your own framework
Test
Automation mechanism
LabVIEW CLI
G CLI
Use a CLI
Build
Convention validation
Test
Questions or Comments?