精华内容
下载资源
问答
  • 所谓生产过程质量控制是指生产企业内部对从原材料进厂到形成最终产品的整个制造过程实施的质量控制。按照生产对程质量控制理论要求及生产实践,服装生产过程质量控制环节主要有以下几个方面:服装生产原辅材料的质量...
  • 软件质量管理,过程管理过程的文章学习研究
  • 质量保证QA与质量控制QC

    千次阅读 2019-07-17 21:34:45
    作者:郑文强 ...不管是工作过程还是培训过程中,或者面试或找工作过程中,经常会看到质量控制QC和质量保证QA两个词汇,甚至不少人或组织会将质量保证QA代指测试。本文将基于ISO 9000相关术语的...

    作者:郑文强

    时间:2019年7月15日

     

    关键词:质量管理QM(Quality Management)、质量保证QA(Quality Assurance)、质量控制QC(Quality Control)

     

    不管是工作过程还是培训过程中,或者面试或找工作过程中,经常会看到质量控制QC和质量保证QA两个词汇,甚至不少人或组织会将质量保证QA代指测试。本文将基于ISO 9000相关术语的定义,从测试角度来谈谈我对它们的理解。首先给出ISO 9000的定义:

    1、质量管理QM指的是在组织质量方面提供指导和控制的协同活动。针对质量的指导和控制通常包括建立质量方针和质量目标、质量计划、质量控制QC、质量保证QA和质量改进。[ISO 9000]

    2、质量保证QA属于质量管理的组成部分,其提供了达到质量要求的可信程度。[ISO 9000][GBT 11457]

    3、质量控制QC属于质量管理的一部分,其关注在为达到质量要求而采取的技术和活动。[ISO 9000][GBT 11457]

     

    根据上面的定义,可以看出质量管理QM是一个更大的概念,可以将质量保证QA和质量控制QC联系在一起,它们都属于质量管理QM的一部分。

     

    质量保证QA关注在软件产品生成的整个过程,主要验证软件产品开发过程中相关实施过程的完整性、一致性和有效性,确保开发活动和测试活动等遵循正确的过程,为软件产品达到合适的质量级别提供信心。为了实现过程的可重用性和持续改进,组织往往会把过程进行标准化,例如:定义子过程、过程的里程碑点、过程的阶段输入和输出、每个时间点需要完成的工作等。软件产品随着生命周期不断增加和成型,想要修复其在早期引入的缺陷,时间和成本都将成倍增加。而质量保证QA的基本假设是过程质量决定了软件产品质量。当过程正确开展时,确保过程的每个阶段得到了良好的遵循,每个阶段引入的缺陷尽量在本阶段得到发现和修复,最大程度的实现缺陷的阶段遏制能力。同时,在当前阶段发现和修复的缺陷,有助于后续阶段的缺陷预防。另外,通过根本原因分析等技术消除在软件工作产品中引入缺陷的根本原因,或者在适当时候开展回顾会议以总结经验和教训,都有助于过程改进,从而可以在将来更好的实现质量保证。

     

    质量控制QC关注在过程中生成的工作产品,其主要目的是检查工作产品是否达到预期要求。从测试的角度,测试过程是整个软件开发生命周期的一部分,而质量保证QA涉及整个过程的正确执行,因此质量保证QA可以支持正确的测试活动。为了帮助实现软件工作产品质量的不断提高,测试可以采用各种不同的测试策略、测试技术、测试类型、测试活动等,例如:自动化测试与手工测试、黑盒测试技术与白盒测试技术、功能测试与非功能测试、测试设计与测试执行等,以尽早发现被测对象与预期结果之间的不一致,并以缺陷报告方式提交,通过开发人员的定位和修复问题,测试人员的再测试和回归测试,逐步实现工作产品质量的提高。

     

    质量保证QA监督的是软件产品实施的全过程(也包括质量保证QC的过程),因此QA往往会是组织层面的岗位定义。而属于质量控制QC的测试团队,往往会在项目层面的得到定义。质量保证QA与质量控制QC既相互关联,又关注重点不同。为了实现软件项目在时间、成本、范围和质量要求下交付满足客户要求的软件产品,需要质量保证QA和质量控制QC两个团队的相互配合和支持。

    展开全文
  • 种植业生产过程中的质量控制;种植业生产过程中的质量控制;种植业生产过程中的质量控制;种植业生产过程中的质量控制;种植业生产过程中的质量控制;种植业生产过程中的质量控制;种植业生产过程中的质量控制;感谢您的...
  • 黑龙江农业经济职业学院 ...畜牧业生产过程中的质量控制;畜牧业生产过程中的质量控制;畜牧业生产过程中的质量控制;畜牧业生产过程中的质量控制;畜牧业生产过程中的质量控制;畜牧业生产过程中的质量控制;感谢您的聆听
  • 软件质量控制基础

    千次阅读 2020-04-10 11:43:27
    1、软件质量控制的理念 高质量的过程产生高质量的产品。建立好的软件工程过程模型,监督在项目实施过程中与该模型的一致性,通过控制开发过程的质量实现最终的软件质量目标。 质量不是指定给某个人或某个...

    1、软件质量控制的理念

    • 高质量的过程产生高质量的产品。建立好的软件工程过程模型,监督在项目实施过程中与该模型的一致性,通过控制开发过程的质量实现最终的软件质量目标。

    • 质量不是指定给某个人或某个组织的责任,而是软件开发过程中所涉及的每一个人的责任。

    • 软件质量控制的作用就是要求每一个人在履行其职责时都要有质量观念。

    2、软件质量的定义

    • ISO8492的定义:
      质量是产品或服务所满足明示或暗示需求能力的特征和特征的集合。
    • ISO9000(2000版)的定义:
      质量是一组固有特性满足要求的程度。
    • IEEE的定义:
      软件产品满足规定和隐含的与需求能力有关的全部特征和特性:
      • 软件产品质量满足用户要求
      • 软件各种属性的组合程度
      • 用户对软件产品的综合反映程度
      • 软件在使用过程中满足用户要求的程度
    • RUP的定义:
      (1)满足或超出认定的一组需求;
      (2)使用经过认可的测评方法和标准来评估;
      (3)使用认定的流程来生产。

    3、质量的属性

    客户属性:质量是相对客户而存在的,也是质量相对性的一种体现。

    成本属性:也可以称为质量的经济性,质量越好的产品,带给社会的损失就越小。

    社会属性:质量很多时候体现的是一种理念,它与社会的价值有直接的关系。

    可测性:产品的质量好坏将取决于对相应特征的衡量,质量的可测性决定可质量的可控制性。

    可预见性:可以预测质量再不同过程中的结果。

    4、客户与质量的关系

    (1)质量是相对客户而存在的,客户与质量的基本关系是相互依赖的关系,质量服务于客户,因客户而存在,质量由客户判定。

    (2)客户是质量的接收者,可以直接观察或感觉到质量的存在。

    5、软件缺陷的专业名词

    缺点(defect)    偏差(variance)    谬误(fault)    失败(failure)    错误(error)

    问题(problem)  矛盾(inconsistency)  毛病(incident)   异常(anomy)

    6、软件缺陷的表现形式

    • 功能、特性没有实现或部分实现
    • 设计不合理,存在缺陷
    • 实际运行结果和预期结果不一致
    • 运行出错,包括运行中断、系统崩溃、界面混乱
    • 数据结果不正确、精度不够
    • 用户不能接受的其他问题,如存取时间过长、界面不美观等

    7、软件缺陷产生的原因

    • 项目期限的压力
    • 产品的复杂度
    • 沟通不良(开发—客户、开发—领导、领导—客户)
    • 开发人员的疲劳、压力或受到干扰(经常加班,领导给的压力)
    • 缺乏足够的知识、技能和经验(从未涉及过的领域)
    • 不了解客户的需求(客户自己都不理解想要什么)
    • 缺乏动力(需要奖金、加班费等)
    • 技术问题:算法错误,计算和精度问题等等

    8、软件质量范围——3A

    Accountability(可说明性)—用户可以基于产品或服务的描述和定义进行使用。(用户手册)

    Availability(有效性)—产品或服务队友99.999%的客户总是有效的,(性能测试、恢复测试)

    Accessibility(易用性)—对于用户,产品或服务非常容易使用并且一定是非常有用的功能(确认测试、用户可用性测试)

    9、RUP软件质量的三个维度

    (1)功能(Functionality):按照既定意图和要求,执行指定用例的能力。
    (2)可靠性(Reliability):软件健壮性(Robust)和可靠性(防故障能力,如防止崩溃、内存丢失等能力)、资源利用率、                                                    代码完整性以及技术兼容性。
    (3)性能(Performance):用来衡量系统占用系统资源(CPU时间、内存)和系统响应、表现的状态。

    10、高质量的软件

            应该是相对无产品缺陷(Bug Free)或只有极少量的缺陷,它能够准时交付用户并且所用的费用都是在预算内的并且满足客户需求,是可维护的。但是,有关质量的好坏最终评价依赖于用户的反馈。

    11、软件质量特性类图

    12、软件过程的质量因素

    • 项目计划过程:和客户的沟通能力、软件产品特性定义的方法、项目计划策略、评审的流程、范围、方式和程度、协同工作流程、合同和用户管理流程和方法、文档编写、管理等的规范和流程。
    • 项目设计过程:软件产品指标的定义和解释、设计流程、设计标准、协同工作流程、文档编写、管理等的规范和流程。
    • 项目实施过程:变更控制流程、执行过程跟踪方法、流程和相适应的系统、缺陷处理流程、文档编写、管理等的规范和流程。
    • 软件维护过程:变更控制流程、用户反馈、相应处理机制、回归测试流程。
    • 软件商业环境过程:软件改进的策略、产品开发模式、市场定位、产品标准等。

    13、软件质量方针

            质量方针,是由组织的最高管理者正式发布的、该组织的质量宗旨、目标和质量方向,并形成文件。质量方针是企业经营总方针的组成部分,是企业管理者对质量的指导思想和承诺。建立质量方针和质量目标为组织提供了关注的焦点,在一个质量管理体系中起着关键作用。质量方针应体现软件公司的组织目标、顾客的期望/需求和组织内部质量行为的准则。

    14、软件质量控制

            质量控制是一个设定标准(根据质量要求)、测量结果,判定是否达到了预期要求,对质量问题采取措施进行补救并防止再发生的过程,质量控制已不再仅仅是检验,而更多地倾向于确保生产出来的产品满足要求的过程控制。

    15、软件质量改进

            质量改进是质量管理的一部分,是不断为改进软件开发过程、产品和服务的持续过程。同时,为确保有效性、效率或可追溯性,组织应注意识别需要改进的项目和关键质量要求,考虑改进所需的过程,以增强组织体系、改进过程和产品并提高满足要求的能力。

     

    展开全文
  • 软件开发各阶段的质量控制

    千次阅读 2011-08-18 09:44:01
    怎样把握好每个阶段的质量,确实不是一件容易的事,本期重点介绍一下需求、设计和编码阶段的成果质量,当然以后会共享一些过程质量方面的知识。  项目管理培训   1、需求   项目经理博客 项目经理博客 ...
           提到软件开发,我们的脑海里总是浮现出这样的情景:开发组的每一位成员都在辛苦的工作,有的加班加点,甚至通宵达旦是常有的事,虽然项目经理修改了一次又一次的进度计划,而实际的开发情况却总是很令人担忧,以至于每次向领导汇报工作的时候总是觉得以前制定的计划没有很好的完成,总是觉得人力资源不够,总是觉得我们没有太多的时间。等到代码终于开发完成了,测试进度却又非常令人担忧,每一个小BUG都要花很长的时间去查找,改了某一个小错误却又引起了很多错误,结果产品发布遥遥无期,而项目组里的每一位成员已经筋疲力尽。   项目管理培训
    bbs.mypm.net
      怎样摆脱这样的困境呢?为何软件开发项目管理这么困难呢?为何我们做的计划总是不能按时完成呢?为何软件开发不能像硬件开发那样可以控制呢?原因在于软件开发完全靠人的大脑思维产生出产品,而每个人的大脑思维是不一样的,因此在软件开发过程中有太多不确定的、可以变化的因素,我们怎样把握住这些变化因素呢?就像我们题目所说的一样,软件开各阶段的成果质量管理,如果我们能够很好的控制软件生命周期每一个阶段的质量,也就很好的控制了整个软件开发的整个过程。   
    项目管理者联盟文章
      软件产品的质量是个很大的概念,因为软件产品完全是人们大脑思维的产物,就是将大脑里无形的看不见摸不着的思维变成一个可以看到的,可以解决实际问题的一组界面或者组件。这样的一个复杂的过程,质量应该如何保证呢?有人想到了ISO9000、CMM,也有人很反对,说应该用敏捷开发。其实,不管用什么样的开发过程,关键是找到这些过程的真谛,有些人说,ISO和CMM到中国来就变了味了,为什么变味儿了呢?其实我们只学到了该做什么,却不知道怎样去做,为什么要这样做?大家都知道做软件开发需要写需求规格说明书和设计文档,为什么要写,文档的重要性有多高?没有资深开发和管理经验的人员可能很难理解其重要性,如果只是简单的形式上去写一篇这样的文档,对后面的编码和测试没有实际的指导作用,甚至起了“误导”作用,同样会引起大量返工,那么这些文档除了负担之外就没有其他用途了,要知道写这些文档是需要消耗项目组资源的(进度、成本...)。  bbs.mypm.net

      很多人又想到了测试,觉得是我们测试的力度不够,所以我们产品质量不过关,其实,软件开发的质量保证从开发最初就应该开始了,如果到了测试阶段才重视就已经晚了。软件产品开发过程,不管采用瀑布式还是迭代式,都离不开需求、设计、编码、测试这几个阶段,在迭代式开发中,这几个阶段也是周期性出现的。怎样把握好每个阶段的质量,确实不是一件容易的事,本期重点介绍一下需求、设计和编码阶段的成果质量,当然以后会共享一些过程质量方面的知识。   项目管理培训

      1、需求   项目经理博客
    项目经理博客
      我们知道人与人的交流总是会存在一些误会,同样一句话,心情不好与心情好的时候听起来的感觉可能会截然相反,正是因为人们之间存在着理解上的偏差,在描述需求的语言上就应该注意尽量避免歧义的产生。如果对UML比较熟悉的话,需求分析可以利用UML工具进行,这样可以减少一些自然语言引起的歧义,但是UML可能与用户沟通起来有一些障碍,因为并不是所有的用户都了解UML各种图形的意思。除了工具之外,我们可以从以下几个方面来保证需求描述的质量。   

      1、看句子和段落是否简短,一个很长的句子,看起来会非常困难,因此无法弄懂真正的需求,另外过长的句子和段落容易让人忽视一些需求,所以如果一个句子不能完全描述清楚需求,应该将其拆分成多个小句子。2、句子是否有语法错误,还要注意标点符号,有时,标点符号点错了,就完全成了另外一个意思了。3、是否存在模糊不清的需求,出现类似于可能,大概,或者等词汇表述的需求。4、另外注意引用的术语和词汇是否前后一致。5、是否存在一些形容词、比较性词语,比如:容易的、快速的、方便的、有效的、许多、很少、简单、复杂、最新的,界面友好的,减少、扩大,不小于等等,需要将描述性词语进行量化,并且给出具体值或者范围,要不然不同的人根据不同的理解就会得出不同的结果,最终可能跟用户最初的要求有偏差,那“炒回锅肉”的事情就不可避免地会发生。   blog.mypm.net

      另外保证需求质量的一个很重要的因素就是需求是否细化,如果需求不细化也会很容易造成代码的返工,于是就出现了我们的程序员尽管总是加班加点却总是不能如期的完成任务的情景。那么我们怎样才能判断需求细化的程度呢?需求细化程度确实很难把握,什么样的需求可以算是比较细了,不用再进行细化了呢?哪些需求又太粗了呢?答案是需求是否可以写出相应的测试用例,如果写不出来,就说明需求还不是很细,还需要再进行细化。   
    www.mypm.net
      2、设计   
    项目管理者联盟
      软件架构设计在软件产品开发周期中占有很重要的位置,我们开发出来的软件产品在开发伊始到产品发布会涉及到方方面面的角色,例如:用户、项目管理人员、程序员、测试员、维护人员等等。不同的角色对架构设计的要求也不相同。例如用户关心的是需求,因此我们的设计对需求的覆盖率是多少?对于程序员来说模块是否清晰,类的功能是否单一等等,对于测试人员来说系统的是系统的可测试性。对于维护人员来讲系统的扩展性、可维护性如何?一个高质量的软件架构,应该最大限度的考虑并满足不同角色的不同要求。正是因为有这些要求,我们在进行软件设计的时候,应该进行全面的考虑。一般用来衡量软件设计质量的标准可以从以下几个方面来考虑:   

      1)、功能性:包括完全性、正确性、安全性、兼容性、互用性。完全性包括功能点覆盖率,重点功能点覆盖率,优先功能覆盖率。正确性包括需求一致度。安全性根据软件需求的不同有不同的安全性要求。   
    blog.mypm.net
      2)、效率:包括产品运行的时间效率和利用的硬件资源两方面来考虑。   www.mypm.net

      3)、维护性:包括架构的可改正性,可扩充性以及可测试性。如果用户的一个很小的需求变更会引起架构设计很大的变化,那么这样的架构设计的可改正性和可扩充性就比较差。   转自项目管理者联盟
    项目管理培训
      4)、可移植性:包括硬件的独立性、软件独立性、可安装性、可重用性。软件设计是否模块化、每个模块的可复用性如何都是应该考虑的因素。   
    项目经理博客
      5)、可靠性:包括缺陷数量、容错性、可用性。   
    6)、使用性:包括可理解性、易学习性、可操作性、易沟通性。我们软件的最终目的是让用户来使用的,如果易用性不好,可操作性不好都会影响用户对软件的接纳程度。因此在软件的可使用性也是非常重要的。   

      3、编码   转自项目管理者联盟

      代码质量的一个很重要的标准就是代码的可读性及规范性,可读性不一定是简单的代码,而是容易理解的代码,因为过于复杂的代码难以测试和维护,同时出错的几率也会更高。如果一个方法内部的代码很长,而且使用了很多令人难以理解的数据集,这样就会带来代码维护的困难,因为很少有人能够有效地分析它们,因此也就是最容易出现缺陷和错误的地方。类之间的耦合度会造成类与类之间的相互关联,当一个类发生改变时会使其他的类发生意想不到的变化,一般从导入类的个数判断类之间的耦合度,如果导入类的个数很多,每一个导入类发生变化都会影响到该类本身,另外如果该类的public方法太多也会导致类之间的高耦合性增加。   
    项目管理者联盟文章
      也许有的程序员会认为写出可读、规范的代码会影响工作进度。的确,对于程序员个体短时间来说为代码写上注释是要花费些时间,但如今软件开发是多人协作   

      周期很长的过程,写过程序的人都知道,如果自己写了不规范的代码,随着自己所写的代码越来越多,到后来需要修改某个前期写的模块时都不知道自己当初是怎么想的了,读自己的代码也需要花很长时间才读懂。况且如果随着人员的调动等其他原因,往往维护代码的程序员已不是当初写代码的人,很多情况就是读懂了一段糟糕的代码还比重新写出一段代码花费的时间还长,严重影响工作效率(有些时候还影响维护人员的心情),反过来,如果大家都讲究把代码写成规范可读的,无疑对于整个组织来说提高总体工作效率是非常有用的。   

      代码质量另一个非常重要的衡量手段就是测试,通过统计测试代码所产生的缺陷情况,如严重等级分布、缺陷曲线的变化等可以从一个方面来简单地评估代码质量。
    展开全文
  • 软件开发管理与质量控制

    万次阅读 2018-11-12 19:51:48
    软件开发管理与质量控制

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    前 言

      随着市场经济的进一步完善及全球经济一体化进程加快,企事业单位面临着激烈的市场竞争,企业内部、外部信息交流已成为企业发展、参与市场经济竞争的迫切需要。企业引入先进的信息处理技术,增加信息共享程度,不仅会提高工作效率、降低成本,而且也会提高企业管理的科学性和自动化程度。信息已成为企业生存与发展的基础。

      计算机和通信技术的迅速发展,特别是Internet 技术的发展与普及,为企业内部、企业与外部提供了快速、准确可靠的信息交流渠道,信息高速公路改变了企业与企业、企业与客户、企业内部各级决策者与管理人员以及管理人员之间的信息交流方式,有效地促进了企业各部门之间以客户为中心的协作,为企业实现经营方式、管理模式的改变奠定了坚实的基础。信息化企业运作管理系统已成为企事业单位参与全球市场竞争的必备的支持系统。

      正是由于这样市场需求与技术发展现状,为我国的IT行业带来了空前发展的机遇,特别是软件行业。软件企业能否抓住这样一个难得的发展机会需要多方面的努力,其中软件开发管理与质量控制在其发展中占有重要的位置。本文试图在这方面进行初浅的分析,可供业内人士参考。

     
      

    1. 国内软件行业发展概况
      1.1 发展现状

      在我国,随着信息技术产业的迅速发展及软件版权意识的提高,软件越来越受到了人们的关注与重视,越来越多的人把目光投到了充满风险与利益的软件行业。加之我国风险投资机构的逐渐形成,都将促进软件行业以比以往更快的速度发展。

      人们往往把IT(信息技术)产业看作风险行业,原因可能有几个方面,

      其一: 这是一个飞速发展的行业,说她飞速也并不过分,只有二十几年发展历史的IT行业,在世界500强企业中占有重要的位置,而当今世界上最具财富的也是IT类企业。高额的回报吸引大批企业的介入,一个企业要想在这个行业有所作为没有一个灵活而有利的团队加之一定的规模是难以生存的。

      其二: 这是一个高科技领域,这个行业的技术的生命周期一般为一年到二年,高速的技术发展势必要求大量的科研开发经费,而科研开发是有风险的,成功与失败只是咫尺之遥。一旦失败,无投资残值可言。

      其三: 这是一个知识密集型领域,知识就是财富也意味着笼络一批人才需要付出一定的代价。

      但实实在在讲IT行业确实是一个高速增长的行业,虽然计算机的发明已有五十几年的历史,IT做为一个行业的历史也只有二十几年,而当今世界上最具财富的是IT类的公司,足见其成长的速度。我国软件行业大约有十年的发展史,到现在应该说也还是个很小的行业,虽然它在国民经济中所占的份额很小,但他对我国经济的发展,社会的进步起着很重要的作用。目前已形成一批具有一定规模的软件公司,如以财务软件为代表的“用友”、“金蝶”、“安易”等,及以项目开发型为特色的“东大阿而派”、“联想系统集成”、“北大方正”等企业。软件收入已占有一定的市场份额。发展速度惊人。

       1.2. 存在的问题

       我国软件行业发展的历史较短,加之IT行业技术发展速度快,软件开发工具层出不穷。我国的软件行业自身发展方面确实存在一些问题。归纳起来,有以下几方面的问题:
      * 软件开发管理不规范;
      * 缺乏高素质的研发管理人员和研发人员;
      * 缺乏合格的产品经理;
      * 软件产品孤立、零散,缺乏整合性;
      * 软件公司规模过小;

     

       1). 软件开发管理不规范
      目前大部分软件公司,无论是产品型公司还是项目型公司,大部分公司没有形成适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。

      同时,随着软件开发规模及开发队伍的逐渐增大,软件开发不再是向过去那样一二个开发人员即可解决的事情。迫切需要一种开发规范来规范每个开发人员、测试人员与支持人员的工作,每个项目组成员按约定的规则准时完成自己的工作。同时采用规范化管理,专业分工也可以降低对开发人员的要求,从而降低产品研发成本。

       2). 缺乏高素质的研发管理人员和研发人员
       目前,我国软件市场还处于起步与发展阶段,真正称得上商品的软件很少,绝大多数的软件公司的规模很小,国内软件开发人员超过100人的公司很少。软件公司的用户几乎全是国内用户,加之国内软件专业的学校教育与实际软件开发脱节严重,开发人员工作不稳定,以及技术的高速发展以及开发工具的变更,导致软件开发人员缺乏必要的技术积累,表现为整体素质偏低。同时,由于没有合适的内部与外部环境也很难造就高水平的研发管理人员,从软件开发到开发管理都不能适应市场的要求。

       3). 缺乏合格的产品经理
      产品经理在软件产品的发展过程中起着至关重要的作用,产品经理负责产品的定位与发展方向。这就要求产品经理对产品市场、用户需求有深刻的认识与理解,需要有一定的悟性、管理经验与能力。同时,产品经理必须了解当今IT技术的发展状况及发展趋势,对相关开发工具与技术应有比较深刻的理解。对于大型应用软件的产品经理还要求其对网络技术、电子商务及各种硬件设备有全面的了解。这样才能保证在决定产品特性,产品框架结构、市场销售策略与服务策略时作出合理决策。从某种程度上讲,产品经理是否称职关系着其产品的存亡。目前软件行业急需而又缺乏正是这种产品经理。

       4). 软件产品孤立、零散,缺乏整合性;
      国产软件目前称得上产品的主要以财务软件、防病毒软件、家庭教学软件及一些初级的工具软件。总的说来基本为专用型产品、满足特定功能,即便是专用型产品其各专项子系统大多也缺乏整体考虑。大多厂家产品不具备构成大型应用系统的整合能力,目前一些公司已开始进行这方面工作。

       项目型公司大多以项目为主,产品化程度比较低。不具备推广的条件,经济效益较差,影响公司的发展。
    导致软件产品孤立、零散,缺乏整合性在很大程度上也是软件开发管理不规范;缺乏高素质的研发管理人员和研发人员;缺乏合格的产品经理;三条原因造成的。

       5). 软件公司规模过小;
      目前我国软件市场还处于起步与发展阶段,绝大多数的软件公司的规模较小,国内软件开发人员超过100人的公司很少。软件公司的用户几乎全是国内用户。但软件作为一个行业,他需要市场的拖动,也需要外部资金的介入,外部资金的介入给它带来的不仅仅是金钱,更重要的是也带来了一种管理与思维方式,这也是国内软件公司需要的。

       2 工程设计与软件开发


      将软件开发作为工程来对待是有其存在意义的,在谈软件开发管理与质量控制之前,我们先看一下工程项目的整个过程。

       2.1 工程设计的阶段划分
      工程项目从可行性研究到最后项目建成基本包括如下八个阶段。最后二个阶段主要是考虑与软件开发比较而划分的,在实际的项目实施过程一般不将其作为独立阶段考虑。因此,一般的工程项目只包括六个阶段。(这里所指的工程项目可以是新建一间工厂,也可以是一个建筑工程项目)

      但真正属于工程设计阶段的只是前四部分,以下以化工类工厂设计为例就属于工程设计的几个阶段的要求做以简单扼要的介绍,希望能软件开发管理有所帮助。

      1) 可行性研究
      在可行性研究阶段一般应完成如下几方面的工作:
      * 项目内容定义
      * 项目技术分析
      * 项目市场分析
      * 项目策略
      * 投资与回报分析
      * 已有资源分析
      * 其它应考虑的因素

       2) 方案设计
      方案设计可以说是可行性研究中技术可行性的扩展。方案设计级段主要完成如下几方面的工作:
      * 确定整个项目的技术实现。主要包括采用的工艺流程,主要及关键设备参数确定及设备选型。
      * 基本设备布置方案
      * 能够确定对建筑物、水、电、气以及采暖通风等方面的要求。
      * 简单的方案说明
      * 粗略的项目预算
      * 技术的可实现性

      3) 初步设计
      初步设计是详细设计的前提,其目的是要根据具体项目的要求,初步确定技术实现的一些细节信息,主要完成如下几方面的工作:
      * 确定工艺流程中的工艺参数和主体物流及物料平衡;编写工艺流程说明书
      * 绝大部分设备的选型以及非标准的确定。并完成设备布置方案。
      * 建筑、水、电、气以及采暖通风各工种均需确定初步设计方案及基本的方案说明。
      * 较为准确的项目预算
      * 具体的实现技术
      初步设计是项目设计单位与用户交流的基础。

      4) 详细设计
      详细设计是以初步设计为基础,完成所有的技术细节工作。
      * 确定工艺流程中所有的工艺参数,
      * 完成所有设备的选型以及非标准设备的设计。并完成所有设备及管道布置等。完成所有工程实施前的准备工作。
      * 建筑、水、电、气以及采暖通风各工种均需完成详细设计图纸。
      * 详细的流程说明与使用说明
      * 准确的项目预算
      详细设计是项目实施的基础。

      5) 工程实施
      项目详细设计是工程实施的基础,按照设计要求施工是最基本的要求。同时,在项目的实施过程中还会发现详细设计中存在的问题,可以通过向设计单位提出修改设计要求,由设计单位完成设计修改工作。项目工程实施也可采用项目监理的方式,监督施工单位按设计图纸及施工规范施工,确保施工质量。

       6) 试运行
      工程实施完成后便是投产试车,解决其中存在的问题,便可开始项目的试运行。
    在以上工程项目的各个阶段中,可行性研究一般由设计单位或用户自行完成,也可委托具有该类项目评估经验的项目咨询机构完成。方案设计、初步设计、详细设计由工程设计单位完成,工程实施由工程施工单位完成。

      2.2. 工程设计的质量控制
      工程项目设计从设计单位接受用户委托,进行工程项目设计到设计任务完成,用户在几个环节均有参与项目质量的控制的机会,同时设计单位有严格的质量控制体系确保项目设计符合相关的标准与规范。

      在以上的工程设计质量控制体系中,在每一设计阶段结束时用户均有机会参与对工程设计质量的监督与控制,设计单位与用户沟通的媒介是工程设计图纸及相关的设计文档,双方有交换意见的共同基础。设计单位会根据用户的意见与建议及时调整设计,以便更好的满足用户的需要。多年的设计经验证明,上述的工程设计质量控制体系是科学合理的。

      2.3 软件开发与工程设计之比较
      按照软件工程理论,软件开发过程基本可以划分为如下几个阶段:
      * 需求分析
      * 总体设计
      * 详细设计
      * 编码设计
      * 模块集成
      * 软件测试
      * 定版发行
      从上面的软件开发阶段划分不难看出,软件开发与工程项目设计虽然看上是二类不同的工作,但他们本质上是相同的。不妨将软件开发与工程设计的阶段加以比较,不难得出上述的结论。

      由图3不难可以看出软件开发与工程项目设计之间的相似性,因此将软件开发作为工程来管理是完全可行的。

      2.4 软件开发与工程设计的差异
      虽然软件开发与工程设计有其相似之处,但由于其所处的领域不同,发展历史与人文环境也有一定的差别,完全照搬工程设计的管理模式并不可取。首先比较一下工程设计与软件开发目前各自的现状。

      1). 工程设计
      * 有一套完备设计标准与规范;
      * 大量的标准化设备可供选择;
      * 大量的样板设计可供借鉴;
      * 一批有经验的设计师言传身教;
      * 客户基础素质良好;

      2). 软件开发
      * 历史较短,缺乏必要的开发管理规范;
      * 技术发展变化快,零部件标准有待形成;
      * 国内软件产品质量意识差;软件产业化意识淡薄;
      * 可供借鉴的样板少;
      * 缺乏高素质软件开发与管理人才;
      * 客户素质较差;
      正是由于工程设计与软件开发存在上述背景差异,应此在借鉴工程设计经验的同时,必须针对软件开发自身的特点,制定出符合企业自身的软件开发管理模式与相应的软件开发管理规范。这样才有利于我国软件行业的健康发展。

       3 . 软件开发的组织机构


      无论是项目型公司还是产品型公司,从事软件开发的组织或公司应该有一定的软件开发组织结构。一个合理的软件开发组织结构是确保软件开发质量的最基本保证,各个组织各负其责,可以确保软件开发按拟订的质量控制规则与软件开发计划进行,有利于软件公司软件质量与成本的控制。
      
      3.1 软件开发组织机构设置
      一般而言,对于产品型软件公司,其公司内部均会有一个类似与产品管理小组这样的一个组织,一个专门负责产品发展的产品经理部门。而项目型公司则相对简单一些,主要是针对项目进行定制开发,一般对项目的发展方向不做控制。但从项目开发演变为可推广产品的另当别论。一般来讲,下图4是一个典型的软件公司软件开发的组织机构设置。

     3.2 组织机构的职责分工

     在上述的组织机构中,各职能组织有各自明确的责权范围,完成各自的本职工作,各组织相互协调完成相应的软件开发与维护工作。
    公司产品管理组:对于产品型软件公司而言,软件产品是其生存与发展的基础,公司对新产品立项、现有产品的发展方向及有关产品发展的重大决定均需由公司产品管理组来决定。

      公司产品管理组一般由公司的执行总裁、技术总监、市场总监、产品经理、研发经理及其他必要人员。

      产品管理部门 :产品管理部门是界于研发部与市场部之间的一个桥梁部门。产品管理部门的主要职责是负责产品发展策略的制定与执行,这里的执行包括软件开发前期的市场及需求调研,完成可行性分析报告,制定产品规格。参与软件开发项目组,并完成相关工作。

      * 软件开发前期:用户需求分析、功能描述、运行平台与环境、市场定位、销量预测与售价;
      * 软件开发后期:产品宣传资料、产品培训、促销与支持t;

       研 发 部 门:研发部是软件开发的主体,主要任务是完成软件或的项目的开发工作。其工作内容通过各职能组实现。主要包括:
      * 功能规范:功能规范列表及用户界面,确保写出用户手册;
      * 开发活动:包括设计、编码、模块集成、Alpha测试与文档;
      * 支持工作:软件配置管理与问题报告数据库;
      * 项目计划:定义项目里程碑;
      * 软件定版:IRL,

      Architecture & QA:是软件开发的质量控制机构,主要职责是负责软件开发过程的质量控制。在软件开发的各个阶段,根据软件开发设计规范对阶段设计结果进行质量控制。及时发现问题、解决问题,确保进入下一阶段的设计符合设计规范要求。实现软件开发全程监控。

      Architecture & QA为非常设机构,主要由研发经理、产品经理、资深系统分析远、测试经理等人员组成。根据项目进展需要,由研发经理召集进行项目阶段评审。

      软 件开 发 组: 主要由各种角色的开发人员构成,完成开发任务。

      CMO:(Configuration Management Officer)软件配置管理,对于一个具有一定规模的软件公司都会有一个软件配置管理机构,对于小型公司一般由项目经理带管,CMO的主要职责是进行软件开发过程中的软件配置管理,以及软件定版后的维护管理。在软件开发过程中,由于多个开发人员协同工作,需要对其工作协同管理,确保协同工作的顺利进行。同时,由专人进行配置管理,使得大部分开发人员不会得到全部原代码,也有利于软件公司的安全保密工作。在软件定版后,由于软件的Bugs,功能的完善及各种原因导致的对软件的修改,版本的控制就显得极为重要,软件配置管理可以确保得到不同时间的软件版本。

       软 件 测 试 组 :软件是软件工程的重要组成部分,软件测试组承担的工作主要是α测试。测试模块与集成测试由软件开发人员完成。对于项目软件开发,用户的计算机技术人员参加到软件测试与支持工作组,使用户参与整个软件的测试工作中。确保交付的应用系统是用户可信赖的系统。

      在以上的软件开发组织机构中,不论公司规模的大小,以上的各个职能应该是健全的。明确的责任分工有利于软件开发的顺利进行于质量控制,同时,也必将有利于公司的成本控制,降低软件开发风险。

      3.3 软件开发项目组的角色  
      一般来讲,一个软件开发项目组是由多个不同角色的人员构成,每种角色在软件开发中起不同的作用,各个不同角色的人员协同工作,完成软件开发工作。

      典型的软件开发项目组由下列角色构成,如图5所示

      在软件开发项目组中一般有六种角色,他们是:

      ①.产品管理
      ②.程序开发
      ③.程序管理
      ④.测试及质量保证
      ⑤.用户培训
      ⑥.后勤支援
      
      在大型软件开发项目中,可以将每个角色赋予不同的个人。对小型项目,一个人可以肩负多个不同的角色。每种角色的人员在项目中起着同等重要的作用。每种角色都有其特定的任务及技能要求。

      产品管理:产品经理负责建立及更新项目的商业模型,在确定及设置项目目标方面起关键作用。产品经理应确保项目成员清楚理解项目商业目的,并根据商业需求的优先级确定功能规范。同时,产品经理负责高层的项目沟通,如:商业项目的成本核算、合同洽谈,及向相关人员通报项目进展等。

      程序管理:程序经理负责确定软件特色及功能规范,根据软件开发标准协调日常开发工作确保及时交付开发任务。协助产品经理完成项目需求文档,并根据需求文档起草软件功能规范。同时负责与系统分析、规范及框架结构有关的各种活动。管理与协调与外部标准与系统的互操作性,控制项目进度。程序经理是项目组成员间沟通与协调的核心。

      程序开发:开发队伍负责交付符合功能规范的软件系统。开发队伍应积极参与功能规范的制定,在建立项目原型时开发人员与程序经理可以同步进行并提供技术可行性。在功能规范确立后,开发人员必须与程序经理就如何解决重大疑难问题达成一致。

      测试与质量保证:测试与质量保证是保证系统符合功能规范的保证。为保证“零误码”测试/QA人员应积极参与开发过程,确保开发出交付符合功能规范的软件系统。测试/QA人员负责准备测试计划、测试用例、自动测试程序、执行测试工作、管理并跟踪Bug。测试工作与开发工作是独立并行的。

      用户培训:培训人员负责设计编写离线及在线培训文档,包括演示材料。用户培训人员应参与用户界面和系统的设计与构造,并参与安装程序与安装过程的设计。参与系统的可用性测试及设计改进,与程序管理与开发有密切的关系,并确保系统的变化及时反映到文档中去。

      后勤支援:后勤支援包括确保项目顺利进行的各方面工作。
    对于一个项目组,建立一个良好的团队氛围是非常重要的,每个角色在项目中都是不可缺少的,项目的成功是团队成员共同努力的结果。鼓励成员的积极进取、高效、参与的团队精神,提高成员的责任感,避免造成团队或项目的成功依赖于少数个人的贡献。

       3.4 开发组人员构成
      根据软件开发项目组织的角色划分,对于中等以下规模的软件开发项目组基本包括如下几类人员:
      ① 产品管理人员:(产品管理与用户培训角色)
      ② 软件开发人员:(程序管理与开发角色 )
      ③ 软件测试人员:(测试角色 )

      一般而言,产品管理人员同时担负用户培训的角色。程序管理角色一般由项目经理承担,而队后勤支持角色一般由研发部和公司统一承担,或由公司的信息系统管理人员协助完成。图6表示项目组的人员结构及承担的相关工作。


      3.5 开发人员技术结构
      宏观上讲,软件开发机构基本可分为二种角色,管理角色和技术角色。不同角色各有其不同的发展方向,如图7所示。

      不论是走技术路线还是管理路线,不存在那种角色地位更高的问题。高级架构设计师与部门经理具有同等的地位与待遇。

       4. 软件开发的阶段划分及目标


      软件开发进行阶段划分主要有以下三方面优点:
      1) 有利于软件质量控制;
      2) 便于项目进度控制与管理;
      3) 有利于项目成本费用控制;

      4.1 软件开发的阶段划分
      虽然软件开发与工程设计有其相似之处,但由于其所处的领域不同,发展历史与人文环境也有一定的差别,完全照搬工程设计的管理模式也存在一些弊端。下面就国外流行的软件开发模式与工程设计理论及原始的软件开发做以简单比较,见图8。

      原始的软件开发模式很是简单,有些项目连需求分析都不完整,软件测试只是相当于模块集成一级的测试,没有规范的软件测试。软件质量取决于编程者个人的技术水平,质量无法保证,也很难控制。在满足用户需求方面取决于编程者个人的理解,软件交付后经常发生大面积的修改。项目似乎完成得很快,交付后大面积的修改经常导致延误工期,修改后的软件缺乏必要的测试手段,往往导致极大的售后服务支持成本。造成项目表面赢利、实际亏损的局面。

      软件工程理论指导下的软件开发管理模式也存在一定的问题,那就是有些环节的可操作性较差,主要表现在需求分析到总体设计这个环节。需求分析是文档性的描述,一般是软件开发人员对用户需求的一种理解,这种文字描述一般很难精确可视地展现未来软件的情况,而用户也很难说清楚自己的需求,这就使得用户很难鉴别需求分析的精确性。往往导致软件交付后的大量修改。有一篇“Client / Server软件开发常犯错误”的文章说得好,“用户不知自己需要什么样的系统,但知道不要什么样的系统”。

      为避免软件开发中需求分析到总体设计这个环节的歧异性问题,目前,国际流行的软件开发模式中增加了FS+UI(功能规范和用户界面)这个环节,这个环节不但解决了用户在需求分析理解上的困难,同时也解决了软件开发过程各种角色人员的并行工作问题,便于软件开发工期的缩短,有利软件开发质量与成本的控制 [ FS+UI(功能规范和用户界面)见后面章节 ]。

      4.2 软件开发各阶段目标
      以下就软件开发阶段划分的各阶段的任务与目标做以简单描述,这是软件公司进行质量控制的基础。
      
       1) 可行性分析
      可行性分析是软件项目立项的必要阶段,对于项目型软件开发,可行性分析一般由用户自行完成,软件公司基本在技术上给予必要的支持。对于产品型软件开发,可行性分析是非常重要的一环,产品采用的技术、市场定位与销售策略等直接关系着产品的生存与发展。

      可行性分析基本包括如下几个方面的内容,
      
      A. 项目定义:项目定义主要是对产品定位有一个大致的描述,钩画出该软件产品的运行环境、产品功能、用户特征以及制约因数进行全面的描述,以便下一步工作的展开。

      B. 技术分析: 此处的技术主要包括软件的开发环境与运行环境所涉及的各方面技术,在此应对这些技术的发展状况,成熟情况及未来的技术走势应有细致的阐述。

      C. 市场分析: 包括国内外行业发展现状、市场格局、发展趋势,在市场容量统计数据的基础上,推测我们产品可能的市场占有率及销售情况。

      D. 产品策略: 产品策略包括产品的技术策略与产品的市场策略。

      E. 投资与回报分析:项目投资总额、项目成本核算、项目收益、投资回报等。
      
      F. 已有资源分析:包括资金资源、人力资源、技术资源等的分析。

      G. 其它应考虑的因素

       2) 需求分析
      需求分析是软件项目正式实施开始的第一个阶段,需求分析应该遵循可行性分析确定的基调,包括技术路线、产品基本功能、产品运行环境及市场定位。需求分析主要应完成对用户应用流程的描述,即完成商业逻辑分析。并根据商业逻辑的需要确定软件的功能列表及描述。

       3) FS+UI
      A. 总体描述,包括应用平台及应用限制,...
      B. 功能列表
      C. 用户界面
      FS+UI的合格与否取决于能否完成以下二方面的工作。
      ① 完成用户手册的编写!
      ② 准备测试计划、测试用例及确定验收标准!
      FS+UI是产品管理部门与软件开发部门的接口,对于项目型开发是软件开发商与用户责任划分的重要依据,FS+UI不同于需求分析,它提供给用户的是一个清晰可见的用户界面与完整的功能说明,方便用户的理解与确认。软件开发据此进行下一步工作就有了坚实的基础,避免软件交付后的大量修改工作,有利于软件质量与进度的控制。同时,便于软件开发并行工作的展开。
    FS+UI是软件总体设计及软件α测试的基础。

       4) 总体设计
      总体设计的依据是FS+UI文档,其目的是根据FS+UI要求,依据具体采用的开发工具与技术平台确定软件实现的对象关系与数据库结构。并非项目组每个成员均参加总体设计,一般来讲,一般中小项目总体设计为一到二个人,中大型项目一般为一个总体设计小组,由项目总设计师负责将项目进行分解为可操作的大小,交由不同设计小组完成相关功能的总体设计,总设计师负责协调各子项之间的协调关系,从而完成大型的总体设计。
      
      总体设计设计深度情况直接影响下一步的详细设计。过细的总体设计也是不必要的,少量的人员进行过细的设计必然影响整个项目的设计周期,而过粗的总体设计当然也不利于详细设计设计任务的分配与设计展开。
    总体设计是软件详细设计及软件集成测试的基础。

      5) 详细设计
      详细设计是总体设计的继续,主要目的是完成总体设计完成的对象内部的商业逻辑的实现设计,在总体设计完成后可以将不同的设计对象交由不同的设计人员来完成。原则上讲,在开始软件编码之前应完成所有的设计细节,避免在编码中进行设计工作。
    详细设计是编码及软件模块测试的基础。

      6) 编码
      编码是软件详细设计的一种再现,编码中最重要的是要遵从相关开发工具的设计规范及数据库设计规范,另外,养成一个良好的编程习惯是一个软件公司和软件编程人员最基本的职业素质。
    对于软件应用可靠性要求严格的案例,所有软件模块必须通过模块测试,对一般应用软件中的重要模块也应进行模块测试。

      7) 集成
      集成是软件开发中重要的一环,集成测试的依据是软件的总体设计。如果缺乏前期的模块测试,必然会导致集成时间的加长,同时也会加重后期的α测试及问题处理的工作量。

      8) α测试
      α测试是在软件集成结束后软件开发进入的下一个环节,它标志着软件开发从设计级段进入软件测试阶段。一般情况下,软件开发从设计进入测试是通过CMO来完成这一过程。
    为完成α测试,测试部门一般包括如下几个方面的工作。
      ① 编制测试计划
      ② 编制测试用例
      ③ 测试执行
      ③ 测试结论(包括问题报告)
      一般而言,测试工作基本上可以分为如下几个轮回:

      α测试是软件公司对自身产品的一次自我测试,α测试结束后,测试部门会提供一个软件测试评价报告,这个评价报告在某种程度上决定了该软件是否适应商业销售。

       一般来讲,软件通过测试并不意味着软件没有任何问题,只是意味软件通过了可接受测试条件。软件测试的问题报告是软件公司售后服务与产品升级的重要参考因素之一。

      9) 问题处理与设计文档改进
      问题处理是软件开发组交付测试后的重要任务之一,及时解决软件测试过程中发现的问题,以便进行下一轮测试。
    软件开发人员在交付测试后的另一重要任务就是将编码过程中对设计的修改及时反映到总体设计文档和详细设计文档中去,确保定版的软件与其设计文档的一致性。

      10) IRL内部定版
      测试合格的软件在软件开发部内部定版,进入产品的组装或β测试,及产品销售。对项目型软件开发,则进入系统的实施级段。

      

    5 过程管理与质量控制标准化
      
      5.1 软件开发过程管理
      传统的软件开发一般遵循的是瀑布过程模型,一个阶段的结束是下一个阶段的开始。这种模型不适合基于对象、分布式的企业应用开发。部件的开发具有并行性,而非顺序性。另外,瀑布进程模型缺乏灵活性,不适应快速原型开发工具的要求。

      基于里程碑的过程模型引进迭代过程模型,允许开发任务的重叠和反复,可以很好适应基于部件的软件开发。基于里程碑的过程模型便于团队模型中责权的划分。便于风险评定,鼓励快速交货。

      1) 里程碑过程模型的特征:
      A. 里程碑过程:软件开发过程是由指导开发进程的外内部里程碑所驱动的。
      B. 明确责权关系:过程模型将每个里程碑与开发组的责任角色相关联。
      C. 风险驱动的计划安排:高风险部件应尽早完成。
      D. 评估说明:评估说明直接影响着项目的计划与管理,在整个软件开发过程中致关重要。

      2) 里程碑的制定
      里程碑也可以称作项目实施计划。对于软件开发项目而言,一但项目立项确定,需要做的第一件事情就是确定项目实施的里程碑。根据前面我们确定的软件开发阶段划分,在里程碑中应清楚地定义每一个阶段的开始时间、结束时间、负责人,阶段的提交成果由各阶段的软件开发规范确定。里程碑是公司对进行项目控制的主要依据。里程碑一旦确定,各相应负责人应确保按时交付任务。

      对于各不同里程碑阶段可以根据需要制定阶段里程碑,阶段里程碑一般由开发组织内部确定以便于更好管理与控制项目的进程。达到某个里程碑表明对此负有主要责任的角色完策任务。便于明确各个角色责权范围、有利于按时完成任。

      软件开发里程碑主要包括如下阶段:

      3) CMO 软件配置管理
      为确保软件及其文档的一致性,进行软件配置的管理是必要的。

      5.2 质量控制体系
      软件开发阶段划分的目的是为了便于形成基于里程碑的软件开发质量控制体系,每个里程碑都是一个质量控制结点,这些质量控制结点贯穿于整个软件开发全过程,从而构成软件开发的质量控制体系。

      基于里程碑的软件开发质量控制体系可以用图11表示。

      图12表示软件开发阶段目标与质量控制的关系

     每个具体的里程碑与软件开发组某一具体的角色相关联,不同的角色则隶属于不同的业务部门,而人员业绩的评估与管理归属各自的业务部门,因此,基于里程碑的软件质量控制必然会演变成对角色的质量控制,这样才能真正达到对软件质量的控制。基于角色的质量控制体系详见图13

     在软件开发的六种角色中,一般规模的软件公司都会将其做以归类,图13是基于常见的软件开发任务划分方式形成的基于角色的质量控制模型。

      5.3
      根据软件开发的阶段划分及基于里程碑的项目管理模式,贯穿于整个软件生命周期中的软件开发规范基本包括如下规范:
      1) 可行性分析规范 (FS)
      2) 需求分析规范 (RS)
      3) 功能说明规范 (FSS)
      4) 用户界面规范 (UIS)
      5) 总体设计规范 (GDS)
      6) 详细设计规范 (DDS)
      7) 程序编码规范 (CS)
      8) 软件测试规范 (TS)
      以上规范在软件开发阶段划分章节已有简单描述,此处不再介绍。

      5.4 阶段审核制
      软件开发阶段审核制是采用基于里程碑管理模式的必然产物。在每个里程碑结束时公司质量控制机构(QA)根据相应的软件开发管理规范及应用要求对阶段成果进行评议控制,确保应用开发的顺利进行,及交付的应用系统能够满足用户的使用需要,确保交付的系统能够代表公司的整体技术水平。同时也有利于规避软件开发风险。

      

    6. 软件维护与版本控制


      无论是项目型软件开发还是产品型软件开发,软件的维护与版本控制都是必须值得重视的。因为任何一个软件产品或一个应用软件开发项目或多或少存在一些值得改进的问题,这些问题可能是程序的Bug,也可能是因不能满足用户需要迫切需要改进的地方,对于交付运行的软件进行后期维护成为软件公司必不可少的工作。而由于后期维护所造成对已定版软件的修改的管理是致关重要的。

      6.1 软件维护与版本控制的意义
      软件维护与版本控制的目的有三点:
      1). 解决由于问题处理带来对已定版软件的版本升级等管理问题,确保可以提供某一特定时间的版本,为用户提供满意的售后服务。
      2). 解决软件开发过程中的版本控制问题,有利于团队开发的协同工作问题,也有利于公司对开发项目的版本控制及知识产权的保护。
      3). 良好的版本控制与管理,有利于新版软件的开发工作的进行。确保软件产品循环渐进,逐步提高。

      6.2 开发过程的版本控制
      软件开发过程中的版本控制一般都是基于特定的开发工具和特定的版本控制管理工具,现在绝大部分的软件开发工具均提供这方面的功能。如Microsoft Visual Source Safe (简称VSS),IBM Visual 系列开发工具等,版本控制的原理大同小异,以下以VSS为例介绍软件开发过程的版本控制模型。

     软件配置管理包括软件开发过程中的文档管理与程序管理,软件开发中的文档主要包括如下文档:
      * 可行性分析报告
      * 需求分析文档
      * 功能规范及界面文档
      * 总体设计文档
      * 详细设计文档
      * 编码设计文档(包括模块测试计划及结果文档)
      * 测试计划文档
      * 测试用例
      * 测试评估文档(包括问题报告)
      * 用户手册
      * 在线帮助文档

      与CMO软件配置管理相关的文档一般包括:
      * 工作报告(编码期间协同工作文档)
      * 问题报告文档 (编码期间协同工作文档)
      * 问题处理报告 (编码期间协同工作文档)
      * CMO每日报告(为程序经理提供每日项目变化报告)

      不同配置管理软件的功能大同小异,总体来说,配置管理软件的安全性较差,为确保软件开发过程中代码与文档的安全,制定一个合理的系统备份策略是必要的。

     7. 开发工具与技术积累


      7.1 开发工具的选择
      开发工具是开发人员进行软件开发所必备工具,选择合适的开发工具有利于产品的开发与软件公司的健康发展。选择开发工具时应考虑以  下几方面的因素:

      1) 开发工具的功能与技术先进性
      开发工具的功能必须能够满足应用开发的需要,同时具备行业领先优势。这是选择开发工具必须首先应考率的。
      
      2) 供应商的技术经济实力
      开发工具供应商的技术经济实力是第二个应考虑的因素。雄厚的技术经济实力是开发工具在激烈的市场竞争中生存发展的基础,频繁更换开发工具意味着建立其上的技术积累将付之东流,不利于软件公司的发展。

      3) 对行业标准的支持与左右程度
      对行业标准的支持也是选择开发工具应加以考虑的因素,软件开发工具中各种标准发展迅速,开发工具对各种标准应有良好的支持。制定与左右标准的制定是公司技术实力的象征,每一新的标准的产生必然提高软件开发及程序运行的效率。有利于应用开发的进行。

      4) 开发工具的市场占有率
      市场占有率越高,意味着市场上可供选择的控件越多,选择成熟的控件是降低软件开发成本、提高软件可靠性的重要手段。应尽可能选择市场占有率高的开发工具。

       5) 适应快速应用软件开发
      适应快速应用软件开发是应用开发的需要,也是选择开发工具应考虑的因素。

      7.2 技术积累
      技术积累历来是公司发展的基础,对于软件公司尤其如此。这种技术积累一般包含三方面的含义。其一是人员技术素质及能力的提高;其二是公司在公共模块方面的积累;其三是对新技术的跟踪发展方面;

      对于软件公司而言,人员的稳定是技术积累的主体,人员作为技术的载体在技术积累方面占有重要的位置,频繁的人员变动不利于软件公司的发展。

      公共模块方面的积累主要取决于公司的发展方向,不同的公司有不同的积累方式与方向。公共模块的积累有利于后来项目开发的速度于质量,也是在激烈的市场竞争中求得生存发展得重要保证。

      对于新技术得跟踪可以确保公司在技术上处于领先地位,适应日新月异技术得发展,确保公司不被淘汰。

       7.3 对用户负责
      用户是软件生命周期中重要的一环。软件开发的最终目的是为了满足用户的需求,同时用户的积极参与也是产品提高的基础,也是软件公司发展的前提。因此在软件开发过程中,应把用户的利益放在第一位。确保用户的利益不被侵犯。

      结束语

      一个良好的可操作的应用软件开发管理模式是确保应用软件开发达到预期目的的最基本保证,有利于降低软件开发与维护成本,降低软件开发风险。建立合理的软件开发管理模式、制定与完善相关软件开发标准是国内大部分软件公司与系统集成公司迫切需要解决的问题。希望本文在这方面能够给予一些启示。

      

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • PMP 质量保证与质量控制的区别

    千次阅读 2020-12-01 15:43:05
    QA是审计质量要求和质量控制测量结果,确保采用合理的质量标准和操作性定义的过程过程的主要作用是,促进质量过程持续改进。 QA主要是对项目活动过程的监控,看是否遵循了组织或者项目的政策、流程规范,按照...
  • 软件质量控制问题与质量控制技术

    千次阅读 2021-09-19 21:51:53
    一、最终产品的质量需求是什么? 1.内部质量的评估准则 2.外部质量的评估准则 3.使用质量的评估准则 二、....1、产品 在质量控制中应明确的是,一个...在质量控制中,一些过程是进行质量设计并将质量构造入产品,而另一
  • 解读PMP考点:质量管理中规划质量、实施质量保证、实施质量控制的对比   质量过程的对比 规划质量 实施质量保证 实施质量控制 识别项目及其产品的质量要求或标准,并书面描述项目将如何达到...
  • 软件质量控制

    千次阅读 2017-02-21 20:20:05
     软件质量控制对开发过程中的软件产品的质量特性进行连续的收集和反馈,通过质量管理和配置管理等机制,使软件开发过程向着既定的质量目标发展。质量控制是质量管理的的路标和动力,质量管理是质量控制的执行机制。...
  • 浅谈软件开发项目的质量控制

    千次阅读 2018-04-19 13:08:14
    一、引言 J.M.Juran认为质量控制是一个常规的过程,通过它度量实际的质量性能并与标准比较,当出现差异时采取行动。由此,DonaldReifer 给出软件质量控制的定义:软件质量控制是一系列验证活动,在软件开发过程的...
  • [PMP]质量管理三大过程剖析

    千次阅读 2020-08-17 23:30:27
    规划质量管理:确定标准,编制计划和过程改进计划,如何通过质量保证和控制来达到这些标准。 实施质量保证:按计划开展具体的质量...实施质量控制:针对具体项目工作或成果,检查质量活动的实施结果,确定是否符合相.
  • MODIS产品质量控制文件使用方法

    千次阅读 2020-05-18 00:51:13
    质量指标 在生产过程中生成的CoreMetadata.0全局属性QA 中的元数据对象以及质量控制(QC)SDS中给出,或者在数据产品的产品后科学和质量检查中给出。CoreMetadata.0中的 QA元数据对象全局属性是AutomaticQualityFlag...
  • 仅用于理解: ...质量控制是监控过程组的,关注的是产品,是产品的质量问题、质量缺陷,发现并给予消除。 质量管理是关于质量的一切管理活动,包括上面俩货 转载于:https://blog.51cto.com/9845596/2298173...
  • 数据质量控制与数据治理

    千次阅读 2018-09-29 17:18:08
    数据质量控制与数据治理 背景 对于一个公司来说,最重要的资产是数据,数据的核心价值可以理解为核心商业价值,我个人认为是体现在两方面,一是能为企业带来更多的盈利,二是能为企业规避风险。 实现数据价值就需要...
  • 和朋友谈到软件质量工作时,经常会提及到软件质量控制、质量保证和质量管理。我想对于这三者,很多人也就...如缺陷率、测试覆盖率等都是属于软件质量控制范畴,它们反映了测试过程状态的好坏、是否满足了要求。测试过程
  • 质量保证和质量控制的区别

    千次阅读 2015-04-17 15:01:22
    质量保证和质量控制的区别     在软件项目中,不少技术人员经常混用QA(Quality Assurance 质量保证)和QC(Quality Control 质量控制)这两个术语;甚至一些实施培训的专业公司(Baidu和Oristand)也混淆了这两...
  • 实施质量保证-执行过程

    千次阅读 2018-12-10 11:52:09
    实施质量保证是审计质量要求和质量控制测量结果,确保采用合理的质量标准和操作性定义的过程。 本过程的主要作用是,促进质量过程改进。 实施质量保证  输出  变更请求  项目管理计划更新  项目文件更新  组织...
  • 软件开发管理与质量控制(一)

    千次阅读 2006-05-10 08:55:00
    将软件开发作为工程来对待是有其存在意义的,在谈软件开发管理与质量控制之前,我们先看一下工程项目的整个过程。 2.1 工程设计的阶段划分 工程项目从可行性研究到最后项目建成基本包括如下八个阶段。最后二...
  • 先进过程控制之一:浅说APC

    万次阅读 2019-02-23 12:57:16
    先进过程控制(APC)技术作为在生产装置级的信息化应用,在优化装置的控制水平和提高生产过程的管理水平的同时,还为企业创造了可观的经济效益。 1、什么是APC 先进过程控制,简称APC,并不是什么新概念。它仅仅...
  • 质量控制的工具
  • 基于python的MODIS数据质量控制------以MOD11A1为例

    千次阅读 热门讨论 2020-02-13 22:14:34
    使用python基质量控制文件(Qc)对MODIS产品掩膜提取-以MOD11A1为例 MODIS数据简介 我们拿到的MODIS数据,多数人认为只要有值的地方,就是准确数据,我们直接就可以拿来使用,只有空值的区域,数据才会异常(多数...
  • 实施质量保证是执行过程组的一个过程,而质量控制是监控过程组的一个过程。质量保证的定义是:审计质量要求和质量控制测量结果,确保采用合理的质量标准和操作性定义的过程。简单地说,质量保证关注的是质量活动相关...
  • 控制图:用来跟踪项目质量情况的图,确认执行过程中所发生的偏差是否在允许的范围内,从而帮助人们判断项目执行过程是否处于“控制中”。换句话说,用来判断项目过程是否已经“失控”了。(当某个数据点超出控制界限...
  • 根据假设检验的原理构造一种图,用于监测生产过程是否处于控制状态,判断过程是否稳定。它是统计质量管理的一种重要手段和工具。控制图图例 注意一下几点:通常把控制图的控制上下限设置在+-3西格玛的位置控制线在...
  • 产品核实关注的是生产项目预定产品的全部工作是否正确完成,产品是否符合相关质量要求标准,通常是对可交付成果的内部验收。范围核实关注的是客户对已经完成的可交付成果的接受程度,是在项目监控过程中对可交付成果...
  • 项目的质量控制与质量保证存在以下几点区别与联系:  1、质量计划是质量控制和质量保证的共同依据。  2、达到质量要求是质量控制和质量保证的共同目的。  3、质量保证的输出是下一阶段质量控制的输入  4、...
  • 实施质量保证和控制质量的区别

    千次阅读 2015-09-30 09:46:59
    实施质量保证是审计质量要求和质量控制测量结果;执行项目质量管理计划中所定义的一系列的行动和过程,属于一致性工作的范畴;关注的是与质量活动相关的制度,流程,规则。另外,实施质量保证过程包含由

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 283,594
精华内容 113,437
关键字:

过程质量控制