Contents
Preface
The Test Engineer?s Perspective
1. Introduction
<br>1.1 LabVIEW Sucks
1.2 Don?t Buy This Book
1.3 The Soapbox
1.4 What This Book Is
2. LabVIEW Rocks
<br>2.1 Why Does LabVIEW Rock?
<br>2.2 What Advantages Does This Bring to the Developer?
<br>2.3 How Can Good Design Leverage These Advantages?
3. Software Design Principles
<br>3.1 Why is Software Complex?
<br>3.2 Coupling and Cohesion
<br>3.3 Information Hiding and Encapsulation
<br>3.4 Examples of Coupling, Cohesion, and Information Hiding
<br> 3.4.1 Bad (Tight) Coupling
<br> 3.4.2 Good (Loose) Coupling
<br> 3.4.3 Bad (Weak) Coupling
<br> 3.4.4 Good (Strong) Coupling
<br> 3.4.5 Bad Information Hiding
<br> 3.4.6 Good Information Hiding
<br>3.5 Abstraction
4. LabVIEW Component Oriented Design (LCOD)
<br>4.1 Components
<br> 4.1.1 So What is a Component?
<br>4.2 Design
<br> 4.2.1 Object Oriented Design (OOD)
<br> 4.2.2 Top-Down Design
<br> 4.2.3 Bottom-Up Design
<br> 4.2.4 Design Patterns
<br> 4.2.5 Pattern Examples
5. LCOD Implementation
<br>5.1 Component Mechanisms
<br>5.2 Message Sending
<br> 5.2.1 All About Enumerated Types
<br> 5.2.2 101 Things to Do With Enumerated Type
<br> 5.2.3 Strict Type Definitions
5.3 Persistent Local Storage
<br>5.4 The Basic Structure of a Component
6. LCOD Complementary Techniques
<br>6.1 State Machines
<br> 6.1.1 State Machine Example?Washing Machine
<br>6.2 Graphical User Interface (GUI) Design and Prototyping (UI
Controller>>Message Queue Pattern)
<br> 6.2.1 Stack Queue Component
<br> 6.2.2 User Interface Control Wrapper VI
<br> 6.2.3 LCOD User Interface Example Diagram
<br>6.3 Abstraction in the Code, Detail Outside the Code
<br> 6.3.1 Section Key Files
<br>6.4 Error Handling
<br>6.5 Pre- and Postconditions: Check What Comes In and What Goes Out
<br> 6.5.1 Preconditions
<br> 6.5.2 Postconditions
<br> 6.5.3 Conclusion
<br>6.6 Reuse
<br> 6.6.1 Opportunistic Reuse
<br> 6.6.2 Planned Reuse
<br> 6.6.3 Merge VIs
<br> 6.6.4 VI Templates
7. Software Engineering Essentials
<br>7.1 The Usual Suspects
<br>7.2 Requirements Document
<br>7.3 Quote/Project Validation
<br>7.4 Target Specification
<br>7.5 Test Plan
<br>7.6 Software Architecture Document
<br>7.7 Software Construction?Build
<br>7.8 Test?Customer Acceptance
<br>7.9 Pictures Tell a Thousand Words
<br> 7.9.1 Diagrams?Data Flow Diagrams (DFD)
<br> 7.9.2 State Transition Diagrams
<br> 7.9.3 Homemade Diagrams
<br>7.10 Checklists
<br>7.11 Code Reviews
<br>7.12 The Project Is Dead, Time for a Post-Mortem
<br>7.13 Metrics
8. It?s All About Style
<br>8.1 Why Do We Need Standards Anyway?
<br>8.2 Block Diagram
<br> 8.2.1 General Layout Standards
<br> 8.2.2 Wiring Standards
<br> 8.2.3 Labeling Standards
<br> 8.2.4 Self-Documenting Example
<br>8.3 Front Panel
<br> 8.3.1 General Front Panel Standards
<br> 8.3.2 Public Front Panel Standards
<br> 8.3.3 Private Front Panel Standards
<br> 8.3.4 Icon and Connector Standards
<br> 8.3.5 Organization of Files
9. The Journey
<br>9.1 Agreeing on the Destination (Requirements)
<br>9.2 Planning Your Route (Design)
<br> 9.2.1 Code and Fix
<br> 9.2.2 Abstracting Components from Requirements
<br> 9.2.3 Using Patterns to Help the Design Process
<br> 9.2.4 Building the Prototype
<br>9.3 Build
<br> 9.3.1 Code and Fix
<br> 9.3.2 LCOD
<br> 9.3.3 Hardware
<br> 9.3.4 Detail Outside the Code
<br> 9.3.5 Error Handling
<br> 9.3.6 State Machines
<br> 9.3.7 Reuse
<br> 9.3.8 Style
<br>9.4 Uh-Oh We?ve Been Given the Wrong Directions
<br>9.5 Conclusions
Glossary
Index
Library of Congress Subject Headings for this publication: LabVIEW, Software engineering