软件企业必须通过CMM认证标准的锤炼,这是软件企业逐渐达成的共识。国内众多的软件企业正在围绕CMM进行研究、讨论和实施,可谓跃跃欲试、紧锣密鼓。截止到目前,已经有几家国内软件企业通过了CMM3认证。
确立工作目标
SQA(Software Quality Assurance,软件质量保证)是CMM的一个关键过程域,CMM的每个关键过程域几乎都涉及软件质量的验证,它在软件开发过程中起着非常重要的作用。在CMM中,软件质量保证的目标是为管理者提供当前软件项目进行过程与最终产品的可视性。它的主要工作包括:评审软件工程活动、审计软件产品、将结果通知项目组成员及相关经理。从CMM的框架结构来看,软件质量保证人员的主要工作目标是保证软件过程质量。软件最终产品的质量则是项目经理与质量工程师关心的问题,而不是由软件质量保证人员负责。
软件质量保证的价值依赖于一些前提,其中最重要的是以下两个:
首先,软件项目开发过程遵循明确定义好的既定规则,由此所获得的利益远大于为它所付出的代价。先有稳定、明确的用户需求再进行开发,虽然进度可能有所延迟,但与开发后发现不是用户所需要的产品相比,这个代价要小得多。
其次,在没有独立评价系统的情况下,人们有时候会偏离既定的规则。软件开发人员由于各种各样的原因,总是自觉或不自觉地忽视过程,这时就需要软件质量保证人员来发现问题。
确保人员的独立性
好的过程质量并不等于好的产品质量,但是糟糕的过程很难带来好的产品质量。如果一个项目按照既定的过程完成开发工作,没有偏离,说明软件质量保证人员尽到了他的职责。
为了较好地开展软件质量保证工作,软件质量保证人员应该是独立的,与项目经理没有任何行政隶属关系,对他的考核与评价也不应由项目经理做出,同时他也不能承担本项目中除软件质量保证外的其他任何工作,以确保其独立性。
建议在企业中将软件质量保证机构设立成专门的独立机构。如果企业规模较小,可以由测试人员兼任。在某些企业中,测试人员从属于项目组,此时,软件质量保证人员应该由其他项目组的测试人员担任。
标准的客观性
软件质量保证的目的是给管理者提供可视性。如果存在主观因素,管理者看到的就不是软件开发过程的真实情况,这一点对软件质量保证工作至关重要。例如,联想公司的软件产品是通过“质量保证检查表”来实现的。针对每个软件工程活动与软件工作产品,都有一个软件质量保证检查表。软件质量保证人员可以根据检查表来判断当前的软件工程活动是否存在偏离以及软件工作产品是否符合要求。软件工程活动是否有所偏离,主要看软件工程活动的进入准则是否达到、输入是否正确、执行任务是否符合要求、结束时是否符合完成准则以及是否具有合乎要求的输出。在审计软件工作产品时,软件质量保证人员主要审计软件产品是否符合规程、标准等要求,一般不考虑技术问题。
所有软件开发人员都应当接受软件质量保证方面的定向培训,了解软件质量保证的目的、工作方式以及其他相关内容。只有所有的人都认识到软件质量保证工作的意义,这项工作才能很好地开展起来。
几个误区
误区之一:软件质量保证人员对软件产品质量负责。
软件质量保证人员一般只对软件过程质量负责,如果一个项目按照既定的过程完成了开发工作,没有发生偏离,软件质量保证人员就算尽到了职责,他的价值主要体现在过程质量上而不是最终的软件产品质量上。
误区之二:软件质量保证人员对软件工作产品的审计包括发现其中的技术问题。
软件质量保证人员对软件工作产品的审计主要是针对过程,例如是否采用过程所规定的模板,所有必要的内容是否都具备等,而不是关注技术问题。
误区之三:软件质量保证人员要负责解决所发现的质量问题。
软件质量保证的最大作用是发现问题,提供可视性,而不是解决问题。软件质量保证人员发现问题后,必须提交到相关责任人那里,由相关责任人给出解决方法并予以解决。软件质量保证人员只是跟踪问题直至得到解决。如果在相关责任人处无法得到解决,则将问题提交给项目经理。如果仍然无法解决,则提交给高层经理。这样一层层提交,直到问题有了结论。至于最终的结论是解决问题还是暂时搁置问题,由做出决策的人员对此负责。如果要求软件质量保证人员负责解决质量问题,他就可能陷入其中,失去了软件质量保证人员最为宝贵的独立性与客观性。
误区之四:软件质量保证人员是专门监督项目组成员的。
软件质量保证人员不是监督项目组成员的,他只是从第三方、客观的角度将项目组的情况反映给管理者,让管理者了解项目与规定过程之间存在的偏差。如果软件质量保证人员将自己放到项目组的对立面,专门去找项目组的毛病,那么项目组成员就可能将真实问题隐藏起来,使问题无法得到解决。软件质量保证人员对项目组是有帮助作用的,他要帮助项目组提高开发和管理活动的规范化、标准化,发现问题时,要首先在项目组内解决。
总之,要在企业内开展软件质量保证工作,最重要的是让所有员工都认识到,质量不是依赖于某个或某几个高手,而是依赖于整个过程。好的过程是好产品的必备条件,这一点要成为企业文化的一部分,深深扎根于每个员工的心中。
分享到:
相关推荐
【CMM中的软件质量保证实施准则】是软件开发过程中一项至关重要的规范,旨在确保软件产品的质量和过程的稳定性。CMM(Capability Maturity Model,能力成熟度模型)是一种评估和改进软件开发组织能力的方法论,其...
《CMM软件质量保证过程文件》与《CMM软件质量保证程序文件》是软件开发过程中重要的指导性文档,主要用于确保软件质量的过程管理和控制。这两份文档遵循能力成熟度模型(Capability Maturity Model, CMM)的理念,...
### CMM与软件质量的关系 CMM的核心在于过程控制和标准化,这直接关系到软件质量的提升。通过CMM的实施,组织能够: 1. **建立规范化的开发流程**:明确各个阶段的任务、职责和标准,减少项目中的不确定性,提高...
### 基于ISO9000&CMM的软件质量保证模型 #### 一、引言 自从20世纪70年代初期“软件危机”这一概念被提出以来,学界与业界投入了大量的资源来研究软件工程环境、工具和技术,虽然取得了一系列成就,但是软件质量...
**CMM与软件质量概述** CMM,全称为Capability Maturity Model,中文译为“能力成熟度模型”,是由美国卡内基梅隆大学软件工程研究所(SEI)于1986年为评估软件供应商能力而开发的一种模型。CMM模型自诞生以来,...
通过学习这些内容,学生将具备在实际工作中实施和维护高质量软件开发流程的能力。郑州大学软件学院的这门课程,无疑为学生提供了宝贵的理论知识和实践经验,为他们在未来的IT职业生涯中奠定坚实的基础。
对于我国中小型软件企业来说,实施CMM有助于改善项目管理、提高产品质量、降低开发成本,并提升客户满意度。 首先,中小型软件企业在CMM实施初期,可能会遇到对CMM理论理解不足的问题。解决这一问题的关键是加强...
基于CMM的软件质量管理
在本文档中,重点是如何利用CMM二级理论来保证软件项目的质量。CMM二级关注的是过程管理和控制,确保开发过程遵循既定的规范,以此提升产品质量。 1. 权责明确,避免混乱 为了确保清晰的责任分配,项目启动时制定...
软件质量管理与质量保证 软件质量管理是指为了确保软件产品的质量达到要求标准,而采取的一系列活动和过程。软件质量管理包括软件质量规划、软件质量控制、软件质量保证和软件质量改进等方面。软件质量管理的目的是...
SQA 的职责与活动包括:建立软件质量保证活动的实体、制订软件质量保证计划、坚持各阶段的评审和审计、监控软件产品的质量、采集软件质量保证活动的数据和度量软件质量保证活动。 软件质量管理发展的五个阶段: ...
在软件开发过程中,软件质量保证(Software Quality Assurance, SQA)和质量管理(Quality Management)是至关重要的环节。朱少民的《软件质量保证和管理》一书深入探讨了这两个领域,为学习者提供了丰富的理论基础...
软件质量保证(SQA)的目标是减少并纠正实际的软件开发过程和软件开发结果与预期的软件开发过程和软件开发结果的不符合情况。SQA方法通过在软件开发周期中尽可能早地预期或检测到不符合情况,来防止错误的发生,并...
软件质量模型CMM,全称为Capability Maturity Model Integration,即能力成熟度模型...通过理解和实施CMM,组织不仅可以实现软件开发的标准化,还能逐步建立起一套持续改进的文化,从而在激烈的市场竞争中保持优势。
本教案主要探讨了软件质量管理的基础概念、层次结构以及传统软件工程中质量管理的不足,并提供了CMM改进软件质量的方法。 首先,我们要理解软件质量的定义。软件质量是指供应商提供的产品能够满足用户明确和潜在...
CMM 中的软件质量保证仅仅关注质量保证的基本概念。 6. 软件配置管理(SCM) CMMI 中的软件配置管理强调了配置管理系统的概念和工具。CMM 中的软件配置管理仅仅关注软件库的管理。 7. 度量与分析(MA) CMMI 中...
该模型强调软件过程的重要性,并认为良好的软件过程是高质量软件产品的前提条件。 - **CMM的五个成熟度等级**: - **初始级**:过程无序,成功与否很大程度上取决于个人的能力。 - **可重复级**:实施了基本的项目...