正在加载图片...
中国科学:信息科学第50卷第11期 需要说明的是,在以上架构模型中,“人”一方面指模型中“可表征的用户”,因为可表征的用户代 表应用的价值体现,所以人作为应用需求的直接提出和要求变迁者,是架构模型中非常重要的一环,因 此建模为需要明确体现其相关应用价值的可表征用户.另一方面,“人”也可以隐式融入到架构模型 的“可感知的系统”和“可演化的系统”中,对于前者,比如人可提供知识、行为识别和隐私数据等,成 为环境上下文的一部分,对于后者,比如人可参与到软件动态更新安全点的选择和转换函数的合成与 审核中,成为演化环节的一部分.这两方面综合起来,“人”对于未来的软件系统,既可以是提出要求 的用户,也可以是解决问题的关键,因此他们是“人-机-物”融合应用整体系统不可或缺的一部分 此外,在以上运行机理和生命周期部分,我们介绍的适应和演化是两种重要的成长方式,前者是指基 于环境的反馈进行自主适应的优化,这是在运行态,主要指利用软件自身已实现的功能和做法应对环 境和资源的变迁,在弹性限度之内可以无需修改软件设计和代码,并依旧保持原先的服务质量和内容: 后者是指基于开发者和使用者的驱动进行过程演进的优化,这与开发态和运行态都有关,开发态包括 支持在弹性限度之外的新功能设计和故障修复等行为,运行态包括支持新版本软件进行动态更替等行 为.这两方面综合起来,我们说,适应和演化都是实现软件成长的重要途径 以上关于架构模型、运行机理和生命周期3个基本特征分别分析了可成长软件的静态结构、运 行机制和演进历程,回答“可成长软件是什么”这一问题,并给出理想的可成长软件的设计蓝图.对照 此蓝图,接下来的重要问题是,如何去构建这样的可成长软件,其中有何技术挑战.下面我们探讨并回 答“可成长软件怎么做”这一问题. 3.4可成长网构软件的构建思路和技术挑战 我们以元级化和定义化的思路来构建可成长软件,这着眼于复杂的环境开放性,其中包括应用场 景的多样性、环境和需求的多变性,以及系统内外开发者和用户的不确定性.我们以元级化提供可成 长能力,因为传统软件属于“目标级”,仅实现针对给定需求和环境的功能,而新增“元级”则使软件可 抽象可成长能力,以刻画感知、适应和演化行为.元级化有个重要的哲学问题,即认清“我是谁”.另一 方面,我们以定义化实现软件的成长,以“软件定义软件”的方式,克服“软件不软”的困难,支持软件 持续的适应和演化,以应对环境和需求变化.定义化也有个重要的哲学问题,即认清“我从哪里来,要 到哪里去” 相反.软件若直接实现应用功能.则可能表现脆弱.无论是应用需求有变迁,或是环境和资源不再 满足其功能实现的前提,都可能造成软件难以保持原先的服务质量和内容,从而不得不回归维护或重 新构建.而“元级化”概念的提出,要求软件在设计过程中明确考虑环境、资源和需求的变迁问题,以 软件定义的方式设计实现软件在运行时的自主适应和开发时的持续演进,也即要抽象软件的成长能力, 另外,以上关于“软件不软”是形象的说法,意思是软件若直接实现应用功能则表现“脆而硬”,容易被 环境、资源和需求的持续变迁所打倒,而“软件能软”的说法则是相反,是期望其能在应对环境、资源 和需求变迁方面游刃有余,表现出一定程度的韧性,这也是可成长软件的目标.根据以上元级化和定 义化的构建思路,我们提出面向自适应和持续演化的可成长软件体系结构(图4).基于此结构,可成长 软件通过基于先验元模型的环境需求建模和规约感知环境和需求变化.通过软件定义体系结构模型支 持软件系统的自适应和持续演化行为.从图中可以看出,这一结构分“静态构成”和“运行机制”上下 两层,从功能上又分“环境和需求的感知与理解”和“软件自适应与持续演进”左右两部分.从静态构 成上,软件对物理环境进行抽象,获得“先验”的环境和需求(即模型和规约),然后在运行机制上,以 环境处理中间件对物理环境进行感知,提炼出应用上下文.以静态规约和运行时上下文共同驱动可适 应的软件系统,以适应逻辑推动业务逻辑的优化,实现系统的适应和演化行为.这样的规划在整体上体 1601 https://engine.scichina.com/doi/10.1360/SSI-2020-0079中国科学 : 信息科学 第 50 卷 第 11 期 需要说明的是, 在以上架构模型中, “人” 一方面指模型中 “可表征的用户”, 因为可表征的用户代 表应用的价值体现, 所以人作为应用需求的直接提出和要求变迁者, 是架构模型中非常重要的一环, 因 此建模为需要明确体现其相关应用价值的可表征用户. 另一方面, “人” 也可以隐式融入到架构模型 的 “可感知的系统” 和 “可演化的系统” 中, 对于前者, 比如人可提供知识、行为识别和隐私数据等, 成 为环境上下文的一部分, 对于后者, 比如人可参与到软件动态更新安全点的选择和转换函数的合成与 审核中, 成为演化环节的一部分. 这两方面综合起来, “人” 对于未来的软件系统, 既可以是提出要求 的用户, 也可以是解决问题的关键, 因此他们是 “人 – 机 – 物” 融合应用整体系统不可或缺的一部分. 此外, 在以上运行机理和生命周期部分, 我们介绍的适应和演化是两种重要的成长方式, 前者是指基 于环境的反馈进行自主适应的优化, 这是在运行态, 主要指利用软件自身已实现的功能和做法应对环 境和资源的变迁, 在弹性限度之内可以无需修改软件设计和代码, 并依旧保持原先的服务质量和内容; 后者是指基于开发者和使用者的驱动进行过程演进的优化, 这与开发态和运行态都有关, 开发态包括 支持在弹性限度之外的新功能设计和故障修复等行为, 运行态包括支持新版本软件进行动态更替等行 为. 这两方面综合起来, 我们说, 适应和演化都是实现软件成长的重要途径. 以上关于架构模型、运行机理和生命周期 3 个基本特征分别分析了可成长软件的静态结构、运 行机制和演进历程, 回答 “可成长软件是什么” 这一问题, 并给出理想的可成长软件的设计蓝图. 对照 此蓝图, 接下来的重要问题是, 如何去构建这样的可成长软件, 其中有何技术挑战. 下面我们探讨并回 答 “可成长软件怎么做” 这一问题. 3.4 可成长网构软件的构建思路和技术挑战 我们以元级化和定义化的思路来构建可成长软件, 这着眼于复杂的环境开放性, 其中包括应用场 景的多样性、环境和需求的多变性, 以及系统内外开发者和用户的不确定性. 我们以元级化提供可成 长能力, 因为传统软件属于 “目标级”, 仅实现针对给定需求和环境的功能, 而新增 “元级” 则使软件可 抽象可成长能力, 以刻画感知、适应和演化行为. 元级化有个重要的哲学问题, 即认清 “我是谁”. 另一 方面, 我们以定义化实现软件的成长, 以 “软件定义软件” 的方式, 克服 “软件不软” 的困难, 支持软件 持续的适应和演化, 以应对环境和需求变化. 定义化也有个重要的哲学问题, 即认清 “我从哪里来, 要 到哪里去”. 相反, 软件若直接实现应用功能, 则可能表现脆弱, 无论是应用需求有变迁, 或是环境和资源不再 满足其功能实现的前提, 都可能造成软件难以保持原先的服务质量和内容, 从而不得不回归维护或重 新构建. 而 “元级化” 概念的提出, 要求软件在设计过程中明确考虑环境、资源和需求的变迁问题, 以 软件定义的方式设计实现软件在运行时的自主适应和开发时的持续演进, 也即要抽象软件的成长能力. 另外, 以上关于 “软件不软” 是形象的说法, 意思是软件若直接实现应用功能则表现 “脆而硬”, 容易被 环境、资源和需求的持续变迁所打倒, 而 “软件能软” 的说法则是相反, 是期望其能在应对环境、资源 和需求变迁方面游刃有余, 表现出一定程度的韧性, 这也是可成长软件的目标. 根据以上元级化和定 义化的构建思路, 我们提出面向自适应和持续演化的可成长软件体系结构 (图 4). 基于此结构, 可成长 软件通过基于先验元模型的环境需求建模和规约感知环境和需求变化, 通过软件定义体系结构模型支 持软件系统的自适应和持续演化行为. 从图中可以看出, 这一结构分 “静态构成” 和 “运行机制” 上下 两层, 从功能上又分 “环境和需求的感知与理解” 和 “软件自适应与持续演进” 左右两部分. 从静态构 成上, 软件对物理环境进行抽象, 获得 “先验” 的环境和需求 (即模型和规约), 然后在运行机制上, 以 环境处理中间件对物理环境进行感知, 提炼出应用上下文. 以静态规约和运行时上下文共同驱动可适 应的软件系统, 以适应逻辑推动业务逻辑的优化, 实现系统的适应和演化行为. 这样的规划在整体上体 1601 https://engine.scichina.com/doi/10.1360/SSI-2020-0079
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有