软件架构质量保障的挑战与机遇
(论坛编号:CCF-YO-21-WH-3FT)
“软件架构质量保障的挑战与机遇”技术论坛
论坛的引导发言环节邀请了4位嘉宾,分别是:武汉大学梁鹏教授、华中师范大学莫然副教授、武汉大学王健副教授以及华中农业大学冯在文副教授。作为武汉大学计算机学院智能化软件与服务研究所所长,梁鹏教授带来了题为“知识驱动的软件设计与体系结构的推理和优化”的引导发言。梁鹏教授首先分析了软件体系结构目前的发展现状以及面临的挑战与问题。随后,对大型复杂系统软件体系的决策知识进行了分析与阐述,包括软件体系结构的决策知识模型、决策知识标注、软件设计决策及策略知识获取、变因知识获取、债务知识获取、轻量级软件体系结构知识归档。对于软件体系结构设计推理,可采用基于语义技术的软件体系结构设计推理。对于软件体系结构设计优化,采用以软件体系结构模式的设计约束,通过基于设计知识的指责合成方法,实现基于模式的软件设计自动化合成。一言以蔽之,知识是软件开发的核心也是设计的核心。
知识驱动的软件设计与体系结构的推理和优化
莫然副教授作为CCF软件工程专委会委员,结合软件架构的标准制定和项目实践经验,进行了题为“软件架构度量与分析研究”的引导发言。莫然副教授分析了常见的软件架构发展趋势,认为由于软件的修改,软件的复杂度会持续增加,导致软件架构质量持续下降,因此需要保障软件体系结构的质量。何时、何地、如何修复软件体系结构,是一个需要分析和研究的问题。通过指标来度量软件体系结构的质量,了解软件体系结构质量的变化趋势。通过软件体系结构的反模式来自动识别导致软件体系结构质量下降的原因,并确定修复方法。最后,当需要重构软件体系结构时,需要对软件体系结构的反模式进行效益分析和模式分析。
首先是SA的度量方法,根据文件依赖关系对软件进行SA建模,描述模块间与模块内的耦合关系,包括基于语法依赖关系和基于历史依赖关系的度量方法。第二,对于SA反模式自动识别的方法,基于文件间语法依赖关系+软件设计原理,形式化描述SA反模式,分析软件历史,总结并定义重复出现、引起高维护代价的反模式,并建立自动识别工具。对于SA修复,首先需要进行SA反模式修复效益评估,随后定位SA的反模式。第三,对于SA反模式重构模式研究,分析对比历史Diff数据,将基本重构操作与SA反模式修改进行匹配。
软件架构度量与分析研究
随后,王健副教授进行了题为“时间感知的服务质量预测”的引导发言,认为软件服务架构在过去几十年中不断发展,历经SOA.SOAP Web service、RESTful Web Service、微服务等服务形式。随着服务规模的迅速增加,大量web服务提供类似的服务功能,增加了服务使用者选择合适服务的困难,因此需要采用服务质量(QoS)来刻画服务的非功能属性,体现用户的服务使用体验。因此,首先需要研究的问题就是如何从候选服务中选择能够提供最佳QoS性能的服务,可采用的方法包括协同过滤技术、时序预测技术等。对于这一问题,王教授近年来开展了基于个性化LSTM的服务质量预测和基于多变量LSTM的服务质量预测两项研究工作。未来将针对边缘环境下的微服务质量预测与部署以及基于API网关性能预测的资源调度深入开展研究。
时间感知的服务质量预测
作为最后一位引导发言嘉宾,冯在文副教授进行了题为“面向服务架构的智慧农业大数据整合中的关键技术”的引导发言。冯教授首先分析了生物大数据整合的发展趋势,表示国家自然科学基金委在未来五年将生物大数据标准化整合列为生物信息学重点布局方向。随后,分析了生物大数据集成的动机,简要概述了常用的联邦数据查询方法以及生物知识图谱的构建。对标准化生物大数据整合中的核心步骤进行了阐述,包括大数据建模的动机、如何自动化精确地获得数据源的语义模型,标准化数据整合的总体框架等。重点阐述了基于服务的架构的自动语义建模、自动语义建模的关系消歧、知识图谱中基于先验知识的自动语义建模。大数据标准化整合的应用包括水稻基因-表型知识图谱构建、玉米种植全生育期信息化知识图谱构建等。
面向服务架构的智慧农业大数据整合中的关键技术
在思辨环节,参与论坛的所有专家和老师就以下三个议题进行了激烈的探讨:(1)软件架构质量保障面临哪些主要挑战?(2)开源和AI时代,软件架构质量保障有何新的机遇?(3)软件架构人才培养面临师资架构实战经验缺乏和学生软件开发经验不足等问题,如何突破?这三个问题也是目前软件架构质量保障领域需要面对和解决的问题。
对于“软件架构质量保障面临哪些主要挑战?”这个问题的思辨,专家和老师们首先讨论了第1个子问题:软件架构质量保障包含哪些方面的内容?
武汉大学梁鹏教授认为,软件架构质量和系统质量之间是有关联的。用户关心的是软件质量,如性能、用户体验等。除此以外,还有代码质量、测试用例质量等。从软件产品质量来说,软件质量分为八大类23小类,包括可维护性、可评价性、可理解性、可测试性等。
莫然副教授表示,软件架构质量保障有两个重要的方面,一是可维护性,二是可读性。软件工程最重要的是文档,包括需求分析,设计说明等。通过这些文档资料可以确定目前软件的架构与设计之初的架构之间的差别。如果文档的可读性不强,那么在确定当下软件架构的状态时会存在困难。
王健副教授认为,软件的可扩展性也是很重要的方面。在初期需求分析时难以覆盖系统功能的方方面面。此外,软件的可重用性也是重要的一个方面,在后续制作软件时,应尽可能地重用以前设计的代码和结构。
在本问题的讨论过程中,万熙凤工程师引出了公司和企业在实际项目中非常容易遇到的难题:目前的软件通常会经历过很多版本的迭代,导致现有架构不能完全满足客户的需求。如何解决这类问题?
对于这一问题,梁鹏教授认为一方面可采用扩展性较强的架构。另一方面,在设计阶段可以定义一些变更场景,考察当前的架构设计方案能否满足这些场景需求。
杨晨工程师则表示,企业往往在开发的时候设计了大而全的架构,但是经过一两年的发展之后公司的业务方向可能都会发生变化,导致之前设计的方案大部分没有派上用场。目前更常用低代码方案的架构设计,方便后续根据业务需求而改变架构。
随后,进行了第2个子问题的讨论:传统的软件架构质量保障存在什么样的挑战?新的架构风格、开发方式、应用领域的出现,给软件架构质量保障带来了哪些新的挑战?
王健副教授表示,在做新架构,比如微服务架构时。容器自动扩容时需要预留资源,扩容时用得上,但平时不用时又是浪费,这种资源调度是一个很重要的问题。微服务系统会集成多个微服务系统,当系统出问题的时候是哪些微服务出现故障,这种微服务故障定位也是一个重要的问题。
梁鹏教授认为不管是哪种新的架构,都没有让软件系统更简单,只是改变了架构的层面。以往架构存在的问题在新的架构中仍旧存在,只是具体的表现形式有所区别,需要研究的问题不一样。对工业界来说,升级成新架构之后,面临的问题可能并没有变得更简单,甚至有可能更复杂。
思辨问题1:“软件架构质量保障面临哪些主要挑战?”
在“开源和AI时代,软件架构质量保障有何新的机遇?”的问题上,来自不同企业和高校的专家、老师们也各抒己见。对于其中的第1个子问题,即“开源软件蓬勃发展,为软件架构质量保障带来了哪些机遇?”,梁鹏教授认为开源软件之间的质量差别非常大,可以采用一些架构质量度量软件来评估这些开源软件架构的质量。成功的开源软件可以为架构设计提供很多经验。
莫然副教授表示,开源软件的数据更多。架构质量好的软件绝大多数都是开源软件,虽然架构质量最好的可能是闭源软件。开源软件的质量普遍会更高一些。
对于第2个子问题“技术的快速发展和广泛应用,为软件架构质量保障带来了哪些机遇?”,梁鹏教授表示把AI技术用在软件工程中是一个大的发展趋势。比如用自然语言处理把质量架构设计的策略、设计模式等知识挖掘出来。AI技术还可以帮助推荐架构设计方案、架构性能评估等。王健副教授则补充认为AI技术还可以用来进行软件架构资源的调度等。
在本问题的讨论中,武汉科技大学胡威教授提出了一个新的、但在实际中无可回避的问题:工程项目祖传代码维护起来很困难,在设计新的架构时,如何尽可能避免以后出现祖传代码的问题?对此,梁鹏教授表示,对于遗留系统来说,首先要通过资料恢复出系统的正确的架构设计,然后才有可能对其进行维护修改或者重构。
思辨问题2:开源和AI时代,软件架构质量保障有何新的机遇?
在“软件架构人才培养面临师资架构实战经验缺乏和学生软件开发经验不足等问题,如何突破?”的问题上,杨晨工程师认为课程教学中可给学生提供实际项目的工作场景,基于实际项目的文档,通过教材改革、翻转课堂、混合式教学等新的教学方式和手段调动学生学习的积极性。
梁鹏教授表示大部分学校都会开设软件设计类的课程。软件工程课程面临的问题通常都是没有足够的时间让学生完成一个大项目,然后如果仅局限于书本知识,则无法达到较好的教学效果。因此,可以让学生恢复出一个开源软件的架构,并让学生提交到网上,让学生听取开发社区用户的反馈意见。
冯在文副教授认为针对具体的开发项目,可以先让学生在github上搜索已有的开源项目,有现有项目则直接使用。如果确实没有,则让学生开发一个基于springboot的软件。
思辨问题3:软件架构人才培养面临师资架构实战经验缺乏和学生软件开发经验不足等问题,如何突破?
与会人员合影