Academic Company Events NI Developer Zone Support Solutions Products & Services Contact NI MyNI

Document Type: Tutorial
NI Supported: Yes
Publish Date: Apr 21, 2008

Software Configuration Management and LabVIEW

16 ratings | 3.25 out of 5
Print

Overview

This article is part of a series on software engineering practices and tools for large application development in LabVIEW.

Click here to view the list of other articles


Roger Pressman, in his book, Software Engineering: A Practitioner's Approach, says that software configuration management (SCM) is a "set of activities designed to control change by identifying the work products that are likely to change, establishing relationships among them, defining mechanisms for managing different versions of these work products, controlling the changes imposed, and auditing and reporting on the changes made."1 In other words, SCM is a methodology to control and manage a software development project.

What Is Software Configuration Management?

Identification
Identification covers the structure of the product, identifies individual components and which type they are, and makes sure that the components are accessible to other components. Identification takes place mostly in the specification stages of a project; but as the specifications change, so do the identification. The identification aspect saves developers a lot of time on the project because they start with a clear definition of the components and their interactions.

Control
Control keeps track of all of the changes that happen to a project. It includes controlling releases, changes to individual components, and keeping a baseline from which everyone can develop. Control happens mainly in the development stages of the project, and it normally takes the form of a source code control (SCC) system. Such a system can keep track of all versions of each component so if you find errors, you can trace them back and fix them. SCC also is useful for releasing multiple versions of a single product and being able to keep many of the common components. Control maximizes the efficiency and productivity of developers, because they never perform the same task twice or have work overlap with their colleagues. With control, developers can make quick, efficient transitions if a change in specifications arises.

Auditing
Auditing leans a little more to the testing department. Auditing is where you validate your product to see if it is meeting the specifications and you verify that the product maintains consistency. The following are common questions you might ask during auditing:

  • Are all the sections handling errors the same way?
  • Do all user interfaces look similar?
  • Do any components overlap?


These are just some of the questions you can check in this stage. Auditing creates an extremely robust product and saves time and money at release time.

Accounting
You use accounting to gather statistics on the project. Some examples of these statistics would be work hours (billable hours), equipment allocations, and work progress. You can record change requests to the specifications here as well so you can make updates to schedules, payments, and other affected areas. With accounting, you have fast, precise tracking of your project, which can ease the responsibilities of a project manager dramatically.

Why Software Configuration Management?


There are many reasons for implementing an SCM system on a software project, all of which save time, lower costs, and reduce problems. First, SCM can provide a safety net for a project by keeping track of all the old data, requirements, code, time, and other components that went into a project. If you need to refer to any of these components in the future, the information is easy to find because it is all located in one place. This can be particularly useful in supporting the software years after the project was originally developed because it preserves the information that was present when the project was initially developed.

Second, by using an SCM backup system on a regular basis, you guarantee a consistent and correct record of what you have done. This type of backup system can save hours of time if a build is corrupted or destroyed. Without a well documented and executed backup system, a corrupted build could cost weeks of downtime.

Third, an SCM system takes care of many of the necessary parts of a project (such as billing) that would have to be done anyway. The SCM system interlinks these necessary components in a way that reporting can be done through one system, rather than having to fill out a time card for your work hours, a project time sheet for how many hours you worked on a particular project, and sift through many systems to bill clients.

Finally, SCM is being required more and more by the Department of Defense, ISO, and the FDA. They mandate SCM because software products produced with SCM are robust, well documented, and have a high level of control.

SCM with LabVIEW and Perforce


Using the LabVIEW development environment along with an SCC tool such as Perforce can fulfill many of the SCM requirements. LabVIEW has many built-in tools to help with implementation of SCM, such as revision history for a VI, graphical differencing of source files, and source code control functionality.

Revision History
LabVIEW has global settings that can add information to a revision history inside the VI itself. A developer can configure LabVIEW to add revision history to VIs every time a save action occurs. The revision history contains many pieces of valuable information, such as revision number, user name, and time and date stamps. Figure 1 shows an example of revision history.

Figure 1. History Window



These options give you many different ways to add revision information in the History window of a VI. You also can extract this information from the VI programmatically, making the process of getting revision information easy for audits and code reviews.

Source Code Control with Perforce
Even though VIs are binary source files, you can compare them using the graphical differencing feature built into LabVIEW. Using this feature, you can select two VIs and perform a comparison of both the front panel objects and the block diagram code. The differences between the files are highlighted and explained, much like a text-based diff program. This feature is extremely useful for developers or managers because it delivers very detailed and descriptive data that you can use for revision history, source code tracking, or bug fixes.

You also can configure LabVIEW to work with the Perforce client application on all LabVIEW platforms. If you are looking for a full-fledged SCM system, National Instruments recommends Perforce. Like LabVIEW, Perforce is an excellent choice for multi-OS projects from Windows to Solaris. LabVIEW has integrated Perforce into the development environment, so it is an easy transition step for any LabVIEW developer. Perforce is great for any sized project with any number of developers. If you have only two developers, you can download Perforce and use it free of charge, without restriction.3 You also can use Perforce for more than just an SCC system. Refer to the Perforce Web site for more information.

Additional Source Code Control Tools with LabVIEW
In addition to working with Perforce, LabVIEW also has a built-in interface to Microsoft Visual SourceSafe (VSS). VSS comes with the Enterprise editions of Microsoft Visual Studio. Because VSS is an SCC system only, it is useful if you already have a SCM plan in place but are in need of a SCC system. VSS is useful for any size project with any number of developers.

LabVIEW also has built-in SCC, which is useful for small projects of about 10 VIs with one developer. It is a useful tool if there is not another SCC system already in place and it is a small project. It is not meant for large project development or for projects that have strict configuration requirements because it lacks the features and benefits of many of the commercial SCC products available.

Summary


Software configuration management consists of four component parts – identification, control, auditing, and accounting. It is the foundation of how a project is organized, specified, developed, built, and released. Many software contracts today require a standard to be met when developing software, and SCM can help meet those requirements.

LabVIEW is a good programming language to use for implementing an SCM plan. LabVIEW stores revision information to make maintenance of code easier, interacts with source code control applications for keeping a permanent record of your development, and provides graphical differencing to make it easier to detect changes in the code of your applications. Thanks to all of these features, a project can run smoother, cost less, and be more efficient, which is good for you and makes your business more competitive in bringing products to market.

References and Additional Information



References

  1. Pressman, Roger S. (2001). Software Engineering: A Practitioner's Approach, 5th ed. New York, NY: McGraw-Hill. p. 225.
  2. Dart, Susan. (1991). "Concepts in Configuration Management Systems", Proceedings of the 3rd International Workshop on Software Configuration Management. pp. 1-18.
  3. Perforce Downloads. (n.d.). Retrieved July 30, 2003, from http://www.perforce.com/perforce/loadprog.html


Additional Information

  1. Why Software Configuration Management? (n.d.). Retrieved July 23, 2003 from http://www.internetjournal.com/articles/200303/pij_03_12_03a.html
  2. Compton, Stephen B. and Guy R. Conner. (1994). Configuration Management for Software. New York, NY: Van Nostrand Reinhold.
  3. http://www.cmtoday.com/yp/configuration_management.html
  4. DoD (1989). MIL-STD-973, "Military Standard for Configuration Management." Department of Defense.
  5. Pressman, Roger S. (2001). Software Engineering: A Practitioner's Approach, 5th ed. New York, NY: McGraw-Hill.
16 ratings | 3.25 out of 5
Print

Reader Comments | Submit a comment »

 

Legal
This tutorial (this "tutorial") was developed by National Instruments ("NI"). Although technical support of this tutorial may be made available by National Instruments, the content in this tutorial may not be completely tested and verified, and NI does not guarantee its quality in any way or that NI will continue to support this content with each new revision of related products and drivers. THIS TUTORIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE (http://ni.com/legal/termsofuse/unitedstates/us/).