软件系统可扩展性的研究.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件系统可扩展性的研究

软件系统可扩展性的研究 杨凯 北京邮电大学计算机科学与技术学院,北京(100876) E-mail:yakihappy@ 摘要:业务的飞速发展促使软件开发者必须通过开发具有良好可扩展性,易维护性的软件, 迅速高效的满足用户不同的需求,本文对可扩展性理论进行了研究,并提出了一个可扩展性 解决方案,以便指导具有良好可扩展性的软件开发。 关键词:软件系统可扩展性;解决方案;灵活性 中图法分类号:TP311 1.引 言 业务的飞速发展促使软件开发者必须通过开发具有良好可扩展性,易维护性的软件,迅 速高效的满足用户不同的需求。一般我们所希望的系统是这样的:当业务量较小的时候,可 以用一个处理能力较小的系统来实现,既节省投资又满足需求;当业务量大时,又可以通过 软件系统的扩展,提高处理能力,满足新的需求。并且在原有系统的基础上能较容易的添加 新的功能,并且尽可能小的影响原有系统。因此有必要对可扩展性理论进行研究,以便指导 具有良好可扩展性的软件开发。开发具有良好可移植性,可扩展性,易维护的软件产品可以 克服目前软件生产周期长,耗资大的困难[1]。 一般人们会觉得简单的系统比复杂的系统易于建造,易于维护,短小而且运行更快。但 实际上简洁性通常不是容易达到的目标,因为程序员倾向于在程序中支持可能在未来才会存 在的需求,这就使得系统变得复杂化。然而,因为觉得未来可能会发生什么变化而使代码变 得复杂并不是一个好主意(无数开发人员的经验表明主观对未来的预测总是错的)[2]。程序 员需要这样来编写代码:使程序在未来易于添加新的特性或修改现有的特性,而不是现在就 增加这些特性。因此与其一开始就建造一个复杂的系统,不如考虑开发出一个具有高扩展性 的系统。 2.可扩展性研究背景 可扩展性是指软件扩展新功能的容易程度。可扩展性越好,表示软件适应“变化”的能力 越强。可扩展性是由现代软件的商业模式决定的[3]: (1) 社会的商业越发达,需求变化就越快。需求变化必将导致修改(或者扩展)软件功 能,现代软件的规模和复杂性要比十年前的大得多(对比一下操作系统的变化就明白了), 如果软件的可扩展性比较差的话,那么修改(或者扩展)功能的代价会很高; (2) 现代软件产品通常采用“增量开发模式”,开发商不断地推出软件产品的新版本,从 而不断地获取增值利润。如果软件的可扩展性比较差的话,每次开发新版本的代价就会很高 [4][5]。 具有良好可扩展性的系统绝不是仅仅将新的功能加入系统而不考虑其它方面。具有良好 可扩展性的系统要具备以下特性: (1) 方便地添加新功能; (2) 扩展后新旧系统之间具有良好的集成性; (3) 扩展后系统仍能满足业务要求的性能,如及时性,可靠性等; (4) 安全性得到满足。由于扩展过程中很容易产生安全问题,因此扩展过程中要有良好 的安全解决方案; (5) 能够进行低成本扩展。 而一个具有可扩展的系统应该具备以下条件: (1) 有灵活的可扩展的体系结构作指导; (2) 采用灵活的设计; (3) 编写的代码具有可扩展性。 本文拟从以上几个方面进行可扩展性的研究。 3.可扩展性研究内容 3.1 灵活的可扩展的体系结构 目前软件领域存在着面向过程,面向对象,面向服务三个主要的体系结构。就扩展性而 言它们之间是一种逐渐灵活的关系。 面向过程是一种以事件为中心的编程思想,首先分析出解决问题的步骤,然后采用函数 逐步调用实现的方式。使用这种体系结构,系统一旦做出修改则“牵一发而动全身”,扩展 性极差。 面向对象技术是目前非常流行的方式。它把构成问题事务分解成各个对象,建立对象的 目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。它强 调对象的“抽象”、“封装”、“继承”和“多态”,以重用性、灵活性和扩展性为主要目标。随着 面向对象技术的发展,又催生了基于对象的组件体系结构。在组件开发中,需要进行接口设 计,这样软件实体就可以实现和公开其定义的关键部分。上述提到的抽象,封装,继承,多 态,接口,组件都是利于扩展的概念和技术。另外还有一个与可扩展性相关的概念:面向方 面的编程(AOP)。面向方面本质上就是满足扩展的需求,可以在程序中自由扩展功能。如 果说面向对象是纵向地分析、切割整个系统,那么可以认为 AOP 是横向地对系统作切片。 面向方面可以弥补面向对象的缺陷,两种方式有机的结合在一起,可以更加有效地对系统进 行分析。 面向服务(SOA)是最近比较热的概念。包括现在提到的 SaaS(Software as a service)。 SOA 由一系列相互交互的服务组成,描述了服务之间的交互,并将服务映射到一个或多个 具体技术的实现。面向服务是系统发布功能的一种方式,利用 Web Service 技术实现不同系 统间有效地通信和

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档