400-8018-418
园区介绍 园区新闻 园区活动 联系我们
开云(中国)Kaiyun·官方网站 园区活动 深度 | 居德华:立足可信,全面提升软件质量工程 详情
深度 | 居德华:立足可信,全面提升软件质量工程
时间:2021-04-09 10:20:58

2020-11-20

编者按:

2020年10月23日,第十一届中国国际软件质量工程(iSQE)峰会在重庆完美落幕,大会中嘉宾们从不同的角度阐释了软件质量工程产业相关问题。本次峰会汇聚了国内外顶级软件质量保证领域的权威学者以及企业高管,着眼于对软件保障的方法技术和实践,搭建了一个集聚影响力的交流互动平台。开云(中国)Kaiyun·官方网站作为活动的承办方,将会陆续整理推出嘉宾们的精彩发言。此次分享的是华东理工大学教授居德华的主题演讲,他在演讲中通过对新型知识库的演示浏览,让听众扼要了解新技术传播这一领域的已有进展 ,也结合本次大会主题,对与需求和测试相关的内容作了重点推介,包括社会技术系统的需求工程方法、威胁建模、红队策略、模糊测试、渗透测试、AI支持可信开发等。

嘉宾简介

居德华,华东理工大学计算机科学、工商经济学院教授,中科院软件所兼职研究博士生导师,共创美国软件企业ASTI,主要研究方向:软件工程,国家突出贡献专家,国务院政府特殊津贴,国家科技进步二等奖、上海市科技进步一等奖(第一完成人),IEEE和ACM高级会员,IEEE Software杂志顾问( 1996-2007 ), CSTQB专家组成员,世界软件工程大会ICSE2006组织委员会主席,第5届世界软件质量大会5WCSQ 2011主席和PC主席,曾任中国软件过程改进分会副会长,共发表技术论文和技术咨询报告240份,众多国际国内学术会议组织者和PC成员,包括会议主持、主旨演讲和论文宣读,2013-2019为华为集团软件工程咨询顾问。

嘉宾按

谢谢大家,今天有这样一个机会,我很高兴。这个图像是我的数字孪生,一个数字双胞胎的仿真。有人称我是个“疯老头”,已经退休20年,还在不断学习和工作。我本来今年决定退役了,但是看到CSTQB给我发的信息,是发展和变化的重庆,吸引我再鼓起勇气,跑到这个舞台上来做最后一点服务。

图片

我没有太多内容可以贡献,只是汇报一下我去年做的工作,同时也推动一下如何能立足可信全面提升软件质量工程。我先讲讲这件事的背景,在座的可能知道,2019年初华为创始人任正非发了1号公开电子邮件,给华为全体职工提出下一个目标,把可信作为华为发展的第一优先级,为什么提出这个问题?这个背景大家都很清楚,华为面临非常激烈的国际竞争,深受美国等西方世界的打压。任正非提出发展可信产品,可信的开发工程,让产品是可信的,服务是可信的,让顾客用户能够充分相信你,包括政府也相信,这将成为第一优先级。

什么叫可信呢?任正非提出了四个方面:安全性、韧性、隐私性、可用性和可靠性。可信从质量工程角度,是往高的提升了。我们今天讨论软件质量工程,推动可信可谓非常重要。

这也让我回想起同样一件事,2002年微软比尔盖茨也发出了一封类似公开信,给微软全体职工,提出来把可信计算作为微软最高的优先级,让 .NET 变成一个可信平台,使微软的服务与产品就像水、电、电话一样,让用户好用可信,很放心的用。今后我们的软件产品,也该像水电公共服务一样,让用户放心。由于微软的推动,可信计算很快成为学术界一个很重要的研究方向。

为什么这两家伟大的公司,都发出了这样一个相同的动员令?华为虽然比微软晚了17年,但现在再看一下,对可信这个要求并没有变化,现在仍是一个需要奋斗的重要目标。但是也有点不同,按我体会,比尔盖茨好比是个开路先锋,促进了可信计算和可信软件工程的发展。但对华为而言,如今可形容为秋天到了,该是收获季节。该把可信的研究成果综合起来,利用起来,发展我们的可信产品,可信的服务,让它真正产生价值,在国际竞争中能够领先,所以到今天还是一个非常有价值的行动目标。

我先介绍一下微软这18年是怎么搞可信的,接着比尔盖茨的动议,微软马上组建了有高级VP领衔的可信部门,同时提出和实践一个安全开发生命周期SDL,作为微软可信的内部开发过程,让安全内建在整个开发生命周期,现在很多国际知名企业包括华为都仿效采用了这样一个实践。十年以后,在2012年又提出了下一代可信计算的白皮书,现在已经引伸到发展可信云计算。

再看看华为是怎样布局的,大家可能知道,华为建有个非常神秘的“2012实验室”,它实际上就是华为的研究总部,PPT上所示的是其总裁何庭波女士,她也是海思的总裁,搞集成电路芯片的。2012实验室在全世界都有设点,为何华为要建2012实验室呢?这源是任正非看了一场叫《2012》的电影,说世界未来会发生大灾难,他突然有所启示,面对信息洪流,知识爆炸,信息爆炸等问题会给人类带来灾难性的后果,如何能用技术来避免出现这样的灾难,需要构建一个诺亚方舟来挽救,这就是构建2012实验室的宗旨。去年华为在2012实验室下又成立了可信理论技术工程实验室,由PPT中的蒋铭先生领衔。

任正非今年还有很多注目行动,访问了很多大学,为什么呢?这就是要从基础研究抓起,同时提出投资20亿美元搞可信计算和可信软件工程。可信计算这个名称,在英语里面有好几种说法,实际上谈的都是同一回事,自微软提出后,已有大量研究成果,有关可信计算的国际会议名目很多。光可信计算的出版物就超过200本,可见这是一个很大宽厚的研究领域。

什么叫可信性?微软提出了四大支柱,在其内部的评估卡上还列出更多项,包括安全性、可用性、可管理性、透明性等等,可信肯定是比安全包含的东西更广泛一点。

由于其重要性,可信计算这些年来发展非常迅速,今天因为时间关系,我来不及讲这个,关于可信计算,我有写了150页的综述报告,这里只能简要提一下。首先是信息安全跟可信的关系,什么叫可信计算?粗略点讲就是系统符合预想要求。如果一个软件系统受到病毒攻击,它的功能会不行,怎么使它安全呢?其中可信计算一个解决方法,就是采用软硬结合,把硬件放进来,因它不易被篡改,运行过程中,设法保证每个环节都是安全的,都是经过验证和确认的。为此可信计算一个很重要的手段,就是插入一块叫可信平台模块TPM的集成电路芯片,作为不易被篡改的可信根,一个保证安全的起点,从而设法保证下一步每个的执行环节都是可信安全的,采用所谓的可信执行技术TXT,英特尔还提出构建一个可信执行环境TEE,由于牵涉的内容太多,不属我今天要解释的重点。

这里再谈一下可信计算在中国的发展,中国的可信计算研发早在1992年就开始了,现在可以说在国际上也处于领先地位,从1.0主机安全到终端安全、结点安全,再到现今提高系统自主免疫能力,已属3.0时代。在第十一个五年计划启动了国家自然科学基金立项,从基础研究搞起,到2017年项目完成验收,共投资了1.9亿。包括探月工程、载人航天、北斗导航、支付宝、高铁列车通信控制、工控系统安全等,都是基于这些研究成果的。

下面我重点介绍可信软件系统工程,现在的软件要求已经不仅仅局限于功能、效率和正确性上了,不再是“能不能”的问题,更是“信不信”的问题,又提高了一个层次。这里的关键是开发过程是不是可信,最后提交的产品是不是可信?这是一个很重要的目标。可信软件工程这个名字在1998年就有人提出来了。刚才金教授也已讲过,现在系统越来越大和复杂,还包括硬件,所以不仅是软件工程,我偏向叫可信软件系统工程。

如何立足可信,全面提升开发质量?我已为华为集团做了七年的软件工程咨询,去年任总提出1号令以后,我把工作重点,就放在系统调研可信软件开发技术,看看在这一领域有哪些重要研究成果和进展可借鉴利用,最后我给华为提交了6份咨询报告,一共520页,可见已有非常多的研究成果和进展,今天我很难一下把这些内容都介绍出来,为此准备采用一个新方法来说明。这几年我一直在从事知识服务研究,500多页的综述报告如果让大家来读,即使您很感兴趣,也会觉得太冗长,难得要领并觉得很厌烦,而对做技术的人,要是对某个技术有兴趣,很想深入了解,必定要查阅原始文献,尽管报告后面附有文献索引,但要自己找也不容易。为此我现在搞了一个新型知识库,很容易通过知识地图导引,帮您很快找到自己的兴趣点,再对屏上图标一个简单点击,这个文献就自动调出来了,很方便地深入阅读。采用这样一个知识服务方法,对想了解某项新技术知识的人,既能不失全局观,又可方便深入掌握技术细节。

我采用的方法叫数字孪生,这是工业4.0时代的一项核心技术,现在构建智慧工厂,智慧城市,智慧产品都应用数字孪生技术,因为这是实现数字转型最自然的选择。

现在国外已有人提出来,对每样东西要搞数字转型都可搞数字孪生(Digital Twin for Everything),对知识和文化能不能也构建数字孪生?我已经做出了肯定的回答,并已完成了许多应用原型。通过构建知识和文化的数字孪生,就可实现网上的知识云服务,推动更大规模的知识共享。这实际上比搞数字工厂、数字孪生城市还要容易得多,因为现在数字出版已十分普及,许多知识资源已经数字化了,DIKW这个分层(数据-信息-知识-智慧)已经现成存在,关键是如何根据应用要求把它们组织好,集成好,服务好。因此从实现上要比搞数字工厂还容易些,我已基于这样的思路,把我完成的可信软件系统工程技术咨询报告,转换成一个知识数字孪生,这相当一个知识库。

接下来是我的可信软件系统工程知识库的Demo演示,它由八个子库组成,覆盖99个知识域或模块。1384个知识点,共收集了850本书,两千篇文献。任正非对这个问题也有看法和要求,他说我们要搞可信开发,不能靠碎片化知识获取,应建立共享的知识库。何积丰院士也提出,应及时建设可信软件开发资源共享与服务平台。对此我已经提供了一个很实用的解决方案,从根本上改变被动的修修补补和碎片化知识获取,通过主动和有目的有组织的专业知识服务推动能力提升。

下面是可信工程知识库的演示,共分成八个子库,代表从八个维度来解决可信开发问题。这仅是个原型,还不完整,如形式化方法也是很重要的内容,由于不是我的强项,暂时还没有力量放进去,我只从工程角度,考虑如何实现可信软件系统工程。

第一个子库有关社会技术系统工程,什么叫社会技术系统?现在网络上的许多计算机系统应用,都属社会技术系统,包括 CPS 和网上的泛在计算应用,涉及许多不同的干系者参与,刚才金教授讲到了人社会环境问题,复杂的互动,都离不开可信,谁来信你?当然是用户的相信,这是一个社会问题,技术系统离不开社会视角,所以我们现在要研究社会技术系统。这个问题最初怎么提出来的?英国有个研究所在研究采煤生产时,发现采煤系统的效率要真正能提高,不单纯是技术问题,也是个社会问题。牵涉到社会方面,包括你的组织和人员,必须要把这两个子系统结合好协同好,这个系统才能发挥效率。这个研究发现,推动了人们对社会技术系统的研究兴趣,包括社会技术系统理论的提出,目前有关社会技术系统出版的书就超过40余本,在知识库里都可浏览到。

我们关心的则是社会技术系统怎么开发和设计?当谈论社会技术系统工程,不得不提及英国Lancaster大学具先锋性的研究工作,他们有个大规模复杂IT系统 LSCITS 的项目,在其网站上,已发布一本《社会技术系统工程手册》,汇总了研究者20多年来在这一领域所取得的成果,该项研究起步于上世纪90年代,由著名软件工程专家 Ian Sommerville 领衔,2014年他退休,出版了《软件工程》一书第十版,这本书实际上就是社会技术系统软件工程STSE的一本代表作,这个PPT页面上列中间的一篇,就是他的经典论文,谈怎么让社会技术系统开发,从设计方法变成一项系统工程;为了帮助大家,他退休以后又专门建立了一个网站,把他所有这方面的研究成果,都放在这个网站上,包括培训教材、论文成果和参考文献。他还提出了“关键系统工程”的理念,对安全性非常重要的一些系统的开发,则必须考虑采用关键系统工程。

对社会技术系统的研究在国际上已经设立有很多博士学位程序,这方面具有国际影响力的研究集中在两个组织,一是MIT,归属于MIT的工程系统部ESD,并专设立了一个社会技术系统研究中心 SSRC,每年都要举办多次系统思维论坛,因为开发社会技术系统,离不开系统思维。他们还有一个重要举措,就是建立了一个全球团队工作实验室,与东京大学合作,强调工程团队的合作本身就是一个社会技术系统,MIT还在安全工程方面有许多建树,设有博士学位程序包括诸多核心课程,由于时间关系,我就不介绍了。

另一个重要研究机构是 CMU,CMU下面有个软件研究所,为研究社会问题专门推了一个方向叫“社会计算”,强调很多社会问题,IT是可以帮助解决的,诸如给社会技术系统建模,探讨社会问题跟技术问题怎么匹配?如何协同,如何联合优化;CMU 的软件工程中心 SEI则研究社会技术生态,还研究如何能将用户讲不清楚的需求引出来,建议的方法采用日本提出来的 KJ方法,帮你把自己也讲不清楚的需求挖掘出来。

在国内则有国防科大的毛新军教授在从事社会技术系统的软件工程研究,已为多个高校作了专题讲演。

还有一块重要内容,就是社会技术系统的需求工程,即怎么摸清社会需求,怎么规定可信需求。这一领域,中国的代表人物是北大的金芝教授,她刚才已经做了精彩的报告,我没法再超越她,我的知识库有包含她的代表作和重要贡献,如CPS 的需求工程、可信需求等。

这里我主要推介国际上两个重要研究贡献,一是前面已提及的Sommerville教授,他也是需求工程专家,提出了一类社会分析方法,要搞社会技术系统,需要做社会调查,包括现场调查,采用人志方法等,对如何进行社会分析,他给出了一本手册,提供系统的方法。大家如果有兴趣的,每一篇文章都可以直接读出来。再有一家是意大利的 Trento大学,由 PaoloGiorgina教授领衔的研究团队,主要成员有Elda Paja博士和李童博士,包括提出系统的方法论、配套的建模和仿真语言及工具等。

最后我介绍一下由微软提出的软件安全开发生命周期 SDL,这可以说是可信软件系统工程中一个具标杆性的可信开发过程,具很强的实践性,已成功应用在微软的实际开发中,为能让安全性内建在整个开发生命生命周期,第一步要做的,就是建立全员安全意识和安全培训,对此已提出很多教学和培训大纲,可直接参考借鉴。从需求工程角度,加进了一个很重要的工作内容,就是“威胁建模”,即通过威胁建模摸清可能存在的安全威胁,以便找到合适的防范解决的办法,这是 SDL 必须的一个过程步骤,微软有发展了自己的实践方法,许多后续研究者也发展了许多不同的方法,包括框架,知识库中已收集了不少代表性成果。为保障系统安全,对软件测试也加进了新的重要内容,如模糊测试、渗透测试和红队策略等,可惜受制于讲演时间的限制,我们无法进一步展开,但它们都是 SDL中必须执行的重要步骤,此外SDL中还有许多重要方面,如敏捷安全开发、安全DevOps(DevSecOps)、安全编程标准等,这是可信开发无法回避的重要方面,尽管无时间演示有点遗憾,但知识库的建立和存在,已为学习者提供了方便的存取渠道。

同样由于讲演时间限制,我们8个子库,实际只浏览演示不到1.1个,还有许多重要方面,如安全隐私设计(SbD/PbD)、零信任模型、标准建立信任、AI支持可信开发、软件可信性/可靠性、和可持续软件,都无法提及,这说明可信软件系统工程确实是个技术内涵十分丰富的重要领域,需要引起我们的关注,好得知识库的建立,已为我们提供了一个较为方便的学习了解渠道。

如今软件开发技术的发展非常迅速,对开发者而言常需要面对一些当前的技术热点,就以最近的区块链热为例,它本身是一个强化安全的方法,但是它自己也有安全性问题,因此可信安全开发技术也可应用到区块链应用中,包括如何为区块链进行威胁建模、如何进行模糊测试和渗透测试,实施红队攻击等,而这些成果进展也已经成为我们知识库新入库的内容。再如当前的AI 技术应用热,包括如何利用 AI 技术增强系统安全性和可信性,利用AI 改进模糊测试和渗透测试效率,我们的知识库均已有专门的收集,适应新技术的动态进展。

基于数字孪生技术的新型知识库建设,由于采用图谱作为数字建模的基础方法,具有很强的通用性,同时也便于知识库的动态扩充,因此十分适合跟踪技术的发展演化,同时支持知识库的众创参与。这一方法也可应用于软件测试和需求工程领域,这两个领域由于知识体系相对成熟,建立对应的集成知识库,将十分有助专业人员的学习需求,这也是我这次讲演想推动的另一个方面。

三天前我刚接到一个最新信息,即著名国际咨询企业Gartner发布了2021年战略性技术发展趋势,它每年都发布,今年有2项内容是和我们可信软件开发有关的:一是隐私增强计算(Privacy-EnhancingComputation),二是网络安全网格(Cybersecurity Mesh),这是最新的技术趋势,也是我们知识库必须跟踪和动态扩展的内容,以体现更大的知识服务价值,我目前所做的仅是个起步点,下面怎么发展演化完善,真正发挥实际价值还有待在座的共同努力,只有借助合力才能创造更大辉煌,这是我们中国比西方世界特有的优势,此次疫情的历程已给出了有力的证明,对发展可信软件系统工程,我们同样有可能发挥我们的服务合力优势,让我期待,就介绍到这里,谢谢大家。