每隔几年就会有人对软件行业提出更严格的法规。

这篇IEEE文章最近在这个主题上引起了一些关注。


如果软件工程师编写的系统程序使公众面临实际或财务风险知道,他们知道自己的能力将受到测试,这将减少代码中的缺陷和失败,并可能在讨价还价中节省一些生命。


我对此的价值和优点表示怀疑。在我看来,这似乎是提出该建议的人的不二之选。

对我来说最重要的报价是:


考试将测试基本知识,而不是对主题的精通


,因为大的失败(例如THERAC-25)似乎是复杂的,微妙的问题,而“基础知识”将永远不足以防止这种情况。

忽略任何本地问题(例如某些司法管辖区对职称工程师的现有保护):

目标是崇高的-避免使用庸俗的/俗语1,并使那些区别更加明显购买他们的软件。严格的软件行业监管能达到其最初的目标吗?

1正是出于医疗行业的监管原意。

评论

我希望托马斯·欧文斯对此做出回应,因为我知道他有一个完美的答案。

我想听听人们在这个话题上要说的话,听起来很像是我的讨论问题,非常适合Stack Exchange Q&A格式。

坦白地说,鉴于政府在监管技术时似乎无能为力,因此我赞成通过宪法修正案来实现技术与国家的分离(另请参见SOPA)

每天变化的行业如何受到监管?

这些“足够好”的情况并没有很多,这些情况以后常常会引起错误,这些错误通常是管理/营销的错误:“ SHIP SHIP SHIP!”

#1 楼

关于软件工程师可以与医学专业人员或会计师归为同一类的观点,对他们试图解决的“问题”一无所知。在我对此发表意见之前,让我们先分解一下提出这项立法的监管机构副主席桑顿先生的一些论点。


作为医生,会计师,以及
护士执照,因此应在软件工程师,”桑顿说。
“公众需要能够依靠某种时候
选择承包商证书编写软件。”

-IEEE授权和注册副主席Mitch Thornton


表面上听起来很合理。毕竟,还有其他行业可能被认为是“成功监管”的行业。通过成功监管,我的意思是,如果您在黄页上抬头看医生,则可以肯定地确定他或她已经在认可的大学接受了彻底的教育,并通过了许多考试,并且已经完成了居留权。以下是一些“成功监管”的行业(以专业人才而言)。

医生
会计
核工程师
理发师(不是在开玩笑)

毕竟,您不希望任何人从胰腺中清除肿瘤或在镇外从事该核电站的离心机工作。为什么对软件工程师不存在类似的限制?


只有那些程序可能“危害公共健康或安全,安全,财产或经济的人”才需要被测试”,


这是一个模糊的表述,可以接受自由主义的解释和适用。我可以说苹果公司或Facebook是美国经济不可分割的一部分-我现在是否需要获得政府的特别许可才能为他们编写代码,因为如果我无能为力地关闭该网站,可能会损害美国人的利益。经济?在我的上一份工作中,我不小心关闭了一个有问题的cron作业的谷物提升机-可能危及食品供应。

我意识到我在回避这项建议的实际意图。其背后的思想是确保在您的新捷达上编写防抱死制动系统代码的人胜任并获得了适当的许可,可以为防抱死制动系统编写代码。在您的捷达(Jetta)上。

这里是问题所在:当今时代的软件工程涵盖了所有内容,您不可能针对所有学科进行测试。业务规则过于具体,各个学科之间的差异也很大。我们的假设工程师在捷达(Jetta)上为ABS系统编写代码可能正在为伊兰特(Elantra)上的ABS系统编写完全不同的内容。他必须重新获得认证吗?

如果您要对所有这些派生学科进行测试怎么办?假设一下,每个在电子商务网站上工作的程序员都被认证为具有电子商务能力的程序员。所以?这是否突然意味着这些程序员和公司实际上将进行必要的验证并建立PCI合规性?即使发生故障,故障仍然会发生。

根据IEEE副主席Mitch Thornton所说,该考试将测试基本知识,而不是对主题的掌握程度。许可和注册委员会。


这是踢脚线。缺乏基础知识永远不是问题。我的防抱死制动器没有停止工作,因为Chuck苦苦挣扎于控制结构的概念。他们之所以失败,是因为由于尾灯电气短路导致ABS关闭的故障,并且电源未正确重新布线。还是什么。

我写的胰岛素泵软件并没有停止工作,因为我缺乏基本技能。之所以停止,是因为当我的欧洲队友使用公制时,我测量胰岛素分配的方式存在一个错误,而我没有。

这是您在开发中可以考虑的,但是您永远都无法解决通过证书进行测试。

如果此“证书”生效,将会发生以下情况:事件数量将保持不变。为什么?因为它无法消除ABS或胰岛素泵故障的实际问题。

评论


+1个极好的答案。我特别喜欢:“缺乏基础知识永远不会成为问题。”

–乔纳森·汉森(Jonathan Henson)
2012年2月7日在17:58

很好的答案,但它只从程序员的角度考虑了软件工程。真正的软件工程实际上是团队的一项工作,涉及多个技能和学科,业务分析师,质量保证,项目管理等。事件很可能是由于编程欠佳,错过了需求,误解了需求,管理不善的项目导致的。和不正确的测试。测试OP是否提及其中任何内容?当然不是因为它是针对程序员的。

– Maple_shaft♦
2012年2月7日在18:05

我要补充一点,尽管我认为整个IEEE想法从一开始就是垃圾。政府要做的就是解决问题。让所有人对造成的任何损失负责。仅此一项就可以解决问题

–乔纳森·汉森(Jonathan Henson)
2012年2月7日在18:06

反对“缺乏基础知识永远不是问题。”实际上,这经常是问题所在。新程序员(或更老的程序员)多久忽略一次输入清理?案例验证?对于物理系统,我可能会阅读一个传感器。它可以打开或关闭。坏了怎么办?我的软件如何分辨?那我该怎么办?假设它是开还是关?这些类型的“基本”事情确实普遍存在争议。

–sdg
2012年2月7日在18:59

@JonathanHenson再说一遍,我认为大多数SQL注入实例都是这样-缺乏基本知识...但是总体而言不错。 +1。

–杰夫·费兰德
2012年2月7日在20:35

#2 楼

多么幸运的是,没有人死于医疗法规,没有人因为金融法规而受到欺诈的伤害,没有人由于住房法规而丧失了房屋的赎回权,没有人由于理发师法规而遭受不良理发,也没有飞机失事感谢飞机规则。

显然,规则的存在并不意味着没有缺陷或故障。相反,缺陷或故障的存在并不意味着法规可以防止这些缺陷或故障。软件工程师已经作为各个安全关键行业的成员受到了严格的监管,在这些行业之外几乎没有需求。

评论


+1表示“软件工程师已被严格监管为各自安全关键行业的成员,并且在这些行业之外几乎没有需要”

–特雷弗·博伊德·史密斯
2012年2月7日在19:24

我不喜欢这个答案的愤世嫉俗的语气。您是说无需监管,因为监管永远不会解决任何问题?

– Fred Foo
2012年2月7日在21:12

我的意思是说,超出一定的限度,很少有更多的法规解决更多的问题。在能够杀死人的机器上强制某些软件测试实践是有道理的。在学位课程结束时再进行一次基本技能认证考试只会增加官僚主义。

–卡尔·比勒费尔特(Karl Bielefeldt)
2012年2月7日在21:29

@larsmans我同意Karl的观点,如果政府正在处理导弹或认为应该执行高标准的事务,请让他们根据选择的标准聘请自己的程序员和工程师。无论如何,私营部门不应该利用公共风险来赚钱-那是法西斯主义。首先,不应允许私营企业危害公众。知道自己最需要什么的人就是冒险的人。让他们处理自己的事务。是的,我知道洛克希德·马丁公司(Lockheed-Martin)等会这样做。但是不应该允许他们这样做。

–乔纳森·汉森(Jonathan Henson)
2012年2月7日在21:50



考虑到在过去一年左右的时间内丢失了信用卡详细信息的大型公司的数量,我想说没有令人满意的自我监管。您可能会争辩说,这些系统并不是至关重要的系统-但是在发生这些事件后,对人们口袋的影响可能同样困难。

–HorusKol
2012年2月8日在1:42

#3 楼

我认为,历史已经恰当地表明,一个优秀的工匠与一个平庸的工匠之间的区别是无法用任何形式的客观手段来检验的。基础知识并不能使他们成为如何应用该基础知识的优秀程序员,智慧和经验-不能真正地客观地教授或衡量这些知识。

此外,这些测试通常最终只是几个时髦的词和具体的程序,却无法衡量任何实质性的内容。

如果软件行业想要发展某种形式的行会,那将是解决该问题的一种更好的方法。但是,集中化只能破坏卓越,没有创造力。

此外,这项措施试图防止的问题无论如何也不会被测试抓住。无论如何,我也很希望看到@ThomasOwens回答这个问题。

政府的作用,至少是从美国的意识形态来看,将是由软件公司对由缺陷造成的任何财产损失负责或不安全的软件。这将鼓励公司执行自己的标准并对此事承担个人责任。这始终是一个更好的解决方案,并且不包含中央政府超越其界限。

更新

我昨晚在啤酒或啤酒上考虑了这个问题十。

规范医学领域所做的一切就是消灭除一个之外的所有范式。
如果他们的目标是淘汰顺势疗法和自然疗法的医生,那么如果将其称为“庸医”,那么这种监管便会成功。但是,我不同意这样的事情对除立法者以外的任何人都是有利的。考虑一下这件事。它已将医疗保健成本推高至难以维持的水平,极大地提高了医学博士的责任水平,并已从市场上消除了消费者的所有选择权和自决权。在医学界,已经没有更多的思想市场了,新的治疗方法和医学思维方式现在被抑制了。此外,进入该领域的壁垒非常高,结果,我们缺乏优秀的医学博士。此外,监管机构有权控制医生的供应,以便他们进而可以控制医生的报酬价格。

我们确实从医疗法规中获得了一些收益,但是费用却太高了。

如果这样的法规得到遵守,软件工程师也会遇到同样的事情。通过了。我现在可以看到,监管机构将裁定面向对象编程是设计的唯一标准,并且不允许功能和程序程序员进行实践。然后,他们将开始告诉我们,由于它不安全,因此不允许我们管理自己的内存。然后他们将把JAVA和C#塞入我们所有的喉咙,并告诉我们必须使用它,而Oracle和Microsoft变得更胖,更快乐。将扼杀创新,并将禁止创新。微软和谷歌将制定法律,因此市场规则将倾向于自身的盈利能力和社会福利。

另外,让我提醒大家,计算机最初是业余爱好者和学术界的努力。除了80年代和90年代初的Unix战争以外,我们还拥有免费的操作系统,免费的编译器,免费的程序等等,这些很快就会结束。 Richard Stallman,Linus Torvalds和Dennis Richtie遗赠给我们的世界将逐渐消失。

总而言之,我是否厌倦了必须与“我为您设计Wordpress CMS”竞争网站(每小时25美元)还是“任何500美元的iPhone应用”?不是吗,为什么?因为我擅长于自己的工作,我想要的客户愿意为卓越付出代价。当我独立或在自己的工作地点从事项目时,我会冒着自己的头和名誉冒险的风险。无论我走到哪里,那都会跟随我。同样,大多数人都知道他们得到了所支付的东西。一个只愿意向我支付他们付给草坪人的价格的客户无论如何都要面对噩梦。如果政府确定法律结构以强迫服务提供商赔偿其损失,那么在该领域仍然有工作的不良程序员将很少。

顺便说一下,我们仍然有不良医生,唯一的不同是,几乎没有什么力量可以将它们从市场中删除。如果他们必须对自己的行为负责,那么他们将不得不倒闭,然后再有机会对客户造成无能的破坏。

评论


尽管我同意您的发言的总旨,但我发现其中最有趣的部分是第一句话。您将软件开发描述为一种技巧,这正是问题所在。一个人不建造吊桥;一位工程师设计了一座吊桥以确保其效力和安全性。无论您给他们什么头衔,软件工程师的行为都仍然比工程师更像工匠。

–埃里克·利珀特
2012年2月7日在19:14

@乔纳森·亨森:他们一般不会。许多商店在Joel测试中得分为零。 (joelonsoftware.com/articles/fog0000000043.html)至于是否应该这样做,这是一项商业决定,而不是一项道德决定。所有这些东西都是花钱的:很多钱。如果您正在构建飞机控制系统,从长远来看,承担这些成本是有利可图的。如果您要构建一个Facebook游戏,也许不是。

–埃里克·利珀特
2012年2月7日在22:35

不,建筑师图章和PE图章一样好。我当然会说,就像架构师一样,我们需要结合许多目前称为工程学科的内容。尽管仍然认为建筑是一种手工艺。无论如何,工程技术也可能是一种技巧,所以我可能只是一言不发。

–乔纳森·汉森(Jonathan Henson)
2012年2月8日在3:40

@Andy,我想我们应该要求堆栈交换将本网站的标题更改为softwareengineers.stackexchange.com :)

–乔纳森·汉森(Jonathan Henson)
2012年2月8日在20:04

@JonathanHenson得罪了?没关系,不用担心! :)我应该更加清楚地表明,我发布该链接只是因为它与您的评论很奇怪。

– yannis
2012年2月9日在4:07



#4 楼

硅谷新闻-2015年6月31日
恐怖:受害者:未经认证的程序员导致程序中止

“我再也无法运行了”。警方正在调查。

罪犯:H. Acker Jr.博士的执照已被撤销,原因是指针使用不正确,并试图从系统文件中进行读取

主张说将会有

公告:1975年通过Cobol认证的程序员应该在2025年之前重新认证。

IEEE确认的认证自此未更改。

广告:Magic Knowledge Stuffers,Inc.保证获得认证

21天即可自学编程。


评论


我试图确定这是一个有见地的答案还是一个幽默的评论。 (也许都?)

–林登·怀特(Lyndon White)
2012年2月8日13:37

@Oxinabox 6月31日约会很幽默

– gna
2012年2月8日15:15

“在10天内自学编程!”呵呵

–BЈовић
2013年12月9日下午6:58

#5 楼

有几种不同的方法可以将法规应用于任何专业-定义明确的知识体系,道德规范,教育计划的认证,证书和许可以及支持专业发展以及专业的其他方面的专业协会。职业。软件工程具有专业的大多数特征。

我喜欢将其视为从软件工程知识体系(SWEBOK)和软件工程道德与专业实践准则开始。尽管对它们的普遍接受仍然相当有限,但我认为它们可以作为确定某些人的身份的良好基础,这些人将自己标识为软件工程师,应该了解这些人以及他们应如何以专业的身份行事。这并不意味着这些是硬性规定,而是这些文档可以指导专业软件工程师确定与他们可能被要求从事的工作通常相关的内容。 SWEBOK会不时进行修订,以确保与时俱进。

下一个特点是对教育计划的认可。在美国,软件工程程序的认证由ABET处理。他们还认可计算机科学,信息技术,计算机工程和其他与计算相关的专业。 ABET在其网站上发布了他们对认可程序的要求-软件工程被视为工程程序。认证的目的是确保不同工程专业的毕业生之间的一致性,至少在课堂上讲授的主题方面。它没有说明教育的质量。

毕业后,将使用认证和许可来根据标准知识体系评估在课堂上(在某些情况下是在工作中)获得的知识。尽管获得认证的学校都有明确的教材要教,但尚无法衡量课程完成后教材的学习质量以及学生的学习量。认证和许可提供了做到这一点的方法-每个人都参加相同的考试,并证明了该专业扎根的各种知识体系中的知识。在软件工程中,IEEE提供的植根于SWEBOK的认证-认证软件开发面向老年人和应届毕业生的助理,以及具有行业经验的认证的软件开发专业人员。为了使这些增值,必须接受SWEBOK作为软件工程是什么的良好定义。

最后,专业协会维护该专业的指导文件,为交流的会议和出版物提供便利知识和思想,缩小学术界与行业之间的鸿沟,等等。两个主要协会是IEEE计算机协会和ACM,但是世界上还有其他协会。这些将所有内容打包成一个不错的小包装,并有助于将信息传递给合适的人。

在这里,还有其他问题要问。软件开发是否是工程学科?认证或许可给软件工程师增加任何价值吗?认证有用吗?

我认为并非所有软件开发都需要严格的工程学科。这并不是说对建筑软件的科学和工程学进行的经验性科学研究并不能对所有人都有帮助-确实可以。但是,开发最新的视频游戏,为起搏器开发嵌入式软件或建造下一个航天器之间存在很大的差异。重点在所有这些上都不相同-三个中的两个值得熟练的工程师注意。另一个可以从工程实践中学习,但不需要依靠它们就可以成功完成项目。

认证和许可需要公认的知识体系。 SWEBOK是一个很好的文档,提供了坚实的基础,但并未被广泛接受。除非您可以基于从业人员可以接受的具体内容来进行学术课程和认证/执照考试,否则真的没有意义。如果SWEBOK或替代文件被广泛接受(至少在要求严格工程的领域中),则可以使用认证或许可考试来衡量对所需知识的理解。

认证是一个明显的问题-这是对一本书的测试。有些人擅长阅读,学习,记忆和参加考试。但是,这并不意味着他们是一名优秀的工程师。人们一直无时无刻不在溜溜。认证或许可证只是一个步骤。在工作中,必须由其他经验丰富的工程师进行培训和指导,以培养好的从业人员。此外,阻止人们在关键环境中进行练习的能力还可以帮助减轻对社会和企业的风险。

史蒂夫·麦康奈尔(Steve McConnell)的《专业软件》是一本对此进行了相当深入讨论的好书。开发:进度更短,产品质量更高,项目更成功,职业生涯更强。

评论


我有点不舒服,所以如果我错过了任何东西或没有任何意义的东西,请戳我,我会解决的。多谢你们。

–托马斯·欧文斯♦
2012年2月7日19:41

没错,“三​​分之二值得熟练工程师的注意”,航天器制造起来并不难

–zzzzBov
2012年2月7日在21:06

+1感谢您增加对此事的投入。希望您能好起来。

–乔纳森·汉森(Jonathan Henson)
2012年2月7日在22:58

#6 楼

如果政府法规获得通过,美国软件行业将大幅收缩,因为与满足这些法规相关的成本将高于初创企业和小型企业所能承受的成本。

与软件相关的稀缺性和成本法学学位或医学博士学位将在我们的行业中或多或少变得可见。当替代方案是每个人都可能建立下一个Facebook时,这不是很好。

人们会犯错误,没有任何法规可以防止灾难的发生。考虑一下NASA,它对人类已知的软件开发具有最严格的要求。他们还有软件错误吗? (是的,是的,很多时候,是的!)

市场对这些问题的解决比法规要好得多。创建导致问题的软件的公司对受伤的人员负责。我们其余的人不必为他们的错误付出代价。

评论


如果这些法规生效,那么可能还会没有一家现有软件公司的列表,这是一个很好的补充。微软和Facebook是一个良好的开端,因为认证可能会要求一个学位(如果不是以一个职业开始,几乎所有以测试开始的职业都会增加一个学位要求)。

–psr
2012年2月7日在18:59



IMO比较医生/律师与软件工程的@maple_shaft是无效的。这些字段太不同而无法比较(请参阅Jarrod Nettles的答案以了解为什么无法将软件工程与医生/律师进行比较)。

–特雷弗·博伊德·史密斯
2012年2月7日在19:12

@maple_shaft-您的意思是认证将改善工程质量。我很怀疑那是结果。我认为花在学习大多数测试上的时间不是花在学习更好的工程上的时间。

–psr
2012年2月7日在19:22

我相信,每个人都在做出未经证实的假设,即授予医生和律师执照实际上会改善医生和律师的素质。我对该假设非常怀疑。许可所确保的一切就是,医生和律师可以收取高昂的费用,而且任何人都无法做到这一点。在这方面,我全都为许可软件工程师服务。它不会提高软件的质量,但是肯定会使我们许多软件开发人员变得富有。哈哈,当时政府逮捕了这名高中生,他们未经许可擅自使用软件。

–扣篮
2012年2月7日在20:28



@maple_shaft完全取决于失败的性质-Facebook不响应并不重要(不影响投资者的资金)-Facebook向所有互联网用户提供您的所有个人详细信息和私人消息是另一回事。此外-带有信用卡详细信息的应用程序/游戏(例如在Facebook上)意外发布了信用卡详细信息将产生严重的影响。

–HorusKol
2012年2月8日在1:50

#7 楼

1999年,ACM在很大程度上退出IEEE SWEBOK工作时发表了许可声明。在查看了公开发布的SWEBOK文档和ACM声明之后,我支持ACM的意见。

浏览本文时,要求具有4-6年经验的人参加考试,以测试基本知识知识。那太荒谬了,应该在门外被嘲笑。

#8 楼

设备的软件组件是实现细节。例如,在控制系统行业中,所有安全设备以前都是硬接线的,人们并不信任软件。但是,我们现在看到了基于软件的安全设备,例如安全继电器和安全PLC。这些是允许的,因为它们仍必须满足安全设备的行业法规(取决于安全类别)。因此,在某些情况下,设备需要冗余处理器以及由两个不同的团队编写的冗余代码,等等。

要出售给公众使用,必须满足安全准则的产品。这些规则不会更改,因为产品包含软件。确保产品符合所有法规标准是工程师的职责,并且如果产品包含软件,则他们必须对软件进行审查并胜任该领域的工作。如果不是,那么他们(或他们的公司)如果批准了该设计,就会承担责任,事实证明这是错误的。

您并不需要因为某些产品需要而对所有程序员进行监管。满足更严格的要求。在此类产品涉及软件的情况下,您需要完善的工程学科来可靠地确定软件组件是否符合要求。如果有的话,那就是IEEE的意思:软件工程这个相对年轻的领域需要发展到其他工程学科的可靠性和信任级别。

它与“编程”完全无关。与“工程”有关。

当然,这使我们回到了开发人员与工程师之间的有争议的问题。通常,这是两个经常重叠的不同角色。开发人员部分意味着您要制作软件。该角色的工程部分意味着,如果对设计加盖印记,则您将对公共安全负责。你可以成为一个没有另一个的人。

评论


+1恕我直言,您真正要暗示的是法规必须在产品上,而不是工程师上。例如,火灾和入侵报警系统所需的法规(批准)确保软件能够正常工作,而不是软件编写者的能力。 (许多规定看上去与完全由电子电路制成的系统相同。)

– jwernerny
2012年2月7日在21:13

#9 楼

软件已经在飞机行业受到严格的监管。请参阅DO-178B。

我确定行业的其他子行业都有其规范。

如今,“软件”涵盖了很多内容。我认为拥有任何强制性的无所不包的法规是荒谬的。

#10 楼

最好通过质量保证流程的监管来完成软件行业的监管。

这已经完成了-大型软件公司拥有大量的测试人员,QA管理人员,自动化测试套件,代码审查流程,测试流程,等等。有些公司的全部目的是对其他公司进行软件质量审核。标准组织有质量保证和质量保证审核的指南。

在公司内部,软件工程师对其工作质量负责。但是,他们的制衡是公司的质量流程。

评论


这正是我的意见。航空业对编程质量控制和测试有严格的规定。公司需要审计其信息资产并实施更多的测试和审查。我认为这是软件的黑暗日子,因为许多人仍然因为不做自己认为正确的事情而偷工减料,而且开发人员本身还不足以改变行业。

– Tjaart
2012年2月8日在12:21

重点-运行设备的软件与工业工程一样,是公司对良好和安全工程的责任。

–贾罗德荨麻
2012年2月9日在17:52

#11 楼

与解决“软件相关问题”的大多数现代尝试相同。那些试图立法的人对问题的根本过程一无所知。如果在开发安全关键软件时遵循规定的过程(当然是意图),那么对于飞机,医疗设备的核电站而言,一个错误永远不会导致故障。整个算法可能会错误实施,而不会受到任何损害。

FDA和FTA都需要进行风险分析,并以此为缓解策略。后者通常是瑞士奶酪策略,在这种策略中,人们接受任何缓解措施都是有缺陷的,因此对同一风险采取了多种缓解措施(一种缓解措施也可以应用于多种风险),每种缓解措施就像是一块瑞士奶酪,您可以浏览一下一个,也许两片放在一起,但是放足够多的片,那就不可能了。即使缓解措施得到完美实施,也不会导致100%安全的设备。如果风险分析不正确,将没有人想到(Y2K)。

您可以对工程师进行全部测试,甚至可以对主题进行测试,并且要求非常高的水平,但这会重要。大多数安全关键错误是集成错误。它们不是一个Mans代码中的错误,而是由于两个软件系统的软件和硬件之间的未对准或者是由于alpha粒子将程序计数器从其正确位置中弹出而引起的。

具有高度经验和能力的开发人员的安全关键系统,他们将通过其领域中的任何明智的测试。我从未参加过没有发生安全关键错误的项目。 (幸运的是,我从未去过该系统曾经伤害过任何人的系统)

评论


+1-表示:“大多数安全关键错误是集成错误。”实际上,在我们经过的所有过程中,几乎从来没有编码错误。 99.98%的时间是不同模块和设备之间关于应如何工作的理解问题。

–扣篮
2012年2月9日在15:43

@Dunk谢谢,这实际上是来自Levison的qoute。我本打算在文本中包含一个事实,但似乎我忘记了:)

–Rune FS
2012年2月9日在17:18



#12 楼

尽管有悠久的实践和传统,但几乎在所有行业中,甚至在医疗行业中,都存在着永远无法完全消灭的沙丁鱼和庸医的习惯。

虽然这是抢地,但我不确定IT的所有事物都是黑暗的可怕霸主IT正在以无与伦比的方式绘制他对软件开发的不受约束的控制和调节。如果您实际上是在谈论IEEE,那么它们当然具有法规方面的内容,但是符合IEEE标准的意愿或多或少是随意的,并非出于枪口。他们正在努力制定通用的行业标准,以使我们所有人都使用相同的语言,并全面提高效率。

他们制定的其他标准有助于使通用做法合法化并为软件开发奠定基础最终成为更具纪律性的工程领域,与机械工程或化学工程不同。当软件越来越接近这个目标时,它可能永远不会被完全接受为工程学科。

核心问题是软件开发人员可能会通过编写漂亮的桌面小部件来做任何事情,实施导弹制导系统。在一个方面,错误的严重性和后果要比另一个严重得多,因此,需要严格管制的工程学科来合理,安全和有效地进行处理。这很像错误地设计了桥并导致其崩溃的错误严重性。桥梁的设计师必须遵守我的工程标准以确保质量。

评论


通常,这样的规定也是法律要求。例如,土木工程需要P.E.

– Paul Nathan
2012年2月7日在17:19

@PaulNathan好点,这就是为什么自然发展为普遍接受的学科的原因是自律(例如MPAA)并最终导致受到法律的管制(州议会,FCC等)。

– Maple_shaft♦
2012年2月7日在17:25

我不认为软件开发已经准备好进行自我调节,甚至接近自我调节。坦率地说,“真正的工程师”具有“真正的素质”的想法对我来说是个玩笑。航天飞机爆炸了,火箭着火了,桥梁已经倒下,建筑物倒塌了……等等。尝试从上方施加质量是很好的,但是,哈哈。

– Paul Nathan
2012年2月7日在17:31

将机械工程与软件工程进行比较,使我想知道现实世界中的工程模拟对现代操作系统而言将是什么。

– FrustratedWithFormsDesigner
2012年2月7日在17:31

@maple_shaft-核心问题将是您不能使用Linux / BSD / grep / vi / Firefox等,因为它们不是由官方SE编写的。在VB中拥有MSCE证书的人会没事的。

–马丁·贝克特(Martin Beckett)
2012年2月7日在20:56

#13 楼

我不会称其为更严格的监管,而是进入壁垒。在这方面,我认为是值得的。为了提高质量,这值得商bat。

目前,任何John / Jane Doe都可以编写程序。没有进入障碍。拿起几本有关脚本和Web技术的书,然后开始学习,或者更糟的是,开始使用Google搜索以了解如何“做到”。

当我们集体决定也许是时候增加准入门槛,保持行业更高的标准,从黑客/工匠到工程师的演变时,那种规矩我就是请继续。

今天有太多不合格的编程人员。无论他们是否在关键系统上工作,他们仍在生产代码,仍在生产泥浆大球。

在这方面,自我调节或更恰当地设置进入壁垒是一件好事。因为我们说的是,嘿,您不能只是走在街上自称软件工程师。实际上,您必须阐明一定的技能水平。

降级技巧不只是测试或获得“荣誉徽章”。测试只是一种验证。真正的验证是学校,实习,学徒制,大四学生的指导,练习,这都是其中的一部分。

我可以看到IEEE试图实现的目标,但是目前这是徒劳的。行业瞬息万变,对将产品推向市场的需求太多,“黑客”的心态等等。法规必须完全来自内部。

评论


我给出+1,因为应该有某种方法可以将即兴演奏排除在某些系统之外。但是,我给出-1是因为当今大多数软件都可以由黑客充分开发,并且阻止他们能够提供该服务以降低成本是违背公共利益的。同样,律师和医生也是如此。他们所做的90%的工作可以非常经济有效地处理,就像资格较低的人一样能胜任。但是,根据当今的法律,他们可以随意向公众行刺。

–扣篮
2012年2月9日在15:38



在招聘过程中不应该评估技能。噢,等等,HR会根据纸质证书聘用人员(这些证书不会显示软件开发中的适用知识),而HR人员对开发软件的需求/要求一无所知。双重失败...

–伊文·普莱斯
2012年11月27日23:19

#14 楼

我还没有读过这篇文章,但是如果问题是关于软件行业法规是否可以使人类受益,我认为这取决于具体情况:


整个行业涵盖了各种各样的行业域,其中一些对生命至关重要(例如,控制医疗设备中的辐射剂量),而某些则不是(例如,“您是哪个木偶?” Facebook应用程序)。对于风险很低的应用程序,我看不出有任何法规监管的理由。
不应该从法律法规开始。相反,应该从针对开发人员的认证计划开始。仅当认证计划产生可衡量的收益时,才存在法律法规的问题。
即使认证计划产生可衡量的结果,业界也很可能出于严格的商业原因标准化要求此认证,而我们不会需要法律法规。 (这就是为什么存在像MCSE这样的代表团的原因-公司更愿意为受过MCSE培训的领域聘用MCSE。)
话虽如此,仍然存在一些在商业上会造成危害的领域(通常这些都是负面的)外部性,有时它们是某些机构的市场力量的结果)。例如,一个地区可能只有一家当地医院;在这种情况下,后端软件的质量可以对患者所接受的护理水平产生巨大的影响,但对患者选择的医院所起的作用并没有太大的影响。这样,医院就不一定有太多的业务案例来投资更高质量的开发商。在这种情况下,可能会有一个公共卫生案例来规范允许医院雇用的开发商。

恕我直言。

#15 楼

我必须回答这个问题...

从@JonathanHenson所说的和@gnat的条目开始,我说的还可以,有钱的人可以买得到认证的东西,人或国家没有钱就不能支付许可证费用(对于经认证的东西来说就太多了),所以如果付诸实践,仍然会有叛徒​​。即使关闭了传统的(而不是传统的)交付方式,人们仍然会找到向感兴趣的用户交付软件的方法。即使这意味着要开发另一个HTTP协议,甚至是替代性的整个网络堆栈,也只专注于使连接不可检测(请参见最后一段,对于可能这样做的人)。

此外,由于世界变得越来越贫穷,所以付钱的想法正处于危险之中,因此越来越多的人花在付钱上的钱越来越少,甚至有些国家仅使用FOSS软件,而没有任何认证(我想到了巴西和印度,但肯定还有其他国家,其中一些国家正在变得非常大。他们使用的是未知的程序员制作的未经认证的软件,而这些程序员的技能是未知的。

即使有某种类型的认证,认证也只能证明知识,而不是道德,只是认为有些医生的确会使用未经授权从他人身上取下的器官,因此也会有经过认证的程序员,他们没有道德规范,有意或无意地编写草率的代码。在大多数FOSS项目中,大多数潜在的不熟练的程序员也会审查其他人的代码并尝试查找错误,从而使结对编程的工作量很少。

最后,您对黑客小组有何看法(不是黑帽黑客团体,而是白帽或灰帽团体),他们对安全性了解更多,并且开发安全软件的方式只能匹配某些政府部门的最专业的程序员。