abbreviated filenames, 44
Account buttons, 66
Acquire global variables, 105, 109
acquisition section (requirements specifications), 26
algorithms, labels, 305
aligning
dialog VI panels, 51
objects, 50
Although Generate Report VI, 171
AML (Assistance Markup Language), 312
analysis section (requirements specifications), 26
Analyze Data events, 267
applications
Capacitor Test & Sort, 79
data types, 165–169
dialogs, 51–52
enums, 306
Dynamic Framework, 272–278
examples, 287–297
Modular Multiple-Loop Framework, 283–286
Multiple-Loop Framework, 278–282
Left to Right VI, 121–122
online documentation, 314
optical filter test, 127–128
performance, 17
Right to Left VI, 120
Spectralyzer, 82–83
applying
controls, 52
dialogs, 51–52
fonts, 62
arrays
descriptions, 301
simple, 181–184
assigning
error clusters, 144
references, 144
terminals, 145–154
Assistance Markup Language (AML), 312
automatic error handling, 230
avoiding overlapping objects, 57–58
background icons, 135
backups, LabVIEW.ini file, 33
Backwards Wire failures, 323–325
banners, 148
best practice requirement specifications, 24–25
binary notation, 176
black borders
applying, 132
selecting, 135
Blank state, 256
block diagrams, 87
Centrifuge DAQ VIs, 122–123
documentation, 304–308
Excessively Nested VIs, 117
Haphazard VIs, 119–120
LabVIEW environment options, 32
layout, 88–93
maintainability, 11
readability, 9–11
Screw Inspection VIs, 124–126
wiring, 95–101
Bloomy Controls, 147
Boolean data types, 173–174
borders, applying, 132
Bottom Edges alignment tools, 95
Browse buttons, 180
bugs. See error handling
Bundle By Name function, 183, 308
business objectives, 22
buttons
Account, 66
Help, 301–304
Call By Reference Nodes, 274
Call Library Function Nodes, labeling, 305
Capacitor Test & Sort applications, 79
capitalization, applying consistent, 62
centering dialog VI panels, 51
Centrifuge DAQ System VIs, 199–200
Centrifuge DAQ VIs, 122–123, 292
centrifuge data acquisition (DAQ), 81
CHM (Microsoft Compressed HTML Help), 312
Classic State Machine design pattern, 257–258
Clear Mode, 228
clearing errors, 228
Cluster Wired tests, 323
clusters
errors, 144
modularization, 97–101
multiple distinct items, grouping, 308
shells, 301
simple arrays and, 181–184
CM (configuration management), 21
CM (content management), 46. See also source control
Code and Fix software lifecycle development model, 23
code
reuse, 34–39
peer reviews, 334–336
self reviews, 320–329
source. See source code
Coercion Dots test, 322
colors
icons, selecting, 135
reusing, 136
Comment Usage errors, 328
comments, applying, 305
commercial subVIs, 48
complex application frameworks, 272
Dynamic Framework, 272–278
Modular Multiple-Loop Framework, 283–286
Multiple-Loop Framework, 278–282
Complexity, 16. See also simplicity
compound design patterns, 267–272
Compute Statistics VI, 171
conditions, race, 244
configuration management (CM), 21
Configuration tab, 336
configuring
Data Range property, 72
data structure properties, 169
LabVIEW environment, 32
code reuse, 34–39
LabVIEW Options dialog box, 32–33
resolution, 88
tabbing order, 73
connector panes, 140–148, 150–154
constants, labels, 305
Cont Acq&Graph Voltage-To File(Binary) VI, 230–231
content management. See CM (content management)
continuous acquire to file, 230–231
Continuous Loop design patterns, 246–250
Control Alignment tests, 323
Control Editor, 169
controls
data types, 158–172
descriptions, 301
grouping, 49
Interval, 59
labels, 66–67
managing, 59
Mode, 59
Pause, 59
scope, 71–73
Controls palettes, 36
converting LLBs to project libraries, 44
copying graphics, 138–139
Curve local variables, 108
custom palettes, 33
customizing run-time menus. See also configuring
DAQmx Task, 146
Data Communication palette, 223
creating, 170–172
nested, 187–192
special, 186
data dependency, 106
Data Range property, configuring, 72
data structures, 157
design methodology, 158, 160–172
examples of, 193–197
properties, 169
data types, 157
simple, 172
Boolean, 173–174
numeric, 175–176
path, 179–180
picture, 179–180
special numeric, 177–179
strings, 179–180
decimal notation, 176
default appearance, 59
default filenames, 44–45
default values, labels, 301
Definition 1.1 (development time), 18
deleting template instructions, 62, 301
Dequeue Element function, 262
descriptions, VIs, 311
design, 29
Classic State Machine, 257–258
compound, 267–272
Continuous Loop, 246–250
Event Machine, 265–267
Event-Driven State Machine, 262–264
Event-Handling Loop, 250–254
examples, 287–297
Functional Global, 244–245
Immediate SubVI, 241–244
Queued State Machine, 260–262
state machines, 254–256
proof of concept, 30–31
resources for, 30
revision of specifications, 31
templates. See templates
desktop applications, applying dialogs, 51–52
desktop GUI VIs, 48
development style. See style
development time. See time
diagrams. See block diagrams
Dialog & User Interface palettes, 51
Dialog Controls tests, 323
Dialog Using Events templates, 37
Dialog Window Appearance, 53
dialogs
applying, 51–52
controls, 52
Digital Inputs, 146
disk organization, 40
file repositories, 40
folder hierarchies, 40–42
Distribute Objects menu, 50
documentation
block diagrams, 304–308
front panels, 301–304
icons, 311
online, 311–314
tests, 321
double precision (DBL) representation, 175
dynamic data constructs, 187
dynamic event terminals, 266
Dynamic Framework, 272–278
dynamic loaders, 272
ease of use, 6–7
Elapsed Time VI, 287
embedding text, 301
enlarging objects, 52–57
Enqueue Element function, 262
entering control descriptions, 301
enums
applying, 306
saving, 307
Equation 1.1 (modularity index), 13
Error case, 218
Error Cluster Wired failures, 323–326
errors
error handling, 204
automatic, 230
clearing errors, 228
error codes, 214–217
examples, 230–238
merging errors, 226–227
prioritizing errors, 222–225
reporting errors, 211–214
reliability, 12–15
structure wiring, 226
subVI, 217–222
trapping errors, 205–209
terminals, 109, 218–222, 323–326
evaluation tools for style, 18
Event Machine design patterns, 265–267
Event-Driven State Machine design patterns, 262–264
Event-Handling Loop design patterns, 250–254
events
efficiency, 8
registration, 266
source terminals, 266
Timeout, 251
users, 266
Value Change, 250
Excessively Nested VIs, 117
Execution category, 230
Exit Boolean
controls, 109
text, 63
Exit Value Change events, 105–109
Express Input subpalettes, 223
Fetch Waveform VI, 167
File Dialog functions, 326
File I/O palette, 36
File Path indicators, 120
files
naming conventions, 44–45
repositories, 40
Filled Rectangle tool, 135–136
Flexible Sequencers, 112
folder hierarchies, 40–42
fonts
applying, 62
icons, 133
reusing, 136
selecting, 63–65
foreground icons, 135
formatting. See also design
block diagrams, 88–93
data constructs, 170–172
front panels, 48
aligning objects, 50
applying controls, 52
applying dialogs, 51–52
avoiding overlapping objects, 57–58
centering dialog VI panels, 51
enlarging objects, 52–57
grouping controls, 49
importing images, 59
maximizing top-level VIs, 51
navigating GUIs, 71–73
sizing objects, 50–51
text, 61–71
icons, 132
frameworks
Dynamic Framework, 272–278
examples, 287–297
Modular Multiple-Loop Framework, 283–286
Multiple-Loop Framework, 278–282
front panels
documentation, 301–304
GUI navigation, 71–73
LabVIEW environment options, 32
layout, 48
aligning objects, 50
applying controls, 52
applying dialogs, 51–52
avoiding overlapping objects, 57–58
centering dialog VI panels, 51
enlarging objects, 52–57
grouping controls, 49
importing images, 59
maximizing top-level VIs, 51
sizing objects, 50–51
maintainability, 11
readability, 9–11
tests, 321
text, 61–69
Function parameters, 177
Functional Global design pattern, 244–245
functions
Bundle By Name, 308–310
Dequeue Element, 262
Enqueue Element, 262
error handling, 204
automatic, 230
clearing errors, 228
examples, 230–238
merging errors, 226–227
prioritizing errors, 222–225
reporting errors, 211–214
structure wiring, 226
trapping errors, 205–209
Two Button Dialog, 52
Unbundle By Name, 308–310
General Error Handler VI, 210–211
Get Raw I16 Waveform VI, 166
global design patterns, 244–245
glyphs
reusing, 136
selecting, 133
graphical user interfaces. See GUIs
graphics, copying, 138–139
grouping controls, 49
GUIs (graphical user interfaces), 6, 47
ease of use, 6–7
front panels, navigating, 71–73
guidelines. See rules
Hamburger, Bob, 147
Haphazard VIs, 119–120
Help menus, 301–304
hexadecimal notation, 176
hiding
labels, 307
toolbars, 58
HTML (HyperText Markup Language), 312
I/O (input/output), 146
Datalog palettes, 212
resource efficiency, 7–9
creating, 311
examples, 145–154
international, 139–140
shortcuts, 135–139
ID Query controls, 148
Idle state, 256–257
images, importing, 59
Immediate SubVI design patterns, 241–244
importing images, 59
industrial applications, 51–52
Initialize state, 256
input/output. See I/O
instrument drivers
code reuse, 34
file-naming conventions, 45
instrument prefixes, 148
interfaces
connector panes, 140–145
GUIs. See GUIs
Parafoil Guidance Interfaces, 83–84
international icons, 139–140
Interval controls, 59
intuitive control labels, applying, 301
labels
algorithms, 305
comments, 305
constants, 305
controls, 66–67
default values, 301
hiding, 307
loops, 305
subdiagrams, 305
terminals, 304
wiring, 305
LabVIEW environments
configuring, 32
code reuse, 34–39
LabVIEW Options dialog box, 32–33
GUI Essential Techniques, 48
.ini file backups, 33
Options dialog box, 32–33
project requirements specifications, 25–28
Tools Network website, 30
LAVA website, 30
layouts
block diagrams, 88–93
front panels, 48
aligning objects, 50
applying controls, 52
applying dialogs, 51–52
avoiding overlapping objects, 57–58
centering dialog VI panels, 51
enlarging objects, 52–57
grouping controls, 49
importing images, 59
maximizing top-level VIs, 51
sizing objects, 50–51
Left Audio Output indicator, 53
Left to Right VI, 121–122
libraries
code reuse, 35–37
LLBs
converting to project libraries, 44
project libraries versus, 44
project libraries, 43–44
Load Script case, 236
Log Data case, 120
Log Interval labels, 63
looped Case structures, 111–114
loops
Continuous Loop design patterns, 246–250
efficiency, 7–8
Event-Handling Loop design patterns, 250–254
labels, 305
Modular Multiple-Loop Framework, 283–286
Multiple-Loop Framework, 278–282
parallel, 269–272
tight, 279
Main tab, 336
maintainability, 11
managing controls, 59
manual checklists, 330–334
Manual Resolution parameters, 177
maximizing top-level VIs, 51
memory
data types, 160–164
efficiency, 7–9
Memory Usage VI properties page, 18
menus, Help, 301–304
Merge Errors VI, 232
merging errors, 226–227
message output terminals, 212
ease of use, 6
efficiency, 8
error handling, 13
maintainability, 11
modularity index, 13
performance, 17
readability, 9
simplicity, 16
Microsoft Assistance Markup Language (AML), 312
Microsoft Compressed HTML Help (CHM), 312
minimizing text, 62
Mode controls, 59
modifying colors, 69
Modular Multiple-Loop Framework, 283–286
modularization
indexes, 13
subVIs, 90
moving source files, 46
Multiple-Loop Framework, 278–282
multivalued data types, applying, 308
naming conventions. See file naming conventions
navigation, GUI, 71–74
nested data constructs, 187–192
nested structures, efficiency, 9
Nested VIs, 4
ease of use, 6
efficiency, 7–9
error handling, 14
maintainability, 12
modularity indexes, 13
performance, 17
readability, 10
simplicity, 16
New UUT Boolean controls, 336
New UUT command buttons, 337
New UUT events, 336
NI Developer Zone website, 30
NI Example Finder, 30
NI Instrument Driver Guidelines, 148–151
No Error case, 218
nodes, simplicity, 15–17
notification output terminals, 109
numeric data types, 175–176
Numeric palettes, 223
objects
aligning, 50
default appearance, 59
enlarging, 52–57
overlapping, 57–58
sizing, 50–51
online documentation, 311–314
OpenG
variants, 194–197
website, 30
optical filter test application, 127–128
optimizing data flow, 111, 114
optional priority, 144
output. See I/O
Output subpalettes, 223
overlapping objects, 57–59
Overview tab, 56
palettes
code reuse, 35–37
custom palettes, 33
Dialog & User Interface, 51
System, 53
panels
default appearance, 59
front. See front panels
resizing, 59
Parafoil Guidance Interfaces, 83–84
parallel loops, 269–272
Parse and Transmit Dialog VIs, 78
Parse and Transmit VIs, 77
path data types, 179–180
patterns
Classic State Machines, 257–258
compound, 267–272
Continuous Loop, 246–250
Event Machine, 265–267
Event-Driven State Machines, 262–264
Event-Handling Loop, 250–254
examples, 287–297
Functional Global, 244–245
Immediate SubVI, 241–244
Queued State Machines, 260–262
state machines, 254–256
terminals, 140
VIs, 141
Pause controls, 59
PDF (Portable Document Format), 311
peer reviews, 334–336
performance, 17–18
picture data types, 179–180
Pixel Tolerance parameter, 323
plug-ins, 272
Poll Instrument Response VI, 288
polling, 108
polymorphism, 175
Portable Document Format (PDF), 312
Power Monitor System VI, 54–57
prefixes, instruments, 148
preparation
design documentation, 29
proof of concept, 30–31
resources for, 30
revision of specifications, 31
disk organization, 40
file repository, 40
folder hierarchy, 40–42
file-naming conventions, 39–45
project organization, 39–44
requirements specifications, 22–24
best practices, 24–25
projects, 25–28
source controls, 39–46
preparations, 32
code reuse, 34–39
LabVIEW Options dialog box, 32–33
presentation section (requirements specifications), 28
priority
errors, 222–225
inputs/outputs, 144
requirements specifications, 28
processor resources, efficiency, 7–9
Profile Performance and Memory window, 7, 17–18
Project Explorer, 42
projects
journals, 24–25
libraries, 43–44
organization, 39–43
requirements specifications, 25–28
proof of concept, 30–31
properties
data structures, 169
Visible, 222
Queued State Machine design pattern, 113, 260–262
Quit Value Change event, 114, 336
race conditions, 244
radix, visible, 176
rapid code development, 22
Read Waveform VIs, 167–168
readability, 9–11
recommended priority, 145
record type input terminals, 212
references, assigning, 144
reliability, 12–15
reporting errors, 211, 213–214
required priority, 144
requirements specifications, 22–24
best practices, 24–25
projects, 25–28
revision of, 31
Theorem 2.1, 22
Reset controls, 148
Reset Energy Boolean text, 63
Resize Objects tool, 50
resizing panels, 59
resolution, configuring, 88
resources for design documentation, 30
reuse. See code reuse
revision
numbers, 45
of requirements specifications, 31
Revision Number labels, 63
Right Audio Output indicators, 53
Right Edges tool, 50
Right to Left VIs, 120
Ritter, David, 48
rules
applications, providing online documentation, 314
applying Timed Loops, 246
arrays
applying for multivalued data items, 181
entering descriptions, 182, 301
storing large or dynamic length data sets, 181–182
block diagrams
applying high object density, 89
configuring resolution, 88
creating multilayer hierarchy of subVIs, 90
leaving backgrounds white, 89
limiting, 89
Boolean data types
applying if two states are logical opposites, 173
assigning names, 173
configuring parameters, 173
formatting controls, 174
labeling, 173
Call By Reference Node, 274
clusters
applying alignment tools, 182
avoiding for interactive controls, 184
bundling/unbundling by name, 183
entering descriptions, 301
grouping multiple distinct items, 308
saving, 183
CM (content management) Rules, 46
code reviews
applying enumerated type definitions, 332
applying symmetry and spacing, 330
automating inspections, 321
avoiding clusters, 335
avoiding polling GUI objects, 332, 335
avoiding Sequence structures, 332
avoiding variables, 332
configuring controls, 330
configuring Tabbing Order, 335
consistent fonts and capitalization, 330
customizing test criteria, 321
designating neutral parties to take notes, 335
enlarging objects, 330
General Error Handler VI over Simple Error Handler VIs, 332
grouping controls, 330
implementing error log files, 335
including states for Initialize, Idle, Shutdown and Blank, 332
labeling wires, 332
limiting controls, 330
limiting information on GUIs, 330
minimizing wire bends, eliminating kinks and loops, 332
modifying source code, 335
prioritizing rules, 323
selecting memory efficient data types, 335
style conventions, 320
suppressing dialog error reporting, 335
tunneling wires, 332
colors, 69
creating themes, 70
following universal conventions, 70
leaving panels/objects subVI gray, 70
modifying, 69
simplifying color schemes, 71
comments
applying, 305
leaving notes for development teams, 306
components
maintaining, 274
passing data between shift registers, 275
connector panes
applying 4×2×2×4 patterns, 142
assigning controls, 142
assigning error clusters, 144
assigning references, 144
avoiding crossing wire stubs, 142
selecting left and right vertical edge connector terminals, 144
selecting patterns with extra terminals, 140
selecting top and bottom horizontal edge connector terminals, 144
selecting unified patterns for VIs, 141
specifying priority for inputs/outputs, 144
specifying terminal assignments, 144
controls, 52
applying, enum, ring, and path controls, 180
applying ring or enumerated, 72
arranging, 59
avoiding strings, 179
combining labels, 68
configuring default values, 169
configuring tabbing order, 73
Data Range property, 72
entering descriptions, 169, 301
grouping, 49
including Help buttons/menus, 73
labels, 66–67
limiting, 71
passing references, 283
placing within Value Change event cases, 251
providing default vales, 68
restricting ranges, 71
saving custom, 169
data constructs, creating arrays and clusters, 170, 172
data flow
always flow left to right, 102
applying Flat Sequence structures, 105
applying global variables for simple data sharing, 105
applying looped Case structures, 111–114
applying shift registers, 111
avoiding array and cluster coercions, 103
avoiding nesting beyond 3 layers, 104
avoiding sequence structures, 103–104
avoiding variables, 108
creating controls and constants, 103
disabling dots at wire junctions, 103
grouping shift registers, 111
initializing control values, 105
labeling wires exiting left shift register terminals, 111
ordering operations, 105
propagating error clusters, 102
data structures
selecting consistent data types, 165–169
selecting controls, 158
selecting memory efficient data types, 160–161, 164
data types, applying multivalued, 308
dialog VI panels
centering, 51
sizing, 51
enums, applying, 306
error handling
applying Error Case Structure, 218–220
applying Error Handling templates, 222
applying negative codes of I/O device errors, 217
applying unwired defaults over constants, 220–222
avoiding subVIs with built-in error reporting, 213
disabling indexing, 208–209
General Error Handler VI, 210–211
implementing error logs, 211–213
maintaining user-defined error codes, 217
propagating error clusters, 205
suppressing dialog error reporting, 213–214
trapping from all iterations of loops, 206
trapping from nodes, 209
events
avoiding continuous timeouts, 251
resizing data nodes, 251
Value Change, 250
files
naming conventions, 44–45
repositories, 40
folder hierarchies, 40–42
fonts
applying 13 point black, 68
applying consistent, 62
functions, Bundle and UnBundle By Name, 308–310
GUIs
limiting information, 54
navigation, 71–73
Help menus, 301–304
icons
applying black borders, 132
avoiding default icons, 132
avoiding text and graphics, 139
budgeting time for intended VI reuse, 135
combining glyphs with colors and text, 132
copying graphics, 138–139
creating templates for, 136
formatting fonts, 133
reusing glyphs, 136
saving VIs, 132
selecting colors, 135
selecting glyphs, 133
selecting unified styles, 134
images, importing, 59
industrial GUI VIs
large text size for command buttons, 69
maximizing text colors, 69
labels
algorithms, 305
constants, 305
hiding, 307
loops, 305
providing default values, 301
subdiagrams, 305
viewing terminal, 304
wiring, 305
LabVIEW.ini backups, 33
layers, avoiding nesting beyond 3, 241
loops
applying multiple criteria, 246
applying shift registers, 246
avoiding subVI selection for continuous, 283
creating parallel, 278
grouping shift registers, 246
including, 279
including delays, 246
labeling, 270
maintaining Event-Handling at top-level, 284
messaging between, 269
minimizing space, 270
prioritizing, 269
sizing, 270
modularize high-level subVIs into lower level subVIs, 90
nested data structures
avoiding manipulating, 188
limiting size of arrays, 188–192
organizing complex data, 188
numeric data types
applying automatic formatting, 176
applying I32 representations, 175
formatting, 176
objects
aligning, 50
avoiding overlapping, 57
avoiding polling GUI, 250
default appearance, 59
enlarging and centering, 52
sizing, 50
panels
resizing, 59
text, 61–69
projects
journals, 24–25
libraries, 43–44
proof of concept, style and, 31
reusable libraries, 35–37
reusable subVIs, 35
reusable templates, 38–39
run-time menus, customizing, 73
sequences, avoiding structures, 241
source file movement, 46
special numeric data types
applying enums and rings, 178
saving enums and rings, 179
state machines
applying, 255
applying enumerated type definitions, 255
avoiding timeout, 262
deriving application primary states, 255
dividing primary states, 255
including Initialize, Idle, Shutdown, and Blank, 256
minimizing external code, 256
subVIs
avoiding trivial containing few nodes, 91
creating meaningful icons, 93
creating to save space, 91
modularizing top-level diagrams, 241
templates, deleting instructions, 62, 301
terminals
assigning, 275
selecting connectors, 274
text
applying default 13-point plain application fonts, 305–306
embedding, 301
minimizing, 62
minimizing front panels, 301
toolbars, hiding, 58
updates, maintaining high speed display at top-level, 284
wiring
avoiding local and global variables, 96
avoiding structures, 96
limiting length, 96
locating unwired front panel terminals, 97
maintaining spacing of parallel wires, 94
minimizing bends, 94
modularizing into clusters, 97, 100
obstructing view of, 96
saving clusters as type definitions, 101
tunneling, 96
written requirements specifications, 25
Run Test Boolean controls, 105
Run Test events, 109, 113, 267
run-time menus, customizing, 73
saving enums, 307
schemes, colors, 71
scope
controls, 71–73
creep, 22
Theorem 2.1, 23
Screw Inspection VIs, 124, 126, 234–235
Select Tests dialog, 322
selecting
fonts, 63–65
icons, 133
subVIs, 75–76
Selection utility, subVIs from, 115–117
self reviews, 320
manual checklists, 330–334
VI Analyzer Toolkit, 320–323, 329
Sensor Scaling clusters, 105
Sensor Scaling write and read local variables, 108
Sensor Selection listbox controls, 199
Sequence structures, 104–109
Serial Port Settings cluster, 148–149
Serial Ports, 148
shift registers, efficiency, 8
simple arrays, 181–184
simple controls, 158
simple data structures, 158
simple data types, 172
Boolean, 173–174
numeric, 175–176
path, 179–180
picture, 179–180
special numeric, 177–179
strings, 179–180
Simple Error Handler VIs, 210–211
simplicity, 15–17
single-precision (SGL), 175
sizing objects, 50–51
SMTP Email palette, 213
source code
maintainability, 11
peer reviews, 334–336
readability, 9–11
self reviews, 320
manual checklists, 330–334
VI Analyzer Toolkit, 320–323, 329
source control, 39–46. See also CM (content management)
source files, moving, 46
Spaghetti VIs, 5
ease of use, 6
efficiency, 7
error handling, 14
maintainability, 12
modularity index, 13
performance, 17
readability, 11
scope creep, 23
simplicity, 16
special data constructs, 186
special numeric data types, 177–179
specifications. See requirements specifications
specifying terminal assignments, 144
Spectralyzer, 82–83
Standard State Machine design patterns, 37
standard subVIs, 48
state machines, 254–256
Classic State Machine design patterns, 257–258
Event Machine design patterns, 265–267
Event-Driven State Machine design patterns, 262–264
Queued State Machine design patterns, 260–262
Statistics clusters, 324
Stop global variables, 105
strict type definitions, 101
string data types, 179–180
structures
data. See data structures
Sequence, 104–109
wiring, 226
style
ease of use, 6–7
efficiency, 7–9
evaluation tools, 18
icons, 132–135
importance of, 2–6
maintainability, 11
performance, 17–18
proof of concept and, 31
readability, 9–11
reliability, 12–15
simplicity, 15–17
Theorem 1.0, 2
Theorem 1.1, 19
time versus, 18–19
subdiagrams, labels, 305
subVIs
code reuse, 35
efficiency, 9
error handling, 37, 217, 220–222
from Selection utility, 115–117
icons, 311
modularization, 90
performance, 17
reliability, 12–15
selecting, 75–76
utility VIs, 36
Suss Interface Toolkit, 137, 231–232
symbolic mappings, 63
Synchronization palettes, 223
System palettes, 53
tabbing order, configuring, 73
tabs, overview, 56
task ID out 2, 146–147
templates
code reuse, 36–39
Error handling, 222
icons, 136
terminal labels, viewing, 304
terminals
assigning, 144–154
interfaces, 140–145
top and bottom horizontal edge connectors, 144
vertical edge connectors, 144
Test Executive VIs, error handling, 235–238
Test to Run numeric control, 306
tests
documentation, 321
Front Panels, 321
methodology section (requirements specifications), 28
text
default
13-point plain black, 305–306
appearance, 59
embedding, 301
industrial GUI VIs, 69
minimizing, 62
subVIs, 68
themes, creating, 70
Theorem 1.1 (style elements), 2
Theorem 1.2 (style and development time), 19
Theorem 2.1 (requirements specifications), 22
Theorem 2.2 (scope creep), 23
Thermometer VI, 193–194
tight loops, 279
time
style versus, 18–19
Theorem 1.2, 19
Timeout events, 251
toolbars, hiding, 58
tools
Bottom Edges alignment, 95
Filled Rectangle, 135–136
Resize Objects, 50
Right Edges, 50
Vertical Compress, 50
top and bottom horizontal edge connector terminals, 144
Top level application window, 58
top-level VIs, 47
arrays, bundling, 167
identifying, 45
maximizing, 51
Torque Hysteresis VI, 171–172, 189–191, 214, 330, 336
trapping errors, 205–209
Two Button Dialog function, 52
type definitions, 101
type of dialog input terminals, 212
Unbundle By Name function, 183, 308–310
unified patterns, selecting for related VIs, 141
unit under test (UUT), 170
Unused Code failures, 323, 326
Use transparent name labels, 67
User Controls palette, 36
user event data type input terminals, 266
user events, 266
User Interface category, 323
User Libraries palette, 36
utility VIs, 36
UUT (unit under test), 170
Value Change events, 250
variables, data flow, 104–109
Vertical Compress tool, 50
vertical edge connector terminals, 144
VI Analyzer Toolkit, 320–323, 329
VI descriptions, style versus time, 19
VI Documentation failures, 327
VI Hierarchy windows, 166
VI History, style versus time, 19
VI Properties dialog, 230
VI Properties window, 8
View as Icon (shortcut menu), 152
VIs
descriptions, 311
error handling, 204
automatic, 230
clearing errors, 228
examples, 230–238
merging errors, 226–227
prioritizing errors, 222–225
reporting errors, 211–214
structure wiring, 226
trapping errors, 205–209
templates. See templates
top-level VIs
arrays, bundling, 167
identifying, 45
maximizing, 51
Visible property, 222
visible radix, 176
Wait n mSec VIs, 225
WDT (waveform data type), 186
Window Appearance property pages, 58
Wires Under Objects errors, 323, 327
wiring, 93–101
connector pane, 140–145
labels, 305
structures, 226
written specifications. See requirements specifications
18.221.53.209