《全面软件质量管理》核心观点摘录

软件产品的质量定义始终都是满足要求和适合使用,高质量和高等级是有区别的。软件质量目标应该来源于商业目标驱动,商业目标决定了软件的价值。提高软件质量的目标仍然是为了盈利和创造更大的效益,而不是创造完美无缺的产品。

  软件产品质量不是靠测试和评审出来的,而是靠设计出来的。关注软件项目中的好质量成本和坏质量成本可以宏观的看到项目软件质量管理的水平。对于软件项目COQ一般在35%-55%,而坏质量成本一般在8-15%,这也说明我们要尽量减少返工,争取第一次就把事情做对。

  1.软件的质量属性和质量要素

  PMBOK中质量的定义是符合要求和适合使用。CMM对质量的定义是一个系统,组件或过程符合客户或用户的要求或期望的程度。因此可以讲质量更多不是研发者说的,而是用户的最终感受。

  通过类比,我们这样理解软件质量:软件质量是许多质量属性的综合体现,各种质量属性反映了软件质量的方方面面。人们通过改善软件的各种质量属性,从而提高软件的整体质量(否则无从下手)。

  软件的质量属性很多,如正确性、精确性,健壮性、可靠性、容错性、性能、易用性、安全性、可扩展性、可复用性、兼容性、可移植性、可测试性、可维护性、灵活性等。这些质量属性又可以分为功能性和非功能性两大类。

  功能性质量要素:正确性,健壮性,可靠性

  非功能性质量因素:性能,易用性,安全性,可扩展性,兼容性,可移植性

  a.正确性:第一重要,机器不会欺骗人,软件运行错误都是人为造成的。

  b.健壮性:包括容错能力和恢复能力,开发过程中应该充分考虑各种异常和边界。

  c.可靠性:可靠性是指在一定的环境下,在给定的时间内,系统不发生故障的概率。

  d.性能:性能通常是指软件的“时间-空间”效率,而不仅是指软件的运行速度。(性能问题解决根本还是算法和程序的优化,而不是期待硬件的更高配置)

  e.易用性:易用性是指用户使用软件的容易程度。(界面友好仅仅是一方面,还包括人机工程很多内容)

  f.安全性:安全性是指防止系统被非法入侵的能力

  g.扩展性:反映了软件应对变化的能力

  h.兼容性:对硬件的兼容,对软件的兼容

  非功能性需求是软件质量重要组成,是架构设计和软件产品化的重要考虑,但往往容易被忽视。特别是在开发通用性的产品的时候,非功能性质量要素必须要考虑全面。

  什么是质量要素,应该理解为能够提高用户满意度和提高产品核心竞争力和价值的质量属性。如果某些质量属性并不能产生显著的经济效益,我们可以忽略它们,把精力用在对经济效益贡献最大的质量要素上。简而言之,只有质量要素才值得开发人员下功夫去改善。

  2.商业目标决定质量目标

  重视软件质量是应该的,但是“质量越高越好”并不是普适的真理。只有极少数软件应该追求“零缺陷”,对绝大多数软件而言,商业目标决定了质量目标,而不该把质量目标凌驾于商业目标之上。

  企业的根本目标是为了获取尽可能多的利润,而不是生产完美无缺的产品。如果企业销售出去的软件的质量比较差,轻则挨骂,重则被退货甚至被索赔,因此为了提高用户对产品的满意度,企业必须提高产品的质量。但是企业不可能为了追求完美的质量而不惜一切代价,当企业为提高质量所付出的代价超过销售收益时,这个产品已经没有商业价值了,还不如不开发。

  企业必须权衡质量、效率和成本,产品质量太低了或者太高了,都不利于企业获取利润。企业理想的质量目标不是“零缺陷”,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内。

  3.质量保证能够保证质量吗

  软件质量保证(Quality Assurance)的目的是为管理者提供有关软件过程和产品的适当的可视性。它包括评审和审核软件产品及其活动,以验证其是否遵守既定的规程和标准,并向有关负责人汇报评审和审核的结果。

  简而言之,质量保证活动就是检查软件项目的“工作过程和工作成果”是否符合既定的规范。如此简单的活动为什么被冠以“质量保证”这等份量的术语呢?没有历史典故,经我考究,猜想是源于一个天真的假设:

  过程质量与产品质量存在某种程度的因果关系,通常“好的过程”产生“好的产品”,而“差的过程”将产生“差的产品”。假设企业已经制定了软件过程规范,如果质量保证人员发现某些项目的“工作过程以及工作成果”不符合既定的规范,那么马上可以断定产品存在缺陷。反之,如果质量保证人员没有发现不符合既定规范的东西,那么也可以断定产品是合格的。

  符合既定规范的东西并不意味着质量一定合格,仅靠规范无法识别出产品中可能存在的大量缺陷.

  4.全面软件质量管理模型

  提高软件质量最好的办法是:在开发过程中有效地防止工作成果产生缺陷,将高质量内建于开发过程之中。主要措施是“不断地提高技术水平,不断地提高规范化水平”,其实就是练内功,通称为“软件过程改进”。

  其次方法是当工作成果刚刚产生时马上进行质量检查,及时找出并消除工作成果中的缺陷。这种方式效果比较好,人们一般都能学会。最常用的方法是技术评审、软件测试和过程检查,已经被企业广泛采用并取得了成效。

  最差的是在软件交付之前,没有及时消除缺陷。当软件交付给用户后,用着用着就出错了,赶紧请开发者来补救。可笑的是,当软件系统在用户那里出故障了,那些现场补救成功的人倒成了英雄,好心用户甚至还寄来感谢信。

谁对软件质量负责?是全员负责。任何与软件开发、管理工作相关的人员都对质量产生影响,都要对质量负责。所以人们不要把质量问题全部推出质量人员或测试人员。

  谁对软件质量负最大的责任?谁的权利越大,他所负的质量责任就越大。质量人员是成天与质量打交道的人,但他个人并不对产品质量产生最大的影响,所以也不负最大的责任。

  质量人员的主要职责:

  1.负责制定质量计划(很重要但是工作量比较少);

  2.负责过程检查(类似于CMM中的质量保证),约占个人工作量的20%;

  3.参与技术评审,约占个人工作量的30%;

  4.参与软件测试,约占个人工作量的30%;

  5.参与软件过程改进(面向整个机构),约占个人工作量的20%;

  质量管理计划的主要内容(模板见word文件):

  1. 质量要素分析

  2. 质量目标

  3. 人员与职责

  4. 过程检查计划

  5. 技术评审计划

  6. 软件测试计划

  7. 缺陷跟踪工具

  8. 审批意见

  5.技术评审

  技术评审(Technical Review, TR)的目的是尽早地发现工作成果中的缺陷,并帮助开发人员及时消除缺陷,从而有效地提高产品的质量。技术评审最初是由IBM公司为了提高软件质量和提高程序员生产率而倡导的。技术评审方法已经被业界广泛采用并收到了很好的效果,它被普遍认为是软件开发的最佳实践之一。

  技术评审的主要好处有:

  1.通过消除工作成果的缺陷而提高产品的质量;

  2.技术评审可以在任何开发阶段执行,不必等到软件可以运行之际,越早消除缺陷就越能降低开发成本;

  3.开发人员能够及时地得到同行专家的帮助和指导,无疑会加深对工作成果的理解,更好地预防缺陷,一定程度上提高了开发生产率。

  技术评审有两种基本类型:

  1.正式技术评审FTR。FTR比较严格,需要举行评审会议多。

  2.非正式技术评审ITR。ITR的形式比较灵活,通常在同伴之间开展,不必举行评审会

  技术评审和软件测试的目的都是为了消除软件的缺陷,两者的主要区别是:

  1.前者无需运行软件,评审人员和作者把工作成果摆放在桌面上讨论;

  2.而后者一定要运行软件来查找缺陷。技术评审在软件测试之前执行,尤其是在需求开发和系统设计阶段。

  相比而言,软件测试的工作量通常比技术评审的大,发现的缺陷也更多。在制定质量计划的时候,已经确定了本项目的主要测试活动、时间和负责人,之后再考虑软件测试的详细计划和测试用例。

  如果机构没有专职的软件测试人员的话,那么开发人员可以兼职做测试工作。当项目开发到后期,过程检查和技术评审都已经没有多少意义了,开发小组急需有人帮助他们测试软件,如果质量人员参与软件测试,对开发小组而言简直就是“雪中送炭”。

  强调:质量人员一定要参与软件测试(大约占其工作量的30%左右),只有这样他才能深入地了解软件的质量问题,而且给予开发小组强有力地帮助。

  CMM和ISO9001所述的软件质量保证,实质就是过程检查,即检查软件项目的“工作过程和工作成果”是否符合既定的规范。

  “过程检查”这个词虽然没有质量保证那么动听,但是其含义直接明了,不会让人误解。为了避免人们误以为“质量保证”能够“保证质量”,我提议用“过程检查”取代质量保证这个术语。

  虽然本章批判了“质量保证”的浮夸,但是并没有全盘否定质量保证的好处。过程检查对提高软件质量是有帮助的,只是它的好处没有象质量保证鼓吹的那么好而已。

  符合规范的工作成果不见得就是高质量的,但是明显不符合规范的工作成果十有八九是质量不合格的。例如版本控制检查,再例如,机构制定了重要工作成果的文档模板(例如需求规格说明书、设计报告等),要求开发人员写的文档尽可能符合模板。如果质量人员发现开发人员写的文档与机构的模板差异非常大,那么就要搞清楚究竟是模板不合适?还是开发人员偷工减料?

  过程检查的要点是:找出明显不符合规范的工作过程和工作成果,及时指导开发人员纠正问题,切勿吹毛求疵或者在无关痛痒的地方查来查去。

  不少机构的质量人员并没有真正理解过程检查的意义,老是对照规范,查找错别字、标点符号、排版格式等问题,迷失了方向,这样只有疲劳没有功劳,而且让开发人员很厌烦。

  对于中小型项目而言,过程检查工作由质量人员一个人负责就够了,约占其20%的工作量,让质量人员抽出更多的时间从事技术评审和软件测试工作。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-31 13:09:49

《全面软件质量管理》核心观点摘录的相关文章

软件质量管理之困境与对策思考

相信在不少与软件开发相关的企业内,质量管理部门与软件开发部门在日常运作中形成了如下图所示的"哑铃形"组织结构. 开发部门执行质量管理部门所制定的流程,通过提供证据的形式将各种流程执行后的数据反馈给质量管理部门(包括缺陷率和各种流程记录),质量管理部门根据这些数据监督流程的执行效果,并适时修订流程.联系两大独立部门的,是单薄的两条线和一些部门间的会议.理想情况下,在质量管理部门与软件开发部门间形成的是一个逆时针的良性质量管理环,理应获得良好的效果.但在我看来,事实却并非如此! 哑铃形组织

软件的核心则是算法

摘要: 软件正在统治世界.而软件的核心则是算法.算法千千万万,又有哪些算法属于皇冠上的珍珠呢?Marcos Otero给出了他的看法. 什么是算法? 通俗而言,算法是一个定义明确的计算过程 软件正在统治世界.而软件的核心则是算法.算法千千万万,又有哪些算法属于"皇冠上的珍珠"呢?Marcos Otero给出了他的看法. 什么是算法? 通俗而言,算法是一个定义明确的计算过程,可以一些值或一组值作为输入并产生一些值或一组值作为输出.因此算法就是将输入转为输出的一系列计算步骤. -Thoma

软件工程之软件质量管理

      软件质量管理主要是为了确保工程项目按照设计者规定的要求满意的完成,软件质量管理在软件工程中有着重要的作用,无论我们的代码写的如何巧妙,还是使用了多么先进的技术,在软件质量管理面前,这些都是小巫见大巫.       在软件质量管理中有八个黄金法则,分别是:       A.始终从用户角度出发       B.领导能力       C.团队成员主动参与性       D.流程方法       E.系统方法管理       F.连续的改进       J.决策中的事实说话       H.

《善用佳软:高效能人士的软件应用之道》一第2章 办公软件:核心应用,实用技巧

第2章 办公软件:核心应用,实用技巧 善用佳软:高效能人士的软件应用之道 Office套件是办公应用的核心工具.但大家切记,除了MS Office之外,还有OpenOffice家族.WPS.永中Office等.而帮助MS office在国内垄断.导致优秀的WPS后继乏力.让传奇的金山软件改做网游的重要因素,正是用户不愿付费.不用正式版的习惯.除基本的文字.演示.电子表格之外,流程图.思维导图也是日益普及的办公应用工具.而PDF作为跨平台的文档解决方案,其制作.编辑.保护与破解,也是值得用户关注的

浅谈管理软件的核心竞争力 --- 参加2004 IBM UNIX World 演讲的感触

unix    今天参加了IBM UNIX World 一年一度的演讲会,听到了ERP行业一些著名厂商(SAP,金碟,用友)的发言,颇有些感慨.也看到了许多差别之处.     一个产品,不管是服装也好,软件也好,都应该强调一个核心竞争力.那么什么才称得上核心竞争力呢?我觉得用户对该类产品最需要实现的东西就是这个产品的核心竞争力的方面.比如说一种新药面世了,它的广告应该着重说它的疗效,而不是它是怎么生产的,更不是它的包装如何.因为怎么生产的对用户来说无所谓,即使你是手工配出来的也行,只要你的疗效好

软件质量管理

  看大图请点击:这 里  

周鸿祎对移动互联网的几个断言:盈利模式只有三个

中介交易 SEO诊断 淘宝客 云主机 技术大厅 日前,奇虎360董事长周鸿祎就移动互联网话题接受了@中国企业家 采访.在周鸿t看来,PC时代越成功的企业,移动互联网时代负担越重.他还认为,巨头们谁也没有在移动互联网上找到真正的杀手级应用,这个市场还有很多的不确定. 黑马哥将周鸿t的观点核心观点摘录如下: 在中国创新需要勇气 当前的中国互联网缺乏创新,大家都是抄来抄去的,主要原因还是"成王败寇"的价值观--创新容易失败,大公司害怕失败,就让小公司去尝试.大公司有钱.有渠道,反垄断力度不大

程武解析游戏营销的机会和做法

举办了总共5届颁奖盛典后,DoNews作为整个中国互联网的历史见证者,切实感受到游戏产业本身蕴藏的强大力量--相比互联网的其他垂直领域,游戏除了自身在内容层面的不断进化(这是理所应当的),更附加带来了免费商业模式的彻底颠覆,创造了当前规模最大也是最行之有效的产业变现样板.因此,不只是内容,这个产业在商业层面的价值也同样值得被关注和分析.这正是DoNews在每年颁奖盛典中设置专门的营销类奖项的初衷. "2014年度DoNews牛耳奖颁奖盛典","互联网行业年度最佳营销创意&qu

《领域驱动设计:软件核心复杂性应对之道(修订版)》—第1章 1.1节有效建模的要素

第一部分 运用领域模型 领域驱动设计:软件核心复杂性应对之道(修订版) 上面这张图是18世纪中国描绘的世界地图.图中央最大的部分是中国,其周围散布着其他国家,但这些国家只是草草地表示了一下.这是适用于当时中国社会的世界模型,它意在关注中国自身.然而,这幅地图所呈现的世界观对于处理外交事务并无助益.当然,它对现代中国也毫无用处.地图就是模型,而模型被用来描绘人们所关注的现实或想法的某个方面.模型是一种简化.它是对现实的解释--把与解决问题密切相关的方面抽象出来,而忽略无关的细节. 每个软件程序是为