LabVIEW软件配置管理
软件配置管理是指管理和控制应用程序的源代码和依赖项的工具和实践。源代码控制可以包括从磁盘上文件夹和文件的存储和组织,到用于修订控制和在大型团队中分配资源的复杂工具。缺乏良好的纪律和适当的工具是应用程序开发过程中延迟和问题的常见原因,因为它使项目面临与手动管理和分发项目依赖项相关的风险。文章将介绍在LabVIEW中开发应用程序时软件配置管理的最佳实践和工具。
配置管理的目标
许多开发人员都经历过非托管环境的挫败感,在这种环境中,人们会覆盖彼此的更改或无法跟踪修订。在任何环境中管理大量文件或多个开发人员都是一项挑战;因此,大型开发项目依赖于配置管理工具来满足以下目标:
提供对集中式代码存储库的访问
管理和跟踪同一应用程序的多个版本
管理多个开发人员
确定何时进行更改及其影响
检测并解决冲突的更改
分发和部署最新版本的代码
备份并保留对旧版本代码的访问
管理和分发重用库
工具和实践的选择在很大程度上取决于上述目标对特定项目或团队的重要性以及必须满足的程度。有效的配置管理始于组织良好的应用程序层次结构。
重要的是要认识到,即使是开发团队较小的简单应用程序也可以从更复杂的文件管理和修订控制工具中受益。出于这个原因,几乎总是建议对任何和所有开发项目进行源代码控制。
源代码控制对于任何项目都很重要,无论其复杂性或团队规模如何。各种供应商提供了各种源代码控制工具,它们都可用于跟踪、存储和管理LabVIEW文件。可用的工具范围从免费且易于使用的解决方案(如Subversion)到企业级生命周期管理解决方案(如Perforce和MicrosoftTeamFoundationServer)。
LabVIEW和源代码控制之间的集成可通过多种方法实现。尽管VI的二进制文件格式,但应用于其他环境的相同做法可以而且应该应用于VI和其他LabVIEW文件类型。但是,这可能需要对源代码控制客户端进行一些自定义配置。
图1说明了源代码控制的签入/签出模型
图1说明了源代码控制如何改进基于团队的项目的开发过程。开发人员现在不再只是复制代码,而是使用源代码控制来检查它。这是开发人员通知SCC提供程序他们有意修改源代码的一种方式。这使其他开发人员更容易查看文件何时更新,并轻松地从存储库中检索最新版本。
SCC接口的行为和限制由管理员自行决定设置。例如,有些人可能会选择在有人表示他们选择修改时锁定代码。其他人可能允许多个用户同时签出它。如果有必要将开发人员所做的更改合并到同一段代码中,SCC可以通过允许文件的两个副本存在于存储库中来帮助合并。自动合并工具也可用于帮助解决VI的这些类型的冲突。
与LabVIEW的源代码控制集成
LabVIEW专业开发系统是一个支持微软SCC的环境,它允许通过标准API与大多数源代码控制工具集成。
在LabVIEW使用的众多第三方源码控制器中,Perforce和Subversion是热门的选择。
Perforce支持MicrosoftAPI,也可以使用LabVIEW专业版中包含的自定义命令行提供程序从LabVIEW中集成。与标准API相比,从LabVIEW中集成Perforce具有多个优势,因为它可以使用更高级的功能。
Subversion是一种流行的开源解决方案,不支持标准的MicrosoftSCCAPI。但是,可以通过Tortoise客户端进行设置,以调用LabVIEW环境,以调用图形差异和合并实用程序,这需要一些基本的配置。此外,还提供各种第三方产品来帮助进行此集成,包括:
来自JKI Software的用于LabVIEW的TortoiseSVN工具。
TSVN工具栏用于视点系统的LabVIEW
从根本上说,集成LabVIEW和源代码控制工具有两种方法:LabVIEW可以用于从环境内调用SCC功能,或者SCC工具可以调入LabVIEW以执行比较和合并等操作。
配置LabVIEW以调用MicrosoftSCCAPI
安装所选的源代码控制提供器后,可以配置LabVIEW,以允许开发人员在开发环境内使用源代码控制功能(如果它支持MicrosoftAPI)。提供这种集成的目标是开发人员可以执行常见任务,例如检入和检出文件以及查看文件的当前状态,而无需启动单独的客户端或离开LabVIEW开发环境。
一些源代码控制提供程序可能会提供开发人员仍需要进入客户端才能使用的专有或高级功能;但是,大多数情况下,他们应该能够在LabVIEW中执行这些操作。
可以通过“工具”>“源代码管理”菜单配置集成。此功能仅在LabVIEW专业开发系统中可用。任何安装在计算机上并由LabVIEW支持的源代码控制提供器都将自动填充选项对话框。
图2说明了用户在LabVIEW中可以在哪些位置实现源代码控制集成。
源代码控制可用于管理项目资源管理器中硬盘驱动器上具有相应文件的任何资源。这包括VI、文档、图像和项目文件。需求文档经常存储在源代码控制中,以便开发人员可以跟踪对文档的更改并查看修订历史记录。这对于经过认证的开发实践尤其重要,这些实践通常需要开发人员证明代码涵盖了对需求的更改。详细了解需求管理最佳做法。
如果在现有LabVIEW项目中配置了源代码控制,则将任何先前保存的VI添加到项目中都会提示用户将新文件添加到源代码控制中。此提示将仅显示在现有文件上。新VI在保存之前在磁盘上没有相应的文件;因此,不能将它们添加到源代码控制中。在开发过程中向项目添加文件会引入新的链接,并导致对项目文件的修改,必须仔细管理。
在源代码管理中管理项目文件
建议将应用程序的项目文件或*.lvproj文件存储在源代码控制存储库中。此文件包含指向项目资源管理器中物理资源的链接,这些链接使用文件位置的相对路径、特定于特定项目的设置以及虚拟项(如生成规范)。重要的是,所有开发人员都必须拥有最新版本的*.lvproj文件,以确保他们拥有所有最新的依赖项和资源。
在项目中添加或重命名文件将更改*.lvproj文件的内容,这需要将其签出并向SCC提供程序提交新的修订。由于这些更改会影响使用*.lvproj文件的所有开发人员,因此不建议在开发过程中进行任何修改。如果必须进行更改,则一次只能由一个用户进行更改,所有其他开发人员应在更改完成后立即获取此文件的最新版本。但是,当这是不可能的时,还有其他选择。
理想情况下,应用程序的框架在开发之前确定,并且所有将来的代码和功能都已存在占位符。但是,有时需要进行更改,以强制修改框架,从而强制修改*.lvproj文件的内容。这些修改可能会影响整个应用程序的链接,不应掉以轻心。建议的做法是脱机和在开发之外进行这些修改-所有文件都应签入并锁定以防止签出。确保需求文档涵盖新代码并描述添加文件的原因也很重要。
或者,许多开发人员可能会选择拥有自己的.lvproj文件副本。通常,仅当应用程序可以划分为单独的自包含部分时,才建议这样做。项目库(.lvlib)还可用于将应用程序组织成离散组件。
图形比较和合并实用程序
VI源代码的二进制性质要求使用特定的比较和合并实用程序。这些实用程序可以从开发环境中调用,也可以从命令行调用,这意味着可以从源代码控制实用程序自动调用它们。
图3显示了图形差异工具,它允许开发人员在文件的任何两个副本之间所做的所有更改之间导航。
当环境中的集成处于活动状态时,可以从项目资源管理器的右键单击菜单中选择“显示差异”。但是,许多人可能更喜欢从源代码控制客户端中调用此功能。
管理重用库
跨多个项目和应用程序的不同版本中重用代码受益于可以管理重用库及其部署的应用程序的独立开发节奏的实践。能够将这些库与它们使用的项目分离是有益的,这样它们就可以很容易地独立管理和开发。确保在维护应用程序的多个版本时可以根据需要升级或降级这些库也很重要。当必须将这些库的更改部署到应用程序的多个副本时,这一点尤其重要。
LabVIEW项目库
LabVIEW项目库可以封装应用程序的大部分。项目库文件(.lvlib)包含对一组文件的引用,因此提供名称间距并可以定义访问范围。名称间距使用项目库的名称限定文件的名称,从而防止由于调用具有相同名称的依赖项而发生的冲突(考虑多个仪器驱动程序,它们都共享一个名为initialize.vi的函数)。项目库还可用于防止直接访问私有函数,强制使用定义的API。项目库可以构建到打包项目库(.lvlibp)中,该库是一个单一文件,以不可编辑的特定于版本的格式包含所有必需的依赖项。
与LabVIEW项目库共享代码
VI包管理器
VI包管理器(VIPM)是在LabVIEW中分发和部署重用库的推荐解决方案。VI、工具和/或项目库的集合可以构建到一个称为VI包的单个文件中,然后可以在VI包管理器环境中安装、卸载和版本控制。这些包的消费者可以轻松地查看其已安装的LabVIEW副本中安装了哪些库的版本和可用版本。由于VIPM能够识别软件包的兼容性以及系统上是否安装和提供所有必需的依赖项,因此安装过程也得到了简化。
图4说明了VIP包可以封装API的依赖项,并轻松安装选项板和/或工具菜单项。
VIPM的专业版和企业版可用于高级配置管理功能。VIPM专业版可以扫描LabVIEW项目文件,以确定当前使用的复用库,并将这些库存储在配置文件中,从而轻松重现此配置。企业版可用于创建和管理私有的内部存储库,以便在大型内部网络中分发和交换软件包。
能力成熟度模型与LabVIEW集成
能力成熟度模型(称为CMM或CMMI)规定了软件开发和配置管理的最佳实践。CMM定义了持续改进和迭代开发实践的框架,并识别和确定了这些流程的五个成熟度级别。CMMI主要用于大型组织,作为识别开发实践严谨性的指标,并降低项目中的总开发时间和缺陷数量。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。