1、1,软件体系结构质量属性,张平健 华南理工大学软件学院,2,Relationship of Functionality and Quality Attributes,Functionality,Quality,3,功能与体系结构,Functionality and quality attributes are orthogonal. Functionality may be achieved through the use of any of a number of possible structures.,4,5,三类质量属性,系统的质量属性受构架影响的商业属性:例如:上市时间与构架本身相关
2、的一些质量属性:概念完整性,6,质量因素从头考虑,软件体系结构技术的核心是在系统开发过程中尽可能早地处理相关质量问题。,7,系统的质量属性,可用性 可修改性 性能 安全性 可测试性 易用性,通过软件的执行才可见的质量因素,非执行可见的质量因素,8,例子:质量属性的分析,中国地球系统科学数据共享网:提供科学数据共享服务的软件平台,要为科学数据共享提供广泛的技术环境支持。,9,特点:数据来源分散。,科学数据的采集和获取,是从科学工作者的研究工作中一点一滴地收集起来的。它们掌握在各个科研院所、科研人员手中。因此,作为科学数据共享网的主要服务内容科学数据,可能是分布在全国各地,甚至还可能来自国外。,1
3、0,特点:数据的海量存储,目前人们掌握的科学数据是经历了数年、数十年地收集整理而得到的。可以想象,数据量是相当庞大的;尤其是气象、地震、地学等学科领域的数据资源,更是巨大。显然,这需要借助海量存储技术对科学数据资源进行存储和管理。,11,特点:运算量大,由于数据量的庞大,所以科学数据资源的收集、搜索方面的运算量是可观的。此外,科学数据共享网不仅仅提供数据共享的功能,还会提供科学数据计算等增值服务,这无形中也增加了系统的运算量。,12,特点:使用人员广泛,科学数据有其广泛深远的研究价值、社会价值和经济价值。所以,对科学数据有使用需求的人员是来自各行各业的,既有科研单位和学者,也有政府机构和企业单
4、位。,13,需求分析,能够快捷地收集数据。科学数据分散在科研院所和科学家当中。要设计开发一套收集数据的机制,使其能够快速地整合到系统中,提供数据共享服务。数据收集的途径主要通过网络媒介,而且不能影响系统所提供的网络服务的正常运行。 有效存储和管理海量的数据,并快速定位数据。该系统能够提供目录服务,合理地管理数据;提供给用户查阅、下载、使用数据的服务。当用户在系统中查找数据时,希望能够快速定位数据,提供服务,平均响应时间最长不超过20秒。 保护数据版权,保证数据的安全性。科学数据存在着版权的问题。在数据使用上,需要版权保护。此外,由于一些数据有其时效性和保密性,所以在提供服务时需要对数据访问进行
5、相应的安全控制。,14,非功能性需求,质量属性 针对质量属性的需求 可用性/可靠性 系统应能长期稳定地提供服务,近似7 X 24小时工作强度;在负载过重或是系统崩溃的情况下,能保证用户请求不丢失;当系统出现故障或崩溃时,恢复时间不超过两小时;可维护性 修改某个子系统或服务时,不影响其他子系统或服务;性能 高峰时系统的平均响应时间控制在20秒以内;系统能够满足100个并发的用户查询请求;系统至少能够支持2000个用户的在线服务;安全性 对有保密性要求的数据实施安全控制;提供系统运行日志监控信息,供管理员了解系统运行状态;商业属性 2005年中期完成系统,年底前投入正式使用;能够利用现有系统的可利
6、用资源;初期总共投资2000万,分别用于系统的集成建设和开发、共享 数据标准的制定。,15,系统需求的获取,一般两种途径: 用户直接主动地提供的需求。主要是一些功能性需求和领域知识。 另一条是构架师设计“对话问题”,通过对用户提问,进一步与他们沟通,从而得到更明确的需求。 (构架师以软件系统各方面的质量属性为索引,系统地启发用户谈出他们实际需要、 但没有表达出来或是表达不完全的内容。这些需求虽不是具体的功能,但是对系统设计和实现具有巨大的影响),16,质量属性场景(quality attribute scenario),人,计算机系统或其它激励源,可以是整个系统,或系统的一部分,17,质量属性
7、场景(quality attribute scenario),刻画质量属性的手段,6部分组成: 刺激源 刺激 环境 制品 响应 响应度量 以一种统一规范的方式来表达“质量属性”的需求。,18,19,系统的质量属性,可用性 可修改性 性能 安全性 可测试性 易用性,20,可用性(availability),与系统故障及其相关后果有关。 所关注的方面: 如何检测系统故障 系统故障发生的频度 出现故障时会发生什么情况 允许系统有多长时间非正常运行 什么时候可以安全地消除故障 如何防止故障的发生以及发生故障时要求进行哪种通知,21,可用性一般场景,场景的部分 可能的值源 系统内部,系统外部刺激 缺陷:
8、疏忽未响应、崩溃、时间错误、响应错误制品 系统的处理器、通信通道、持久存储器、进程环境 正常操作、降级模式响应 系统应该检测事件,并进行如下一个或多个活动将其纪录下来;通知适当的各方,包括用户和其它系统;根据已定义的规则禁止导致错误或故障的事件源; 在一段预先指定的时间间隔内不可用,其中,时间间隔取决于系统的关键程度;继续或降级运行。响应度量 系统必须可用的时间间隔可用时间系统可在降级模式下运行的时间修复时间,22,可用性说明,这个属性对于一些安全性非常关键的系统是十分重要的,例如:飞机上的软件,医院使用的系统等等,如果系统“down”掉,会伤及人或有威胁生命危险的一些系统。它是在系统、组件或
9、是应用程序发生故障时快速恢复基本服务的系统管理策略。其目的是最大程度地减少服务中断,而不是容错。,23,可用性定义,是系统正常运行的时间比例。一般将系统可用性定义为:在计算可用性时,通常不考虑预定的停机时间 可理解为计算机在任一时刻正常工作的概率。,24,实现可用性的战术,战术:设计决策或策略,实现质量属性所采用的方法或解决方案。 可用性战术用于以下几方面: 错误检测( Fault Detection ) 错误恢复( Fault Recovery ) 错误预防( Fault Prevention) 可用性战术阻止错误发展成故障;或者把错误的影响限制在一定范围内,从而使修复成为可能。,25,错误
10、检测,系统必须能够检测任何潜在的错误,从这些错误中恢复或在第一时间阻止它们的发生.避免错误发展成为故障。命令/响应 心跳 异常,26,命令/响应(ping/echo),类似于ping命令, 在客户和服务器之间发送一个packet来判断系统是否正常运行.这个战术一般用于网络系统。,27,心跳(Heartbeat monitor),类似于“命令/响应”, 所不同的是“心跳”一般用于软件组件之间。一个组件每隔一定的时间发出一个心跳消息,另一个组件收听该消息;利用这种方式告诉收听消息的组件它在正常运转。,28,例子:集群式服务器,29,例子:ATM,自动柜员机可以定期向服务器发送上一次交易的日志。该消
11、息不仅起到了心跳的作用,而且传送了要处理的数据。,30,异常(Exception),错误类: 疏忽:组件未能对某个输入做出响应 崩溃:组件不断遭受疏忽的错误 时间:组件做出了响应,但做出响应的时间太早或太迟 响应:组件用了一个不正确的值做出了响应当识别出了上述错误类中的某一个时,就会出现异常,异常处理程序通常在引入该异常的相同进程中执行。例如:java和C+中的异常处理机制,31,异常(Exception),当出现某些指定的硬件故障或软件错误时,系统仍能执行规定的一组程序,或者说程序不会因系统中的故障而中止或被修改,并且执行结果也不包含系统中故障所引起的差错。,32,错误恢复战术表决(Voti
12、ng),Basic Input Value,1,2,3,4,1. Voter sends out simple value to different processes at same time. 2. Each processes does a simple calculation on the input value. 3. The result is sent back to the voter process. 4. If a process result is incorrect (fault), the process may be terminated/restarted.Thi
13、nk about voting for your favourite sports star, if one candidate does something bad, you might not vote for him/her!,Process 1,Process 2,Process 3,Voter,同时也可用于错误检测,33,表决,34,主动冗余(热启动) Active Redundancy (hot restart),Do Some Action,1,2,3,1. Controller requests processes to do an action. 2. Each proces
14、s receives request and works on the action. 3. A response is sent back from each process. If there is a fault, a recovery will be very fast. The controller could send out requests to check if a process is down and expect a receipt to show process up.,Process 1,Process 2,Process 3,Controller,35,被动冗余
15、(暖重起),The main component receives new data. The main component sends old data/state to backup components. 3. If fault happens, decision has to be made to what backup component to switch.,Main Component,Data,Backup1,Old Data,Backup2,Old Data,New Data,1,2,3,36,备件,一般用于硬件/操作系统的解决方案出现故障时,必须将其重新启动为适当的软件配置
16、,并对其状态进行初始化,一般用原来组件的数据和状态。,37,恢复策略Shadow操作,设置出现故障的组件可以在短时间内以“Shadow模式”运行,以确保在恢复该组件之前,模仿工作组件的行为。,38,恢复策略状态再同步( State Resynchronisation ),Restore the new active component to that of the state of the previously active component dependent on downtime/upgrades/patches, etc. 一般用于主动/被动冗余.,39,恢复策略检查点/回滚( Ch
17、eckpoint/Rollback ),在执行的程序中设置若干测试点,在每个测试点上检查输出结果。当测试程序检测出错误时,就认为正在执行的程序是一个错误运行的系统,这段程序要被重新执行,即程序的回滚。,40,Fault Prevention,Removal from service (via reboot, etc) Transactions Process monitor (kill the nonperforming process and create a new instance of it, initialized to some appropriate state as in th
18、e spare tactic. ),41,Summary of availability tactics,42,Example: Availability tactics of an information system,Fault detection Ping: about every 5 seconds Heartbeat: should receive a notice every 5 seconds Exception handling Recovery Hot restart/switch: redirect to backup server Backup communication
19、 path State resynchronization: backup db files, redo log Prevention Removal from service: keep only minimal services Transaction,43,可修改性( Modifiability ),有关变更的成本问题,它提出两个关注点:(1)可以修改什么(制品)? (2)何时进行变更以及由谁进行变更(环境)?,44,可修改性的一般场景生成,场景的部分 可能的值源 最终用户,开发人员,系统管理员刺激 希望增加/删除/修改/改变功能、质量属 性、容量制品 系统用户界面、平台、环境或与目标系
20、统 交互的系统环境 在运行时、编译时、构建时、设计时响应 查找构架中需要修改的位置,进行修改且 不会影响其它功能,对所做的修改进行测 试,部署所作的修改响应度量 根据所影响的元素的数量度量的成本、努 力、资金;该修改对其他功能或质量属性 所造成的影响程度,45,可修改性,局部化修改,防止连锁反应,推迟绑定时间,46,可修改性战术,“局部化”修改战术 “防止连锁反应”战术 “推迟绑定时间”战术,47,“局部化”修改战术,目标:把变更限制在一定范围内 在“设计”期间为模块分配责任,以把预期变更限制在一定范围内。,48,“局部化”修改战术,维持语义的一致性 预期期望的变更 泛化该模块 限制可能的选择
21、,49,维持语义的一致性,指模块中责任之间的关系;目标是确保这些责任协同工作。责任越单一越好。(Java类和方法的设计原则,Unix哲学) 子战术:抽象出通用服务: 例如:Visual Studio框架;中间件的使用。,50,预期期望的变更,考虑所预想变更的集合。 战术目标是降低变更的影响,由于无法预期所有的变更,实践中很难单独应用,通常结合语义一致性来使用。 例如 虚函数 void* 指针,51,泛化模块,模块越广泛,需要作的变更越有可能通过调整输入参数达到,而不用修改模块。 例如:C+模板库、通用编程概念,52,限制可能的选择,如果修改的范围非常大,影响很多模块,则限制能进行的修改,从而降
22、低影响。 例如,软件产品线限制支持主流平台,53,防止连锁反应的战术,模块之间的依赖性(B依赖于A) (1)语法(数据格式、服务签名) (2)语义(数据、服务语义) (3)顺序(数据顺序、时间约束) (4)A的一个接口的身份 (5)A的位置 (6)A提供的数据/服务质量 (7)A的存在 (8)A的资源行为,54,防止连锁反应的战术,信息隐藏: 将变更隔离在一个模块内,与预期期望的变更有很大的关系。维持现有的接口 如果B依赖于A的一个接口的名字和签名,则维持该接口及其语法能够使B保持不变。,55,维持现有的接口,添加接口 添加适配器stub程序:如果修改要求删除A,且B依赖于A的签名,则为A提供
23、一个stub程序可使B保持不变,模块A,适配器,56,防止连锁反应的战术,限制通信路径reduce the number of modules that consume data produced by the given module and the number of modules that produce data consumed by it. 仲裁者的使用:管理依赖关系 data (syntax). Repositories (both blackboard and passive) act as intermediaries between the producer and co
24、nsumer of data to convert data format etc.,57,防止连锁反应的战术,仲裁者的使用 service (syntax). The facade, bridge, mediator, strategy, proxy, and factory patterns to convert interface. identity of an interface of A. A broker pattern to hide identity. location of A (runtime). A name server enables the location of
25、A to be changed without affecting B. A resource manager is an intermediary that is responsible for resource allocation. existence of A. The factory pattern has the ability to create instances as needed.,58,推迟绑定时间,在运行时注册:即插即用 配置文件:在启动时设置参数 多态:允许方法调用的后期绑定 组件更换:允许载入时间绑定 遵守已定义的协议:允许独立进程的运行时绑定,59,Summary
26、 of modifiability tactics,60,Example: modifiability tactics of DW,Localize changes Semantic coherence: modularization Anticipated expected changes: interface/inheritance Generalize module: use STL Abstract common service: CWM, SOAP, MDX Prevention of ripple effect Information hiding: OOP Use interme
27、diary: design patterns, factory Defer binding time Configuration file Adherence to defined protocol: XMLA,61,性能(performance),性能与时间有关。性能与事件发生时,将要耗费多长时间做出响应有关。,62,性能的一般场景,刺激源:刺激来自外部(有可能是多个)或内部源 刺激: 刺激是事件到达。可以把到达模式刻画为周期性的、随机的或是偶然的。 制品:总是系统的服务 环境:系统可以处在各种操作模式下,如正常、紧急或超载模式 响应:系统必须处理到达的事件。这可能会导致系统环境的变化。 响
28、应度量:响应度量就是系统处理到达的事件所用的时间(等待时间或必须处理事件的期限)、该时间的变化(抖动)、在某一特定时间间隔内可以处理的事件数量(吞吐量)或对不能处理的事件的描述(缺失率、 数据丢失)。,63,性能战术,Three tactic categories resource demand resource management resource arbitration,64,Resource Demand Tactics,Increase computational efficiency (improve algorithm) Reduce computational overhead
29、 (pass-by-ref) Manage event rate (reduce the sampling frequency) Bound execution times (limit the number of iterations ) Bound queue sizes,65,Resource Management Tactics,Introduce concurrency Maintain multiple copies of either data or computations (client cache) Increase available resources,66,Resou
30、rce Arbitration Tactics-scheduling policies,First-in/First-out Fixed-priority scheduling (based on semantic importance, deadline monotonic or rate monotonic ) Dynamic priority scheduling (round robin, earliest deadline first ) Static scheduling (pre-emption points and the sequence of assignment to t
31、he resource are determined offline ),67,Summary of performance tactics,68,Example: performance tactics of DW,Resource demand Increase computation efficiency: new QC algorithm Reduce computation overhead: various mappings Resource management Introduce concurrency: MPI based multithreading Maintain mu
32、ltiple copies: result set cache Resource arbitration Scheduling policy: timing + on-demand: FIFO,69,安全性(Security),衡量系统向合法用户提供服务的同时,阻止非授权使用的能力。,70,安全性的一般场景,刺激源:攻击源可能是人,也可能是另一个系统。正确识别、非正确识别,可能来自内部/外部;经过了授权/未经授权 刺激:刺激就是攻击或试图违反违反安全性。未经授权的人或系统试图显示信息、改变和/或删除信息、访问系统服务或降低系统服务的可用性。 制品:攻击的目标可能是系统提供的服务,也可能是系统中
33、的数据。 环境:遇到攻击时有很多种可能的情形:在线或离线;联网或与网络断开;连接有防火墙或直接连到了网络上。 响应:对用户进行身份验证;隐藏用户的身份;阻止对数据和/或服务的访问;允许访问数据和/或服务;授予或收回对访问数据和/或服务的许可;根据身份记录访问/修改或试图访问/修改数据/服务;以一种不可读的格式存储数据;识别无法解释的对服务的高需求;通知用户或另外一个系统,并限制服务的可用性。 响应度量:用成功的概率表示、避开安全防范措施所需要的时间/努力/资源;检测到攻击的可能性、确定攻击或访问/修改数据和/或服务的个人的可能性;在拒绝服务攻击的情况下仍可以获得的服务的百分比;恢复数据/服务;
34、被破坏的数据/服务和/或被拒绝的合法访问的范围,71,攻击,试图突破安全防线的行为被称为攻击。例如 未经授权试图访问数据或服务 试图修改数据 试图使系统拒绝向合法用户提供服务,72,Security Tactics resisting attacks,Goals: non-repudiation, confidentiality, integrity, and assurance Authenticate users (CA) Authorize users (roles) Maintain data confidentiality (VPN, SSL) Maintain integrity
35、(checksum) Limit exposure (limited services are available on each host) Limit access (firewalls),73,Security Tactics detecting attacks,Intrusion system: compare the access pattern to known attacking patterns Recovering from attacks Restoration using availability tactics Identifying intruder using au
36、dit trail,74,Summary of tactics for security,75,Example: Security tactics of an information system,Detecting attacks Intrusion detection: via firewall, watch on db listening port and ftp port Resisting attacks Authenticate users: complex enough password for dba Authorize users: users cant modify dat
37、a Limit access: black list/white list,76,可测试性(testability),通过测试揭示软件缺陷的容易程度,77,可测试性的一般场景,刺激源:该测试由单元测试人员、集成测试人员、系统测试人员或客户执行。可由其他开发人员或外部小组执行设计测试。刺激: 到达了开发过程中的一个里程碑。制品: 设计过程、一段代码或整个系统。环境: 测试可以在设计时、开发时、编译时或部署时进行响应: 由于可测试性与可观察性和可控制性相关,因此所期望的响应就是可以控制系统以执行所期望的测试,并可以观察到对每个测试的响应。 响应度量: 在某些测试中执行的语句的百分比。最长测试链的长
38、度(对执行测试的困难的度量)以及对发现额外的缺陷的可能性的估计。,78,Testability Tactics,Record/playback (capture input/output info across interface for testing suite) Separate interface from implementation (test stub w/o skeleton) Specialize access routes/interfaces (separated from required functionality) Built-in monitors (A comp
39、onent can implement tactics based on internal state to support the testing process),79,Summary of testability tactics,80,易用性(usability),对用户来说完成某个期望的任务的容易程度和系统所提供的用户支持的种类。,81,易用性的一般场景,场景的部分 可能的值源 最终用户刺激 想要学习系统特性、有效使用系统、使错误的影响最低、适配系统、对系统满意制品 系统环境 在运行时、配置时响应 系统提供以下一个或多个响应来支持“学习系统特性”;帮助系统与环境联系紧密;界面为用户所熟
40、悉;在不熟悉的环境中,界面是可以使用的;系统提供以下一个或多个响应来支持“有效使用系统”:数据和/或命令的聚合;已经输入的数据和/或命令的重用;支持在界面中的有效导航;具有一致操作的不同视图;全面搜索;多个同时进行的活动系统提供以下一个或多个响应来“使错误的影响最低”撤销;取消;从系统故障中恢复;识别并纠正用户错误;检索忘记的密码;验证系统资源,82,易用性的一般场景,系统提供以下一个或多个响应来“适配系统”定制能力;国际化系统提供以下一个或多个响应来使用户对系统“满意”显示系统状态;与用户的节奏合拍响应度量 任务时间、错误的数量、解决的问题的数量、用户满意度、用户知识的获取、成功操作在总操作
41、中所占的比例、损失的时间/丢失的数据,83,Usability tactics,Maintain a model of the task. (context about a task, auto completion, auto correction, context help) Maintain a model of the user. (users behavior and capability: color/sound/motion) Maintain a model of the system. (expected system behavior, internal state) Separate the user interface from the rest of the application.,84,Summary of runtime usability tactics,85,商业质量属性,上市时间 成本和收益 所希望的系统生命期的长短 目标市场推出计划 与老系统的集成,86,构架的质量属性,概念完整性:是在各个层次上统一系统设计的根本指导思想。正确性和完整性:构架能够满足系统的各种需求及运行时的资源要求的必要条件。可构建性:保证能够由指定的开发小组在规定的时间里及时开发系统,并允许在开发过程中做某些更改。,