软件体系结构设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件体系结构设计和其他开发任务的关系
功能需求/非功能需求
需求, 期望的性质
领域分析/ 需求分析
软件体系结构 设计
硬件体系结构
硬件体系结构 设计
对需求的修改
对硬件体系结构 的修改 实现约束
软件体系结构
详细设计, 编码, 集成和测试
同体系结构相关的四个问题
• 为了使软件体系结构在实际软件开发中有用,必须解决 四个问题:
– 模式中的解决方案被表示为可实施的“软”目标 – 一方面,可实施的“软”目标把设计目标转化为解决方案 – 另一方面,它们仍被看作目标,因为仍然有不同的途径实现它们
• 识别目标和解决方案中不希望的相关性
– 模式的副作用也能在图中使用相关联接显式地声明
• 说明替代解决方案如何从其它方面作用于目标
– 每个建议的解决方案,可以通过达到的非功能“软”目标,进行分 析
– 支持系统生成子集的能力,即子集独立交付的能力,支持增量开 发。是一种特殊的变化性
质量属性测量 • 质量属性参数表达了体系结构的特性,是体系结构的可
调参数,决定了依赖参数是否满足质量需求 • 刺激 (stimuli)是体系结构必须响应的事件
质量属性举例:性能 (1/2)
• 例如,性能 (performance)是同时间相关的质量属性,通常 由延迟时间或吞吐量度量 • 两个质量属性测量
软件系统常见的质量属性(1/2)
• Performance
– 系统响应能力,通常用“Benchmarks”度量
• Reliability
– 系统长时间运行的能力,通常用“平均无故障时间”度量
• Availability
– 系统能够正常运行的时间比例,通常用“平均故障时间”和“故障恢 复时间”度量
• Security
• 这个例子似乎是直接和完美的,但实际上,因为系统规 模和复杂性的增加,应用这些模式到实际的环境中并不 容易 • 事实上,这种方法为你提供了有价值的风格和模式的列 表,但并没有告诉你多少关于如何使用这个知识库。这 使得体系结构设计缺少正规化,更像直觉的工艺,而非 理性的工程!
二、基于目标图的推理
• 基于目标图的推理 (goal graph based reasoning) • 该方法的目标是使模式背后的推理结构显式化,并且服 从于系统的分析 • 该方法使用目标图,表达模式在各种需求上的应用效果
ABAS的结构 (1/2)
• 问题描述
– 该结构所要解决的设计问题,包括感兴趣的质量属性、使用的上 下文环境、约束和相关的特定属性需求
• 质量属性测量和刺激
– 在问题描述部分讨论的内容浓缩,但关注同质量属性模型相关的 可测量方面,包括刺激——引起体系结构响应或变化的事件
• 体系结构风格
– 构件和连接件的类型、拓扑结构、对构件之间数据和控制信息的 交互模式的描述,以及对构件或连接件中任何与质量属性密切相 关的特性的描述
• 质量属性参数
– 在体系结构风格部分讨论的内容浓缩,但关注同质量属性模型参 数相关的方面
• 分析
– 描述质量属性模型如何同体系结构风格的成份形式上相关,以及 从模型得出的关于体系结构行为的结论
• 注意:上述部分依赖于体系结构风格和质量属性的描述
ABAS的结构 (2/2)
• 为了评估软件体系结构同质量需求的吻合程度,需求要 以可测量、至少是可观察的方式描述出来,我们称之为
Observer模式的目标图
在设计中应用Observer模式
三、基于属性的体系结构风格
• 基于属性的体系结构风格 (attribute-based architectural style, ABAS)是对通常体系结构风格描述的一种扩充, 用于获取SA层次上的结构和分析技巧,显式地把推理框 架(定性或定量)与体系结构风格关联起来 • 这些推理框架基于特定的质量属性模型
和典型的解决方案相结合
ABAS的动机来源(1/2)
• ABAS的研究动机来源于
– 体系结构风格:Shaw and Garlan in “Software Architecture: perspectives on an emerging discipline”, Buschmann et al in “Pattern-Oriented Software Architecture” – 质量属性的分析模型:例如性能的速率单调分析 (M. Klein, T. Ralya, B. Pollak, R. Obenza, M. Gonzales Harbour, A Practitioner’s Handbook for Real-Time Analysis, Kluwer Academic, 1993),可用性 的Markov模型 – 体系结构评估问卷:在AT&T的体系结构调查问卷 (J. Maranzano, Best Current Practices: Software Architecture Validation, AT&T, 1993)
从体系结构模型映射到属性模型
体系结构决策 体系结构特性 实际行为
质量属性模型参数 刺激 质量属性模型
?
期望的行为
?
预期行为
• ABASs把体系结构特性的刻画映射到质量属性参数,然 后通过建模把质量属性参数和刺激映射到预期行为 • 那些调度和排队模型提供了关联质量属性参数(如排队 策略、执行时间评估)和质量属性测量(如延迟时间、 吞吐量)的基础 • 某些参数(如执行时间)在体系结构层面不易被量化。 这种情况下,执行时间预算被分配,进而转化为导出需 求,以充实构件的细节
当把系统划分为一组相互协作的类时,需要维护相关对 象之间的一致性。Observer模式不希望通过类的紧密耦合 实现一致性,因为这样会降低它们的可复用性。”
• 这正是我们所需要的模式!
一个简单的例子(2/2)
• 基于结构描述和例子,不难设计出该系统。设计人员还 知道使用这种模式的后果,例如
– 主体和观察者可以独立变化 – 复用主体,而不必复用相关的观察者 – 复用观察者,而不必复用相关的主体,等等
– 体系结构风格 (architecture styles) – 设计模式 (design patterns)
• 基于模式的体系结构设计方法使用丰富的风格知识库, 指导体系结构的设计,有助于分析冲突的需求和不同设 计的折衷
一个简单的例子(1/2)
• 需求:假设在一个系统中,需要有一个数据源和多种不 同的显示方式,例如,电子表格、柱状图、饼图等,不 同视图中的数据需要保持一致,并且可能会在今后增加 新的显示方式 • 如何设计这样一个系统,同时满足功能需求和非功能需 求? • 如果体系结构设计人员熟悉各种模式或者有一个模式列 表可供参考,那么Observer模式(又称为Publish-Subscribe 模式)是个可能的候选者 • 在Observer模式的环境描述中,“一个普遍的副作用是:
ABAS的动机来源(2/2)
• ABAS是对体系结构风格的描述,但增加了相关 质量属性的分析模型
– 例如,在描述层次风格时,Shaw and Garlan写道,“如 果系统逻辑上可以组织成层次化的,考虑性能时要求 逻辑上的高层功能和底层实现之间的紧密耦合”
• 对关系到复杂软件系统的若干重要质量属性,诸 如性能、可靠性、安全性等,已经存在较为成熟 的分析模型 • 然而,这些分析模型一般太过通用,需要很好地 训练才能有效地使用它们。通常,当实施体系结 构评估时,要在两三天的时间内对设计的有效性 和风险进行评估 • 一组评估调查问卷,即被证明有效的问题有助于 对体系结构的推理和分析,并提供了对问题本质 的描述
方法的主要任务
• 把需求表示为设计目标
– 功能需求和非功能需求皆被表达为要达到的目标 – 特别是,非功能需求被表达为“软”目标。这里的“软”目标意味着 它们通常没有清晰的评价标准
• 说明目标之间的关系
– 目标之间,特别是非功能目标之间,不是独立的。它们的关系要 在目标图中显式地表示出来
• 说明已知的解决方案如何达到目标
• Functionality
– 系统完成预定工作的能力
• Variability
– 体系结构更改或扩充的能力,变化性机制包括run-time、compiletime、build-time or code-time等,当体系结构是整个产品家族的基 础时,变化性显得尤为重要
• Subsetability
– 延迟时间:从事件发生到对该事件的响应完成所经过的时间,以 单位时间表达 – 吞吐量:系统能够响应事件的频率,以单位时间的交易(或响 应)表达
• 刺激:体系结构必须响应的状态变化。对性能而言,事 件的到达模式是重要的
– 周期性的:事件到达有固定的间隔 – 零星的:事件到达间隔的长短有一个界限 – 随机的:事件的到达能以概率表达
– 如何显式地描述软件体系结构?体系结构描述语言(ADL),形 式化地表示和分析软件体系结构,例如Adage, Aesop, Rapide, SADL, UniCon等 – 如何为软件设计好的体系结构?当考虑许多非功能需求时,该任 务益发具有挑战性 – 如何分析现有的体系结构?如何预测体系结构是否能够产生满足 需求的实现?软件体系结构的目的不仅是描述系统重要的方面, 而且通过暴露它们,使设计人员可以进行讨论 – 如何使软件实现同体系结构设计保持一致?在实际的软件开发 中,实现同体系结构文档差距很大,以致体系结构设计只被作为 遗产保存
– 阻止非法入侵或拒绝服务的能力,通常用系统受到的各种威胁种 类加以分类
• Modifiability
– 快速、低成本修改系统的能力,通常使用特定的改变作为基准, 记录进行这些改变所需花费的代价
软件系统常见的质量属性(2/2)
• PortabiliΒιβλιοθήκη Baiduy
– 不同计算环境下运行的能力,一个系统可移植的程度局限于:所 有关于任何特定计算环境的假设被限制在一个构件中(最坏的情 况下,少数几个易于修改的构件)
– 每个ABAS只同一个属性推理框架关联 – 对于那些从多个视角感兴趣的体系结构风格,它们具有多个 ABASs – 例如,pipe-and-filter性能ABAS vs. pipe-and-filter可靠性ABAS
• ABAS是质量属性刻画的内容和分析模型的组合
→关键在于,ABAS将反复出现的针对质量属性的重要问题
软件体系结构
(Software Architecture)
九、软件体系结构设计
从软件需求到体系结构
• 软件体系结构设计已经成为大型软件系统开发过程中不 可或缺的步骤,因为非功能需求的介入,这个任务变得 非常复杂和随意 • 若干体系结构设计方法
– – – – – – 基于模式的设计 (pattern-based design) 基于目标图的推理 (goal graph based reasoning) 基于属性的体系结构风格 (attribute-based architectural style, ABAS) 多重视图模型 (multiple view model) 基于评估和转换的设计 (evaluation and transformation based design) 基于体系结构的产品线设计 (architecture-based product lines design)
• 这四个问题是密切相关的,并在过去的十年里各方面取 得了很大的进展!
一、基于模式的设计
• 模式的使用在许多工程领域是普遍的,对公共设计形式 的确定和共享的理解是成熟工程领域的特点之一 • 一个模式提供了有效的语义环境:关注点、期望的演化 路径、计算范型和与其他相似系统之间的关系 • 依据其规模不同,模式经常被分为两个层次:
质量属性举例:性能 (2/2)
• 当一个刺激发生时,系统使用其资源执行计算或传送数 据进行响应。多个并发的刺激响应需要仲裁或调度策略 以解决冲突的请求 • 同性能相关的质量体系参数包括需要的资源、资源分配 的策略、资源请求或使用的特征
– 资源特性:包括资源类型,如CPU或网络;资源特性,如CPU速 度或网络带宽等 – 资源调度策略:包括CPU调度、CPU分配、总线和网络仲裁、排 队策略等 – 资源使用:包括进程和消息的优先级、响应的抢占性、使用量 (如执行时间)