控制系统编程需要协作

工程和IT洞察力:编程和其他相关的设计、安装、调试和维护任务都需要与其他团队成员、最终用户和管理人员进行重要的交互。“与他人合作良好”是控制系统编程中要记住的一个重要习惯。

文/丹尼斯·布兰德 2014年11月20日

编程通常被视为一项孤独的运动,程序员们独自工作,喝着大量含咖啡因的苏打水和高糖零食。事实是,编程和其他相关的设计、安装、调试和维护任务都需要与其他团队成员、最终用户和管理人员进行重要的交互。在幼儿园,这被定义为“与他人合作良好”,这是控制系统编程中要记住的一个重要习惯。

与他人合作的最重要的方法之一就是建立伙伴关系。作家有编辑来纠正他们的语法错误,演员有教练和导演来提高他们的表演技巧,运动员有训练师和教练来提高他们的表现,控制系统程序员也需要朋友来检查他们的工作。多项研究表明,减少设计和编码错误的最有效方法之一是在提交任何工作之前执行审查的伙伴系统。研究人员震惊地发现,向其他人解释设计和代码的简单习惯,即使那个人不理解细节,也可以消除高达80%的设计和代码错误。通过解释设计和代码,程序员被迫以不同于单独设计和编写时的方式来看待它们。隐藏的假设变得明显,因为程序员被迫解释为什么要做某事,而不仅仅是如何做。要想成为一名更好的设计师和程序员,你需要与一名或一群其他设计师和程序员建立伙伴关系。有一两个伙伴并不能消除所有的错误,但它会显著降低程序中的错误率。

优秀的程序员和设计师的另一个习惯是对在单元设计和编码期间开发和使用的每个工件使用版本控制和源代码控制系统(SCCS)。对于每个项目的所有最终代码和共享代码,应该始终使用SCCS。它允许用户签出和签入代码、文档、图表和所有其他设计工件。优秀的程序员和设计师也会在批准或需要共享SCCS之前使用SCCS进行初步工作,通常称为单元开发和单元测试阶段。在单元设计中使用SCCS的主要原因是,它允许设计人员和编码人员试验不同的代码结构和不同的设计。如果不同的工作不正确,SCCS提供回滚到以前的设计或以前的代码的能力。此外,SCCS通常提供一种方法来显示版本之间的差异,这在代码伙伴审查工作时非常有用。在每天结束的时候或者有重大变化的时候签入工作。如果出现问题,差异报告将立即指出差异。

清理完毕后再做

与他人良好合作也意味着清理。大多数开发人员会为代码的构建和测试创建“脚手架”。类似于构建中的脚手架,它支持代码,直到它可以与系统的其余部分集成。脚手架也应该在SCCS中维护,但是应该在最终的单元测试和集成之前删除与生产代码的挂钩。一些较难发现的问题是由于测试和脚手架代码留在生产系统中,并且由于与系统其他部分的意外交互而触发这些代码。就像在幼儿园一样,记得打扫卫生。直到清理工作完成,工作才会结束。

与他人良好合作的最后一个好习惯是打开正在使用的工具上可用的所有错误消息和诊断。编译器、代码检查器和设计检查器试图告诉程序员一些事情,而程序员需要倾听。程序员发现简单的问题比让代码伙伴在审查中发现问题要好得多,或者更糟的是,让最终用户在操作过程中发现问题。

最后一点,在每本设计和代码书中都有提及,但经常被遗忘,那就是程序员无法通过调试达到正确性。如果你调试一个单元的时间比设计或编写它的时间还多,那就停下来吧。与编码伙伴一起检查设计。如果设计正确,那么调试时就成了福尔摩斯。尝试确定如何创建错误条件。这侧重于可能出现问题的地方,而不是试图调试整个程序。朋友可以充当华生医生,解释什么是不可能的,剩下的,无论多么不可能,一定是错误的根源。编程伙伴经常会注意到程序员看不到的小错误,比如未初始化变量或使用错误的变量,这可能会让人感到惊讶,因为程序员“知道应该在那里”。

优秀的程序员和设计师不会独自工作;他们利用朋友和同事形成伙伴关系。他们让他们的编程伙伴来检查他们的工作,甚至是他们的单元设计和代码,因为向他们的伙伴解释他们的决定的简单行为揭示了很大一部分错误。优秀的程序员和设计师通过使用源代码控制和版本控制来了解更改的内容和需要检查的内容,从而使他们的伙伴的工作更轻松,并且当他们的代码和设计与伙伴的代码和设计集成时,他们会清理测试和脚手架代码以减少出错的机会。与他人良好合作不仅仅是幼儿园的测试,而是成为一名优秀程序员的习惯。

——Dennis Brandl是北卡罗来纳州卡里市BR&L咨询公司的总裁,他的公司专注于制造业IT。编辑:Mark T. Hoske,内容经理,控制工程mhoske@cfemedia.com

在线额外

这个发布的版本包含比印刷/数字版本的更多信息控制工程

www.globalelove.com,搜索Brandl了解更多相关主题。

或者查看下面链接的文章。

看到其他制造IT文章