Topics
Software Quality Standards
ISO 9000, CMMI, DO-178B, FDA CFR Part 820
Software Engineering Process (SEP)
Validation, Requirements-Based Testing, Debugging, Automated Deployment
Software Configuration Management (SCM)
Why Is Software Engineering a Concern?
•
Large systems require structured development
practices
•
Companies have to mitigate risk of systems by
demonstrating product quality
•
The processes are the same, but the
methodologies and tools may be different
•
NI LabVIEW software is commonly used for rapid
Software Quality Standards
ISO 9000
Voluntary certification standard for consistent processes
CMMI
Process improvement model sponsored by the National
Defense Industrial Association
DO-178B
FAA standard for avionics software
FDA 21 CFR Part 820
Medical device standard
Company-wide certification standard
Sanarus Medical
Challenge
•
Noninvasive treatment using
cryogenics
–
Liquid nitrogen freezes tumors from
within the body
•
Critical specifications
–
Alpha Prototype in 4 months with 1
engineer
OptiMedica
–
PASCAL Photocoagulator
•
Panretinal laser
photocoagulation treating
retinal diseases
•
Previously a manual process
–
Painful for the patient
•
Controlled by one NI
PCI-7833R and LabVIEW FPGA
•
Winner of the 2007 Medical
Design Excellence Award
Software Engineering Process
(SEP)
•
Refers to a model for the software
development process called the “development
life cycle”
•
There are several SEP models, such as
waterfall, spiral, and agile, but they all share
common ground
Software Configuration Management (SCM)
Basic SEP Model
•
Process is independent of programming language
•
Demonstrate a particular process for certification
•
Automate this process for
LabVIEW
with toolkits and add-ons
•
Apply SCM throughout process
Requirement Gathering Application Architecture Development and Debugging Testing and Verification Deployment
Development Life Cycle
Software Configuration Management (SCM)
Software Configuration Management (SCM)
Configuration Management Goals
•
Provide central repository of code
•
Manage multiple developers
•
Detect and resolve code collisions
•
Track behavior changes
•
Identify when changes are made and who made them
•
Ensure everyone has latest copy of code
•
Back up old code versions
•
Manage
all
files, not just source code
National Instruments Confidential
Requirements Gathering Application Architecture Development and Debugging Testing and Verification Deployment
Software Configuration Management (SCM)
Configuration Management Tools
•
LabVIEW Project Explorer provides system level application
view
•
Graphical merge and graphical differencing
•
Integrate third-party source code control providers
•
NI Requirements Gateway
National Instruments Confidential
Requirements Gathering Application Architecture Development and Debugging Testing and Verification Deployment
SCC Integration with LabVIEW
•
Third-party source control integration
with the following:
–
Microsoft Visual SourceSafe
–
Microsoft Team System
–
Perforce
–
Rational ClearCase
–
PCVS (Serena) Version Manager
–
MKS Source Integrity
–
Seapine Surround SCM
–
Borland StarTeam
–
Telelogic Synergy
–
ionForge Evolution
–
Subversion**
•
Access SCC tools via LabVIEW Project
•
Project specific settings*
**Subversion is open source and requires plug-in
Track Changes
View Revision History
Integrate with SCC
Merge Graphical Code
Manage Files and Links
System-Level View
Worldwide RF Test System
International team of designers and engineers testing complex devices using LabVIEW
Problem
Managing large application development (14,000+ VIs) in LabVIEW
across contents and teams of developers (50+)
Solution:
Software Engineering Waterfall Process Model
Source code control
Requirements Gathering Application Architecture Development and Debugging Testing and Verification Deployment
Phases of Development in SEP
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentGoals
•
Agree on what the application will do
•
Define which behaviors are acceptable and safe
•
Define tests for individual components
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentPractices
• System-level requirements are mapped to
specifications for unit-level functionality
• Requirements documents are commonly
stored in programs such as Microsoft Word,
Adobe PDF, or Telelogic DOORS
• Code is documented as fulfilling specifications
within requirement documentation
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentTools
•
Telelogic Doors
•
Microsoft Word/Excel
•
NI Requirements Gateway
Requirements Traceability Solution from NI
Dedicated Interfaces
NI Requirements
Gateway
Requirements
Traceability
Capture
Navigation
NI TestStand
LabVIEW
LabWindows™/ CVIMATRIXx
Dedicated Interfaces
DOORS
RequisitePro
The mark LabWindows is used under a license from Microsoft Corporation. Windows is a registered trademark of Microsoft Corporation in the United States and other countries.
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentGoals
• Determine how code will be divided based on
functionality
• Develop standard interfaces and APIs for code
modules
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentPractices
• Build code foundation using established design
patterns
• Agree on coding style
• Develop framework or skeleton of all code and
tests
Tools
•
UML tools
•
LabVIEW design patterns
•
Object-oriented design
•
LabVIEW Statechart Module
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification Deployment
LabVIEW Design Patterns
•
Important architecture concept
•
Common, easily recognized frameworks
•
Improves code readability
•
Avoid “reinventing” the wheel
•
Take advantage of more than 20 years of work
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentGoals
• Implement the application
• Fulfill requirements documentation
• Detect and resolve incorrect code behavior
• Pass functionality test parameters
• Abide by style guidelines
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentPractices
• Group development
• Manual peer code review
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentTools
•
Constantly compiling
•
Highlight execution
•
Breakpoint manager*
•
Diagram cleanup*
•
National Instruments Style Guideline
•
VI profiler
•
Coercion (memory) dots
•
Conditional disable structures
•
VI Analyzer Toolkit
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentG
oals
• Verify that code behaves correctly according to requirements
• Validate that the system performs as the user expects
• Ensure 100 percent code coverage
• Exhaustive coverage tests all possible code execution
combinations
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentPractices
• Requirements-based testing using test frameworks
• Test frameworks generate reports based on output and
code coverage
• Failed tests return application to development phase
• White box testing for branch analysis
Tools
•
Custom-test frameworks
•
NI Requirements Gateway
More coming soon …
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification Deployment
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentGoals
• Determine repeatable process
• Deploy to determine behavior on other targets
• Deliver a product to customer or end user
• Make every installer and driver required for operation easily
portable
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentPractices
•
Develop build process early
•
Test using run-time engine
•
Check for dynamically loaded subfolders
•
Design with end product in mind
•
Plan for final paths
•
Distribute end product using installers
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentLabVIEW
Tools for SEP and SCM
NI Requirements
Gateway
LabVIEW
Statechart
Module
VI Analyzer
LabVIEW
Application
Builder
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification Deployment
Tools for the Development Process
Requirements
Gateway
LabVIEW
Statechart
Module
VI Analyzer
LabVIEW
Application
Builder
Unit Test
Framework
Desktop
Execution Trace
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification Deployment
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development & Debugging Testing & Verification DeploymentApplication
Builder
Statechart
Module
VI Analyzer
Unit Test
Framework
Desktop
Execution Trace
NI Requirements
Gateway 1.1
NI Developer Suite Bundle
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification DeploymentWhat Is the DETT?
•
Debugs and optimizes complex applications
•
Detects incorrect behaviors such as memory leaks
•
Easily traces actions to responsible code
•
Monitors deployed applications for correct behavior
•
Optimizes multithreading in LabVIEW
Troubleshoots complex applications and monitors events
and resource allocation during execution
What Is the Unit Test Framework?
•
Generates and executes tests for VIs quickly and easily
•
Ensures code is safe, reliable, and fault tolerant
•
Tracks percentage of code that has been executed
•
Defines tests outside of development environment
•
Views coverage of test requirements
Software Configuration Management (SCM)
Requirements Gathering Application Architecture Development and Debugging Testing and Verification Deployment