- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
体系结构的设计原理
第4章 体系结构的设计原理;1. 抽象
抽象是人们用来处理复杂性问题的基本原理之一。抽象有几种形式,如数据抽象、对象抽象、实体抽象、行为抽象、过程抽象、虚拟机抽象等。数据、实体的抽象使得软件操作的对象和参数是针对逻辑结构,而非存储结构的。行为、过程的抽象使得操作的指派是依据标识而非地址,由此产生了操作的接口和动态约束描述。
抽象的一个重要特性就是可替换性。 ;2.封装
封装是将构成抽象的属性和行结合在一起,并区分不同抽象的方法。封装为不同抽象之间提供了明确的界限。封装有利于非功能特性实现,例如可变性和可重用性。
封装包括内部构成和操作服务两个方面。
3.信息隐藏
信息隐藏是软件工程的最基本和最重要的原理之一。; 信息隐藏对用户隐藏了部件的实现细节,用来更好地处理系统的复杂性和减少各部件之间的耦合。封装原理经常被用来作为实现信息隐藏的方法。信息隐藏也可以通过接口与实现分离的原理来实现。
4.模块化
模块化主要关心的是如何将一个软件系统分解成子系统和部件,其主要任务就是决定怎样将构成应用的逻辑结构物理地分割成代码实体。;5.注意点分离(Separation of Concerns)
不同和无关联的责任应该在软件系统中分离开来,让它们出现在不同的部件中。相互协作完成某一任务的部件应该和在其他任务中执行计算的部件分离开来。如果一个部件在不同的环境下扮演着不同的角色,在部件中这些角色应该独立且相互分离。
6.耦合和内聚
耦合强调模块之间的特征,而内聚强调模块内部的特性。耦合是用来衡量一个模块同另一个模块的联系的紧密程度的。内聚用来衡量单一模块内功能和元素间联系性的程度。; 内聚有几种形式,.最期望获得的是功能内聚。其他形式的内聚还有:逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和不规则内聚。
7.充分性、完备性和原始性
[BOOC94]指出软件系统的每个部件都应该是充分的、完备的和简单的。
充分性指的是部件应该把握住与其进行有意义和高效交互抽象的所有特性。
完备性是指一个部件应该把握住所有与其抽象相关的特性。
原始性指的是部件所应该完成的操作都可以容易地得到实现。;8.策略和实现的分离
软件系统的部件应该实现策略或处理问题,但不能同时处理两者。
策略部件负责处理上下文相关的决策、信息的语义和解释的知识、把不相交计算组合形成结果、对参数值进行选择等问题。 实现部件负责全面规范算法的执行,执行中不需要对上下文相关信息进行决策.如果不能将一个软件体系结构分解成策略和实现的不同部件,至少应该在一个部件内将策略和实现的功能加以分离。;9.接口和实现的分离
任何一个部件都应该包含两个部分,接口和实现. 接口部分定义了部件所提供的功能,并规范了功能的使用方法.该接口对部件的客户是可访问的。实现部分包括了实现部件所提供功能的实际代码。实现部分还可以包括只服务于部件内部操作的另外的函数和数据结构。实现部分对部件客户来说是不可用的。
10.分而制之(divide-and-conquer) ; ;4.2 软件的非功能特性;1.可变性/可维护性
软件老化的原因:
(1)缺少变化 如果不迅速更新和升级,软件就会老化;
(2)盲目和无知的修改;
(3)软件建立初期就设计的不灵活,无法或难以维护和升级;
(4)文档不充分。; 可以通过下列途径来防止老化,它们是:建立准确的文档 、当引入改变时保持原始的结构、 深入的系统审查、 在设计之初就考虑到变化的影响。
可变性有四个方面[BUSC96]:
(1) 可维护性。它主要处理已有问题的解决,当发现错误后对软件进行修复。
(2)可扩充性。它注重于用新特性对软件系统进行扩充,还包括用升级的版本代替原有的部件、除去不必要的特性和部件。可扩充性的目标是可以自由地更换部件而不会影响客户的使用,支持把新部件加到已存在系统中。; (3)可重构性。它处理软件系统部件的重构和部件之间的关系可变性问题。要支持软件的可重构性,需要对部件之间的联系进行详细的设计。有两种可重构性,一种是系统设计人员的,一种是用户可操作的。
(4)可移植性。这可以使一个软件系统能够适应多种硬件平台、用户接口、操作系统、 编程语言和编译器。;2.互操作性
组成系统的各个部件不是独立存在的,他们需要频繁地与系统中其他部件、系统外的其它系统、运行环境相互作用。为了支持互操作性,软件体系结构必须设计成对外能够提供良好外部可见、可访问的功能和数据结构的描述。
3.效率
4.可靠性
可靠性是软件系统在各种情况下维
文档评论(0)