首页 > 其他分享 >如何应对软件可变性?这4种常用的方法肯定要知道

如何应对软件可变性?这4种常用的方法肯定要知道

时间:2022-08-24 11:22:53浏览次数:110  
标签:常用 软件产品 绑定 变体 软件 可变性 运行

摘要:在许多软件系统的开发运行阶段乃至整个生命周期中,软件可变性都是其设计开发者所要面对的基本问题。

本文分享自华为云社区《如何应对软件可变性?这4种常用的方法肯定要知道。》,作者: 陈星亮|华为云开天aPaaS专家。

软件可变性(Software Variability)是指在一定上下文中一个软件系统被有效改变(扩展、配置、调整)的能力。在许多软件系统的开发运行阶段乃至整个生命周期中,软件可变性都是其设计开发者所要面对的基本问题。

在大多数系统中,可变性表现为软件在某个或某些可变点处对变体的绑定。其中可变点是指软件中可以发生变化(绑定变体)的位置,而变体则是变化发生时,人或机器可以在相应位置做出的选择。

可以看出,在软件的运行实例中,变化发生的位置、变化发生的程度是在设计阶段预定义的。而这种定义又在很大程度上依赖于软件的需求分析以及在此基础上做出的种种假设。系统虽然具有变体绑定能力来满足既定的需求,但可变性模型(可变点、变体以及它们之间的关系)本身没有变化,导致软件在应对变化的需求或环境时存在一定限制。

在传统意义上,软件运行时可变性模型被认为是静态的。在许多研究工作中,模型被以只读的方式访问,以支持软件适应外部的环境。人们将注意力集中在可变性绑定方面(即为什么(重新)绑定变体、绑定什么变体、怎样绑定),而忽视了对运行时可变性模型本身蕴含的限制的突破。随着计算机技术的发展进步、用户需求的增多及变化的加快、系统驻留环境的开放、外界对系统灵活性和可伸缩性要求的提高,这种限制显得愈加突出。

针对软件可变性,开发者们根据软件实现要求和成本投入,采取软件预留配置点、动态软件产品线、运行时可变性动态绑定、多变非核心功能的快速开发等方法来应对。

1、软件预留配置点:

软件预留配置点可以自动地根据环境的变化来调整自身。换言之,它可以收集和分析有关环境的信息,基于分析的结果决定是否改变自己的行为,如果是,再采取调整动作。

系统设计者指出或假设系统所面对环境变化等信息,确定系统所能够感知和收集的环境数据,进而以一定的数据结构将其表示在计算机内,而后才能设计相应的算法对这些信息进行分析并做出决策。

在执行环节对于自身的调整,实际上是软件在可变点处对于变体的动态绑定,这是其运行时可变性的表现。

关键点:

1)设计者难以在系统部署运行之前设想所有的需求或环境的变化,当超过预期的变化出现时,已经成型的系统无法自动地收集与其相关的信息。

2)并未改变可变性要素的数量、属性或关系。只能在设计开发时预定的范围内,进行选择。

2、动态软件产品线:

动态软件产品线包括一组核心资产和从资产开发而来的一系列具有共同特征的软件产品。与传统软件产品线对比,动态软件产品线更关注软件的运行时可变性,本质上是建立具备可配置能力的一系列软件。

关键点:

1)产品线自身的设计者可以快速开发出具有运行时可变性的软件产品,并赋予其自主选择绑定变体的能力。

2)其关注的运行时可变性大部分都是封闭的而非开放的,这意味着运行时可变性应对的是开发者在设计期设想的环境变化,导致软件产品难以应对超过预期的环境变化。

3、运行时可变性动态绑定

运行时可变性动态绑定机制描述一个运行中的软件如何在一个可变点绑定相应的变体,是软件可变性实现的核心。绑定机制涉及对构件内部结构和行为的调整,包括对子构件的重配置和动态绑定。

关键点:

1) 对构件行为的调整往往通过重新组织构件的工作流或是重新设置构件内部参数来实现。

2) 对于突破了原有设计范围内的变化,需要能被系统识别,并自动生成对应的逻辑。

4、多变非核心功能的快速开发

为应对行业应用不断变化的情况,亦有思路是降低软件应用开发的难度,将软件的稳定的核心功能与多变的功能分开。对于多变非核心功能,以提供低码开发的方式,便于开发者能快速的根据诉求,进行近场快速开发并投入使用。

关键点:

1) 软件设计者需要能识别出稳定的核心功能、多变的非核心功能。并且能够在两者之间建立好连接。

2) 提供便捷的工具,使得多变的非核心功能能够被近场开发者,甚至是使用者自己能快速实现。

如何提升软件的可变性,让软件能够从容应对业务的变化,一直都是软件工程领域的一个重要话题。针对上述4种在应对软件可变性经常用到的方法,各自都有其特点,分别在不同的场景下使用。

 

点击关注,第一时间了解华为云新鲜技术~

标签:常用,软件产品,绑定,变体,软件,可变性,运行
From: https://www.cnblogs.com/huaweiyun/p/16619206.html

相关文章

  • 用了这跨操作系统远控软件,我再也不出差了
    远程调试的困境对于IOT终端产品开发来说,调试有很多问题,无法复现产品的问题、无法查看出问题当时的log、需要指导用户进行tar包升级,无法查看远程设备状态。有的时候需要一......
  • 艾思软件「aisisoft.com.cn」出品,前后端ThinkPHP分离技术框架
    GIT址址:https://gitee.com/aisisoft/ai-admin 基于thinkphp6,vue2,element-ui.一款简单实用的客户管理,案例展示系统后端1.基于thinkphp6+vue2+ElementUI......
  • 【python基础教程】-10.开箱即用(模块的工作原理,获悉模块的功能以及常用模块)
    资料来源(1)Python基础教程第三版1.模块的工作原理1.1简单的模块及使用1.1.1模块的本质(1)模块就是程序,任何python程序都可以作为模块导入;1.1.2简单的模块示......
  • ​Black Hat 2022 聚焦软件供应链安全
    BlackHat大会被公认为世界信息安全行业最权威大会,也是在全球范围内最具有技术性的信息安全大会。BlackHatUSA聚焦网络安全事件,并且持续向外界输出前沿安全技术研究成......
  • [转]16种常用的思维模型
    人们在围绕软件开发的讨论中,几乎不可避免会随口引用一两条原则。你可能听过人们说:“这行不通,因为‘X法则’!”。或者“你不知道‘Y原则’吗?”你是哪种类型的软件开发人员?......
  • 解决windows10虚拟桌面不能换桌面的问题--使用软件SylphyHorn
    GitHub:https://github.com/Grabacr07/SylphyHornwindows应用商店:https://apps.microsoft.com/store/detail/sylphyhorn/9NBLGGH58T01?hl=en-us&gl=US软件截图:效果......
  • 视觉算法-软件-芯片-电驱技术
    视觉算法-软件-芯片-电驱技术参考文献链接https://mp.weixin.qq.com/s/vabcv7fKNkVI3xNA7rdTiwhttps://mp.weixin.qq.com/s/xIEFeavU4Pi7b0vwBaW6GAhttps://mp.weixin.......
  • 软件包与systemctl命令
    liunx软件包的分类源码包二进制包(rpm包)源码包特点源码包缺点:安装过程麻烦,需要用户手动编译,需要手动解决软件包的一栏关系源码包的优点:软件源代码开放,允许用户二次......
  • Git 常用命令记录每天来一遍防止忘记
    记录一些git常用命令,每天敲一遍,防止忘记gitadd后续补充gitcommitgitpushgitstatusgitbranchgitcheckoutgitrebasegitmergegitcherrypickgitstas......
  • vscode 常用插件
    说明日常工作中使用的vscode插件比较多,为了防止意外情况需要重建vscode环境,添加此备忘录记录实用的vscode插件。环境配置Chinese中文汉化Remote-SSH远程连......