第二单元软件质量标准宋喜莲关于标准•GB•中华人民共和国强制性国家标准,国家标准化管理委员会•GB/T•中华人民共和国推荐性国家标准,国家标准化管理委员会•GB/Z•中华人民共和国指导性国家标准,国家标准化管理委员会•CH•测绘国家测绘局国土测绘司•JG•建筑工业建设部(建筑工业)•JR•金融中国人民银行科技与支付司•DB+*中华人民共和国强制性地方标准代号省级质量技术监督局•*表示省级行政区划代码前两位•Q+*中华人民共和国企业产品标准企业32.1软件质量标准概述-国际标准经过数十年的发展,软件行业形成的标准分工细,体系繁多。本节主要从标准的层次来说明软件质量标准的情况。根据软件工程标准制定机构和标准适用的范围,将软件质量标准分为5个级别,即国际标准、国家标准、行业标准、企业标准和项目规范。很多标准的原始状态可能是项目标准或企业标准,但随着行业发展与推进,它的权威性可能促使它发展成为行业、国家或国际标准,因此这里所说的层次具有一定的相对性。42.1软件质量标准概述-国际标准由国际机构指定和公布供各国参考的标准称为国际标准。国际标准化组织(InternationalStandardsOrganization,ISO)具有广泛的代表性和权威性,它所公布的标准也具有国际影响力。20世纪60年代初,国际标准化组织建立了“计算机与信息处理技术委员会”,专门负责与计算机有关的标准工作。它所公布的标准带有ISO字样,如ISO10012:1995质量手册编写指南。英国皇家认可委员会即UKAS,UnitedKingdomAccreditationService,是负责认证机构认可和实验室测量及试验认可的国家机构,是英联邦乃至世界最权威的认可机构52.1软件质量标准概述-国家标准•由政府或国家级的机构制定或批准,适用于本国范围的标准,称为国家标准。如:–GB(GuoBiao)•中华人民共和国国家技术监督局是中国的最高标准化机构,它所公布实施的标准简称为“国标”。–ANSI(AmericanNationalStandardsInstitute)•美国国家标准协会。是美国一些民间标准化组织的领导机构,具有一定的权威性。–FIPS(FederalInformationProcessingStandards)•美国商务部国家标准局联邦信息处理标准。它所公布的标准均冠有FIPS字样。如,1987年发表的FIPSPUB132—87Guidelineforvalidationandverificationplanofcomputersoftware(软件确认与验证计划指南)。–BS(BritishStandard)•英国国家标准。–DIN(DeutschesInstitutforNormung)•德国标准协会。–JIS(JapaneseIndustrialStandard)•日本工业标准行业标准。62.1软件质量标准概述-行业标准•行业标准是由一些行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准。•中华人民共和国国家军用标准(GJB)。是由我国国防科学技术工业委员会批准,适合国防部门和军队使用的标准。–例如,1988年发布实施的GJB473-88军用软件开发规范。–美电气和电子工程师学会(InstituteOfElectricalandElectronicsEngineers,IEEE),该学会成立了软件标准技术委员会(SESS),开展软件标准化活动。•美国国防部标准(DepartmentofDefense-Standards,DOD-STD)。•美国军用标准(Military-Standards,MIL-S)。•另外,我国的一些部门(如信息产业部)也开展了软件标准化工作,制定和公布了一些适合本部门工作需要的规范。•这些规范的制定参考了国际标准和国家标准。这些标准的制定对各自行业的软件工程起到了强有力的推动作用。72.1软件质量标准概述-IEEE软件工程标准•顾客标准•流程标准•产品标准•资源与技术标准82.1软件质量标准概述-IEEE730:2001结构与内容•目的•参考文档•管理•文档•标准、实践、约定和度量•软件评审92.1软件质量标准概述-IEEE/EIAStd12207—软件生命周期过程•主要过程(PrimaryProcess)–包括5个过程,这些过程供各主要当事方(如需方、供方、开发者、运行者和维护者)在参与或完成软件产品开发、运行或维护时使用,它们是:•获取过程:需方获取系统,软件产品或软件服务的活动。•供应过程:供方向需方提供系统、软件产品或软件服务的活动。•开发过程:开发者定义并开发软件产品的活动。•运行过程:运行者在规定的环境中为其用户提供计算机系统服务的活动。•2.支持过程(SupportingProcess)–包括8个过程,其每个过程均有明确的目的支持其它过程,帮助软件项目获得成功及良好的产品质量。它们是:•文档编制过程:记录生存期过程中产生信息所需的活动。•配置管理过程:实施配置管理活动。•质量保证过程:为确保软件产品和软件过程符合规定的需求并能坚持既定计划所需的活动。联合评审、审核、验证与确认可作为质量保证技术使用。•验证过程:为验证最终产品满足预期使用要求的活动。•确认过程:为确保最终产品满足预期使用要求的活动。•联合评审过程:评审方与被评审方共同对某一活动的状态和产品进行评审的活动。•审核过程:审核项目是否按要求、计划、合同完成的活动。•问题解决过程:分析和解决在开发、运行、维护或其他过程中出现的问题(不论其性质和来源如何)的活动。102.1软件质量标准概述-企业标准•一些大型企业或公司,由于软件工程工作的需要,制定适用于本部门的规范。–例如,美国IBM公司通用产品部(GeneralProductsDivision)1984年制定“程序设计开发指南”。112.1软件质量标准概述-项目规范•项目规范是为一些科研生产项目需要而由组织制定一些具体项目的操作规范,此种规范制定的目标很明确,即为该项任务专用。•项目规范虽然最初的使用范围小,但如果它能成功指导一个项目的成功运行并重复使用,也有可能发展为行业规范。122.1软件质量标准概述-ISO9001和9000-3在软件中的应用•ISO9001描述的20条需求所面向的是以下问题。–管理职责;–质量系统;–合同复审;–设计控制;–文档和数据控制;–对客户提供产品控制;–产品标识和可跟踪性;–过程控制;–审查和测试;–审查、度量和测试设备的控制;–审查和测试状态;–对不符合标准产品的控制;–改正和预防行为;–处理、存储、包装、保存和交付;–质量记录的控制;–内部质量审计;–培训;–服务;–统计技术;–采购。2.2能力成熟模型CMM&CMMI•能力成熟度模型的历史和发展–1987年,美国卡内基·梅隆大学软件研究所(SoftwareEngineeringInstitute,SEI)受美国国防部的委托,率先在软件行业从软件过程能力的角度提出了软件过程成熟度模型(CapabilityMaturityModel,CMM),随后在全世界推广实施的一种软件评估标准,对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。用于评价软件承包能力并帮助其改善软件质量的方法。•它主要用于软件开发过程和软件开发能力的评价和改进。•它侧重于软件开发过程的管理及工程能力的提高与评估。–CMM自1987年开始实施认证,现已成为软件业最权威的评估认证体系。–CMM包括5个等级,共计18个过程域,52个目标,300多个关键实践。2.2能力成熟模型CMM&CMMI152.2能力成熟模型CMM&CMMI•能力成熟度模型(CapabilityMaturityModel,CMM)的本质是软件管理工程的一个部分。–它是对于软件组织在定义,实现,度量,控制和改善其软件过程的进程中各个发展阶段的描述。•通过5个不断进化的层次来评定软件生产的历史与现状。1.初始级2.可重复级3.已定义级4.已管理级5.优化级初始级可重复级已定义级已管理级优化级123455、关注过程持续改进4、过程已测试和控制3、为组织刻划过程2、为项目刻划过程1、过程不可预测172.2能力成熟模型CMM&CMMI等级特征主要解决问题关键域结果V优化级软件过程的量化反馈和新的思想和技术促进过程的不断改进保持优化的机构缺陷预防,过程变更和技术变更管理IV已管理级收集软件过程、产品质量的详细度量,对软件过程和产品质量有定量的理解和控制技术变更、问题分析、问题预防定量的软件过程管理和产品质量管理III已定义级已经将软件管理和过程文档化,标准化,同时综合成该组织的标准软件过程,所有的软件开发都使用该标准软件过程过程度量、过程分析量化质量计划组织过程定义,组织过程焦点,培训大纲,软件集成管理,软件产品工程,组织协调,专家评审生产率和质量II可重复级建立了基本的项目管理来跟踪进度,费用和功能特征,制定了必要的项目管理,能够利用以前类似项目应用取得成功培训、测试技术常规和评审过程关注、标准和过程需求管理,项目计划,项目跟踪和监控,软件子合同管理,软件配置管理,软件质量保证风险I初始级软件过程是混乱无序的,对过程几乎没有定义,成功依靠的是个人的才能和经验,管理方式属于反应式项目管理、项目策划、配置管理软件质量保证过程能力目标实施及规范基本设施及活动关键实践公共特性关键过程域成熟级别标志具有达到由……组成说明具有描述202.2能力成熟模型CMM&CMMI•软件能力成熟度集成模型(CapacityMaturityModelIntegrated,CMMI)是CMM模型的最新版本。•早期的能力成熟度模型是一种单一的模型,较多地用于软件工程。随着应用的推广与模型本身的发展,该方法演绎成为一种被广泛应用的综合性模型,因此改名为CMMI模型。212.2能力成熟模型CMM&CMMICMM1杰出的主管和优秀的队伍一般的主管和队伍项目成功项目成功难以预测222.2能力成熟模型CMM&CMMI软件需求项目策划用户文档设计项目跟踪与监控软件配置管理测试输入范围缩小基础追溯基础基础验证跟踪变更基线232.2能力成熟模型CMM&CMMI软件质量保证(SoftwareQualityAssurance,SQA)是CMM可重复级中6个关键过程域之一,在CMMI中该关键过程升级为管理级中的过程与产品质量保证过程(ProcessandProductQualityAssurance,PPQA)。正如在CMMISW中描述的那样,软件质量保证的目的是提供成员与管理阶层客观洞察流程与相关工作产品。软件质量保证包括评审和审计软件产品和活动,以验证它们是否符合适用的规程和标准,还包括向软件项目和其他有关的管理者提供评审和审计的结果。CMM/CMMI为满足这个关键过程域的要求需要达到以下4个目标:目标1:软件质量保证活动是有计划的目标2:软件产品和活动与适用的标准、规程和需求的符合性要得到客观验证目标3:相关的小组和个人要被告知软件质量保证的活动和结果目标4:高级管理者处理在软件项目内部不能解决的不符合问题。242.2能力成熟模型CMM&CMMI-质量保证实现的具体实施方法•定义项目类型和生命周期•建立SQA计划,确定项目审计内容•生成SQA报告•审计SQA报告•独立汇报252.2能力成熟模型CMM&CMMI-软件生命周期过程示意图?软件生存期过程主要过程支持过程组织过程获取过程供应过程开发过程运行过程配置管理过程质量保证过程文档编制过程维护过程验证过程联合评审过程确认过程审核过程问题解决过程管理过程基础设施过程改进过程培训过程262.3一些典型的标准过程IEEEStd1012—验证与确认•验证–验证是用来评价某一系统或某一组件的过程,来判断给定阶段的产品是否满足该阶段开始时施加的条件。即说明验证活动在一定的程度上是一种普通的测试活动,要求验证每个开发阶段是否符合先前阶段定义的需求。–经过合理组织的项目应该包含验证和确认计划(VerificationandV