你的位置:首页 > 新闻资讯 >

软件工程迈入新阶段:可信开发才够硬核

2020-05-22      点击:

  AI时代,程序员不止是高薪职业,也可能是高危职业,除了伴随着高脱发风险外,最近,程序员吴小胖还吐槽了AI时代开发者沦为“背锅侠”的故事:

  小胖的好友老王买了辆自动驾驶汽车,本以为可以带着女生兜兜风,没想到,智能系统无止境地在线升级,生生把女生气走、把老王气晕在车里。

  故事的结局也很清奇,自动驾驶在线升级完成,可能因为太过智能或太过自信,直接带着昏睡的老王冲进了常去的理发店“植发人生”……

  出现了这样大的Bug,想必程序猿们免不了又要背锅了......

  软件开发少了可信之后…

  当然,软件安全无小事,以上情节也反应了当下人们对自动驾驶普及后的一种担忧。但其实这并非是完全畅想,以自动驾驶、车联网为代表的万物互联时代正在快速到来。那时,软件不可信带来的后果可不是像这般损失一个订单那么简单,而是对道路安全、人的安全形成前所未有的挑战。

  看到这也许有人仍然有疑问,忽略软件可信开发真的会造成那么严重性的后果?我们不妨把视角拉回到现在。今年年初,美国大众点评“Yelp”就发生了一起事件。这家全球最大的美食点评公司训练了一个神经网络去清除App上的bug,出乎开发者意料的是这个具有“极度智能”的工具,竟然把数据库中所有的数据都删除了。也许它的逻辑是:“既然让我清除程序bug,我把所有数据清除,自然就不存在bug了!”遭AI删库,显然对Yelp造成了重大损失。

  还有一件因软件开发不可信造成的更严重的事件发生在今年3月,一架埃塞俄比亚航空公司波音737 MAX 8客机意外坠毁,原因指向波音为737 MAX专门设计的防失速系统——“机动特征增强系统(MCAS)”存在明显bug。由于737 MAX的单一传感器提供的信息不准确导致飞控电脑容易发生误判使机头下推,而MCAS的预先设置,使得飞行员无法用手动方式改变这一错误。最终,埃塞俄比亚航空飞行员与MCAS经过多次“搏斗”无果,酿成灾难后果。

  所以说来,软件中一行行代码就像是高楼大厦的一砖一瓦,没有高质量的代码,可信的产品如同空中楼阁。而我们也要转变观念,追求打造可信的高质量产品,不仅仅是功能、特性的高质量,也包括产品开发到交付过程的高质量。尤其在如今软件定义一切的发展趋势下,忽略可信开发造成的影响或后果越来越大,甚至不可挽回。

  可信软件开发的关键特性

  那么,到底什么是可信软件,可信开发又有哪些特性?

  资深软件开发专家和软件质量管理专家,Agilenty Consulting Group公司CEO Bijay K.Jayaswal和Agilenty Consulting Group公司董事长Peter C. Patton合著的《可信软件设计》一书对类似的概念做出了描述,书中详细介绍了更节省成本、更快交付、更好用的综合软件开发技术——可信软件设计(DFTS),该技术可在早期解决软件质量问题,使软件质量管理目标变成预防在实施阶段产生bug,而不是在中后期发现和修复bug。

  而按照《Software Engineering》10th edition和其他相关标准的基本定义,可信(Trustworthiness)包括5个基本维度,如下图:

  Safety:系统对人和系统的环境不会造成危害的可能性。

  Reliability:系统在给定的时段内能正确提供用户希望的服务的可能性。

  Availability:系统在任何时间都能运行并提供有用服务的可能性。

  Security:系统有良好的抗攻击能力,具备抵抗入侵的可能性。

  Resilience:当出现一些干扰性事件时,系统保持其关键服务继续正常运行的可能性。

  以上5个维度,并不是孤立的,对于软件产品而言,它们往往是相辅相成的。

  所以安全性、可靠性、可用性、韧性等一系列产品功能之外的内在特征表现,意味着可信软件不仅仅是产品外在表现的高质量结果,更是产品内在实现的高质量过程,是结果和过程的双重可验证的高质量。而只有全面提升软件工程能力和实践,改变只重视功能结果、不重视代码质量的行为习惯,才有可能打造出可信的高质量产品。

  软件工程的新阶段