首页 » labview » 技术文章

NI LabVIEW软件的团队项目开发

2014-01-14

核心提示:概览 当开发一个大型的,复杂的LabVIEW应用程序时,一个工程师独自完成的情况是非常罕见的。对于大多数大型应用程序,开发团队或

概览
当开发一个大型的,复杂的LabVIEW应用程序时,一个工程师独自完成的情况是非常罕见的。对于大多数大型应用程序,开发团队或工程师会一起工作,对同一代码协同开发。然而,如果没有对基础设施和规划进行适当的投资,团队开发可能会引起某些缺陷和无效率。

本文接下来将讨论提高LabVIEW团队开发项目的挑战和建议。
目录
5.     其他资源
提供集中访问代码和追踪代码的更改
对于从单独创建应用程序,转型作为团队开发中一个成员的开发人员来说,他们所面临的一个巨大挑战之一是,需要定义一个中心位置来存储代码。中心位置是非常有必要的,它明确地定义了开发人员开发所需要使用的代码,以及向开发人员提供可以存储代码更新的位置,且在该位置其他开发人员也可以找到更新的代码。
当开发人员作为团队开发中的一个成员创建应用程序时,所面临的第二个挑战是协调代码修改。当开发人员编辑现有的代码,创建其他代码时,他们必须将这段代码的更改传达给其他开发人员,控制访问开发人员正在修改的代码。
最后,由于在团队开发环境中,会有大量的、频繁的、分散的代码更改,而在更改发生后的几个月内,开发人员面临着深入理解代码更改的原因和来源的挑战。
建议
在开发期间,使用源代码控制控制
源代码控制提供了一个高效率的,功能强大的系统,用来存储,管理代码的更改和代码的文档修订。源代码控制软件维护应用程序文件的集中副本。当开发人员决定修改一个文件时,从源代码控制软件的库中取出该文件进行编辑。当编辑完成之后,开发人员审查文件的新版本,它将成为开发项目主副本的一部分。
当一个开发人员正在编辑当前代码时,源代码控制还通过锁定开发人员编辑这段代码来帮助协调代码的修改。如果一个开发人员想与另一个开发人员同时进行代码的编辑,源代码控制系统可以为开发人员提供创建新代码分支的能力,如果有需要,这个代码分支可以在未来合并到源代码中。
源代码控制系统还可以帮助开发人员证实,没有对代码库作出修改。源代码控制系统可以显示应用程序中使用的特定代码版本。如果开发人员希望将LabVIEW代码存储到源代码控制系统中,并且证实没有对代码作出修改,那么应该将VIs的源码唯一版本存储到源代码控制系统中。VIs的源码唯一版本从VI的目标代码中取出编译代码,且只包含底层代码。通过向VI限制其底层代码,对子VI修改而产生的目标代码的更改或调用VI链接将不会影响存储在源代码控制系统中的文件。
使用LabVIEW开发环境,集成源代码控制
将源代码控制系统集成到开发过程中,如果不能有效地进行处理,可能会增加不必要的系统开销。集成源代码控制系统最有效的方法是直接从开发环境中集成。随着LabVIEW开发环境的发展,用户可以直接与行业标准源代码控制软件进行交互,如微软Visual SourceSaft,Perforce,Rational ClearCase,PVCS 版本管理,MKS源代码完整性,以及免费的开源软件,如CVS。
图1. LabVIEW开发环境允许用户从源代码控制中检测文件
欲了解LabVIEW软件是如何与源代码控制软件进行集成的,请参阅白皮书在LabVIEW 中用于高级配置管理任务的源代码控制和小组开发实践
在源代码控制中,记录更改到VIs
当检测源代码控制时,大多数源代码控制软件都允许开发人员对所作出的代码更改,附上对该更改的描述文件。通过记录和描述对代码的更改,开发人员可以更容易地理解代码的更改和更改的理由。开发人员可以维护修订版本历史,不仅仅只是维护LabVIEW VIs,还可以维护被添加到LabVIEW项目中的任何文件。源代码控制软件定义了修订历史所显示的格式。如图2,其显示了Perforce如何显示VI的更改。
图2. Perforce显示了VI的修订历史
识别和合并代码的更改
团队开发项目往往依赖于开发人员对代码的修改合并到代码主副本的过程。开发人员通常开发主代码库的分支,必须将他们所开发的分支合并到主代码库中。理解代码中的区别可能是一种挑战,尤其对复杂的代码而言。此外,从一个代码库到另一个代码库合并代码的更改,可能是非常耗费时间和容易引起错误的。
建议
使用图形区分工具来识别和合并,以巩固代码的更改
LabVIEW中的图形区分工具允许开发人员通过图形来显示两个版本间的区别,在VIs中识别代码的更改。如果环境中已经配置了源代码控制软件,开发人员可以装载内存中的当前版本,自动地与源代码控制中的上一个版本进行比较。开发人员可以在工具——>源代码控制菜单选项上选择图形区分功能,或者通过项目资源管理器的右键单击菜单中选择显示区分。如果开发人员使用的源代码控制软件不支持源代码区分集成的话,他们还可以通过从工具菜单中选择比较VIs选项,来人工地对当前版本和上一个版本进行比较。
图3. LabVIEW图形区分工具可以显示VI不同版本间的代码更改
在大多数情况下,只了解VI两个不同版本间的差别是不够的。开发人员必须理解VIs间的差别,将区别合并到一个新的版本上。利用LabVIEW VI合并工具,开发人员可以在至少三个不同LabVIEW  VIs中可视化其差别,找出冲突的代码更改,将不同的版本合并到一个单一版本上。
欲了解如何使用LabVIEW VI的合并,请参阅白皮书如何使用图形合并以结合单独的VIs.
在开发团队间共享代码
随着应用程序规模变得越来越大,在开发人员间共享和维护代码变得越来越具有挑战性。如果对一个应用程序的完整系统架构没有一个深入的理解,开发人员可能无法对代码部分的更改预测出可能的结果。此外,单一架构的应用程序使得其任何部分要在其他应用程序中被重新利用变得不可能。最后,即使应用程序组件可以被重新利用,有必要收集和分配所有必要代码的时间可能会大大增加开发时间。
建议
将应用程序模块化为可重利用组件
为了方便应用程序模块的重新利用和共享,应用程序应该由模块化组件构成,这样开发人员可以单独运行和测试各个模块化组件。模块化组件应该为开发人员提供一个公共接口,以预定义和控制的方式与组件进行交互。此外,模块化组件应该被封装起来,以防止其他开发人员与私有接口进行交互,而不是通过公共接口进行交互。
使用项目库,封装项目库,或源码分布来封装可重利用库
模块化代码可以以多种方式进行封装。在LabVIEW中,共享和重利用源代码的三种最常用方式是使用项目库,或.lvlib文件,封装项目库,或.lvlibp文件和源码分布,或.llb文件。根据应用程序的类型,这些库中的每一种库都有其自身的优势,使得源代码的共享更容易。
模块化代码必须为用户公开一个接口或API 函数,以便对代码的功能进行操作。这些APIs向用户公开可以调用的VIs,并隐藏低级别VIs,API执行预期的操作。除了公开API本身之外,希望能让其他开发人员访问API提供的底层代码的开发人员,应该使用项目库,或.lvlib文件。项目库可以定义一个明确的公共和私有接口,向用户提供库代码。另一方面,如果开发人员希望公开API,但避免任何用户对库中底层代码进行更改,他们应该使用封装项目库,或.lvlibp文件,其作用类似于DLLs。
图4. LabVIEW封装项目库使开发人员能够公开接口,但限制对私有VIs进行编辑
当对不同的项目需要开发多个应用程序时,总有一些相同的功能模块必须被使用多次。在这些情况下,能够将这些功能模块容易地移到其他开发机器上,当需要时,能够访问他们,这对我们非常有帮助。因为这些VIs从一个项目移动另一项目,不依赖于具体的应用程序,.llb文件是提供VIs的一种比较好的候选方法。
使用封装管理工具,收集和分布重利用库
即使开发人员将其应用程序分为模块化和可重利用组件,对其他开发人员来说,要收集所有必要的与应用程序相关联的依赖关系来编辑和运行组件,这也是一种挑战。封装管理工具有助于开发人员收集和分布代码与依赖关系到包中。这些封装可以被分给其他开发人员,方便代码的共享。VI封装管理器(VIPM)是针对LabVIEW用来开发包的一种工具。
欲了解如何共享重利用LabVIEW源代码,请参阅白皮书共享和重利用LabVIEW的最佳实践方法.
实施共同的开发标准
多项开发研究已经证明,当应用程序开发后,多数应用程序的开发成本会提高。代码必须被改善,扩展,和维护。在大多数情况下,开发人员开发的代码不是由他们自己开发的。尽管允许每个开发人员按照他或她自己的开发习惯可能会加快应用程序的开发,但从长期考虑,在应用程序中发现的多个开发标准增加了维护应用程序的难度。因此,当开发团队项目时,共同的开发标准可以降低开发成本。
建议
在开发早期,建立共同开发标准
为一个企业的LabVIEW定义共同的开发标准,这没有一个保证的解决方案。应用程序应该如何开发,这取决于质量水平,开发时刻表,以及应用程序需要重利用的组件或模块量。另一方面,一个良好的起点可能是LabVIEW 风格指南它是LabVIEW开发指南文档的一部分。无论一个开发团队同意使用什么标准,他们都应该尽早实施,始终尽可能保持一致,以便在未来方便代码的维护。,
在整个开发中,实施标准
在整个开发过程中,共同开发标准的实施需要管理和执行。执行共同开发标准最有效的方法之一实施代码审查,包括同行对代码的评估。代码审查可以由工具实现其自动化,如LabVIEW VI 分析工具包,其在LabVIEW VIs上运行预配置和自定义测试,保证与开发标准的兼容性。
欲了解如何使用LabVIEW VI 分析器工具包来自动化代码审查,请参阅白皮书LabVIEW VI 分析器工具包概述
其他资源
 

相关新闻

排行榜