软件体系结构总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

●什么是“软件体系结构”:

架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。

●SA概念两大流派:

决策派是在一些重要方面所作出的决策集合

组合派将系统描述为组件及组件之间的交互

●软件体系结构核心模型:

●构件的定义:

构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。

●RUP 4+1视图:

逻辑视图(Logical View):逻辑试图主要是用来描述系统的功能需求,即系统提供给最终用户的服务. 在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析,这些主要来自问题领域(Problem Definition)。在面向对象技术中,通过抽象、封装、继承,可以用对象模型来代表逻辑视图,可以用类图(Class Diagram)来描述逻辑视图。

过程视图(Process View):进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。服务于系统集成人员,方便后续性能测试。强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。定义逻辑视图中的各个类的具体操作是在哪一个线程(Thread)中被执行。

物理视图(Physical View):物理试图主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。可以与进程视图一起映射。

开发视图(Development View):开发视图主要用来描述软件模块的组织与管理(通过程序库或子系统)。服务于软件编程人员,方便后续的设计与实现。它通过系统输入输出关系的模型图和子系统图来描述。要考虑软件的内部需求:开发的难易程度、重用的可能性,通用性,局限性等等。开发视图的风格通常是层次结构,层次越低,通用性越好(底层库:Java SDK,图像处理软件包)。场景(Scenarios):场景用于刻画构件之间的相互关系,将四个视图有机地联系起来。可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系。文本、图形表示皆可。(小结:逻辑视图、开发视图,都主要是用来描述系统的静态结构。进程视图、物理视图,主要是用来描述系统的动态结构。并非每个系统都必须把5个视图都画出来,而是各有侧重。例如MIS系统侧重于逻辑视图、开发视图,而实时控制系统则侧重于进程视图、物理视图。)

●体系结构描述语言:

专门的语言,用于支持严格的体系结构描述,形式的、(半)自动的分析和代码生成。例如ACME(Component, Connector, Port, Role, System)

●软件体系结构风格:是描述某一特定应用领域中系统组织方式的惯用模式。

●软件体系结构风格分类:

数据流系统(批处理系统,管道/过滤器系统)

调用/返回系统(主程序/子程序系统,面向对象系统,层次风格)独立构件(进程通信,事件系统)

虚拟机(解释器,基于规则的系统)

数据为中心的系统(数据库,超文本系统,黑板系统)

●客户/服务器风格:

优点:(1)C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。(2)系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。(3)在C/S 体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。

缺点:(1)开发成本较高(2)客户端程序设计复杂(3)信息内容和形式单一(4)用户界面风格不一,使用繁杂,不利于推广使用(5)软件移植困难(6)软件维护和升级困难(7)新技术不能轻易应用。

●三层客户/服务器风格:

表示层:应用的用户接口部分,担负着用户与应用间的对话功能功能层:应用的本体,将具体的业务逻辑编入程序

数据层:负责管理对数据库数据的读写

优点:(1)允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。(2)允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。(3)应用的各层可以并行开发,可以选择各自最适合的开发语言。(4)利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础。

注意点:(1)三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。(2)设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题。

●C/S与B/S混合之内外有别模型:

C/S与B/S混合之查改有别模型:

●场景:

场景就是对某个实体与系统的一次交互的简要描述,质量属性场景是一个有关质量属性的特定需求,它由六部分组成:刺激源,刺激,环境,制品,反应,反应度量。

●如何实现质量属性:

1.可用性战术:

(1)错误检测:用于识别错误的3个战术是:命令/响应、心跳和异常。命令/响应和心跳战术用来检测另一个进程的错误,异常是进程本身的错误处理。

(2)错误恢复:错误恢复由准备恢复和修复系统两部分组成。1>表决2>主动冗余(热重启)3>被动冗余(暖重启/双冗余/三冗余)4>备件5>Shadow操作6>状态再同步7>检查点/回滚。(3)错误预防:1>从服务中删除2>事务3>进程监视器。

2.可修改性战术:

(1)局部化修改:维持语义的一致性、预期期望的变更、泛化该模块、限制可能的选择。

(2)防止连锁反应:1>信息隐藏2>维持现有的接口。(添加接口,添加适配器,提供一个占位程序A)

(3)推迟绑定时间:1>运行时注册—支持即插即用2>配置文件—启动时设置参数3>多态—允许方法调用的后期绑定4>组件更换–允许载入时间绑定5>遵守已定义的协议—允许独立进程的运行时绑定。

3.性能战术: (1)控制对资源的需求:1>减少处理一个事件所需要的资源(提高计算效率,减少计算开销)2>减少需要同时处理事件的数量(管理事件率,控制采样频率)3>控制资源的使用(限制执行时间,限制队列的大小)。

(2)资源管理:1>引入并发2>维持数据或计算的多个副本3>增加可用资源。

(3)资源仲裁:常见的调度策略有:1>先进/先出2>固定优先级3>动态优先级调度4>静态调度。

4. 安全性战术

(1)抵抗攻击:1>对用户进行身份验证2>对用户进行授权3>维护数据的机密性4>维护完整性5>限制暴露的信息6>限制访问7>在外部用户和提供服务的系统之间设置认证服务器。

(2)检测攻击。(3)从攻击中恢复。

5.可测试性战术:

(1)输入/输出:记录回放;将接口与实现分离; 特化访问路线/接口。

(2)内部监视。

6.易用性战术:第一类是运行时,包括那些在系统运行期间支持用户的战术。第二类基于用户接口设计的迭代特性,它在设计时支持接口开发人员。

●面向服务的体系架构:

一种应用程序体系结构,在这种体系结构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,可以以定义好的顺序调用这些服务来形成业务流程”。

●软件体系结构的发展:

面向过程的体系结构;面向对象的体系结构;面向组件的体系结构;面向服务的体系结构。(能力越来越强,耦合性越来越松散)

●ATAM评估的阶段:

1>ATAM方法的表述2>商业动机的表述3>体系结构的表述4>对体系结构方法进行分类5>生成质量属性效用树6>分析体系结构方法7>集体讨论并确定场景优先级8>再次分析体系结构方法9>结果的表述

●云计算:

云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。云计算是一种能够在短时间内迅速按需提供资源的服务,可以避免资源过度和过低使用。

●云计算的类别:

1>将软件作为服务2>将平台作为服务3.将基础设施作为服务

相关文档
最新文档