软件系统属性包括功能属性和质量属性,软件架构重点关注的是质量属性.
软件系统的质盘就是"软件系统与明确地和隐含地定义的需求相一致的程度" 。
软件系统质量是软件与明确地叙述的功能和性能需求文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度.
从管理角度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6 种维度特性:
功能性、可靠性、易用性、效率、维护性与可移植性。
其中功能性包括适合性、准确性、互操作性、依从性、安全性:
可靠性包括容错性、易恢复性、成熟性; 易用性包括易学性、易理解性、易操作性;
效率包括资源特性和时间特性:维护性包括可测试性、可修改性、稳定性和易分析性:
可移植性包括适应性、易安装性、一致性和可置换性。
软件系统质量属性( Quality Attribute ) 是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者( Stakeholders ) 需求的程度。
基于软件系统的生命周期, 可以将软件系统的质盐属性分为开发期质量属性和运行期质量属性2 个部分。
开发期质量属性主要指在软件开发阶段所关注的质量属性, 主要包含6 个方面。
(1)易理解性: 指设计被开发人员理解的难易程度。
(2) 可扩展性: 软件因适应新需求或需求变化而增加新功能的能力, 也称为灵活性。
(3)可重用性: 指垂用软件系统或某一部分的难易程度。
(4) 可测试性: 对软件测试以证明其满足需求规范的难易程度.
(5) 可维护性: 当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度.
(6) 可移植性: 将软件系统从一个运行环境转移到另一个不同的运行环挠的难易程度。
运行期质量属性主要指在软件运行阶段所关注的质量属性,主要包含7 个方面。
(1) 性能:性能是指软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。
(2) 安全性: 指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
(3) 可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。
(4) 互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
(5) 可靠性:软件系统在一定的时间内持续无故障运行的能力。
(6) 可用性:指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误,恶意攻击,高负载等问题的影响。
(7) 鲁棒性:是拍软件系统在非止常情况(如用户进行了非法操作、相关的软硬件系统发生了故障等)下仍能够正常运行的能力,也称健壮性或容错性。
性能(Performance) 是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。
时靠性( Reliability )是软件系统在应用或系统错误面前,在意外或错民使用的情况下维持软件系统的功能特性的基本能力。
容错性、健壮性
可用性(Availability )是系统能够正常运行的时间比例。
安全性(Securi ty )是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
可修改性(Modifiability )是指能够快速地以较高的性价比对系统进行变更的能力。
可维护性、可扩展性、结构重组、可移植性
功能性( Functionality )是系统能完成所期望的工作的能力。
可变性( Changeability )是指架构经扩充或变更而成为新架构的能力。
互操作性
质量属性场景是一种面向特定质量属性的需求。它由6 部分组成:
· 剌激源(Source) :这是某个生成该剌激的实体(人、计算机系统战者任何其他剌激器) 。
· 剌激(Stimulus) : ì在剌激是当剌激到达系统时需要考虑的条件。
· 环境(Environment ) : ì哀剌激在某些条件内发生。当激励发绝时, 系统可能能处于过载、运行或者其他悄况。
· 制品( Artifact ) : 某个制品被激励。这可能是整个系统,也可能是系统的一部分。
· 响应(Response) : 该响应是在激励到达后所采取的行动。
· 响应度量( Measurement) : 当响应发生时,应当能够以某种方式对其进行度盘,以对需求进行测试.
系统架构评估是在对架构分析、评仙的基础土,对架构策略的选取进行决策。
基于调查问卷或检查表的方式、基于场最的方式和基于度量的方式。
敏感点( Sensitivity Point ) 和权衡点( Tradeoff Point ) .
风险承担者( Stakeholders ) 或者称为利益相关人。
场景(scenarios )
在架构评估中, 一般采用剌激( Stimulus) 、环境( Environment ) 和响应( Response ) 三方面来对场景进行描述。
评估一个系统架构的通用方法。
(1) 特定目标。
(2) 评估技术。
(3)质量属性。
(4) 风险后担者。
(5) 架构描述
(6) 方法活动
(7) 己有知识库的可理用性
(8) 方法验证
SAAM 分析评估架构的过程包括5 个步骤, 即场景开发、架构描峰、单个场景评估、场景交互和总体评估.
架构权衡分析方法( Architecture TradeoíT Analysis Method, ATAM ) 是在SAAM 的基础上发展起来的, 主要运针对性能、实用性、安全性和可修改忡, 在系统开发之前, 对这些质旦属性进行评价和折中。
特定目标
质量属性
风险承担者
架构描述
评估技术
方法活动
领域知识库的可重用性
方法验证
ATAM方法采用效用树( Utility tree ) 这一工具来对质量属性进行分类和优先级排序。
CBAM 方沾分为以下8 个步骤。
(1)整理场景。
( 2 ) 对场景进行求精。
(3 )确定场景的优先级。
( 4 ) 分配效用。
( 5 ) 架构策略涉及哪些质量属性及响应级别,形成柑关的" 策略一场景一响应级别"的对附关系。
( 6) 使用内捅法确定"期望的"质量属性响应级别的效用
(7) 计算各架构策略的总收益。根据第3 步的场景的权值及第6 步的架构策略效用衰,计算出架构策略的总收益得分。
(8) 根据受成本限制影响的ROI 选择架构策略。
SAAM 、ATAM和CBAM 方法是架构评估中被公认的3 种方法
10 个评估目的包括:
(1)产品线可能性。分析几个不相干的系统是否适用于某个共有的架构,即分析它们是否能成为预期产品线的一部分。
(2) 产品对准性。评估系统的软件架构是否与产品线的软件架构一致。
(3)重用可能性。分析组件是否能重用。
(4) 组件充分性。评估组件的内在质量。
(5) 对软件架构的理解。
(6) 一致性。评估架构文档和执行的一致性。
(7)完备性。检测未被文档化的架构实体。
(8) 软件系统或产品线的文档。
(9) 控制演化。
(10) 支持架构结构的分解。
使用ALRRA 方法进行软件架构可靠性风险评估的步骤:
(1 )使用架构描述语言CADL)建模软件架构。
(2) 使用仿真进行复杂性分析。
(3)使用FMEA 和失效严重性分析。
(4) 为组件和连接件启发式地定义可靠性风险因素。
(5) 构造架构的CDG ,对每个结点G 赋予组件的可靠性风险hrj;, 对C 和马之间连接件
赋连接件的可靠性风险h码。
(6) 用图遍历算法执行架构的风险评估和分析,架构的可靠性风险因素可以通过集成其组
件和连接件的风险因素获取。
用ATAM方法评估软件体系结构,其工作分为4 个基本阶段,即演示、调查和分析、测试和报告ATAM
分析问题列表和正在解快的属性:
①架构的组件可以重复用于未来的项目吗? (变化性)
②未来可以扩展框架以适用新的应用程序或新组件吗? (变化性)
③系统会处理用户提供的任何输入并处理无效输入吗? (可靠性)
④架构的行为是否一致? ( 概念完整)
⑤是否可以将任何新的问用程序特定功能添加到架构中? (可修改性〉
@系统能否以短时间和成本效益的方式进行修改? (修改性)
⑦组件是否正确交互? (功能性)
@体系结构是否正确执行其事件处理任务? ( 功能)
##################################
系统质量属性是系统需求中重要的非功能性需求,包括可用性、可靠性、安全性、性能、可扩展性、可维护性等方面。架构评估是对系统架构进行全面分析和评估,以确定系统是否符合要求,是否满足各项质量属性要求。
在进行架构评估时,需要根据系统设计文档、代码、测试报告等进行全方位的分析,对系统的可用性、可维护性、可扩展性、安全性、性能等方面进行评测,并提出相关改进建议和优化方案,以提高系统的质量和效率。
常用的架构评估方法包括:
1. Architecture Tradeoff Analysis Method (ATAM)
2. Quality Attribute Workshop (QAW)
3. Software Architecture Analysis Method (SAAM)
4. Agile Architecture Reviews
5. Structured Walkthroughs
通过以上评估方法的应用,可以帮助开发团队更好地理解系统的架构设计和质量属性要求,提高系统的可维护性、可用性、可扩展性、安全性、性能等方面的指标。