`
happmaoo
  • 浏览: 4348893 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

多版本软件构建策略分析

阅读更多
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

主要分析存在多个版本特性时的软件构建策略。多个版本特性在有些情况下仅仅对应于软件的本地化,复杂的情况就是不同版本中模块的业务逻辑、呈现策略都不相 同。这不仅在产品开发过程中增加成本,更多的成本将在维护阶段体现出来。因此,选择一个合适的构建策略对降低开发与维护成本都是非常重要的。

一、传统软件构建策略

不同的版本采用不同的代码,通过派生或直接使用不同的代码实现。每个版本都会对应到一份的这个版本相关的代码。在代码发布成产品时,我们还需要一个build过程,将源码打包发布成可执行文件。


这里体现多版本特性的代码可能简单可能复杂,关键要看软件整体的设计对多版本的支持。

1.1 采用strategy模式实现

模块A能访问到本地策略,根据不同版本的差异实现Local1、Local2来实现具体的用户需求。

这里存在几个问题。
一、系统中的层次结构很复杂,如果模块E同样也需要根据版本特性来确定自己的行为,这时可能有两种方式:将ILocal层层传递,从A到C再到E;采用singleton模式。不过这两种方式都破坏了对象的封装性。
二、ILocal中的方法会非常多。系统中所有的版本差异都将放到ILocal的方法中,很快这些方法就会失去控制。那是否可以对特性分类处理呢,将某一类特性放到一个接口中可以降低ILocal的管理成本,但没有从本质上解决问题。
三、Local实现类会随着项目的推进,或者在维护过程中变得臃肿。在项目过了几年之后,这点就成为顽疾了。


1.2 使用编译指令

编译指令是一个非常轻便的方式。在很多著名的商业化产品中都会出现,尤其是在处理操作系统不同版本的时候。

使用编译指令不会出现strategy模式中出现的问题,但是需要小心控制它的使用范围。更加严重的一个问题是,版本非常多的时候(比如几十个)编译指令就成了可读性的杀手。同时增加了build过程的成本与错误率。总之,选择这种方式之前必须慎重考虑。

二、基于配置的软件构建策略

不同的版本采用同一份代码 ,build后得到可执行的文件。但这里得到的可执行文件并不是最终的发布产品。可执行文件加上配置信息才能符合用户的需求。这种情况下,开发人员不仅需要开发代码,而且需要设计配置文件的格式(模块的可配置能力)。


基于配置的软件构建同样需要在整体设计上的考虑。并且有多种实现方式。

2.1 采用Local类

Local类读取配置文件,将配置文件中的配置元素返回给程序模块。这种处理方式遇到的问题与采用strategy模式时非常类似。另外,采用Local类只能处理相对简单的逻辑,例如控制界面显示等。


2.2 基于插件的实现方式

插件是将代码与配置分离的一种有效方式。与上面的Local类相比,插件的机制将配置粒度更加细化。

可以将插件系统的配置按照功能分为两大类:结构化配置、差异化配置。

结构化配置指定插件与插件之间的关系,插件之间相互协作。差异化配置体现单个插件的可配置能力。系统分为多个“代码+插件”的可执行模块。

2.3 代码与配置的权衡

在基于配置的软件构建模型中,代码和配置之间存在着一个分水岭。如何划分代码配置的界限影响到所有模块的详细设计。

配置的目的是什么,我们想要达到什么效果?在分析这些问题之前,先说明一下使用配置文件的两个极端。


“配置必须配置的点”是配置文件的最低限度。判断是否达到了这个最低标准的方式非常简单,就是观察系统中是否存在因多版本特性而引起的多份代码。
“配置能配置的所有点”是另外一个极端,达到的最终效果就是完成了一个配置语言运行的环境。

居于左侧的模块复用度低,但配置文件简单,易于维护。居于右侧的模块复用度高,配置文件复杂。具体的项目需要在这两个极端之间找到一个平衡点。

2.4 设计的一致性

一、怎样找到代码与配置之间的平衡点,最好的情况是由架构师定下一个判断原则,指导设计人员进行详细设计。这对于维持产品的设计一致性非常关键。

二、在配置度高的情况下,不同的模块定义了特有的配置文件规则。这些规则的统一对保证一致性也是一个挑战。

三、加入工具支持

好的工具可以提高生产效率,降低重复性劳动的成本。

3.1 传统软件构建策略

在基与多版本的代码开发时,工具能做的是代码生成工作。包括框架代码以及简单的控制代码。更多的情况下仍然需要手工修改源码文件。


关于代码生成技术,在.Net框架中提供了一系列的类来完成(System.CodeDom namespace等),可以参考相关资料。这种技术自己实现比较简单的情况也并不复杂。

3.2 基于配置的软件构建策略

在基与配置的软件构建策略中,工具的主要目标可以放在配置文件的管理与生成上。代码由开发人员编写,工具生成配置文件后经过测试就可以发布。


这里代码与配置的分界线会影响到工具的复杂度。需要协调代码编写、配置文件管理、工具编写这几方面的成本与收益。

四、加入动态语言

将动态语言技术加到系统中,代码与配置的界限就变得模糊了。使用动态语言作为配置文件的形式可以充分利用它的语言特性提高配置能力,省去了自己设计配置格式与解析配置的过程。


上面说模块自定义的配置规则多的情况下,将破坏系统设计的一致性。如果采用某种动态语言,那么这种规则实际上就是这种语言的语法,有助于开发人员理解各个模块。但这时候的生成工具复杂度就增加了,本质上已经成为动态语言的代码生成器。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1571425


分享到:
评论

相关推荐

    云计算下的软件测试系统框架构建策略.pdf

    云计算下的软件测试系统框架构建策略.pdf

    软件测试中需要构建测试数据,项目内包含构建测试数据的原则和一些方法包

    测试数据构建是软件开发过程中的一个关键环节,它涉及到创建用于测试软件系统的数据集合。这些数据需要能够覆盖各种可能的场景,以确保软件在不同条件下的稳定性和可靠性。一个良好的测试数据构建项目通常包含以下几...

    论文研究-面向程序分析的插桩技术研究.pdf

    基于双缓冲技术,构建词法分析器和语法分析器。在语法分析归约时同步收集插桩信息,然后根据插桩策略执行插桩,生成目标文件。得到的程序运行时信息被应用于影响广泛的四种软件自动调试分析方法。对于这四种方法。...

    用于统计数据分析的HistFitter软件框架

    我们提供了一个称为HistFitter的统计数据分析软件框架,ATLAS协作组织已广泛使用该软件框架来分析源自CERN大型强子对撞机质子-质子碰撞的大型数据集。 自2012年以来,HistFitter一直是ATLAS搜索超对称粒子的标准统计...

    10-构建医院大数据安全分析与勒索病毒防御-广西医疗会议.zip

    该方案专为医疗机构设计,旨在通过高效的数据分析和强化的安全措施,保护关键的患者信息和医疗记录不受网络威胁,特别是针对日益猖獗的勒索软件攻击。该解决方案集成了最新的大数据分析技术、加密方法及实时监控机制...

    网络安全与网络监管问题及其策略分析.docx

    网络的软件系统无法做到尽善尽美,必然存在着缺陷与漏洞,如果这些缺陷与漏洞网络安全与网络监管问题及其策略分析全文共7页,当前为第2页。网络安全与网络监管问题及其策略分析全文共7页,当前为第2页。被黑客等有...

    软件测试的概要介绍与分析

    它详细介绍了测试的基本原则、测试策略、测试计划的制定以及测试用例的设计方法,为构建坚实的测试基础提供了丰富的理论支撑。 - **在线课程与MOOCs**:Coursera、edX和Udacity等平台提供了多门软件测试相关的课程...

    DNAstar使用说明

    Lasergene由8个模块使用户能完成序列分析的每个步骤,包括从整理组装序列数据到发现基因、注释、基因产物分析、序列相似性搜寻、序列比对、进化树分析、寡核苷酸引物设计、克隆策略、结果发表等。Lasergene软件包...

    基于C++/Python的开源量化交易研究框架用于策略分析及回测(目前主要用于国内A股市场)

    组合灵活,分类构建策略资产库 Hikyuu对系统化交易方法进行了良好的抽象,包含了九大策略组件:市场环境判断策略、系统有效条件、信号指示器、止损/止盈策略、资金管理策略、盈利目标策略、移滑价差算法、交易对象...

    Stata收敛性分析(含详细代码说明和样例数据)

    收敛性分析是管理科学和运筹学中重要的概念,是一种解决决策者对他们的管理策略的反馈的方式和手段。它的最终目的是帮助管理者从复杂的环境中筛选最优的解决方案。收敛性分析一般情况下会结合一些概念,例如实验研究...

    电商直播场景构建及其营销策略研究LW

    介绍数据采集、清洗和分析的方法,并提供常用的数据分析工具和软件的使用指南。 实验设备和设施:介绍如何利用学校或研究机构提供的实验设备和设施,进行实验、观测和测量等活动。提供了实验室安全规范和操作指南,...

    和谐中原视野下的公共服务型政府的构建策略

    建设和谐中原需要积极推进公共服务型政府的建设。...本文在综合分析的基础上,提出了公共服务型政府建设的内容应包括职能转变及职能强化与开发,得出了公共服务型政府的具体构建应从"硬件"建设和"软件"建设两方面着手。

    基于Python的学生校园消费行为分析(源码+数据+结果集).zip

    根据分析结果,可以构建消费行为模型,例如聚类分析、关联规则分析和预测模型等,为校或商家提供更有针对性的服务和决策支持。 参与这个项目可以熟练掌握Python的数据处理和分析技术,解消费行为模型的构建和应用,...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part06

    20多年来,它的各个后继版本一直都是软件专业人士熟悉的读物,在国际软件工程界享有无可质疑的权威地位。它在全面而系统、概括而清晰地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。此外,...

    论文研究-多方案DEMATEL的偏好交互与融合方法研究.pdf

    针对某一众创空间内三个创业团队开展关键影响要素识别,实例验证结果表明上述所构建的方法和策略有效可行,能够形成更具参考价值的多方案对比分析结论,对响应复杂决策情景中的多主体、多层次、多偏好决策困境具有...

    博弈论分析工具gambit

    博弈论分析工具gambit,策略型博弈和扩展型博弈均可构建,支持自动求解纳什均衡。 该软件通过科学上网可以直接下载,地址为:http://www.gambit-project.org/ 本着资源开放的态度,为不能科学上网的朋友提供下安装包...

    论文研究-信息物理融合系统中恶意软件传播与分岔控制策略.pdf

    针对恶意软件在信息物理融合系统中传播机理难以描述的问题,利用非线性动力学理论构建其传播动力学模型,并基于稳定性理论和Hopf分岔定理对该模型的复杂动力学行为进行...

    软件工程-总结.doc

    8 质量功能部署(QFD) 8 分析模型的元素 11 第7章 构建分析模型 11 第8章 设计工程 11 第9章 进行体系结构设计 12 体系结构风格的分类 12 第10章 构件级设计建模 13 第11章 完成用户界面设计 13 黄金规则 13 第12章...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part01

    20多年来,它的各个后继版本一直都是软件专业人士熟悉的读物,在国际软件工程界享有无可质疑的权威地位。它在全面而系统、概括而清晰地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。此外,...

    论文研究-Web软件可信性的模糊评价方法.pdf

    在对ISO/IEC 9126模型及Web软件属性图进行改进和扩充后,应用因子分析法构建了Web软件可信性评价指标体系,运用结构熵值法确定了各个可信指标的权重,并运用改进的证据合成方法构造专家评价信息的模糊评价矩阵;...

Global site tag (gtag.js) - Google Analytics