假如 AI 时代少了软件可信,我们将面临什么?
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个维度,并不是孤立的,对于软件产品而言,它们往往是相辅相成的。
所以安全性、可靠性、可用性、韧性等一系列产品功能之外的内在特征表现,意味着可信软件不仅仅是产品外在表现的高质量结果,更是产品内在实现的高质量过程,是结果和过程的双重可验证的高质量。而只有全面提升软件工程能力和实践,改变只重视功能结果、不重视代码质量的行为习惯,才有可能打造出可信的高质量产品。
软件工程的新阶段
事实上,软件工程发展到今天,为社会经济发展做出了巨大贡献,它赋予了各行各业更强的产品创新能力、产品设计能力以及产品制造能力。面向AI时代,软件发挥的作用更加重要,从消费互联网到产业互联网,人们对软件工程提出更高的要求,即软件产品如何做到可信赖?
从软件工程的发展历程来看,可信这一问题实际上是缺失的。例如第一阶段的软件开发萌芽期,当时的主旋律是借鉴硬件制造,管理软件开发过程中的偏差,重点解决的是软件开发的质量、可控、有序的问题,包括CMM、面向对象、瀑布开发等;第二阶段,随着敏捷及DevOps等理念的出现,更注重解决软件开发的效率和速度问题。
所以,每个阶段的软件工程都为满足时代需求有着自身的核心关注点。而当下,这个关注点转移到了软件产品的质量和是否可信上,尤其随着AI时代的来临,它成为软件开发者面临的一个新考验。
在软件可信开发方面,不得不提一个关键角色——华为。从去年开始,从很多公共的渠道,业内对于华为在内部启动的软件工程变革已经有所耳闻。
今年年初,华为创始人任正非签发的总裁办2019一号文正式拉开了全面提升软件工程能力与实践、打造可信的高质量产品的序幕。为此,华为还宣布投入20亿美元,计划用5年时间,在ICT基础设施领域实现为客户打造可信的高质量产品的目标。
到今天,华为已启动从上到下的软件工程变革,包括从可信的产品定义和路标、可信设计、可信代码、可信软件工程能力(构建,发布,追溯),到可信测试、可信运维、可信Build-in流程、文化等全方面的可信软件产品体系构建甚至重构。
站在局外人的角度,通常认为华为的软件工程已经做得相当不错了,但是为什么还要进行如此大规模的战略投资?特别作为广大开发者中的一员,又如何站在华为的平台之上,加入这一场关于软件可信开发的变革步伐中来?
万众瞩目的2019华为全联接大会即将在9月18日-9月20日上海世博中心召开,期待加入20日的开发者专场,一起聆听“华为云DevCloud:AI与可信,软件开发的新思考”。您将获得如何在华为云DevCloud上进行可信开发的制胜秘笈。此外,还有人工智能、深度学习、微服务等多种开发领域的热点议题。