版本控制问题仍然是一个真正的问题。当然,控制系统集成商试图管理与项目相关的所有内容,但事情迟早会失控,他们最终会花费大量时间寻找、恢复或重新创造已经完成的工作。好消息是,已经存在许多经过验证和测试的工具,可以很容易地使这些问题成为过去。
首先,让我们澄清一些事情。本文将重点介绍配置管理;版本控制只是整个方案的一部分。配置管理实际上是关于两件事:管理变更和提高信息的可靠性。有了一个好的配置管理系统,就应该有一个完整的图景,包括什么发生了变化、变化的原因以及谁执行了变化。这里的图从自顶向下和自底向上的视图描述了这个级别的可跟踪性。
配置管理系统有两个组成部分:版本控制和任务/问题管理。在我们讨论这些之前,首先要注意的是,第一个需求是组织所有的项目信息,否则很容易变成“垃圾输入和垃圾输出”的情况。
版本控制
如果一个系统集成商习惯于手动操作并使用无数前缀保存文件和其他信息,那么使用版本控制系统的术语和方法可能会令人生畏。对于系统集成商来说,逐步引入这些概念是一个好主意,这样它们就不会被淹没。
在第一阶段,他们可以引入版本控制作为备份系统。这个阶段的目标是提供一种标准的方法来存储版本控制下的所有项目数据,并引入版本控制范例。在此阶段,版本控制主要用于同步和备份功能,以及将任何文件回滚到以前的已知状态的功能。在版本控制术语中,我们主要使用提交和推/拉场景。
这为讨论版本控制的工具部分提供了一个很好的过渡。这里有很多选择(Git那SVN.那TFS.等)。最棒的是,这些选项中的大多数都是开源和免费的。在软件开发领域,Git是目前最流行的版本控制系统。这是有原因的,因为它有一个很棒的特性集,可以使开发人员的生活非常容易。你可以参考Git文档,但这里是它如何工作的概述:每个用户在他们的本地机器上克隆项目存储库。它们对本地副本进行更改,然后先在本地提交(Git会跟踪所有提交)。一旦用户对所做的所有更改有信心,他们就可以将更改推到服务器,以便其他人可以提取这些更改。
由于“本地提交”部分,Git是一种分布式版本控制系统。大多数Git操作都是本地的(因此非常快),它保持整个历史链是本地的,所以每个人都有历史和最新数据的完整副本。但是,如果要处理大型存储库和二进制文件,分布式系统也不是没有缺点的。换句话说,将所有历史保留在本地很容易失控。
在这种情况下,集中式版本控制系统(如SVN或TFS)可能更适合。主要区别是大多数操作都是遥控器。当您提交时,您将直接向服务器发送文件,因此没有“本地提交”,只有服务器保持整个历史记录。它还允许待检查的存储库的一部分,如果您只想仅在一小部分上工作,请更快地使初始克隆或结账更快。
通过添加windows shell集成工具(比如玳瑁或TortoiseGit),右键单击文件/文件夹即可进行所有操作。有几种简单的方法可以设置服务器端,或者也可以使用云托管解决方案来帮助简化工作。
选择工具时需要考虑的另一件事是,尽管大多数文本内容(甚至Microsoft Word和Excel)都具有“差异”和查看更改的功能,但该功能不适用于专有的PLC、SCADA二进制文件。然而,有一些专门的版本控制工具(如versiondog)提供一些这些功能。其他工具的解决方法是使用PLC比较工具手动“差异”这两个版本。
此时,保存文件的备份似乎有很多工作要做。如果我们所寻找的只是备份类型的功能,那么像SharePoint、OneDrive或Dropbox这样的工具就足够了,尤其是当内容主要是文档的时候。但是请记住:目标是同时具有自顶向下和自底向上的可见性,这是真正的版本控制解决方案将帮助实现的目标。
任务/问题管理
在讨论完工具之后,让我们回到实现计划的第二阶段。在这里,我们将介绍任务/问题管理。与版本控制一样,有许多可用的选择(JIRA那TFS.那Redmine等)。需要寻找的关键特性是版本控制集成以及管理任务和问题的灵活性。JIRA和TFS都是非常流行和广泛使用的。在此阶段,重点是将工作划分为任务,分配给用户并进行跟踪。
一旦易于管理任务并且内容轻松版本化,这里就是一些可以在第三和最终阶段到位的一些高级概念。在版本控制侧,开始使用分支和标记的概念来创建开发沙箱和标记版本。在任务管理方面,开始将任务与提交联系起来,因此它们很容易追踪为每个任务进行了哪些更改。
在此阶段结束时,每个人都应该对过程和内容进行良好的可视性和控制,这允许对整个项目进行更大更高效的跟踪。如果在此过程中汲取更多效率是重要的,现在将是开始浏览敏捷项目管理技术的好时机。好消息是,通过上述实施,员工将已经完成了应用这些技术。
想了解更多信息,你可以找到关于配置管理的完整系列从控制系统集成商协会(CSIA)。
Andy Robinson和Nishant Saini都是信息解决方案顾问热心的解决方案公司。的注册会员控制系统集成商协会(相)。有关Avid解决方案的更多信息,请访问工业自动化交换。