精华内容
下载资源
问答
  • 估计很少有程序媛工作8年没有跳槽,现在思维局限了,不知道别的公司产品是怎样设计、开发的,所以在此想了解一下外面的情况,想学习做好产品,欢迎大家提建议,欢迎大家推荐相关的书籍、视频。
  • 软件项目质量管理

    千次阅读 2015-07-25 09:54:37
    本文通过中国郎中看病这个案例进而类比软件项目质量管理,对软件项目质量管理的论述和分析,并对改善软件质量的各个因素进行了讨论,最后对软件项目质量管理的现状进行分析,并对对其发展趋势进行展望。 通过对中国...

    摘要

    本文通过中国郎中看病这个案例进而类比软件项目质量管理,对软件项目质量管理的论述和分析,并对改善软件质量的各个因素进行了讨论,最后对软件项目质量管理的现状进行分析,并对对其发展趋势进行展望。

    通过对中国郎中看病的故事,我们给了软件项目质量管理一个通俗的解释和分析,分别用大儿子、二儿子以及三儿子类比软件项目管理过程中的各个角色和阶段。通过对软件质量的各种定义将“质量”这个词作了详尽分析,在以上所讨论的基础之上,我们解说了影响了软件项目质量管理的多个重要因素,并以多个图表图像的形式进行说明,形象生动。最后,笔者查找相关文献,谈了软件项目管理的现状和发展趋势,对于该课程的理解和体会,在文中最后做了较为详细的陈述。

    缺陷降低软件质量,这是业界公认的事实,对于还未进入软件事业单位的我们来说,熟练掌握这些知识是百利而无一害的,在以后的的学习生活和研究中,一定不懈奋斗。

     

     

    一、案例分析

    1.1案例回顾

    在中国古代,有一家三兄弟全是郎中。其中老三是名医,人们问他:“你们兄弟三人谁的医术最高?” 他回答说:“我常用猛药给病危者医治,偶尔有些病危者被我救活,于是我的医术远近闻名并成了名医。我二哥通常在人们刚刚生病的时候马上就治愈他们,临近村庄的人说他是好郎中。我大哥不外出治病,他深知人们生病的原因,所以能够预防家里人生病,他的医术只有我们家里才知道。”

     

    1.2案例类比分析

    郎中三兄弟是三种治病方式的代言人,消除软件缺陷的三种方式:

    老大治病的方式最高明,如果人们能够预防生病的话,那么没病就用不着看医生了。提高软件质量最好的办法是:在开发过程中有效地防止工作成果产生缺陷,将高质量内建于开发过程之中。主要措施是“不断地提高技术水平,不断地提高规范化水平”,其实就是练内功,通称为“软件过程改进”。 

    即使一个人严守养生之道,身体状况良好,但总是会意外地得病的,得了病就要去看医生。  老二治病的方式就是医院的模式,病人越早看病,就越早治好,治病的代价就越低。

    同理,在开发软件的时候,即使人们的技术水平很高,并且严格遵守规范,但是人非机器,总是会犯错误的,因此无法完全避免软件中的缺陷。

    老三治病的方式代价最高,只能是不得已而为之。可在现实之中,大多数软件企业采用老三的方式来对付质量问题。典型现象是:在软件交付之前,没有及时消除缺陷。当软件交付给用户后,用着用着就出错了,赶紧请开发者来补救。可笑的是,当软件系统在用户那里出故障了,那些现场补救成功的人倒成了英雄,好心用户甚至还寄来感谢信。

     

    1.3全面软件项目管理模型

     

     

    结合老大老二的治病方式,我们提炼出以上软件质量管理模型图,项目中的所有人员几乎都参与了活动,只是介入的程度不同。质量的死对头是缺陷,缺陷是人们在软件开发过程中不喜欢和不愿看到的东西,但是又是难以避免的事情,缺陷越大,质量越低,提升软件质量的首要任务是减少软件缺陷。

    二、软件质量

    2.1软件质量定义

    2.1.1词典定义

    ① 典型的或本质的特征;

    ② 事物固有的或区别于其他事物的特征或本质;

    ③ 优良或出色的程度。

    2.1.2 CMM定义

    ① 一个系统、组件或过程符合特定需求的程度;

    ② 一个系统、组件或过程符合客户或用户的要求或期望的程度。

    2.1.3百度词条定义

    概括地说,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。

     

    2.1.4通俗理解

    古时候人们以为长得结实、饭量大就是健康,这显然是不科学的。现代人总是通过考察多方面的生理因素来判断是否健康,如测量身高、体重、心跳、血压、血液、体温等。如果上述因素都合格,那么表明这人是健康的。如果某个因素不合格,则表明此人在某个方面不健康,医生会对症下药。 

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

     

    2.2影响软件质量的因素

     

    2.3软件质量度量

     

    2.4软件质量要素

    从技术角度讲,对软件整体质量影响最大的那些质量属性才是质量要素;

    从商业角度讲,客户最关心的、能成为卖点的质量属性才是质量要素。

    对于一个特定的软件而言,我们首先判断什么是质量要素,才能给出提高质量的具体措施,而不是一股脑地想把所有的质量属性都做好,否则不仅做不好,还可能得不偿失。

    如果某些质量属性并不能产生显著的经济效益,我们可以忽略它们,把精力用在对经济效益贡献最大的质量要素上。简而言之,只有质量要素才值得开发人员下功夫去改善。

    商业目标决定质量目标。提高软件质量的最终目的是为了赢利,而不是创造完美无缺的产品。因此对于普通商业软件而言,并不是“质量越高越好”,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之内。

     

     

    2.5软件质量度量的实施

    2.5.1确定软件质量需求

    (1)软件的功能需求的确定,存在一定的难度。而非功能需求的确定,则难度更大。这些困难包括:需求如何获取,需求冲突如何协调、需求的确认和变更的授权等。

         (2需求获取:首先,你要理解用户的需求,区分哪些是质量需求,

    把这些需求记录下来,获得用户的确认。

      (3)需求分析:拿到用户确认的需求后,你可以开始把用户的质量需求与我们设定的质量特性联系起来,一直区分到子特性。这种联系,就是把用户语言描述的需求,转变为计算机工程师语言的需求。建立了这种关联后,可以根据分类,分级,确定直接度量。

     

     2.5.2确定直接度量

    直接度量就是实际的软件质量测量活动,它的输入是软件或软件过程,输出是一个测量值。它通过执行一系列的任务,获得一个质量值。

    在确定直接度量前,应该有如下准备:

    (1)工具:有助于计算度量值的硬件/软件工具,如:缺陷跟踪工具;

    (2)应用:描述度量结果的希望值、度量值的意义、作用和对度量结果数     据的使用方法;

    (3)数据:获得度量结果所需的数据、程序、过程等度量对象;

    (4)计算:度量程序、步骤和方法。

     (5)费用:测试是要花钱(人力、物力、时间等)的。

     

    2.5.3分析度量结果

    对度量过程进行跟踪和分析,需要时,可能会对度量程序、度量工具、度量方法,甚至原始数据,做出补充和调整。

     

    2.5.4确认质量度量

    首先,要确认度量过程是否与事实相符,脱离现实真实的度量,与目标再相符的结果也是没有意义的。其次,是确认方法的有效性。

     

    2.5.5其他度量

      * 分析模型的度量(对分析模型的度量以测试系统的大小)

      * 设计模型的度量(度量体系结构、数据和系统的复杂度)

      * 源代码的度量(度量程序的长度、层次、开发量、时间等)

      * 对测试的度量(度量测试的宽度、深度、错误的级别)

      * 对维护的度量(度量软件的稳定性)

     

    三、全面软件质量管理

    3.1软件项目成功率调查

     

     

    3.2全面软件质量管理具体步骤

    3.2.1制定质量管理计划

    质量管理计划是全面质量管理的行动纲领。 

    事先预防的思想,“缺陷越早发现越早修改越经济”的原则,缺陷纠正得越晚成本越大 :自从 Deming 的全面质量管理( TQM )原则在日本工业界获得了巨大成功之后,这个原则迅速被传播到了世界各个地方,同样,全面质量管理原则也被应用到了软件开发当中。如前面提到的,软件开发也是一个工程性的工作,因此必须提高整个工程的质量。

    产业界的大量研究( TRW 、 Nippon Electric 和 Mitre Corp. 以及其它一些公司)表明设计活动引入的错误占软件过程中出现所有错误(和最终的缺陷)数量的 50 %到 65 %。根据 IBM 的研究表明,假定在分析阶段发现的错误其改正成本为 1 个单位的话,那么在测试之前(设计编码阶段)发现一个错误的修改成本约为 6.5 个货币单位,在测试时(集成测试,系统测试和验收测试)发现一个错误的修改成本约为 15 个货币单位,而在发布之后(已经交到用户手上)发现一个错误的修改成本约为 60 到 100 个货币单位。

     

    3.2.2软件质量保证活动

    为项目准备SQA 计划,参与开发项目的软件过程描述,评审各项软件工程活动,以验证其是否符合定义的软件过程,审核指定的软件工作产品,以验证其是否符合定义的软件过程中的相应部分,确保软件工作及工作产品中出现的偏差已文档化,并且按照文档化的

    规程进行了处理,记录所有不符合的部分,并报告给高层管理者。

     

    3.2.3软件评审

    软件评审是软件过程中的“过滤器”,目的是尽早地发现工作成果中的缺陷,并帮助开发人员及时消除缺陷,从而有效地提高产品的质量,软件评审包括“正式技术评审”、“走查”、“审查”、“轮查”等。

    * 发现软件的任何一种表示形式中的功能、逻辑或实现上的错误;

    * 验证评审中的软件是否满足其需求;

    * 保证软件的表示符合预先定义的标准;

    * 得到以统一的方式开发的软件;

    * 使项目更易于管理。

     

     

    正式技术评审流程

    技术评审的好处有:

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

    * 技术评审可以在任何开发阶段执行,不必等到软件可以运行之际,越早消除缺陷就

    越能降低开发成本;

    * 开发人员能够及时地得到同行专家的帮助和指导,无疑会加深对工作成果的理解,

    更好地预防缺陷,一定程度上提高了开发生产率。

     

    3.2.4质量保证,过程检查

    * 过程检查计划的要点是确定主要检查项和检查时间(或频度)。

    * 质量人员在执行过程检查的时候,如果发现问题,应该立即记录下来。过程问题也是缺陷,因此最好使用缺陷跟踪工具,有助于提高过程检查的效率。

    * 质量人员首先设法在项目内部解决已经发现的质量问题,与项目成员们协商,给出解决措施。在项目内难以解决的质量问题,由上级领导给出解决措施。

     

     

     

    3.2.5缺陷跟踪工具

    * 如果没有缺陷跟踪工具的话,人们只好用纸张或文件去记录缺陷,不仅变更缺陷信息很麻烦,而且难以共享信息。缺陷跟踪工具就是帮助项目成员记录和跟踪缺陷用的,一般都有数据库支持,可以在局域网内运行。

    * 由于缺陷跟踪工具仅仅是一种辅助性的工具,我们没有必要太在乎该软件的功能,只要用起来方便就行。

    * 缺陷的主要属性:缺陷ID, 缺陷类型,缺陷状态,缺陷描述,相关文件,严重性,优先级,报告者,报告日期,接受者,解决方案(建议),解决日期 。

    * 缺陷跟踪工具的常见功能:查询缺陷,添加缺陷,修改缺陷,删除,缺陷分类图,缺陷趋势图, Email。

     

    3.2.6 人员

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

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

    质量人员的主要职责:

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

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

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

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

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

     

    四、软件质量管理现状及发展趋势

    4.1软件质量管理现状

    在现实软件开发过程中,许多软件产品却时常陷入质量低下、甚至软件不符合用户需求的旋涡.究其根源,有以下几个方面:

    (1)软件质量保证技术(审查、复审和测试)没有贯穿到整个软件开发全过程中去.

    (2)在于这些软件产品对其质量内涵的把握,仅仅停留在减少软件运行错误、加强软件测试,避免软件缺陷的一般性层面,而对整个软件开发生命周期的全过程质量管理,缺乏总体架构.

    (3)测试管理的一些误区也会导致严重的质量问题.没有按照测试原则进行尽早测试、连续测试与自动化测试.是测试本省变得的形式化.

    (4)质量是全过程的,不仅是测试.质量管理者应该将质量控制与保证着眼于整个软件开发生存周期内.而事实上,质量管理者仅仅认为通过严格的测试就可以保证软件质量.

     

    4.2软件项目质量管理的发展趋势

    缺陷分析的提出是由于在质量管理中人们逐渐意识到的一个开发人员如果在某个方面出了问题导致软件缺陷的产生,那么今后的开发过程中他很可能在整个方面再次出问题,再次导致软件缺陷的产生。因此,对在软件开发过程中记录的软件缺陷进行分析不仅重要,而且必要。如果了解经常导致缺陷产生的活动,那么在今后开发中就可以着重防范这些活动,提高过程质量进而提高产品质量。

    根本原因分析RCA和统计增长模型SGM是两种常用的软件缺陷分析方法。由于根本原因分析只有在得到了每个缺陷的所有细节之后才能进行有效的分析,因此它需要进行大量的活动才能完成。与之对比,统计增长模型提供了一个简单地方法来跟踪缺陷的走势,但是由于对缺陷的细节了解太少,它只能进行缺陷的跟踪却不能对缺陷的修复活动给出任何建议。

    在这种情况下,正交缺陷ODC被提了出来。ODC是一种快速得到缺陷细节的方法,它通过定义和捕获缺陷属性使得对缺陷进行数学分析、建模成为可能。正将缺陷分类的数据分析提供了一个又价值的评估软件生命周期各个阶段、需求、设计、开发、测试以及维护以及产品和过程熟度的方法。

    ODC是IBM华生研究中心在20实际90年代初提出的一个概念。最初基于ODC的分析方法主要用于在过程中把实际缺陷数据的反馈提供给开发人民和测试人员。此外,作为一种加强ODC的基本方案中已考虑进了面向对象编程这个因素。这些年来,ODC已经被实验性的用于60多个项目。现在IBM有超过4000名软件专业人员受其影响。如Motorola、Tandem和Nortel也已接受了这项技术。

     

    五、学习《软件过程与CMM》课程感受

    在现在这个信息发达的时代,软件质量的重要性也越来越重要,越来越被人们所认识。软件是产品、是装备、是工具,同时我也任务软件产品也是艺术,其质量决定这顾客的满意度。所以在软件开发过程中需要一个有力的工具来管理其开发过程,以使软件产品更加完美。

    CMM(Capability Maturity Model for Software)是指“能力成熟度模型”,它的本质是软件管理工程的一个部分。它是对于软件组织在定义、实施、度量、控制和改善其软件工程的实践中各个发展阶段的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。其目的是通过一个合理的体系模型来对软件组织开发能力进行合理有效的评估,帮助软件组织在模型实施的过程中提高软件过程管理能力,降低软件系统开发风险,在预定的项目周期和预算内开发出高质量的软件产品。它是学术界和工业界公认的有关工程和管理实践的最佳的软件过程。为评估软件组织的生产能力提供了标准,也为提高软件组织的生产过程指明了方向。

    短短八周时间转瞬即逝,《软件过程与CMM》这门课程已进入尾声,作为一门选修课,我对该课程的热爱程度好不亚于任何必修课,这八周以来,该课程我从未出现过任何迟到早退缺堂的情况,对于这样的偏管理方面的课程,我是情有独钟的,看多了工科性质的专业课,在这门课程的洗礼下,感觉自身在专业的全局体味上有了较大的提升,学习软件工程,不仅仅是写代码编程,相反,这只是一个很小的部分,而更多上层或是设计方面的事情才是一个合格大学生所具备的本领。

    我很喜欢汪老师的教学风格和教学理念,也很喜欢这门课程,只是感觉课时太少,以至于早早结束这门课程而留念不已。往后,我定会选修老师的其他课程,争取在汪老师的带领下学到更多的专业知识和职业素养。

    这篇论文学生花了很长的时间来反复琢磨,一字一句都是经历了无数次心理斗争后的产物,每一个图形图表都是自己的独有创作,在上次的课堂课堂讨论过程中,我更是踊跃地上台担任PPT讲解负责人。在往后的学习过程中,学生一定更加努力,不负老师所望!

     

    六、参考文献

    [1] 朱少民. 软件过程管理. 北京:清华大学出版社,2007,4-1

    [2] 扎罕. 软件过程改进. 机械工业出版社,2003,4-1 

    [3] 刘孟仁. 能力成熟度模型软件过程改进指南. 美国卡耐基梅隆大学软件工程研究所,电子工业出版社. 2003,4-1

     

    展开全文
  • PMP-33项目质量管理

    千次阅读 2019-06-13 20:53:09
    质量管理理论 1. 概念 质量 一组固有特性满足需求的程度。需求指明示的、隐含的或必须履行的需求或期望。 质量管理 在质量方面指挥和控制组织的协调的活动 质量方针 质量总的质量宗旨和方向。通常是一句话说明,如...

    1. 概念

    1. 质量
      一组固有特性满足需求的程度。需求指明示的、隐含的或必须履行的需求或期望。
    2. 质量管理
      在质量方面指挥和控制组织的协调的活动
    3. 质量方针
      质量总的质量宗旨和方向。通常是一句话说明,如质量大于一切、质量是我们的最高追求。
    4. 质量目标
      质量目标是落实质量方针的具体要求。质量目标必须明确、具体、可测量的。

    2. 质量管理理论

    1. 戴明环
      基于PDCA理论。计划-实施-检查-行动 。用来循环改进质量。
    2. 朱兰理论
      强调质量是适合使用。适用是通过遵守技术规范;定义了质量和等级的区别和联系;提出了质量规划、质量控制、质量改进的三元论,成为朱兰三部曲;为了获得产品的最佳使用效果,需要进行一系列相关的质量管理活动,这些活动又在整个过程中螺旋式上升。称为质量进展螺旋或质量螺旋曲线。
    3. 克鲁斯比理论
      提出了零缺陷管理。提出质量是免费的,质量不免费是因为没有第一次就把事情做好,从而产生了缺陷;质量源于预防。
    4. 田口理论
      提出质量损失函数;提出稳健设计方法,侧重于质量设计;
    5. 石川理论
      提出“质量圈”运动;提出因果图;主张公开的下小组讨论和绘制图表有同等的重要性;总结出传统的质量管理七大工具。
    6. 六西格玛管理
      6个标准差之内的质量保证;保证99.99966%的产品没有质量问题。6σ管理法是一种统计评估法,核心是追求零缺陷生产,防范产品责任风险,降低成本,提高生产率和市场占有率,提高顾客满意度和忠诚度。
      在这里插入图片描述
    7. 质量功能展开
      用来把用户需求转化为产品功能的结构化方法,以便开发出最能满足用户需求的那些功能。
      • 把用户的多种需求当作矩阵的列;
      • 然后把和产品的多种功能当作矩阵的行;
      • 最后由专家讨论每种功能和每种需求的关联性,按列加权汇总选择最能满足用户需求的功能。
    8. 质量于等级
      质量是满足要求的程度;等级是对产品的级别分类;
      质量碎片未达到要求肯定有问题
      低等级不一定是有问题
      低等级、高质量的产品是许多厂商占领市场份额的重要手段。如小米手机,高性价比。
      如果成本没办法满足项目要求,可以降低等级,但是不能降低质量。
    9. 实验设计(DOE)
      是一种统计方法,用来识别哪些因素会对正在生产的产品或正在开发的流程的特定变量产生影响。
      DOE可以在规划质量管理过程中实验,以确定测试的数量和类别,以及这些测试对质量成本的影响。
    10. 名义小组技术
      是用于促进头脑风暴的一种技术,通过投票排列最有用的创意,以便进一步开展头脑风暴或优先排列。
    11. 帕累托图
      帕累托图是一种特殊的垂直直方图,用于识别造成大多数问题的少数原因(28法则的核心),将问题按优先排序,用来识别需要优先解决的问题。

    3. 质量管理的过程

    1. 规划质量管理
      识别项目及其交付成果的质量要求和标准,并书面描述项目将如何证明符合质量要求和标准的过程。
    2. 管理质量
      管理质量是把组织的质量政策用于项目,并将质量管理计划转化为可执行的质量活动的过程。
    3. 控制质量
      为了评估绩效,确保项目输出完整、正确,并满足客户期望,而监督和记录质量管理活动的执行结果的过程。

    3.1 规划质量管理

    1. 成本效益分析
      估算备选方案优势和劣势的财务分析工具,以确定可以创造最佳效益的备选方案。
    2. 质量成本
      包括预防成本、评估成本和失败成本
      • 预防成本。预防特定项目的产品、可交付成果或服务质量低劣所带来的相关成本。
      • 评估成本。评估、测量、审计和测试特定项目的产品所带来的相关成本。
      • 失败成本(内部、外部)。因产品与相关需求出现不一致而导致的相关成本。
        一致性成本包括预防成本和评估成本。
        非一致性成本包括内部失败成本和外部失败成本。
    3. 质量测量指标
      用来描述项目或产品属性,以及控制质量过程将如何验证符合程度。

    3.2 管理质量

    1. 管理质量是把组织的质量政策用于项目,并将质量管理计划转化为可执行的质量活动的过程。

    2. 主要作用是提高实现质量目标的可能性,以及识别无效过程和导致质量低劣的原因。

    3. 核对单:用来合适所要求的一系列步骤是否已得到执行或检查需求列表是否已得到满足
      o

    4. 因果图,也称鱼骨图,石川图、why-why分析图,将问题的原因分解找出根本原因。
      在这里插入图片描述

    5. 流程图
      在这里插入图片描述

    6. 直方图
      在这里插入图片描述

    7. 散点图。用来展示两个变量之间的关系。
      在这里插入图片描述

    8. 控制图
      在这里插入图片描述

      • 七点规则:控制图如果有连续的7个点都在均值上面或下方,则说明出现了问题,需要查找原因。
      • 判断控制图过程出现问题:①某个数据点超出接线②连续7个点在均值上面③连续7个点在均值下面
      • 控制图用于确定一个过程是否稳定,或者是否具有可预测的绩效
    9. 亲和图
      把大量收集到的事实、意见或构思等语言资料,按其相互亲和性(相近性)归纳整理这些资料,使问题明确起来,求得统一认识和协调工作,以利于问题解决的一种方法。 是一种数据表现形式。

    在这里插入图片描述

    1. 流程图
      流程图也称过程图,用来显示在一个或多个输入转化为一个或多个输出的过程中,所需要的步骤顺序和可能分支。可以用来找到发生问题的原因。
    2. 审计
      用来确定项目活动是否遵循了组织的项目的政策、过程和程序的一种结构化且独立的过程。质量审计通常由项目外部的团队开展。如审计部门、项目管理办公室或组织外部的审计师。
    3. 面向X的设计
      是产品设计期间可采用的一系列技术指南,旨在优化设计的特定方面,可以控制或提高产品最终特性。
      其中X可以时产品开发的不同方面。如可靠性、 调配、装配、制造、成本安全性等。

    3.3 控制质量

    为了评估绩效、确保项目输出完整、正确且满足客户期望而监督和记录质量管理活动执行结果的过程。

    1. 一般是对可交付成果进行检查是否满足质量要求,输出核实的可交付成果。

    2. 输入工作绩效数据,输出工作绩效信息

    3. 在敏捷项目中,控制质量活动可能由所有团队成本在整个项目生命周期中执行。

    4. 在瀑布项目中,控制质量活动由特定团队成员(QC)在特定时间点或项目阶段快结束时执行。

    5. 数据收集
      在这里插入图片描述

    展开全文
  • 本文来自于:零缺陷文化中心 零缺陷读后感:本文写的非常清晰到位,重点介绍了华为公司质量管理前后的发展历程,同时也给我们一些质量管理的思路和指引。希望感兴趣的同学能够领悟下质量管理的精髓。从2000年开始,...

    本文来自于:零缺陷文化中心 零缺陷

    读后感:本文写的非常清晰到位,重点介绍了华为公司质量管理前后的发展历程,同时也给我们一些质量管理的思路和指引。希望感兴趣的同学能够领悟下质量管理的精髓。

    从2000年开始,华为已经走上了发展的快速通道,业务全球化快速向前飞奔。公司的快速成长,带给新员工巨大的自我成长机会。“公司在高速发展过程中,我们都忙着抢市场,尽可能多地获得订单。就在这时候,任正非(华为创始人)亲自主持召开了一次质量反思大会。”
     
    这次大会成为华为公司将质量定为核心战略的一个起点。但质量体系的建设,则是一个更漫长、曲折的过程。经历了华为质量体系构建的全过程。
    01改变
    跟着客户成长起来的质量体系
     
    2000年的华为,将目标锁定在IBM,要向IBM这家当时全球最大的IT企业学习管理。当年,引入IBM公司帮助华为构建集成产品开发IPD流程(Integrated Product Development,即集成产品开发,是一套产品开发的模式、理念与方法——编者注)和集成供应链ISC体系(Internet Service Customer,即网络服务于客户,是一种最新的电子商务营销方法。)。
     
    那时,印度软件开始快速崛起,任正非认为软件的质量控制必须要向印度学习。所以华为建立了印度研究所,将CMM软件能力成熟度模型引入华为。
     
    IPD+CMM是华为质量管理体系建设的第一个阶段。IPD和CMM是全球通用的语言体系,这期间也是华为国际化业务大幅增长的时期,全球通用的语言使得客户可以理解华为的质量体系,并可以接受华为的产品与服务。
     
    第一阶段帮助华为实现了基于流程来抓质量的过程。在生产过程中,由于人的不同会导致产品有很大的差异,而这套体系通过严格的业务流程来保证产品的一致性。
    随着华为的业务在欧洲大面积开展,新的问题出现了:欧洲国家多,运营商多,标准也多。华为在为不同的运营商服务时,需要仔细了解每一家的标准,再将标准信息反回到国内的设计、开发、生产制造环节。欧洲的客户认定供应商质量好不好,是有一套详细的量化指标,比如接入的速度是多少,稳定运行时间是多少,等等。
     
    每个国家用户的需求不同、政府监管要求不同、行业质量标准也不同。对于手机厂商就必须要针对不同国家做适配后再发布。经过多年的摸索,华为现在已经可以全球统一发布新款手机,而这完全基于这些年对于标准的摸索。
     
    这是华为质量体系建设的第二个阶段,在这个磨练的过程中,华为渐渐意识到标准对于质量管理的作用。随着欧洲业务成长起来的,是华为自己的一套“集大成的质量标准“。在这个阶段,在流程基础上,强化了标准对于质量的要求,通过量化指标让产品得到客户的认可。
     
    接下来,华为的开拓重点到了日本、韩国等市场,来自这些市场的客户的苛刻要求让华为对质量有了更深入的理解。在拓展欧美市场时,只要产品有一定的达标率就可以满足客户要求,就被定义为好产品。但是产品达标率到了日本就行不通,在日本客户看来,无论是百分之一、千分之一的缺陷,只要有缺陷就有改进的空间。
     
    工匠精神,零缺陷,极致,这些词时时折磨着华为的员工。在流程和标准之外,质量还有更高的要求,这需要一个大的质量体系,更需要一个企业质量文化的建设。只有将质量变成一种文化,深入到公司的每一个毛细血管,所有员工对质量有共同的认识,才可能向“零缺陷”推进。
    2007年4月,华为公司70多名中高级管理者召开了质量高级研讨会,以克劳士比“质量四项基本原则”(质量的定义、质量系统、工作标准、质量衡量)为蓝本确立了华为的质量原则,这就是华为质量史上的十一届三中全会。会议后,克劳士比的著作《Quality Is Free》(质量免费)在华为大卖,主管送下属,会议当礼品,这本冷门书居然在华为公司热得不行。

    这是华为质量体系的第三个阶段,从那个时候,开始引入克劳士比的零缺陷理论,做全员质量管理,构建质量文化,每一个人在工作的时候,都要做到没有瑕疵。
     
    客户的需求在变,没有一套质量体系是可以一成不变的。完成了流程、标准、文化的纬度建设,华为又遇到了新问题:如何让客户更满意。此时,卡诺的质量观成为华为学习的新方向。
     
    日本的卡诺博士(Noriaki Kano)定义了三个层次的用户需求:基本型需求、期望型需求和兴奋型需求,他是第一个将满意与不满意标准引入质量管理领域的质量管理大师。
     
    基本型需求是顾客认为产品“必须有”的属性或功能,比如手机的通话功能。当其特性不充足时,顾客很不满意;当其特性充足时,客户无所谓满意不满意。期望型需求要求提供的产品或服务比较优秀,但并不是“必须”的产品属性或服务行为,有些期望型需求连顾客都不太清楚,但是是他们希望得到的。兴奋型需求要求提供给顾客一些完全出乎意料的产品属性或服务行为,使顾客产生惊喜。当其特性不充足时,并且是无关紧要的特性,则顾客无所谓,当产品提供了这类需求中的服务时,顾客就会对产品非常满意,从而提高顾客的忠诚度。
     
    围绕客户满意度,华为的质量建设进入第四个阶段:以客户为中心的闭环质量管理体系。这就要求要基础质量零缺陷之外,要更加重视用户的体验。也正因为这个以客户为中心的闭环质量管理体系,使得华为获得了“中国质量奖”。
     
    02无止境
    零缺陷跟随客户导向不断完善
     
    从流程管理,到标准量化,而后是质量文化和零缺陷管理,再到后来的以客户体验为导向的闭环,华为质量管理体系是跟随客户的发展而逐渐完善,在这一过程中还特别借鉴了日本、德国的质量文化,与华为的实际相结合,建设尊重规则流程、一次把事情做对、持续改进的质量文化。
     
    华为有着复杂的业务线条,质量体系也相当复杂,由文化与机制两部分相辅相成并且互为支撑,很难用一张完整的架构图来说明华为的质量体系。用Mars的话说:质量不是独立的,是一种结果。要达成产品的质量,需要每一个人的工作质量去保证。如果只是一个独立的组织作为监管方去抓质量,肯定是抓不好的。
     
    在这样的体系内,每一个人对于最终的质量都有贡献。质量与业务不是两张皮,而是融在产品开发、生产以及销售、服务的全过程中。“所以,华为的质量管理是融入在各个部门的工作流程中去开展的。
     
    在质量管理自身上,也需要创新的思想、工具、方法。华为花巨资建立了一套完整的流程管理体系,涵盖了从消费者洞察、技术洞察、技术规划、产品规划、技术与产品开发、验证测试、制造交付、上市销售、服务维护等各个领域,并且有专门的队伍在做持续优化和改进。
    华为2010年建立了一个特别的组织:客户满意与质量管理委员会(英文简称:CSQC)。这个组织作为一个虚拟化的组织存在于公司的各个层级当中。在公司层面,由公司的轮值CEO亲任CSQC的主任,而下面各个层级也都有相应的责任人。“这样,保证我们每一层级的组织对质量都有深刻的理解,知道客户的诉求,把客户最关心的东西变成我们改进的动力。”
     
    这是一个按照公司管理层级而来的正向体系。在华为还有源于客户逆向管理质量的体系。
     
    比如运营商BG,每年都会召开用户大会。在这个大会上,邀请全球100多个重要客户的CXO来到华为,用三天的时间、分不同主题进行研讨,研讨的目的就是请客户提意见,给华为梳理出一个需要改进的TOP工作表单。然后华为基于这个TOP清单,每一条与一个客户结对,并在内部建立一个质量改进团队,针对性解决主要问题。第二年的大会召开时,第一件事就是汇报上一年的TOP10改进状况,并让客户投票。
     
    这个逆向管理是基于华为的“大质量观”。华为认为的质量不仅仅是大家普遍认识的耐用、不坏,而是一个大质量体系,包括基础质量和用户体验,不仅要把产品做好,还要持续不断地提升消费者的购买体验、使用体验、售后服务体验,把产品、零售、渠道、服务、端云协同等端到端每一个消费者能体验和感知的要素都做好。
     
    一个源于管理层级的正向体系,一个源于客户的逆向体系,如何实现闭环?各层级的CSQC必须要定期审视自己所管辖范围的客户满意度,当然包括产品质量本身,也包括各个环节的体验,并且找到客户最为关切的问题,来制定重点改进的项目,保证客户关切的问题能够快速得到解决。同时,还要针对客户回诉去举一反三,再不断改善质量管理体系,使得这一体系跟随客户的要求不断演进。
     
    在全球,能以“零缺陷”为管理体系的企业并不多,而演进到以客户满意度为基础的大质量观的企业更是少见。克劳士比的“零缺陷”质量文化已经帮助华为在竞争中胜出,接下来能够让华为长远生存下去的是,如何以客户满意度为中心,持续改进的质量体系。
     
    华为的价值观是以客户为中心,所以华为的质量观也与其他企业不同。“我们是从客户的角度看质量,所以满足客户需求的、用户期待的,都应该算做是质量,都是我们要持续改进的。”Mars说。

    03公司技术
    零缺陷,第一次就把事情做对
     
    零缺陷观念意味着质量是完完全全地符合要求,而不是浪费时间去算计某个瑕疵的可能危害能否容忍,其核心就是“第一次就把事情做对”,并且是在所有环节上都要第一次就把事情做对。
     
    对于公司来讲,就是每一个层级都要把事情做对。华为认为这需要分层分解,全员参与:在公司层面需要有明确的目标牵引,在管理层要有明确的责任,在员工层面要有全体参与的意愿和能力。
     
    在公司的最高层,每年轮值CEO都会设定质量目标,实行目标牵引。轮值CEO设定目标的原则是:如果质量没有做到业界最好,那么就把目标设为业界最好,尽快改进。如果已经达到业界最好,那每年还要以不低于20%的速度去改进。华为2001年就引入盖洛普每年对客户进行调查,并对质量打分,这个分数成为第二年设定目标的基数。
     
    从管理层来讲,在不同的产品体系里每年都会对管理者做质量排名,排名靠后的主管要问责。这一规划每年都坚定执行,促进后进的主管,让每个主管都尽最大的力量往前跑,让管理层真正起到带头作用。
     
    在员工层面,华为强调全员参与。全员参与有两个层面的问题要解决:一是意愿,二是能力。从意愿上,华为会设定考核目标,将质量作为员工考核的重要项目,同时也会设定很多奖项对质量方面表现突出的员工实施奖励。从能力上,公司引进很多先进的管理方式,员工都要经过必要的培训,为全体员工提供提高质量的方法和工具,以保证每一个人都有能力去参与。
    做到零缺陷,除了对内部的每一个环节做到可控,还要对全价值链进行管理。一个企业不能独立地做好质量,以手机为例,有几百个器件、上千种上层物料,需要依赖整个产业链的高质量才能成就最终产品的高质量。有一次华为的手机摄像头出现问题,反复测试后发现是摄像头的胶水质量有问题。摄像头企业是华为的供应商,胶水企业是摄像头企业的供应商,上游的上游出一点点小的问题,都会造成最后产品的问题,这就要求华为要把客户要求与期望准确传递到华为整个价值链,共同构建质量。
     
    在对供应链的管理上,华为有三点做法:
     
    第一是选择价值观一致的供应商,并用严格的管理对他们进行监控。
     
    第二是优质优价,绝不以价格为竞争唯一条件。对每一个供应商都会有评价体系,而且是合作全过程的评价。这个分数将决定其在下一次招标中能否进入。这个评分体系分为ABCD档,当评分在D档的时候,就直接清除出供应商资源池,不会再被采用。
     
    第三点是华为自身也要做巨大的投资,在整个产线上建立自动化的质量拦截,一共设定五层防护网:包括元器件规格认证,元器件原材料分析,元器件单件测试,模块组件测试,整机测试。华为在生产线上做了五个堤坝,一层一层进行拦截,即使某些供应商的器件出现漂移,华为也能尽早发现并拦截。
     

    04观察
    质量成败在于文化
     
    在华为人看来,创新要向美国企业学习,质量要向德国、日本的企业学习。在华为的大质量观形成过程中,与德国、日本企业的对标起到关键作用。

    一个企业成为高质量的企业,华为认为根本是文化。工具、流程、方法、人员能力,是“术”;“道”是文化。任正非举过一个例子,法国波尔多产区只有名质红酒,从种子、土壤、种植······形成了一整套完整的文化,这就是产品文化,没有这种文化就不可能有好产品。
     
    任正非在外界很少公开露面,但在内部的讲话却是很多。在以客户为中心这一永远不变的主题之外,任正非讲的最多的就是“质量文化”。
     
    纵观全球质量管理科学的发展,大致可分为四个阶段:
     
    第一阶段是脱离生产的专职质检;
     
    第二阶段是基于数理统计的质量预测;
     
    第三阶段是基于系统工程的全面质量管理;
     
    第四阶段是“零缺陷”质量文化。
    从第四个阶段开始,质量管理从制度层面进化到文化层面。质量的保证,不能依赖于制度和第三方的监管,这样的质量会因人而异,也不可延续。而文化,即全员认同的质量文化,并体现在每一个人的工作中。
     
    文化的形成是一个慢工程。近几十年的业界潮起潮落,不断有新的风口,但华为一直是一家很朴素的公司,提出了“脚踏实地,做挑战自我的长跑者”的口号。用任正非的说话,华为公司这只“乌龟”,没有别人跑得快,但坚持爬了28年,也爬到行业世界领先。任正非知道竞争会对慢跑型公司带来短期的冲击,但他要求公司上下一定不能有太大变化。比如,消费者行业变化大,将来也可能会碰到一些问题,所以华为一再强调终端要有战略耐性,要耐得住寂寞。扎扎实实把质量做好。


    展开全文
  • 软件质量管理

    千次阅读 2015-03-17 14:09:49
    【摘要】 软件质量是软件产品的灵魂。本文全面介绍了质量的概念,提出了从流程、技术、组织管理、人员技能发展等多个角度提高...【关键字】 质量管理,软件开发过程模型,软件分析和设计方法,软件测试, CMM 如何提

    【摘要】 软件质量是软件产品的灵魂。本文全面介绍了质量的概念,提出了从流程、技术、组织管理、人员技能发展等多个角度提高软件质量的重要性;并对目前国际上流行的 CMM 标准进行了介绍,提出了使用 PSP 和 TSP 来实现 CMM 的方法。本文最后还给出了中小型软件公司在提高软件质量方面的一个初步思路。

    【关键字】 质量管理,软件开发过程模型,软件分析和设计方法,软件测试, CMM

    如何提高软件的质量已经不是一个纯粹的技术问题,而是一个工程的问题。自从计算机诞生以来,相应的软件开发就存在了。由于早期的计算机运行性能较低,软件的可编程范围也较狭窄,因此质量问题就没有那么突出。 50 年代后期到 60 年代,高级语言的相继诞生并得到了广泛的应用,随之而来的是软件规模也越来越庞大,越来越复杂。伴随着软件应用的越来越广泛,软件的质量问题就变得越来越突出。根据美国国家宇航局 NASA 的统计,在 80 年代初,软件引起的故障与硬件引起的故障,其比率约为 1.1:1.0 ,到了 80 年代末,这一比率已达到 2.5:1.0 。因此如何提高软件的质量成为软件工程研究的一个重点。自从软件危机产生以来,出现了很多提高产品质量的理论和方法,有的从技术角度出发,例如:面向对象技术的产生和推广,第四代语言的诞生等等;有的从自动化工具入手,例如: CASE 工具、过程控制软件、自动化管理平台等;有的从过程模型角度出发,例如:迭代模型、螺旋模型、 RUP 、 IPD 、净室软件工程等;也有从管理角度出发的,例如:团队管理、绩效管理、 PSP 、 TSP 等;也有从测试角度出发的,例如:加强全流程的测试等;一些相应的规范和标准也孕育而生,例如: ISO9000 系列、 CMM 、 QMS 等。然而每一种技术都不是绝对的,软件质量的提高应该是一个综合的因素,需要从每个方面进行改进,同时还需要兼顾成本和进度。

    一、什么是质量?

    作为软件产品的销售人员,市场人员或维护人员经常会受到客户这样那样的指责或抱怨,客户说:你们产品的质量太差,不稳定等等。那么什么是质量呢?我们该如何来衡量质量呢?

    质量具有三个维度:

    •  符合目标。目标是客户所定义的,符合目标即判断我们是不是在做需要做的事情。

    •  符合需求。即产品是不是在做让它做的事情。

    •  符合实际需求。实际的需求包括用户明确说明的和隐含的需求。

    ISO 关于质量的定义表示如下:

    “ 一个实体(产品或服务)的所有特性,基于这些特性可以满足明显的或隐含的需要。 ”

    注意,在这个定义中包含明显的需求和隐含的需求。而往往我们会忽略隐含的需求。因此在控制一个产品的质量的过程中必须关注这些隐含的需求,并给予应有的验证。

    另一方面因为我们的产品是为客户提供服务的,因此凡是不满足客户需求的,我们都认为是一个失效( failure )。所以我们的产品必须始终围绕着客户的需求进行开发和验证。

    这里我们谈到客户,其实在一个软件的需求收集过程中需要关注客户和用户。而我们经常会忽略客户与用户之间的区别。那么谁是客户?谁是用户呢?简单的来说,客户是真正能够决定是否购买你软件的人,而用户是实际使用软件的人。了解了这个区别,对于你在分析需求的重要性的时候就可以进行参考。同时在产品质量验证的时候也可以做出不同的权衡。另一方面我们在考虑我们用户需求的时候,往往只考虑了实际使用软件的人员,而忽略了其它一些人员对软件的要求或对软件造成的潜在竞争,这包括维护人员的要求、系统管理人员的要求、软件上下游人员的要求、先前版本的情况、市场上竞争对手的软件情况等。

    每个人提到质量的时候,经常会遇到下列矛盾,在这些矛盾中隐含着对质量的承诺【 5 】:

    •  质量需要一个承诺,尤其是高层管理者的承诺。但为了得到质量,高层管理者必须和其雇用的员工进行紧密合作;

    •  许多人相信没有缺陷的产品和服务是不可能的。但是控制在一定级别的缺陷数是正常并可接受的;

    •  质量经常是和成本紧密联系在一起,一个高质量的产品同时也意味着高投入。这是设计的质量和一致性质量的一个矛盾;

    •  一个高的质量要求需求规格说明书足够详细,以便产品可以根据这些规格说明书进行定量的分析。然而许多组织没有能力或者不愿意产生如此详细程度的规格说明书;

    •  技术人员经常相信规范和标准会束缚他们的创造力,因此就不遵照标准做事。然而如果要得到高质量的产品,就必须遵循良好定义的标准和过程。

    二、流程对质量的贡献

    好了,既然已经了解了什么是质量,那么怎么才能改进软件产品的质量呢?从一个企业的长远发展来看,首先应当从流程抓起,规范软件产品的开发过程。这是一个软件企业从小作坊的生产方式向集成化、规范化的大公司迈进的必经之路,也是从根本上解决质量问题,提高工作效率的一个关键手段。

    软件产品的开发同其它产品(如汽车)的生产有着共同特性,即需要按一定的过程来进行生产。在工业界,流水线生产方式被证明是一种高效且能够比较稳定地保证产品质量的一种方式。通过这种方式,不同的人员被安排在流程的不同位置,最终为着一个目标共同努力,这样可以防止人员工作间的内耗,极大的提高工作效率。并且由于其过程来源于成功的实例,因此其最终的产品质量能够满足过程所设定的范围要求。软件工程在软件的发展过程中吸取了这个经验并把它应用到了软件开发中,这就形成了软件工程过程,简单的说就是开发流程。

    无论做什么事情,都有一个循序渐进的过程,从计划到策略再到实现。软件流程就是按照这种思维来定义开发过程,它根据不同的产品特点和以往的成功经验,定义了从需求到最终产品交付的一整套流程。流程告诉我们该怎么一步一步去实现产品,可能会有那些风险,如何去避免风险等等。由于流程来源于成功的经验,因此,按照流程进行开发可以使得我们少走弯路,并有效的提高产品质量,提高用户的满意度。

    目前流行的流程方法有很多种,不同的过程模型适合于不同类型的项目。瀑布模型是应用的最为广泛的一种模型,也是最容易理解和掌握的模型,然而它的缺陷也是显而易见的。遗漏的需求或者不断变更的需求会使得该模型无所适从。然而,对于那些容易理解但很复杂的项目,采用瀑布模型会是比较适合的,因为你可以按部就班的去处理复杂的问题。在质量要求高于成本和进度要求的时候,该模型表现的尤其突出。

    螺旋模型是也是一个经典模型,它关注于发现和降低项目的风险【 8 】。螺旋型项目从小的规模开始,然后探测风险,制定风险控制计划,接着确定下一步项目是否还要继续,然后进行下一个螺旋的反复。该模型的最大优点就是随着成本的增加,风险程度随之降低。然而螺旋模型的缺点是比较复杂,且需要管理人员有责任心,专注以及有管理方面经验。

    RUP ( Rational Unified Process )是 Rational 公司提出的一套开发过程模型,它是一个面向对象软件工程的通用业务流程【 9 】。它描述了一系列相关的软件工程流程,它们具有相同的结构,即相同的流程构架。 RUP 为在开发组织中分配任务和职责提供了一种规范方法,其目标是确保在可预计的时间安排和预算内开发出满足最终用户需求的高品质的软件。 RUP 具有两个轴,一个是时间轴,这是动态的。另一个是工作流轴,这是静态的。在时间轴上, RUP 划分了四个阶段:初始阶段、细化阶段、构造阶段和发布阶段。每个阶段都使用了迭代的概念。在工作流轴上, RUP 设计了六个核心工作流程和三个核心支撑工作流程,核心工作流轴包括:业务建模工作流、需求工作流、分析设计工作流、实现工作流、测试工作流和发布工作流。核心支撑工作流包括:环境工作流、项目管理工作流和配置与变更管理工作流。具体可以参考图 1 。 RUP 汇集现代软件开发中多方面的最佳经验,并为适应各种项目及组织的需要提供了灵活的形式。作为一个商业模型,它具有非常详细的过程指导和模板。但是同样由于该模型比较复杂,因此在模型的掌握上需要花费比较大的成本。尤其对项目管理者提出了比较高的要求。

    图1 RUP 工作流程示意图

    IPD ( Integrated Product Development )流程是由 IBM 提出来的一套集成产品开发流程,非常适合于复杂的大型开发项目,尤其涉及到软硬件结合的项目。 IPD 从整个产品角度出发,流程综合考虑了从系统工程、研发(硬件、软件、结构工业设计、测试、资料开发等)、制造、财务到市场、采购、技术支援等所有流程。是一个端到端的流程。在 IPD 流程中总共划分了六个阶段(概念阶段、计划阶段、开发阶段、验证阶段、发布阶段和生命周期阶段),四个个决策评审点(概念阶段决策评审点、计划阶段决策评审点、可获得性决策评审点和生命周期终止决策评审点)以及六个技术评审点,具体可以参考图 2 。 IPD 流程是一个阶段性模型,具有瀑布模型的影子。该模型通过使用全面而又复杂的流程来把一个庞大而又复杂的系统进行分解并降低风险。一定程度上,该模型是通过流程成本来提高整个产品的质量并获得市场的占有。由于该流程没有定义如何进行流程回退的机制,因此对于需求经常变动的项目该流程就显得不大适合了。并且对于一些小的项目,也不是非常适合使用该流程。

    图2 IPD 流程示意图

    三、流程与技术

    流程和成功不是等价的。没有流程就成功是不可能得到保证,但有了流程并不意味着肯定能够成功。这恐怕是很多迷信于流程的人所不能接受的。但这的确是个事实。记得有个做了将近 30 多年的需求分析专家说过:即使是一个已经达到 CMM4 级的公司,也完全有可能做不好需求分析。为什么?技术,技术是成功的另外一个必要条件。就好比现在你要从上海到北京去,流程给你指出了最短的路径,技术提供给你最快的交通工具。两者结合就是完美。

    对于软件开发来说,要保证软件的质量,需要掌握多方面的技术,包括分析技术、设计技术、编码技术和测试技术等等。在国内有一个普遍的非正常现象,就是大家觉得只有编程能力才是玩电脑的真正技能。就好像造一套房子,其它都不重要,只要砖瓦匠有高超的技能就行了。尽管这个比喻会打击很多程序员的自尊心,但这的确是一个事实。我们缺少系统级的工程师,在分析和设计方面的工作做得很不扎实。

    需求是一个项目的灵魂。模棱两可的需求带来不可避免的后果便是返工 —— 重做一些你认为已做好的事情。返工会耗费开发总费用的 4 0 % ,而 7 0 % ~ 8 5 % 的重做是由于需求方面的错误所导致的( l e ff i n g w e l l1 9 9 7 )【 10 】。想像一下如果你能减少一半的返工会是怎样的情况?你能更快地开发出产品,在同样的时间内开发更多、更好的产品,甚至能偶尔回家休息休息。在《软件需求》一书中关于如何进行需求分析给出了比较详细的介绍【 7 】, RUP 中关于需求的指导也是很实用的。

    设计是最能体现一个工程师能力和水平的环节。一个好的设计基本上决定了产品的最终质量。设计是把需求转换成系统的一个关键步骤,它需要从自然语言描述的需求中寻找出设计的基础单元,构建出整个系统的构架。在 RUP 中关于系统构架师和设计师的定位是相当高的。关于设计方面的技能涉及面是很广的,包括传统的结构化设计到面向对象设计。设计人员需要掌握一定的建模技术。 UML 是国际上比较流行的一种建模语言【 11 】。在嵌入式方面, SDL 也是一种非常好的选择。《设计模式》是在设计思想方面总结的非常出色的一本书【 6 】,作为一名设计人员(尤其是面向对象设计人员)必须要好好研究一下。但是对这些模式的应用应当讲究一种自然的应用,千万不要因为模式而去设计模式,否则会适得其反。

    现在的程序员热中于掌握多种编程语言,或者讲究语言的过分技巧化,而往往忽略了编程语言的规范化。不规范的语言应用给程序的可理解性、可维护性以及可测试性带来了大的伤害,进而损害了产品的质量。某公司曾对中国程序员和印度程序员做过一个测验,这个测验要求参加者对一组数进行排序。测试结果发现,印度程序员设计的程序使用的算法并不是最优,但却是最不容易出错的,并且几个程序员写出来的代码如出一辙。而几个中国程序员写出的代码,有的非常漂亮,很精练,效率很高;有的却很冗杂,还有错误。如果大家是在做研究性的项目或纯粹兴趣性的项目,那么充分发挥自己的编程天才也无可厚非。然而,对于一个软件公司,产品最终是要交给用户的,需要遵循的是一个软件产品的开发工程。因此这类软件的开发需要遵循一定的编程规范,毕竟开发的软件不是自己用,还需要和别人的集成,还需要给以后版本重用和维护。

    测试的技术将在第五节进行阐述。总之流程很关键,技术也很重要,我的观点是:鱼和熊掌,两者都不能放。

    四、全面质量管理

    自从 Deming 的全面质量管理( TQM )原则在日本工业界获得了巨大成功之后,这个原则迅速被传播到了世界各个地方,同样,全面质量管理原则也被应用到了软件开发当中。如前面提到的,软件开发也是一个工程性的工作,因此必须提高整个工程的质量。

    产业界的大量研究( TRW 、 Nippon Electric 和 Mitre Corp. 以及其它一些公司)表明设计活动引入的错误占软件过程中出现所有错误(和最终的缺陷)数量的 50 %到 65 %。根据 IBM 的研究表明,假定在分析阶段发现的错误其改正成本为 1 个单位的话,那么在测试之前(设计编码阶段)发现一个错误的修改成本约为 6.5 个货币单位,在测试时(集成测试,系统测试和验收测试)发现一个错误的修改成本约为 15 个货币单位,而在发布之后(已经交到用户手上)发现一个错误的修改成本约为 60 到 100 个货币单位。同样该比例也适用用于发现一个错误需要的时间。我们可以看下面两条曲线图:

    图3 缺陷代价曲线

    为了提高产品质量,缩短产品开发进度,节约产品开发成本,必须尽早的进行产品质量控制。全面质量控制要求在过程的每个阶段每个步骤上都要进行严格的验证和确认活动。

    什么是验证? 验证 就是要用数据证明我们是不是在正确的制造产品。注意这里强调的是过程的正确行【 12 】。

    什么是确认? 确认 就是要用数据证明我们是不是制造了正确的产品。注意这里强调的是结果的正确性。

    IEEE 给出的验证和确认过程可以用下图来表示。验证和确认是一个广泛的概念,感兴趣的读者可以参考 IEEE Std 1012-1998 。

     
    图4 验证和确认模型

    五、关注测试

    软件测试是软件质量控制中的关键活动。业界的统计数据表明,测试的成本大约占软件开发总成本的 50 %左右。

    软件测试的目的是要发现软件中的错误。一个好的测试是发现至今没有被发现的错误。传统的软件测试专注于动态测试范畴,如:单元测试,集成测试和系统测试。而测试工程的发展已经进入到了全流程的测试,包括开发过程前期的静态测试。

    一般我们可以把测试分为白盒测试和黑盒测试。 白盒测试 :顾名思义,白盒测试应当是透明的。的确,该类测试是根据程序代码的内部逻辑结构来设计测试用例进行测试。那么什么是测试用例? 一个测试用例 就是一个文档,描述输入、动作、或者时间和一个期望的结果,其目的是确定应用程序的某个特性是否正常的工作。

    黑盒测试 :看了白盒测试的解释,我想你很快就能猜出黑盒测试是不考虑程序内部结构情况的。事实上也是这样。黑盒测试是根据规格说明书进行的测试。规格说明书 记录了用户的需求。比如用户希望在编辑器中增加查找功能,那么我们把该需求写入规格说明书,根据该项要求,直接调用应用程序的该项功能进行测试,而不管其内部是用什么算法实现的。

    白盒和黑盒这两类测试是从完全不同的出发点,并且是两个完全对立点,反映了事物的两个极端,两种方法各有侧重,不能替代。但是在现代测试理念中,这两种测试往往不是决然分开的,一般在白盒测试中交叉使用黑盒测试的方法,在黑盒测试中交叉使用白盒测试的方法。

    常见的白盒测试是单元测试。 单元测试 是测试中最小单位的测试。简而言之,就是拿一个函数出来,加上驱动模块,桩模块,让它能够运行起来,然后设计一些用例测试其内部的控制点(如:条件判断点,循环点,选择分支点等)。驱动模块 是模拟调用被测函数的函数。 桩函数 是模拟当前测试函数所调用的函数。

    常见的黑盒测试包括:集成测试,系统测试。 集成测试 是在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。

    系统测试 的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。系统测试的测试用例应根据需求分析说明书来设计,并在实际使用环境下来运行。系统测试的内容极其广泛,包括功能测试、协议测试、性能测试、压力测试、容量测试等等。有关测试方面的概念可以参考本人已出版的《软件测试技术概论》。

    软件测试是产品最终交付到用户之前的最后一道防线,有着举足轻重的地位。然而,做好软件测试却是不容易的,一方面你需要同时掌握软件开发的技能和软件测试方面的技能;另一方面产品必须给予测试充分的独立性和资源保证。

    六、成功的铁三角

    在一个软件企业中,如果能够良性的发展,必须关注组织,流程和人三者之间的关系。组织是流程成功实施的保障,好的组织结构能够有效的促进流程的实施;流程对于产品的成功有着关键的作用,一个适合于组织特点和产品特点的流程能够极大的提高产品开发的效率和产品质量,反之则会拖延产品开发进度,并且质量也无法得到保证;对企业来说,人是最宝贵的财富,它们是技术的载体。对于一个软件公司来说,无论是开发人员还是测试人员,都非常关心其今后的发展通道,如果有一条清晰的技术发展线为其指明今后的职业发展方向的话,这可以大大激励员工的士气和工作积极性。另外技术发展的方向应该与现在的开发流程和规范相结合,这样有利于专业技能的提高。

    总之,组织,流程和人这三者是一个企业成功的铁三角,理想的情况下它们彼此促进,糟糕的情况下它们彼此制约。

    七、国际上流行的质量标准

    最早进入国内的质量标准是 ISO 系列。在软件方面主要使用 ISO9000 系列标准。 ISO9000 是一个非常完整的标准,并且定义了供应商设计和交付一个有质量产品的能力所需要的所有元素。 ISO9002 涵盖了对供应商控制设计和开发活动所认为重要的质量标准。 ISO9003 用于证明供应商在检视和测试期间检测和控制产品不一致性的能力。 ISO9004 描述和 ISO9001 、 ISO9002 和 ISO9003 相关的质量标准,并提供了一个完整的质量查检表。

    软件能力成熟度模型是目前国内软件企业中非常受欢迎的一个质量标准。并且该标准已经成为业界一个事实上的标准。 CMM 为软件组织提供了一个指导性的管理框架。在这个框架的指导下:

    •  软件组织可以对其软件开发、维护过程获得控制。

    •  软件组织可以推进其软件工程更为科学、推进软件过程管理更为卓越。

    •  CMM 通过确定当前软件过程管理的成熟度,通过标识软件的质量和过程改进中关键的、要害的问题,可以指导软件组织选择正确的软件过程改进策略。

    •  CMM 将其焦点,聚焦在一系列具体的软件过程活动上,并以侵略方式( Aggressively )达到这些活动。一个软件组织就可以稳定地、持续地改进其整个软件组织过程,使得其软件过程管理能力取得持续地、持久地不断争长提高。

    在 CMM 中,把软件工厂分为五个等级:初始级、可重复级、已定义级、管理级和优化级。其中:

    初始级 :软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。也许,有些企业制定了一些软件工程规范,但若这些规范未能覆盖基本的关键过程要求,且执行没有政策、资源等方面的保证时,那么它仍然被视为初始级。

    可重复级 :人们根据多年的经验和教训,总结出软件开发的首要问题不是技术问题而是管理问题。因此,第二级的焦点集中在软件管理过程上。一个可管理的过程则是一个可重复的过程,可重复的过程才能逐渐改进和成熟。可重复级的管理过程包括了需求管理、项目管理、质量管理、配置管理和子合同管理五个方面;其中项目管理过程又分为计划过程和跟踪与监控过程。通过实施这些过程,从管理角度可以看到一个按计划执行的且阶段可控的软件开发过程。

    已定义级: 要求制定企业范围的工程化标准,并将这些标准集成到企业软件开发标准过程中去。所有开发的项目需根据这个标准过程裁剪出与项目适宜的过程,并且按照过程执行。过程的裁剪不是随意的,在使用前必须经过企业有关人员的批准。

    管理级 :所有过程需建立相应的度量方式,所有产品的质量(包括工作产品和提交给用户的最终产品)需要有明确的度量指标。这些度量应是详尽的,且可用于理解和控制软件过程和产品。量化控制将使软件开发真正成为一种工业生产活动。

    优化级: 的目标是达到一个持续改善的境界。所谓持续改善是指可以根据过程执行的反馈信息来改善下一步的执行过程,即优化执行步骤。如果企业达到了第五级,就表明该企业能够根据实际的项目性质、技术等因素,不断调整软件生产过程以求达到最佳。

    美国国防部规定,重要性级别高的软件应该由质量级别高的企业承担。不同等级的软件公司提交的软件,其软件质量也相差很大,国外的一份统计资料如下:

    表 1 、 CMM 级别与软件质量关系表格

    每千行软件的缺陷数目

    软件过程成熟度等级

    软件准时提交的百分比

    每人每月生产的程序行数

    软件需要返工的百分比

    平均软件失效时间(近似)

    大于 10

    初始级

    <=50

    Z

    >=45

    2 到 60 分钟

    小于 10

    可重复级

    90

    1.5Z

    20

    1-160 小时

    小于 1

    已定义级

    99

    2.5Z

    10

    不确定

    小于 0.1

    管理级

    降低开发时间到 1/2

    5 Z

    5

    不确定

    小于 0.01

    优化级

    降低开发时间到 1/4

    10Z

    <=2

    近似完全可靠

    对于很多已经推行或者准备推行 CMM 的公司来说, CMM 的起步是很难的,因此 Humphrey 又提出了 PSP ( Person Software Process )和 TSP ( Team Software Process )【 2 】【 3 】。

    CMM 是过程改善的第一步,它提供了评价组织的能力、识别优先改善需求和追踪改善进展的管理方式【 1 】。企业只有开始 CMM 改善后,才能接受需要规划的事实,认识到质量的重要性,才能注重对员工经常进行培训,合理分配项目人员,并且建立起有效的项目小组。然而,它实现的成功与否与组织内部有关人员的积极参加和创造性活动密不可分。

    PSP 能够指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人的表现,管理自身的软件过程和产品质量。经过 PSP 学习和实践的正规训练,软件工程师们能够在他们参与的项目工作之中充分运用 PSP ,从而有助于 CMM 目标的实现。

    TSP 结合了 CMM 的管理方法和 PSP 的工程技能,通过告诉软件工程师如何将个体过程结合进小组软件过程,并将后者与组织进而整个管理系统相联系;通过告诉管理层如何支持和授权项目小组,坚持高质量的工作,并且依据数据进行项目的管理,向组织展示如何应用 CMM 的原则和 PSP 的技能去生产高质量的产品。

    软件的生产过程及其它的许多子过程、软件的开发者和用户、以及系统的使用中存在着巨大的变化和不同,要使一个软件过程对软件生产的改善真正有所帮助,其框架应是由 CMM 、 TSP 和 PSP 组成的一个完整体系,即从组织、群组和个人三个层次进行良好的软件工程和管理实践的指导和支持。总而言之,单纯实施 CMM ,永远不能真正做到能力成熟度的升级,只有将实施 CMM 与实施 PSP 和 TSP 有机地结合起来,才能发挥最大的效力。

    八、如何起步?

    质量改进需要花费成本,因此改进的途径需要视不同公司的规模、业务、财务状况、人员技术水平等多方面综合进行考虑。一般建议中型以上的较大的软件公司实施 CMM 体系。而对于一些小型的软件公司可以采取比较实际的,相对成本较少,且容易操作的方面进行,这些方面大致如下:

    •  实施简洁的开发过程体系,根据不同业务特点可以选择瀑布模型,迭代模型等,并在这些模型上进行适当的变化以适应于短平快的产品开发特点。

    •  提高需求分析和设计方面的技术,例如:原型法技术,分析模式,设计模式,面向对象设计, UML 等;

    •  加强文档化工作。文档是经验的保留,对于一个企业要想获得长期的发展,必须加强文档化工作;

    •  加强编程规范工作;

    •  进行适当的测试工作,建议进行单元测试和系统测试;

    •  实施配置管理工作,加强版本控制;

    •  开展走读、评审和检视活动,尤其要加强代码走读,建议进行每日交叉走读活动;

    •  进行简单的度量分析获得;建议实施 PSP 活动;

    转载:http://blog.csdn.net/last_impression/article/details/1742793

    展开全文
  • 产品质量成熟度

    千次阅读 2017-11-18 16:30:47
    产品开发项目最为关注当然是产品本身,我们想做好产品,下文帮助大家理一理产品开发质量管理思路。 1 广义质量与狭义质量 质量的概念多数是引用ISO标准里的定义,即一组固有特性满足要求的...
  • 敏捷开发中QA如何做质量管理

    万次阅读 2017-05-18 09:08:28
    敏捷开发中QA如何做质量管理? 经常有人会问我,敏捷模式下,QA的职责是什么?QA有什么价值?我们还需要QA吗?敏捷转型中遇到的问题,QA能帮助解决吗?这些问题以前也思考过,笔者就是QA出身的,曾经在中兴通讯做过...
  • ◎文丨e-works整理质量管理体系(Quality Management System,QMS)是指在质量方面指挥和控制组织的管理体系。质量管理体系是组织内部建立的、为实现质量目标所必需的、系统的质量管理模式,是组织的一项战略决策。...
  • 论项目的质量管理 【摘要】 2013年3月,我作为公司项目经理参加了XX市交通运输局的道路交通智能监控抓拍系统项目的建设工作。该项目通过在全市道路干线的重要路段架设智能监控抓拍设备,采集图像和视频并进行监控...
  • 如何做好设备管理

    千次阅读 2011-11-18 14:18:35
    企业内部管理,是指企业为了完成既定生产经营目标而在企业内部开展的一切管理活动,它包括企业的计划管理、质量管理、设备管理、财务管理、班组管理、现场管理等等。 1、设备管理是企业生产的保证 对设备进行管理...
  • 软件开发质量管理的一些思考

    千次阅读 2014-05-14 22:40:54
    质量管理的一些废话
  • 质量管理是企业管理的重要组成部分,其重要作用众所周知。然而,在实际生产经营中,质量管理这张答卷却并非每个企业都能出色回答。依笔者所见,其中主要原因有10个。  之一:缺少远见  远见是指洞察未来从而决定...
  • 现在最新的CMMI将其对应的过程域称为产品和过程质量保证,缩写是PPQA,这里面的一个P产品包括了最终产物,但其焦点是中间工作产物,所以这个P放在这里反而是带来一些混淆,与测试存在一些重叠。所以过程质量保证...
  • 质量管理 六西格玛-黑带大师

    千次阅读 2014-02-24 14:08:35
    六西格玛是一种改善企业流程管理质量的技术,以”零缺陷”的完美商业追求,带动质量成本的大幅度降低,最终实现财务成效的提升与企业竞争力的突破,EMBA、CEO必读12篇及MBA等商管教育均对六西格玛管理及其作用有所...
  • 项目管理师--质量管理 1

    千次阅读 2013-11-27 19:04:41
    质量管理:在质量方面指挥和控制组织的协调的活动,包括制定质量方针、质量 目标、质量策划、质量控制、质量保证和质量改进 质量方针:组织内部的行为准则、体现了对顾客作出的承诺。 质量目标:组织在质量方面所...
  • 软件项目质量管理经验谈

    千次阅读 2007-10-30 09:16:00
    摘要:本文详细阐述了作者对软件项目质量管理的认识,是作者实际经验的总结。主要内容包括对软件项目质量管理理论的认识、软件项目质量管理在实践中的具体做法。文章详细介绍了有关质量计划编制、质量控制、质量保证...
  • 全面质量管理与日本的崛起 ——传统文化与现代理性的成功融合  【作 者】那日苏  内容提要 本文简述了日本在引进质量管理的基础上,进一步创新,建立了适合日本情况的独具特色的全面质量管理,取得了极大成功...
  • 【信息系统项目管理师】论信息系统项目的质量管理(论文攻略篇) 历年论文考试论题分析 最近一次考质量是在2018年上半年,算是比较中规规矩的质量论文题目,与其他论文题目不一样的主要是需要你阐述质量与进度、...
  • 以电子地图为基础,以公安宽带网络为依托,以信息共享和综合利用为目标,以实现公安基础信息基于空间电子地图的可视化查询和分析,从而提高在指挥决策、快速反应、反恐等方面的综合能力,为治安管理、警力部
  • 六西格玛管理是一项重要的质量管理手段,本期我们将与大家一同分享一些在六西格玛管理中常用的工具1FMEA和FTA分析故障模式与影响分析(FMEA)和故障树分析(FTA)均是...
  • 项目中的软件质量管理

    千次阅读 2007-01-15 09:34:00
    项目中的软件质量管理 本文发表于《软件世界》07年1月杂志,转载请注明。 提起软件质量管理,人们更多地会想起ISO9001、CMM、CMMI这些“质量管理圣经”。但国内企业做了这么多年的质量认证,却没有使软件质量有大...
  • 敏捷开发模式下的质量管理

    千次阅读 2016-11-04 16:56:56
    前几天,笔者与一位在大型互联网公司从事质量保证的朋友交谈,作为互联网产品质量和测试的负责人,他最近负责的质量管理方面遇到了很多困难。主要有:1)测试团队在敏捷开发模式下的价值非常有限;2)开发人员只顾...
  • 如何做好一个产品

    千次阅读 2014-09-30 22:45:20
    从去年开始到现在做一个关于工控的产品,中途遇到了很多挫折,也遇到了很多挑战,也发现做好一个产品是一件... 如何做好一个产品,这个问题在一年多的开发和管理过程中,都在进行着思考,也总结了出了一些东西。 做好
  • 软考高项 : (07)论项目的质量管理

    千次阅读 2019-05-24 11:24:56
    7[论文]论项目的质量管理 现代项目管理中非常重视质量管理,很多个人和组织将质量作为判定项目是否成功为重要依据。在IT业界,有很多知名公司将质量提高到了公司战略的高度来对特,并投入大量资源用于质量管理。 请...
  • 如何高效完成产品生命周期管理

    千次阅读 2018-08-15 20:41:54
    郭振宇,十年研发及技术管理经验,通过了CMMI5认证和PMP认证,擅长大数据集成、大数据治理、大数据安全、数据资产管理等领域的产品规划及技术研发。对技术团队管理和研发流程管理也有一定的研究及实践。 产品...
  • 五种全面质量管理工具

    千次阅读 2005-04-05 14:36:00
    解决日常业务问题的质量管理实用技巧。随着质量运动的迅速铺开,许多人耗费大量时间和精力在自己的企业内实施质量管理。可是,他们经常失望地发现,他们很难知道哪种质量工具和技术最适合哪些具体场合。下面介绍几种...
  • 项目质量管理要遵循质量管理体系,管理层在项目开始之前要制订项目质量管理计划和标准,并且在项目执行过程中要保证相关利害关系者都要知道本项目的质量管理标准。项目质量管理十点要则高度浓缩了项目质量管理体系的...
  • “ISO9001国际质量管理体系”介绍

    千次阅读 2008-01-20 23:08:00
    “ISO9001国际质量管理体系”介绍一、ISO9000标准概述8项管理原则12个理论基础80个术语二、8项管理原则原则一——以顾客为关注焦点原则二——领导作用原则三——全员参与原则四——过程方法原则五——管理的系统方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,053
精华内容 22,021
关键字:

如何做好产品质量管理