第十四章 需求工程之功能以外的需求

发布时间:2024年01月05日

质量方面的特性能够区分一个产品是只实现了它应该有的功能,还是一款用户非常喜悦的产品。
优秀的产品可以体现出显著的质量属性最佳平衡。
需求功能性需求起源于质量属性
在这里插入图片描述

质量属性分类

  • 运行期间是否能够表现出来
    • 外部质量属性(能够表现出来)
      • 对用户更重要
    • 内部质量属性(没有直观显现出来)
      • 对开发和运维更重要
外部质量简要描述
易用性当在某时某地需要系统服务时,系统服务能够被有效访问的程度
可安装性正确安装、卸载和重新安装应用的难易程度
完整性防止系统数据错误以及数据丢失的程度
互操作性系统与其他系统或者其他组件互联或者交互数据的难易程度
性能系统响应用户输入或者其他事件的快慢程度以及可预见性
可靠性在故障发生之前,系统正常运行时间
健壮性系统如何应对非预期的操作
安全性如何防止系统被破坏性损坏
防护性系统如何组织对应用及其数据的未授权访问
易用性用户对系统的学习、记忆和使用的难易程度
内部属性简要描述
有效性系统使用计算机资源的效率
可修改性维护、修改、改进以及重构系统的难易程度
可移植性使系统能够在其他操作环境中运行的难易程度
可重用性在多大程度上能够把组件使用在其他系统中
可扩展性随着用户数量、事务、服务器或者其他扩展,系统能够随之适应的难易程度
可验证性开发和测试能够对软件进行验证以查看软件是否正确实现的便利程度。

探究质量属性

  • 理想情况下,每个系统都会表现出所有这些质量属性的最优特征。
  • 实际情况下,系统的质量属性达不到最优标准,使系统在所有质量属性方面同时达到最优是一件不可能的事情。最完美的状态永远无法达到。
  • 从所有质量属性中选择一些对项目成功至关重要的属性,用这些基本的属性能够创建特定的质量目标,使开发人员能够做出恰当的选择。

确定质量属性的步骤

1、以一个广泛的分类为起点

减少忽略重要质量属性的可能性

2、精简列表

  • 召集主要干系人,评估哪些属性可能是重要的项目属性。
  • 记录导致我们决定纳入考量的原因。
  • 如果没有明确的质量目标,产品就不会展现出预期的特性。
  • 从多个干系人那里获得反馈相当重要。

3、对属性进行排序

对相关属性进行排序,能够为将来的需求获取讨论确立重点。
少数几个属性两两对比比较有效。

属性分数可用性完整性性能可靠性健壮性安全性易用性可验证性
可用性2^^^<^^<
完整性6<<<^<<
性能4<<^^<
可靠性2<^^^
健壮性1^^<
安全性7<<
易用性5<
可验证性1
计算规则:可用性=2,可用性行,“<”的数量等于2,可用性列"^"数量等于0,2+0-2
完整性=6,完整性行的"<“数量等于5,完整性列的”^"数量等于1,5+1=6
一次类推计算每个属性的分值。
质量属性排序的好处
  1. 能够让人在获取需求时把重点放在对项目成功最重要的属性上。
  2. 质量需求有冲突时,他能使人知道应该如何应对。

4、获取对每个属性的具体期望

用于探究用户期望的问题可以引导得出具体的质量需求,他们帮助开发人员开发讨人喜欢的产品。

  • 用户不知如何回答时,需要提出问题来指导用户。
    • 查询响应时间的合理时间是多久
    • 不可接收的响应时间是多久(可接受与不可接收的临界点)
    • 预期的平均的并发用户是多少?
    • 预期的最大并发用户量是多少?
    • 一天、一月、一年中哪些时间用户访问比平时多?
  • 明确指定违背用户对质量期望的系统属性,定义不可接受的质量属性,写出来使系统演示这些属性的测试用例。
  • 另一种可能的需求获取策略是以质量目标作为起点,项目干系人认为在开发的系统应该具有“这”样的目标。
    • 项目干系人的质量目标能够分解为功能子目标和非功能子目标
    • 分解后,质量目标变得更加明确,也更容易测量。
5、具体制定结构良好的质量需求
  • 过分简化的质量需求是没有用的
  • 应根据获取的每个质量属性的相关信息制作明确的、可验证的需求。
  • 质量需求遵循SMART原则:
    • Specific 明确的
    • Measurable 可测量的
    • Attainable 可实现的
    • Relevant 相关的
    • Time-sensitive 高时效的
  • 讲义将匹配标准(“用来表示产品必须满足某种要求的量化描述”)作为每个需求规范描述的一部分,既包括功能性需求,也包括非功能性需求。
  • 为了记录不太熟悉的需求,不如找一个可以遵循的现有需求模式,模式提供了模板。

定义质量需求

记录下每个质量需求的来源,如果不是很明确,还应该写下描述的每个质量目标背后的理论依据。某个明确的目标是否有必要或者说实现成本是否合理类似的问题出现时,质量目标的理论依据会很重要。

外部质量属性

易用性

易用性(usability)是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力发挥最大的效能。

在评估使用者界面的的易用性时,此定义可以简化为“目标使用者感受到该操作界面的有效性(有达到目的)以及效率(使用时所需的工夫或时间)”。

ISO9126-2001规定易用性是在指定条件下使用时,产品被理解、学习、使用和吸引用户的能力。其中包括了易理解、易学习、易操作、吸引性和对相关标准、法规、约定的依从性
易用性专家Jakob Nielsen与计算机科学教授Ben Shneiderman曾经分别讨论系统可接受度(acceptability)的框架,指出易用性是“有用”(usefulness)的一部分,而且包含下列元素:

  • 可学习性 (Learnability)
  • 效率 (Efficiency)
  • 可记忆性(Memorability)
  • 很少出现严重错误 (Errors)
  • 满意度 (Satisfaction)
易用性设计原理

交互设计的实质是根据用户的心理认知规律,了解和预测用户的心理变化和行为,合理安排各种视觉元素,优化软件结构和界面布局,提高产品的易用性。弄清楚人的认知心理学机制对于我们的设计有着指导意义。

1、信息处理模式

首先需要了解人的信息处理模式,是一个经过信息输入、信息加工、信息储存、信息提取的过程,如下图所示。

信息处理模式流程图

来自环境中的信息,以感觉刺激的形式经由感官接收,做短暂的停留。感官信号的贮存为信息处理的最初一步。感觉刺激必须达到一定的量才能被知觉到,感官记忆可贮存大量的信息,但是若不予注意,信息很快就失去,所以要进一步“注意”,将重要信息凸显出来才能被用户注意到。需要强调的是,这个注意资源是有限的,因此凸显的信息不能过多,否则就会造成用户的过度载荷。

经过“注意”和“图样辨识”的信息会被送到记忆系统储存。人类的记忆系统根据维持时间的长短,分为“短时记忆”与“长时记忆”。“短期记忆”又称“工作记忆”,一般容量是7±2个单元,维持的时间大约30秒,在这时间内,信息若没有复述,很快就会消失。遗忘短期记忆的原因主要是记忆本身自然的消退和外界的干扰。

信息得到多次复述和已有的认知产生了联结,才能从短时记忆转换为长时记忆。长期记忆的容量没有限制,具有相当永久性,被遗忘的信息可能不是永久消失,而是暂时消失。因此,如果能够提供一些线索让用户进行识别,那么提取记忆的成功率会大大提高。

2、视觉运动模式

通常人的眼球是急速跳动而不是静止的,跳动之间有短暂停留,称为眼球注视。眼球跳动时并不吸收信息,只有当眼球固定,视线停留在某点时才吸收信息。由此可知**“阅读”不是平稳地扫瞄一行文字,而是从一个注视点跳跃到另一个注视点。**这无数的注视点组成的运动轨迹就是我们的注意轨迹。

用户眼跳轨迹

引导用户视觉流程的方法可遵循以下规则:人的视觉习惯一般是从上到下、从左到右,色彩与面积、大小的对比、轻与重的对比、图象的运动等因素都会对视觉流程有很大影响,实际运用中要具体把握。

3、视觉加工连结

对事物而言人在视觉上对于相同的事物会连结在一起加工,包括大小类似、造型类似、明度或色彩类似、位置类似、空间方向类似、方向类似、以及速度类似的事物。人的这种连结加工能帮助我们做好界面设计的规范统一而又不失变化。

对时间而言对于相同的事物如以顺序的时司呈现,则会产生视觉的联结,从而产生事物运动的感觉,这也是动画的原理。

对空间而言适当的视觉空间与视野中的参考架构有关。通常大的物体是作为小的物体的空间架构。在位移的过程中,架构是保持静止,而依附它的物象则被视为运动的。

4、经验决定所见

人的视觉加工是自上而下驱动的,也就是说,用户的视觉经历决定了用户看到什么,在软件界面设计中我们首先必须清晰地了解软件的实际使用者,了解他们的年龄、爱好、教育背景、社会经历和知识构成等。针对不同的用户群体设计不同的视觉设计方案,才能与用户产生共鸣。

易用性设计原则

Nielsen提出了著名的易用性十大原则来指导设计,可以从工程心理学、可供性、响应性、便捷性、限制性这几个方面去理解,从而指导设计师设计出用户体验良好的产品。

1、符合工程心理学原理

(1)环境贴切(Match between system and the real world 匹配系统与真实世界)

系统的一切表现和表述,应该尽可能贴近用户所在的环境(年龄、学历、文化、时代背景)和自然情景逻辑,不要使用太专业的语言。尽可能利用数字、图标、动画、色彩等用户熟悉并且容易理解的对象显示原理或者抽象的概念。

(2)一致性原则(Consistency and standards一致性和标准化)

图式是指关于一类事物的有组织的较大知识单元或信息组块,人们通过发现图式来进行学习。当用户面对新情景的时候,如果情景里包含相互关联的信息,用户能够形成心理图式(看起来相似的事物可以做相似的事情),那么用户就能比较容易地理解系统是如何工作的。

例如,如果我们看到界面上凸出的标签是可以按下去的按钮,那么下次我们看到一个新界面上有这样标签的时候,就会意识到这可能也是个可以按的按钮。

因此,不同组成部分之间的设计目标、元素外观、交互行为模式都要保持一致。

(3)易取原则(Recognition rather than recall 识别比记忆好)

人的短时记忆容量很小,为了尽量减少用户对操作目标的记忆负荷,对象、动作和选项都应该是可见的。用户应该不需要在进入下一个界面后还要记住前一页的信息,只需要识别界面呈现出来的信息。

除此之外,不论何时用户想要了解如何使用系统的时候,系统引导都应该能看到、可检索。当站内信息过多的时候,还需要提供站内搜索功能。

(4)易扫原则(Aesthetic and minimalist design 审美和简约的设计)

互联网用户浏览界面的眼球运动是非常快速的扫视,典型的注视轨迹是下面热力图这样的“F模式”。易扫,意味着突出重点,弱化和剔除无关信息。用户浏览界面是先左后右,先上后下的轨迹。

因此,在准备列表的时候,需要确保最重要的模块放在列表的开头。同时,提供间隔是符合人体工学的排列布局方式。只有将信息分区化,给界面中的元素留出恰当的间隔,用户才能舒适的浏览界面,并能够从中提取清晰的信息。

典型网页的热力图

2、产品的可供性和响应性

(5) 系统可见性原则(Visibility of system status)

系统应该让用户知道过去、现在、未来发生什么事,对包含一系列步骤的任务,清楚地展现出步骤,并且将已完成的、未完成的步骤进行区分标记,可以帮助用户了解接下来做什么。

反馈是可预见系统的必要因素。在用户进行操作之后,不论是单击、滚动还是按下键盘,系统应该在适当的时间内做出适当的反馈,以便及时知道自己的操作,及时纠正自己的错误,往正确的方向靠拢。

反馈又分为引发性反馈行为性反馈两种,激活反馈表示操作是否成功引发,比如按钮被按下,菜单选项被选择了;行为反馈表示这个操作的激活,或调整将会发生某种结果,提醒用户确认或撤回。通过合理运用反馈方式让用户知晓操作的状态。

这里加上一点,功能可供性(affordance),也是让用户理解、学习产品的一大重要原则,通过设计对象或操作的视觉属性,给予用户线索指导如何使用对象,如何进行操作。

可操作的对象应该看起来是可以点击的、可以触碰的,一种常用的方式是渲染光影来让按钮呈现3D视觉效果;和一般软件应用、操作系统的基本操作控件尽量保持一致,这能降低用户的学习成本。

3、产品的便捷性

(6)灵活高效原则(Flexibility and efficiency of use使用的灵活高效)

中级用户的数量远高于初级和高级用户数,这些用户的交互过程经常是加速的,系统应该能够允许频繁的操作。

与此同时,包容初级用户,因为产品是为大多数用户设计,用户往往经过初级到高级的过程。不要低估,也不可轻视用户,保持灵活高效。

(7)人性化帮助原则(Help and documentation 帮助文档)

即使用户能够在没看帮助文档的时候很好地使用系统,帮助文档还是非常必要的,减少用户遇到问题无法解决的情况发生。

帮助性提示最好的方式是:1、无需提示;2、一次性提示;3、常驻提示;4;帮助文档。

4、产品的限制性

(8)撤销重作原则(User control and freedom用户的控制性和自由度)

交互界面必须设计一些限制以防系统进入无效状态,比如自动固定信息的输入格式可以减少表单错误;提供对用户出错的保护机制和强有力的帮助机制,支持逆向操作、撤销和重做功能。这些功能可以减少用户的焦躁情绪,使用户把精力集中到任务本身,而不是操作上。

(9) 防错原则(Error prevention)

防止容易引起错误发生的情况出现,用户完成提交之前系统自行进行检查,并让用户确认。通过网页的设计、重组或特别安排,防止用户出错。

(10)容错原则(Help users recognize, diagnose, and recover from errors 帮助用户识别,诊断,并从错误中恢复)

除了防止用户出错,系统也应该帮助用户从错误中恢复,将损失降到最低。如果无法自动挽回,则提供详尽的说明文字和问题解决方式,而非代码。

完整性

是指信息在收集、传输、交换、存储和处理过程中,保持信息不被破坏或修改、不丢失和信息未经授权不能改变的特性,也是最基本的安全特征。
数据生命周期内所有数据完整、一致、准确的程度。
数据完整性的设定必须在整个“数据生命周期”内,保护数据的准确性、完整性、内容以及意义
完整性要求不能容忍的错误,数据必须以正确的形式存在,并且收到保护。
完整性要求确保从其他系统接收到的数据与发送的数据是一致的。

  • 数据,由原始数据获得或衍生的信息
  • 原始数据,原始的记录或文件,由原始的生成的格式留存(如纸质版或电子版),或作为一个“真实副本”
  • 元数据,用于解释数据的数据,并提供上下文意义。如:氯化钠批号:20200102,3.5mg,张三2020.01.07,其中3.5是数据,如果单说一个氯化钠重量为3.5,没有意义,必须有单位,这个单位就是所谓的解释数据的数据。元数据是所形成原始记录不可分割的一部分,没有元数据,数据就没有意义。
    元数据Metadata),又称中介数据中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
    元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据
  • 真实副本,指经过核实和确认已准确并完整的保留了原始记录全部内容和意义的数据的原始记录副本,对电子数据来说,包括了所有必要的元数据和适当的原始记录模板。
  • 基准记录,指采用多种方法平行收集相同数据时,指定的首要记录,当记录内容之间不一致时,以该记录为判断依据。

互操作性

互操作性表示系统与其他软件系统之间交换数据和服务的难易程度以及系统与外部硬件设备集成的难易程度。
互操作性(Interoperability )又称互用性,是指不同的计算机系统网络操作系统应用程序一起工作并共享信息的能力。

性能

指标范例
响应时间请求后响应的时间(秒)
吞吐量每秒钟处理的性用卡业务量
数据容量在数据库中存储的最大记录数
动态容量社交媒体网站上最大的用户并发量
实时系统中的可预测性飞机飞行控制系统中的硬实时需求
延迟性音乐录制软件中的时间延迟
在降级模式或过载状态下的行为自然灾害导致超大量紧急电话系统呼叫。
写性能需求时,记录它们的理论依据,以此来指导开发人员做出恰当的设计选择。如数据库响应时间要求如果很严格,可能会使设计师在多个物理点创建数据库镜像。
对于实时系统,要明确写出每秒钟执行的事物量、响应时间以及任务调度关系。
性能是一个外部质量属性,因为它只有在运行期间才能体现出来。它与内部属性中的有效性紧密相关,而有效性对用户所观察到的性能有较大的影响。

可靠性

可靠性是指软件在指定时间段内无故障运行的概率。
引起可靠性的原因通常由不恰当的输入和软件自身的错误编码。
与可靠性紧密相关的是健壮性和易用性。
描述和衡量软件可靠性的方法包括正确完成的操作所占的百分比、系统出现故障前的平均运行时间(两个故障之间的平均时间或者MTBF)、制定时间内可接受的最大失败率。
可靠性衡量依据业务对系统的要求,比如处理某个业务的周期是10天,那这10天内不允许出现问题,否则整个业务可能会因此而失败。
或者在业务期间内系统停机时间不能超过1天,否则业务就会终端。

可靠性需求获取问题
  • 怎样判断系统是否有足够的可靠性
  • 在执行系统的某些操作时,如果有故障发生,会有什么的后果?
  • 与普通故障相比,你认为哪些故障是非常严重的?
  • 在什么情况下故障会对业务操作造成严重的后果?
  • 系统中是否有某些部件必须超级可靠?
  • 如果系统宕机,在对业务操作产生重大影响之前,可以允许它离线多长时间?
    理解可靠性需求,可以让架构师、设计师和开发人员获得必要的可靠性而采取相应的策略。
    识别异常及相应的处理方式,可以提高考可行和健壮性。

健壮性

健壮性是指系统遇到非法输入、与软件或硬件部件链接相关的错误、外部供给或者异常情况时,系统还能够继续正确运行的可能性。
健壮的软件能够从问题中顺利恢复并包容用户的错误。还能够从内部的软件失败中恢复,而且不会对终端用户体验产生不利的影响。
与健壮性相关的其他质量属性是故障容忍度(用户的错误输入捕捉了吗?纠正了吗?)和可恢复性(在操作系统升级过程中发生了断电时,机器能够恢复正常操作吗?)

在获取健壮性需求时,要询问用户系统可能会碰到哪些错误情形,还要了解系统此时应该如何应对。

例如:所有图像描述参数都应该有明确的默认值,当缺少某个参数的输入数据或者该参数非法时,图像引擎就可以使用这个默认值。

安全性

安全性需求与防止系统对人员造成上海或者对资产造成破坏的需求相关。
安全性需求经常以严禁系统发生某些状态或行为的方式来写。
例如:在菜单中,用户应该可以看到各个菜所有的食材,并显示标注出已知会造成北美人口中千分之五人员过敏症状的成分。

防护性

防护性是指阻止对系统功能或数据的非授权访问,目的是保证软件免遭恶意攻击等。
与完整性需求一样,防护性需求对错误也是不能容忍的。
SEC-1:在5分钟内,如果连续4次登录失败,系统就会锁定用户账户。
SEC-2:对于权限不足用户对安全敏感数据的访问,系统应该有日志记录。

防护性需求往往来源于业务规则,比如企业安全政策:
SEC-7:只有具有审计权限的用户可以产看客户交易历史信息。

在写安全性需求时,尽量避免引入设计限制。对访问控制功能使用密码机制就是一个例子。真正的需求时只有授权用户才可以访问系统,而密码机制只是实现该目标的方式之一。

文章来源:https://blog.csdn.net/bekeer/article/details/135402237
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。