Software Engineering for LabVIEW s
Topics Software Quality Standards ISO 9000, CMMI, DO-178B, FDA CFR Part 820 Software Engineering Process (SEP) Validation, -Based Testing, Debugging, Automated Software Configuration Management (SCM) Source Code Control, Version Tracking, Revision History, Group
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 prototyping
Software Quality Standards Company-wide certification standard ISO 9000 Voluntary certification standard for consistent processes CMMI Process improvement model sponsored by the National Defense Industrial Association Product-specific certification for quality DO-178B FAA standard for avionics software FDA 21 CFR Part 820 Medical device standard
National Instruments Is ISO 9001 Certified
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 FDA-Certified Class II Medical Device
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
Basic SEP Model Every model shares these basic phases Software Configuration Management (SCM) Requirement Life Cycle 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
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
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 Gateway National Instruments Confidential
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* *New in LabVIEW 8.5 **Subversion is open source and requires plug-in
System-Level View Track Changes Integrate with SCC Software Configuration Management for LabVIEW Merge Graphical Code Manage Files and Links View Revision History
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 Style and code reviews
Phases of in SEP
Software Configuration Management (SCM) Goals Agree on what the application will do Define which behaviors are acceptable and safe Define tests for individual components Provide traceability from code to documents
Software Configuration Management (SCM) Practices System-level requirements are mapped to specifications for unit-level functionality 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) Tools Telelogic Doors Microsoft Word/Excel NI Gateway
Traceability Solution from NI DOORS Dedicated Interfaces RequisitePro Traceability NI Gateway Capture Navigation Dedicated Interfaces NI TestStand LabVIEW LabWindows / CVI MATRIXx 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) Goals Determine how code will be divided based on functionality Develop standard interfaces and APIs for code modules Ensure code scales are readable and maintainable
Software Configuration Management (SCM) Practices Build code foundation using established design patterns Agree on coding style Develop framework or skeleton of all code and tests
Software Configuration Management (SCM) Tools UML tools LabVIEW design patterns Object-oriented design LabVIEW Statechart Module
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 Abstracts common problems
Software Configuration Management (SCM) Goals Implement the application Fulfill requirements documentation Detect and resolve incorrect code behavior Pass functionality test parameters Abide by style guidelines Optimize performance and execution
Software Configuration Management (SCM) Practices Group development Manual peer code review Static and dynamic code analysis
Software Configuration Management (SCM) Tools Constantly compiling Highlight execution Breakpoint manager* Diagram cleanup* National Instruments Style Guideline VI profiler Coercion (memory) dots Conditional disable structures VI Analyzer Toolkit Real-Time Execution Trace Toolkit
Software Configuration Management (SCM) Goals 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) Practices -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 Black box testing for correct functionality
Software Configuration Management (SCM) Tools Custom-test frameworks NI Gateway More coming soon
Software Configuration Management (SCM) Goals 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 Remove sensitive code information
Software Configuration Management (SCM) Practices 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 Integrate with other languages using shared libraries
Software Configuration Management (SCM) LabVIEW Builder
LabVIEW Tools for SEP and SCM Software Configuration Management (SCM) NI Gateway LabVIEW Statechart Module VI Analyzer LabVIEW Builder
Tools for the Process Software Configuration Management (SCM) Gateway LabVIEW Statechart Module VI Analyzer Unit Test Framework LabVIEW Builder Desktop Execution Trace
Process Tools & Debugging Testing & Software Configuration Management (SCM) NI Gateway 1.1 Statechart Module VI Analyzer Unit Test Framework Builder Desktop Execution Trace NI Developer Suite Bundle
Software Configuration Management (SCM) What 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
Software Configuration Management (SCM) 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 Develops and validates reliable, safe, and fault tolerant applications using graphical programming
Unit Test Framework
Fluidnet IV Drip Infusion Pump Algorithm developed using LabVIEW for Windows OS and NI Data Acquisition Very slow flow rates Simple user interface Must be fail safe Rapid time to market Deployed Blackfin solutions by Boston Engineering
Nuclear Reactor Control System VI Control Systems and Sandia National Laboratories Mission-critical application controls reactor LabVIEW and NI Compact FieldPoint replaced existing system Intuitive user interface for monitoring Nine networked computers running LabVIEW constantly monitor one another
Oral Feeder for Premature Infants The NTrainer System Helps Premature Babies Learn to Feed Orally and Greatly Increases Chances for Survival Deployed commercial FDA Class II medical device using LabVIEW and NI CompactRIO The software architecture was developed with the LabVIEW Real- Time, LabVIEW FPGA, and LabVIEW Statechart modules Use an NI Single-Board RIO device to create a more cost-optimized version for high-volume deployment
LabVIEW is a programming language LabVIEW is used for large, missioncritical applications Much of LabVIEW and other NI tools are developed in LabVIEW NI develops LabVIEW using an ISO-9001 accredited process LabVIEW integrates with tools and practices for SEP and SCM Create installers in LabVIEW to deploy professional, stand-alone software
ni.com/labview/power Large, mission-critical user solutions Software engineering best practices Frequently asked development questions Recommendations for using NI tools
ni.com/labview/power Configuration Management with LabVIEW Source Code Control, Version Tracking, Revision History, Group Software Engineering Practices for LabVIEW Validation, -Based Testing, Debugging, Automated Comparing LabVIEW to C/C++ Productivity, Built-In Functionality, Benchmarking Performance