2020-11-04
编者按:
2020年10月23日,第十一届中国国际软件质量工程(iSQE)峰会在重庆完美落幕,大会中嘉宾们从不同的角度阐释了软件质量工程产业相关问题。本次峰会汇聚了国内外顶级软件质量保证领域的权威学者以及企业高管,着眼于对软件保障的方法技术和实践,搭建了一个集聚影响力的交流互动平台。开云电竞 (KAIYUN) 官方网站作为活动的承办方,将会陆续整理推出嘉宾们的精彩发言。此次分享的是北京大学金芝教授的主题演讲,她从技术层面分享了她对人机物融合系统的软件需求规约的看法。
嘉宾简介
金芝,北京大学教授,北京大学高可信软件技术教育部重点实验室常务副主任,973项目首席科学家,国务院学位委员会学科评议组成员(软件工程),中国计算机学会会士与常务理事,中国计算机学会系统软件专业委员会主任。International Requirements Engineering Committee China Chapter (CREB),副主席,IEEE TSE/TR Associate Editor,EmpiricalSoftware Engineering Editorial Board Member《软件学报》执行主编,《计算机学报》副主编。
嘉宾按
尊敬的各位领导,各位软件领域的同仁,大家早上好。很高兴组委会给我这个机会,跟大家分享一下,我近来的研究思想和思路。目前这个行业环境,给我们需求工程的从业人员,还有研究者带来了很多挑战,在此,向大家分享一些我的观点。
我演讲的题目叫做《人机物融合系统的软件需求规约》。在座的各位有目共睹,前面的演讲嘉宾也曾提及,现在的智能设备不仅逐年增加,而且发展迅猛。据统计,到2025年全球物联网连接设备的总安装量预计将达到754.4亿,十年内增长五倍。到2030年这个数字还要再继续上升,所以未来我们日常生活将离不开智能的设备。
设备只是一个硬件资源,设备引入以后,给我们带来了非常多的想象。刚才领导致辞的时候也提到,重庆要致力于智能制造、智慧家居、智能交通行业……有了这些智能设备以后,我们将生活在充满着智慧的环境里面。比如智慧城市、智慧医疗、智慧家居、智能楼宇、以及智能工厂等,也都列入了国家科技部、公信部未来的主攻方向。有了这个设备,使我们对未来有了憧憬。使这些设备发挥智能作用的是软件系统,软件设备。这样的软件和我们以前意义上信息处理的软件有非常大的不同,从宏观的角度来看,这样的软件实际上通过计算机计算能力的系统,通过网络连接所有的感应的设备,后台是计算的机制,然后连接很多作用器的设备,使得计算的世界、物理世界和人类世界,能够紧密的联系起来,从而形成一个集成化的系统,就是说软件成为集成化系统的一个中心枢纽。这样的软件的设计原理,来自需求规约,这个软件与从前用于信息处理的软件来比较,有非常大的不同。那么我们怎么样去应对这个软件设计人员带来的挑战?
软件的设计是来自于需求,基于马斯洛需求层次理论,需求是从底向上,从物质需求一直到精神需求,我们软件需求也是有一个从底到上的需求:功能需求、质量需求、价值需求、一直到实现人类的自我需求。在传统的意义上,主要是侧重在功能需求,这个软件能够做什么?对于智能的软件系统来说,它应该侧重在用户的需求,是对美好生活的追求,实现用户的自我价值,同时还要确保用户的安全,因为这个软件将通过设备能够直接和物理世界发生作用,所以安全也是它的内生需要考虑的问题,包括用户隐私等等。
为了实现系统的高层需求,对于需求工程师来说是一个挑战。根据需求,我们希望能把现有的技术创新、算法创新,通过交互的设备去赋能到软件功能服务上,在与物理世界互动时,人也能参与其中。另外它的功能的实施,还有时间和空间直接影响,就是我们所说的智能化,在正确的时候给正确的人提供正确的服务,同时受时空影响。这样的一个特征,对于需求工程师来说,首先需要了解,我们现在有什么样的技术创新,因为这个技术创新和算法,用户是想不出来的,只有我们IT工作者才能够想出来。
未来的系统是用户要参与其中的,需求工程师需要关注的不仅仅是功能的正确性,而且是要用户友好型的设计。因为是对物理空间直接施加影响,用户并不了解,这中间的技术风险,这里面的技术风险规避,是需要需求工程师、设计师在系统设计的时候就要解决的问题。这是对我们需求工程师和软件工程师的挑战,需求不是从用户那里直接获取,而是在系统设计的时候,主动嵌入其中规定,今天我主要是谈谈这样的需求应该怎么样展示。
还有一个其他因素,未来是随时随地要和外界环境打交道的。物理世界充满了不确定性,比如说自动驾驶在路上的不确定性,环境的开放性,还有物理设备本身可能出现的故障,都是在我们系统设计里面需要考虑的。总之,环境的不确定性,还有技术的创新性,以及系统安全性、友好性,这些都是我们过去不太重视,未来需要加强的部分。
针对这样的挑战,这样的一个系统,除了要满足用户的需求以外,还要有一些基础的能力。第一,需要认识物理世界的能力。在这个系统里面,需要知道物理世界的模型,未来物理世界不确定性体现在什么地方?物理世界的行为规律该是什么样子的?有哪些物理世界的实体实施以后会有安全风险、隐私风险等等?你要认知它。其次,就是时空的敏感性。比如一个智能楼宇,不同房间需要不同功能,你deliver了这个功能,但是你放错了地方,也是不同的功能,所以需要有感知时空的敏感性和时空的一致性。第三,智能产品和人交互,人是有很多偏好,要让人觉得(智能设备)友好的话,就应该能够自动的学习出来,自动适应人的偏好。相比于以前功能来说,这是最起码的功能。
如何deliver这样的基础能力,使得系统设计成为一个最佳的设计?有几个基本的思路。首先就是在系统架构层,我们做系统设计首先要做一个系统架构,需要有几个层次。最底层就是物理环境层,系统通过认知物理环境层的交互对象、交互环境,基础系统,用感应器和作用器与物理环境进行交互。软件的规划功能,计算能力,是通过这个感应器和作用器,和物理世界直接交互的一个过程,这是底下的一个控制回路。边上还有两个控制回路,这个称为前项控制回路。当环境发生变化的时候,系统有一种感知环境变化的能力。一旦环境变化,需要重新激活配置、重新自适应,让基础系统的布局随环境的变化而变化,这就是前项控制机制。
还有一个后项控制机制,就是反馈控制机制,是控制什么呢?控制我们系统的功能,控制系统的功能是不是有偏差,是不是会对我们环境发生危害?会不会造成风险价值的损失等等。如果产生风险隐患,也将激活自适应的调度控制机制,使得这个系统能够及时的调整自己的行为,不要给环境带来风险。以自主适应来应对不确定性,最上层还需要有策略学习的功能,支持系统本身能力的增长,这是我的主要观点。对smart system来说要有一个基础的体系架构,能够显示区分出来功能实施的机制、自我保护机制、保护环境的机制、自适应机制,以及自学习能力的机制。
对于环境识别来说,这张图展示的用户的需求是在最上面,对生活舒适度的追求,我希望通过周围的物理设备部署实现,需求工程师的作用,就体现在能够把IT里面取得的技术进展,和算法的进步,能够把它应对到用户的服务需求上,使得它能够部署到,形成这样一个系统架构。
对需求工程师来说难点就是:第一,这些设备不可见,但应用偏好随时变,能不能设计出来一个系统,能够根据用户的偏好进行自动调度?第二,智能设备调度的效果直接作用到现实世界,整体安全性如何保证?第三,有些智能设备调度的效果是相互抵消的,这些无效的调度是否能够避免?
对于这样的需求过程来说,涉及三个维度——一个是用户需求、一个是环境的模型特征、一个是通过用户需求环境特征再加上对IT智能设备能力的理解,构造一个Specification规约。再形象地说,动态的世界,画一个动态的图就是这个样子,未来这个系统和这个环境,通过动态交互以后,来完成需求的供应。为什么需要系统?是因为有需求,系统在什么地方发挥作用?在环境里面发挥作用,系统怎么发挥作用?是受到我们Specification规约的影响,另外就是不要对环境产生负作用。
我们有一些手段来建模环境的属性和环境的动态性,一个是要建模环境的状态。因为人也在中间,我们也有一些手段对个人的策略和意图、目的建模,分两方面:一方面是正常用户对美好生活愿望的意图,另外一方面可能会有黑客的侵扰。这两方面的实体,都是可以通过一定手段对它进行建模。
建模的能力,环境建模的机制,里面沉淀了这个领域的知识,包括对智能制造来说,环境模型里面,可能沉淀了很多关于制造的知识,这个知识就可以重用到,对于系统交互行为的建模里面来,密切的结合到应用场景里面去。当然这个领域知识,也同样可以用来检测需求建模规约的正确性和完备性,以及不一致性等等,都可以通过环境建模以后储备领域知识,对它予以保证。
刚才讲的是对系统和环境交互的保证。如何用来跟用户解释说,我确实是通过这个设备,来满足你的需求,实际上给出的是系统设计可解释性问题,现在可解释性也是一个智能系统重要的问题。我们需求给的环境是离这个系统很远的时候,我们可以通过因果推理的关系,可以给它逐步规约到系统的层面,有很多因果推理的规则。
这个网站(http://re4cps.org/)是北京大学、清华大学、华中师范大学,还有广西师范大学,包括英国OpenUniversity共同开发的在线需求规约的系统,专门和物理设备交互的系统。下面是我写的一本书,大家感兴趣的话,可以试读一下。
系统与现实世界的紧密互动带来了解决方案的复杂性,复杂性除了刚才说的领域知识和软件本身的桥梁,还有这个技术,还有物理世界的连续变化性数字世界离散性之间的结合,他们的验证该怎么做?还需要有新的模型和新的框架来支持。位置感应智能化也是一个值得研究的问题,对需求工程带来新的研究挑战,包括运动反应规律,就是现实世界的运动反应规律,在我们数字世界里面如何体现?如何在数字世界里面维护物理世界,就是你对应的物理世界的时空的一致性,如何在数字世界里面体现这个时空领域。
环境友好型设计——我们这个系统本身必须要有内在的安全性保障,我们有一些关于人工智能伦理,人工智能安全的问题,大家开始讨论,这个技术的引入,为我们带来方便的同时,会不会带来风险?对于需求工程师来说,要在需求设计的阶段,能够说我这个系统,已经做了保护环境的策略,你可以展示出来,哪些功能点,是为了保护环境,比如说不破坏用户隐私,不去伤害环境。比如现在自动驾驶,前面有行人的时候,第一要求是不能够撞到行人,等等这样的机制,要使得它内在建立在系统模型里面,叫做内生的环境安全保障。我的分享就到这里,谢谢大家。