尝试举例子说明方法的作用说明每个软件质量属性

1、合适性所提供的功能是用户所需要的,及用户所需要的功能软件系统已提供。笔者觉得此质量属性更适合由前端的需求人员把握,当然测试人员也需根据需求的适用性,以定义测试的重点与优先级。比如在医疗软件系统上如果有一款可供娱乐的游戏,试想医生一边给病人看病一边玩游戏会造成什么后果呢。2、准确性软件系统提供给用户的功能是否满足用户对该功能的精确度要求。此特性好理解,在实际的工程应用中也常遇到,例如财务类软件。如果不涉及特殊用户的需求(如科研机构的特种应有),精度一般都容易满足。3、互操作性软件系统与一个或多个周边系统进行信息交互的能力。例如,运行在windows上的应用软件,与运行在系统上的软件进行通信,如下图所示。Linux系统是数据的发送方,把数据发送到windows系统上,在windows系统上运行的应用软件需能读出特有数据格式的能力,然后在界面上显示。4、安全性指软件系统保护信息和数据的能力。可以从以下两方面理解:1)防止未得到授权的人或系统访问相关的信息或数据;2)保证得到授权的人或系统能正常访问相关的信息或数据。常见的安全性测试:1)用户验证:登录密码验证(如windows登录验证,邮箱验证等)、IP地址访问限制等;2)用户权限管理:验证低级别用户是否具有了高级别用户的权限,各级别用户权限都得到了实现。例如windows 7操作系统,某些应用程序的运行必须以管理员身份才允许;3)系统数据的保护:例如对系统文件、用户密码文件等进行隐藏,机密文件内容进行加密、备份;5、功能性的依从性遵循相关的标准(国际标准、国家标准、行业标准、企业内部规范等)约定或法规以及类似规定的能力。例如:在中国研发与生产的医疗设备如果要在美国上市销售必须经过FDA(Food and Drug Administration美国食品及药物管理局)的审核,并通过。细心读者,你会发现每一质量属性都包括其依从性的子属性,由于定义类同,下面不再分开详述。二、可靠性可靠性(Reliability)是指软件是否能够一直在一个稳定的状态上满足可用性。1、成熟性软件系统防止内部错误扩散而导致失效的能力。测试过程中常遇到的例子如:模块A更改了某参数,但没考虑到某参数同时被模块B调用,由于模块B并未作相关更改,结果使得模块B的相关功能失效。2、容错性软件系统防止外部接口错误扩散而导致系统失效的能力。例如:应用软件在操作过程中需操作一个文件,但由于此文件已遭破坏,由于缺少容错处理,结果执行文件操作时,软件崩溃。3、易恢复性系统失效后重新恢复原有功能、性能的能力,包括对原有能力恢复的程度与速度。典型的例子,我们经常使用的windows系统有时会遇到系统不响应的情况,只好按Reset或关掉电源重新开机。这种情况,当前未保存的数据当然是丢失了,系统重启后能否正常进入系统便是易恢复性的一种体现。三、可用性可用性(Usability),是衡量用户使用软件需要付出多大的努力的质量属性。其中,我们经常提到的易用性就是可用性的一个重要方面,指产品易于和使用,可减轻记忆负担等,具体可从以下几方面进行理解。1、易理解性易理解性指用户在使用软件系统的过程中,展示给用户的信息是否准确、清晰、易懂,能帮助用户准确理解系统当前真实的状态,并指导其进一步的操作。一个典型的例子,如下图是我们都很熟悉的登录界面。用户在输入用户名与密码后,点击“登录”按钮,弹出下图提示。提示“用户名或密码不正确”告知用户的是不明确的信息,很容易误导用户。因为用户输入的信息有可能两者都错了,或其中之一错了。用户看到此提示后,只能再尝试输入用户名与密码,造成可能正确的信息重新输错了,错的反以为对了,只好反复验证,最后提示超过尝试次数而告终。&2、易学性易学性是指软件提供相关的辅助手段,帮助用户学习使用它的能力。例如:是否具有在线帮助。在线帮助常见的有两种,一种是跟随功能而变的帮助,如Word、Excel中的菜单项鼠标提示(tips);另一种是在线帮助手册,如同windows程序按快捷键F1自动调出帮助手册内容。3、易操作性易操作性指用户基本不用额外学习即能操作软件,包括多方面的内容。例如:1)常用功能路径不要太深,最好能提供快捷键,且这些快捷键具有普适性(用户已广泛接受),如前面提到的windows程序激活帮助功能的快捷键F1。目前有很多软件采用这种已符合人们的使用习惯的操作。2)最好提供一键返回桌面的功能,这一点的Iphone做得比较好,无论用户当前在什么位置,只要按下“返回桌面”主键,立即可退出。3)操作尽量简单,例如软件的安装或升级,按提示点击“下一步”且不要太长的时间或多个选择路径。4、&吸引性吸引性指软件具体某些独特的,能让用户眼前一亮的属性,包括GUI(Graphical User Interface,图形用户界面),多媒体应用。例如:苹果Iphone
4手机,当短信发送成功时,除了弹出新颖的冒泡状提示,还会伴有声音提示你,且声音可由用户根据喜好自行设置。四、效率效率(Efficiency),这里指衡量软件正常运行需要耗费多少时间及物理资源,是的重点内容。1、时间效率时间效率主要指软件系统在各业务场景下完成用户指定的业务请求所需的响应时间。一个典型的应用案例:我们在上发表博文,点击“提交”后,一般情况都需等待几秒钟(当然一般都有体贴用户的温馨提示啦J),然后自动跳转到博文显示页面,那么此等待时间,我们可以理解为系统响应的时间。2、资源效率资源效率主要指软件系统在完成用户指定的业务请求所消耗的系统资源,如CPU占有率、内存占有率、通信带宽占有率、软件内部消息包资源占有率等。例如不同业务功能之间,不同GUI界面相互之间的切换,如果切换过程中有明显的后影,或速度太慢,很可能资源占用方面没有处理好。五、可维护性可维护性(Maintainability),衡量对已经完成的软件进行调整需要多大的努力,其又可分为下面四个子属性。1、易分析性指软件系统提供辅助手段帮助开发人员分析识别缺陷、失效产生的原因,找出待修复部分的能力。这也是工程实践中很重要的一方面,可以减少缺陷定位的时间,提高开发人员效率。采用系统记录的方法,如同windows的事件查看器(eventvwr),把软件执行代码的轨迹或某些错误、状态进行记录,是一种常见的方法。2、易改变性指软件缺陷的修复容易被实施,这与软件的设计有着密切关系。例如设计上封装性好、高内聚(同层次设计时,一个实体只完成一个功能)、低耦合的代码,为未来可能的变化留有扩充余地,它的易改性会更好。例如:下面关于学生信息定义的代码结构Struct student{&&&Char
&&&Unsigned
int No;&&&Char&S&&&Char C&&&Int
Reserved[20];&&//保留}其中最后一行,数组Reserved[20]即为日后学生信息扩展而保留的结构成员。3、稳定性指软件系统在长时间连续工作环境下能否正常工作,不出错,无异常情况等。测试人员常用长时间压力测试的方式检验软件的稳定性,稳定性与资源效率有紧密联系,例如内存的慢泄漏,时间越长,系统稳定性越差,内存资源占用越多,最后可能导致系统瘫痪。4、易测试性指从测试验证角度,软件存在可测试性的难易程度。例如:UI界面,提示框对话框,按钮响应状态变化等是很容易观察到的,可测试性强;有明确的输入输出数据,尽管此数据对于用户来说可能不容易被看到,但通过某种方法仍可验证到,可测试性次子。对鉴于系统设计原因,某种用户场景难于验证,测试的条件苛刻,需特定的实验室条件,如高温高压等,这种情况需考虑改变软件内部状态,通过发布特殊版本进行测试。易测试性作为可维护性的子属性之一,与质量是否存在必然的正向关系呢,即能不能说越容易测试的软件,其质量将越好。从工程最佳实践来看,这种必然的关系倒并不成立,但反过来是成立的,越难验证的软件,其存在问题的风险将可能成倍增大。六、可移植性可移植性(Portability),是衡量软件是否能够方便地部署到不同的运行环境中的能力,它有下面几个特性。1、适应性指软件系统无需做任何相应变动就能适应不同运行环境的能力,其中运行环境通常是指操作系统平台、平台、硬件平台等。例如我们在项目常遇到的情况,某系统软件原来运行在windows XP操作系统上,但后来由于Microsoft推出了windows 7,windows 8,应用新系统的用户比比皆是,新用户需要某系统软件能在新平台上正常运行。这种因平台的变化,系统应用软件的适应性在设计之初是需考虑的。本书5.2.3中“设计需求转换为测试需求失败”的案例,便是一个关于应用软件适应性的案例。2、易安装性指平台变化后,成功安装软件的难易程度。有些软件可不作任何变化即可成功部署,有些需作部分变化,如安装过程增加用户选项等。对于软件的安装过程,能尽量考虑用户少参与,多一些自动安装过程会让用户更放心。3、共存性指软件系统在公共环境与其共享资源的其他系统共存的能力。这个特性表明我们在测试时不仅需要关注自身软件特性的实现,还要关注本软件是否影响了其他软件的正常功能。关于共存性,笔者曾遇一个这样的案例,在应用程序进行输入中文时,只要打开紫光拼音,则软件将自动退出。还有一种是人为的限制,在已知情况下,软件A打开,限制软件B不能运行,有意防患,适合某特殊应用场景。4、易替换性&指软件系统的升级能力,包括在线升级、打补丁升级等。易替换性相对于嵌入式产品软件系统来说,由于涉及硬件物料的更新换代,如某主控芯片、USB接口芯片的换代,还可能会触发底层驱动的升级。&posts - 394,&
comments - 416,&
trackbacks - 20
       
            每一种架构模式都有它的优缺点以及潜在风险,选择正确模式来满足需求功能和质量特性是非常重要的.质量特性在需求分析过程中已经定义了, 质量特性可分为三种类型:
1. 实现特性.
  * 协作性.在内部组件与外界通用访问与交换数据. 协作性需要松散依赖的基础架构.
  * 可维护性与扩展性. 修改系统与方便地扩展的能力.
  * 可测试性. 帮助系统创建测试用例. 可测试性通常需要完整的系统设计与实现文档.
  * 轻便性. 系统级的独立于软件与硬件平台. 系统开发用高级编程语言通常具有这个特性. 一个典例的例子就是JAVA, 大多数JAVA程序编译一次可以在任何地方运行.
  * 伸缩性. 适用增加用户请求量的能力. 系统设计中伸缩性是比较讨厌的瓶颈.
  * 灵活性. 系统易于修改适应于非原始设计的系统不同环境或问题, 系统开发使用面向组件或面向服务的架构通常处理这个特性.
2. 运行时特性.
   * 可用性. 一个系统应该具有24/7的能力. 可用性通过复制与谨慎设计可应付硬件, 软件, 网络故障来实现.
   * 安全性. 一个系统应对内外界各种类型的攻击. 安全性能通过安装防火墙, 创建认证与授权过程与使用加密.
   * 性能. 增加一个系统效率系统到响应时间, 吞吐量, 资源利用, 通常与其它几个特性呈对立系统.
   * 易用性. 用户使用系统时感到满意. 易用性包含完整性, 正确性, 兼容性几个因素, 也包括友好的用户界面, 完整文档与技术支持.
   * 可靠性. 准确的输出结果. MTTF(平均失效前时间), 从故障中恢复, 故障预测.
   * 可维护性(扩展性, 适用性,可服务性, 测试性, 兼容性, 可配制性, 软件系统易于修改.
3. 业务特性.
   * 市场时效性. 从需求分析到产品发布之日所需时间.
   * 成本.  构建到运维系统的消耗.
   * 生命周期. 一个产品”存活”到”退休”期间时间
    在大多数情况下,没有一个单一架构模式能同时满足所有质量特性. 软件架构师通常需要在很多特性之间做出权衡. 典型成对应系统质量特生有这些:
*  空间与时间的取舍.  空间换时间, 或是时间换空间.
*  可靠性与性能的取舍.  例如, 像CSharp这样的语言实现防止内存溢出可能, 但纯C语言使用指针可以性能高但可靠性低.
*  可伸缩性与性能的取舍.  例如, 一个典型的方法来提高服务的可伸缩性运用复制服务器。 为了确保所有服务器的一致性,以确保每个服务器都有相同的一致性的数据,整个服务的性能就会受到影响。
   在选择架构模式时,不能满足所有的质量特性,系统分析师或软件架构师需要与客户一起来确定质量特性的优先级。通过枚举备选体系结构设计和计算加权来评价质量属性, 以便软件架构师可以优化设计与选择最合适的方案。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-。
阅读(...) 评论()以下试题来自:
单项选择题软件质量虽然是难于定量度量的软件属性,但仍能提出许多重要的软件质量指标,它们分别与软件产品的运行、修改和转移有关,以下哪个是与软件产品转移不密切相关的软件特性A. 可移植性B. 可靠性C. 可重用性D. 可运行性
为您推荐的考试题库
你可能感兴趣的试题
1A.决策支持系统B.管理信息系统C.办公自动化D.自动控制系统2A.2B.3C.4D.53A.过程B.职能C.功能D.活动4A.ⅠB.ⅢC.Ⅰ和ⅣD.Ⅲ和Ⅳ5A.划分数据B.子集数据C.复制数据D.重组数据
热门相关试卷
最新相关试卷

我要回帖

更多关于 安全知识举例说明 的文章

 

随机推荐