重构“信息领域热词分析”,实现六种质量属性战术
六种质量属性战术简介
系统的六大质量属性的一般场景也将由这6部分来刻画。
刺激源:这是某个生成该刺激的实体(人、计算机系统或任何其他激励器)。
刺激:该刺激是当刺激到达系统时需要考虑的条件。
环境:该刺激在某些条件内发生,当刺激发生时,系统可能处于过载,或者正在运行,也可能是其他情况。
制品:某个制品被刺激,这可能是整个系统,也可能是系统的一部分。
响应:该响应是在刺激到达后所采取的行动。
响应度量:当响应发生时,应该能够以某种方式对其进行度量,一堆需求进行测试。
表1-表6汇总了系统的六大质量属性的一般场景构成以及质量属性战术。
表1 可用性
与系统故障及其相关后果有关。 所关注的方面包括:如何检测系统故障,系统鼓鼓掌发生的平度,出现故障时会发生什么情况,允许系统多长时间非正常运行,什么时候可以安全地出现故障,如何防止故障发生以及发生故障时进行那种通知。 |
|
一般场景 |
质量属性战术 |
源:系统内部、系统外部 刺激:错误(疏忽、崩溃、时间、响应) 制品:系统的处理器、通信通道、进程 环境:正常操作、降级模式 响应度量:系统监测时间,并进行活动(将其记录下来、通知适当的各方,包括用户和其它系统、根据已定义的规则禁止导致错误或故障的事件源等) 响应度量:系统必须可用的时间间隔、可用时间、系统可以在降级模式下运行的时间间隔、修复时间 |
① 错误检测 命令/响应、心跳(计时器)、异常 ② 错误恢复 表决、主动冗余(热重启、热备份)、被动冗余(暧重启/双冗余/三冗余)、备件、状态再同步、检查点/回滚 ③ 错误预防 从服务中删除、事务、进程监视器 |
表2 可修改性
有关变更的成本问题。 两个关注点:可以修改什么(制品)?何时进行变更以及由谁进行变更(环境)? |
|
一般场景 |
质量属性战术 |
源:最终用户、开发人员、系统管理员 刺激:希望增删改功能、质量属性、容量 制品:系统用户界面、平台、环境或与目标系统交互的系统 环境:在运行时、编译时、构建时、设计时 响应:查找构架中需要修改的位置,进行修改且不会影响其他功能,对所做的修改进行测试,部署所做的修改 响应度量:根据所影响的元素的数量度量的成本、努力、资金;该修改对其他功能或质量属性所造成影响的程度 |
① 局部化修改 目标是减少由某个变更直接影响的模块的数量 ② 防止连锁反应 目标是限制对局部化的模块的修改,以防止对某个模块的修改间接地影响到其他模块 ③ 延迟绑定时间 目标是控制部署时间并允许非开发人员进行修改 |
表3 性能
与时间有关。时间(中断、消息、用户请求或时间已到)发生时,系统必须对其做出响应,性能与事件发生时,将要耗费系统多长时间做出响应有关。 |
|
一般场景 |
质量属性战术 |
源:大量的独立源中的一个,可能来自系统内部 刺激:定期事件、随机事件、偶然事件到达 制品:系统 环境:正常模式,超载模式 响应:处理刺激,改变服务级别 响应度量:等待事件、期限、吞吐量、抖动、缺失率、数据丢失 |
性能战术的目标是对一定的时间限制内到达系统的事件生成一个响应,这些事件可以是消息到达、定时器到时,系统状态的变化。 ① 资源需求——分析影响性能的资源因素 ② 资源管理——提高资源的应用效率 ③ 资源仲裁——解决资源的争用 |
表4 安全性
衡量系统在向合法用户提供服务同时,组织非授权使用的能力。一个提供认可、机密性、完整性、保证、可用性和审核的系统。 |
|
一般场景 |
质量属性战术 |
源:正确识别、非正确识别或身份未知的个人或系统它来自内部/外部:经过了授权/未经授权;它访问了有限的资源/大量资源 刺激:试图显示数据、改变/删除数据、访问系统服务、降低系统服务的可用性 制品:系统服务、系统中的数据 环境:在线或离线、联网或断网、连接有防火墙或直接连到了网络上 响应:对用户进行身份验证:隐藏用户的身份:阻止对数据和/或服务的访问:允许访问数据和/或服务:授予或收回对访问数据和/或服务的许可:根据身份记录访问/修改或试图访问/修改数据/服务;以一种不可读的格式存储数据:识别无法解释的对服务的高需求:通知用户或另外一个系统,并限制服务的可用性 响应度量:用成功的概率表示、避开安全防范措施所需要的时间/努力/资源:检测到攻击的可能性:确定攻击或访问/修改数据和/或服务的个人的可能性:在拒绝服务攻击的情况下仍然可以获得的服务的百分比:恢复数据/服务;被破坏的数据/服务和/或被拒绝的合法访问的范围 |
① 抵抗攻击的战术 身份验证 用户授权 数据加密 数据完整性 限制暴露 限制访问 ② 检测攻击的战术 入侵检测 ③ 从攻击从恢复的战术 包括与恢复状态相关的战术和识别攻击者相关的战术。与恢复状态相关的战术与可用性一致,如冗余,但主要是对密码、访问控制列表和用户资料数据进行冗余;用于识别攻击者的战术是“维持审计追踪”审计追踪就是应用到系统中的数据的所有事物和识别信息的一个副本,可以使用它来识别攻击者的操作,支持认可和系统恢复
|
表5 可测试性
通过基于运行的测试解释软件缺陷的容易程度。特别地,可测试性是指假设软件中至少有一个错误,软件在“下次”测试运行时不能正常工作的可能性。当然,计算这种可能性并不容易,在谈到响应度量时,将使用其他度骨指标 |
|
一般场景 |
质量属性战术 |
源:单元开发、增量集成、系统验证、客户验收测试人员以及系统用户 刺激:已完成的分析、构架、设计、类和子系统集成,所交付的系统 制品:设计、代码段、完整的应用 环境:设计时、开发时、编译时、部署时 响应:提供对状态值的访问、提供所计算的值、准备测试环境 响应度量:已致性的可执行语句的百分比,如果存在缺陷出现故障的概率,执行测试的时间,测试中最长依赖链的长度,准备测试环境的时间 |
可测试性战术的目标是允许在完成软件开发的一个增量后,轻松地对软件进行测试。 测试的目标是发现错误。 ① 管理输入/输出 记录/回放;将接口与实现分离;特化访问路线/接口 ② 内部监视: 内部监视器:组件可以维持状态、性能负载、容量、安全性或其他可通过接口访问的信息。当监视状态被激活时可以记录事件。 |
表6 易用性
关注的是对用户来说完成某个期望任务的容易成都和系统所提供的用户支持的种类。包括学习系统的特性、有效地使用系统、将错误的影响降到最低、是系统适应用户的需要、提高自信和满意度等方面。 |
|
一般场景 |
质量属性战术 |
源:最终用户 刺激:想要学习系统特性、有效使用系统、是错误的影响最低、适配系统 制品:系统 环境:在运行时或配置时 响应:系统提供以下 一个或多个响应来支持“学习系统特性”;帮助系统与环境联系紧密:界面为用户所熟悉:在不熟悉的环境中,界面是可以使用的;系统提供以下一个或多个响应来支持“有效使用系统”;数据和/或命令的聚合:已经输入的数据和(或命令的重用:支持在界面中的有效;导航;具有一致操作的不同视图:全面搜索:多个同时进行的活动系统提供以下一个或多个响应来“使错误的影响最低”;撤销:取消:从系统故障中恢复:识别并纠正用户错误:检索忘记的密码:验证系统资源;系统提供以下一个或多个响应来“适配系统”;定制能力:国际化;系统提供以下一个或多个响应来使用户“对系统满意”;显示系统状态:与用户的节奏合拍 响应度量:任务时间、错误的数量、解决的问题的数量、用户满意度、用户知识的获得、成功操作在总操作中所占的比例、损失的时间/丢失的数据量 |
易用性与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关。 ① 分离用户接口 ② 支持用户主动: 取消、撤销、聚合 ③ 用户模型: 用户模型、系统模型、任务模型 |
重构“信息领域热词分析”
信息领域热词分析系统是通过对信息领域的热词进行提取,分析并进行可视化展示的过程,可以让人直观的看到当下信息领域的热词,对于本系统,再利用上述质量属性战术进行重构的方面如下:
首先是可用性方面,可用性方面主要是两个方面,第一个方面就是在故障的恢复处理上,要注意对数据库信息的保存,每隔一段时间都要对数据库进行备份;第二个方面是对错误的检测方面,多使用try{}catch{}finally{}以及if语句进行判断。
Connection conn = null;
try {
conn = dbcp.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
thread.set(conn);
return conn;
在可修改性方面,主要注意的是系统后期的进行升级或者维护的方便程度,其次还要注意防止连锁反应,尽量消除模块之间的依赖性,把某个实体的责任分解为更小的部分,并选择哪些信息成为公有的,哪些成为私有的,通过接口获得公有责任。多多利用设计模式中单一职责原则进行设计。
在性能方面,本系统主要是在热词的提取和搜索方面的过程运行十分缓慢,时间较长,在解决这个方面上,数据库的设计,数据与数据之间添加联系,也就是索引,这样可以是系统在获取数据库的信息进行可视化展示的时候可以比较快捷的把相关联的数据获取,以提高系统的运行速度,进而提升性能。
在安全性方面,信息领域热词分析系统并没有很多设计安全方面的东西,但是,可以在后期系统升级时,设置不同的用户,不同的用户身份之间有不同的功能,以此来进行系统的安全性升级,注重不同用户的权限的管理,防止权限错乱情况出现。
可测试性方面本系统主要涉及到的是代码模块封装,便于一小块进行测试之后,合并到整体进行测试,在测试用例设计方面,系统要明确测试用例设计方案,便于测试。
在易用性方面,主要是用户使用系统的方便程度,主要涉及界面的美观性,和使用的简单,操作流畅等方面。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步