摘 要:在组建信息化工程中的软件系统时,无论选择业务外包或内包的组建方式,都必须重视软件开发能力及过程评估,以确保软件产品的质量和项目的成功。本文为此探讨和研究了SEI CMM和ISO/IEC TR 15504,等国际通用的评估标准以及评估实施方法。
关键词:软件开发;业务外包;业务内包;软件开发评估;软件能力成熟度模型
1 软件系统的组建方式选择
当前计算机系统一个总的发展趋势是硬件系统部分性能日益稳定且价格成本逐年下降,而软件系统结构及功能日益复杂,价格成本也在逐步提升,因此软件系统已经成为影响信息化工程成败的主要因素。http://www.dxlww.net代写论文网
在实施信息化的过程中,当市场上缺乏功能适用且价格可以承受的成熟软件产品时,就必须组织软件系统开发,通常可以选择业务外包或业务内包的开发方式。所谓业务外包(Outsourcing)是指把系统开发及维护管理业务外包给一个专业的信息系统应用服务供应商ASP(Application Service Provider),利用ASP的专业技术优势,外包具有可降低开发风险的优点;所谓业务内包(Insourcing)则是指把有关业务包给内部信息系统部门来完成,内部信息系统部门在提供本专业业务知识和降低开发、运行及维护成本等方面较有优势。对于政府机构和多数事业单位,一般采用外包方式进行政府采购,而对于一些信息化规模较大的企、事业单位则可以在内包与外包方式中考虑选择。
无论是外包或内包,选择软件开发组织的首要原则是承担者必须具备足以实现软件项目的开发能力和管理经验,而软件系统的规模越大、复杂性越高,系统实现的技术与管理难度也相应加大,项目的风险也就越高。据美国政府近年的调查,在实施的软件开发工程项目中,约有60%的项目延期交付,约有50%的项目超出预算,约有45%的已交付项目不能使用[1]。这种困境多数是因开发组织的软件过程缺陷及过程能力有限而造成的。
软件过程是指人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。 软件过程能力则是描述(开发组织或项目组)遵循其软件过程标准能够实现预期结果的程度,它既可对整个软件开发组织而言,也可对一个软件项目而言。 软件产品能否按时保质地交付,不但依赖于开发团队的技术水平,更取决于开发组织的软件过程能力,取决于科学规范的工程过程管理标准。
因此,在确定软件系统的组建方式时,必须对软件开发组织的能力等级和软件开发过程中的质量控制管理水平进行严格地评估,从而选择出可胜任工作的开发组织。即使在项目发包之后,同样有必要加强实施过程中的阶段性检查评估和产品交付时的验收评估工作。SEI CMM和ISO等模型和标准为客户提供了评估工作所需要的可靠依据和科学指南。
2 CMM评估标准
CMM(Capability Maturity Model for Software,软件开发能力成熟度模型)是由美国卡内基·梅隆大学软件工程研究院(CMU/SEI——Carnegie Mellon University, Software Engineering Institute)开发完成的最早的、影响最大的评估标准。CMU/SEI的W.S.Humphrey等人从1986年开始相关研究,1987年发表研究成果“承制方软件工程能力的评估方法”,并于1991年发表评估标准的最早版本SEI CMM 1.0,于1993年发表SEI CMM1.1[2],于1997年推出SEI CMM2.0。
2.1 成熟度等级划分
CMM标准侧重于对软件开发过程和开发方法的考察评估,以过程成熟度来衡量开发组织的开发能力,过程成熟度是指软件开发过程被定义、管理、度量、控制和有效性的程度。该标准把软件开发能力由低到高划分为以下五个成熟度等级,每一等级都定义了相应的标准,开发的能力越强,开发组织的成熟度等级越高。
⑴ 初始级(Initial):软件过程是特别的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。 处于初始级的软件开发能力可概括为“不确定和不可预测的”,大约75%的开发组织处于“初始级”。
⑵ 可重复级(Repeatable):建立了基本的项目管理过程来跟踪和监控费用、进度和功能设计情况;制定了必要的过程纪律,对于类似应用项目能重复以前的成功实践。 处于可重复级的软件开发能力可概括为“基本有序的和实现有望的”,大约15%的开发组织处于“可重复级”。
⑶ 已定义级(Defined):已将软件管理和工程活动两方面的过程文档化、标准化,并集成为该组织的标准软件过程;所有项目的开发和维护均在该标准基础上依照一个经批准的裁剪版本实施。 处于已定义级的软件开发能力可概括为“标准一致的”,大约8%的开发组织处于“已定义级”。
⑷ 已管理级(Managed):对软件开发过程和产品质量的管理详细量化,对软件过程和产品均可量化的了解与控制。处于 已管理级的软件开发能力可概括为“可预测的”,大约只有1.5%的开发组织达到“已管理级”。
⑸ 优化级(Optimizing):通过建立开发过程的量化反馈机制,不断产生先进的新思想、采用新技术改进和优化开发过程。处于优化级软件开发能力可概括为“精益求精的”,大约0.5%的少数开发组织可达到“ 优化级”。
2.2 各等级的关键过程域
软件过程中互相关联的若干软件实践活动和有关基础设施的一个集合称为过程域,每个软件能力成熟度等级包含若干个对该成熟度等级至关重要的过程域,它们的实施对达到该成熟度等级的目标起到保证作用,这些过程域就称为该成熟度等级的关键过程域KPA(Key Process Areas )。
CMM描述了每个等级开发过程的基本特点,并以KPA明确规定了二级以上各个不同等级应解决的主要问题和形成的过程能力,每个等级的过程能力都是其高一级的基础,形成了一个逐步升级的结构模型(如图1所示)。人们往往希望快点提高自己的能力,想跳级发展。该模型表明,那样作反而会事倍功半。实践中从初始级开始,用此模型方法改进软件开发过程,一般提高一级约需两年。
CMM首先强调软件开发过程的组织、实施和管理的规范化。例如2级的6个关键过程域KPA全部是管理方面的实践,它们规定了从1级提高到2级所需努力改进的关键实践。3级以上才涉及到工程技术方面的实践,但大多数实践仍是管理方面的。这是因为软件开发过程和维护过程主要是人的脑力劳动过程,要提高能力,工具固然必不可少,但工具毕竟是辅助人的,规范管理才是保证软件产品质量的根本保证。
2.3 关键过程域的实现
CMM中每个KPA都有明确的目标(goals),而且都包含若干关键实践(key practices)。这些关键实践都是实施该关键过程域并加以制度化所必须开展的活动和必须具备的基础。关键实践包括对KPA的实践起关键作用的方针、规程、措施、活动以及相关基础设施的建立。关键实践一般只描述“做什么”而不强制规定“如何做”。整个软件过程的改进是基于许多小的、渐进的步骤,而不是通过一次革命性的创新来实现的,这些小的渐进步骤就是通过一些关键实践来进行的。
这些关键实践分别组成KPA的五个属性,称为5个共同特征(common features),即实施承诺CO(Commitment to Perform)、实施能力AB(Ability to Perform)、实施活动AC(Activities Performed)、测量和分析ME(Measurement and Analysis)、实施验证VE(Verifying Implementation)。
例如,2级软件工程能力的一个KPA——软件质量保证,其目标和五个属性的关键实践如下。
⑴ 目标:① 软件质量保证(SQA)活动是有计划的;② 软件产品和活动遵守标准、规程和要求的情况得到客观验证;③ 项目组和有关人员能及时得到SQA活动和结果的通知;④ 项目组内不能解决的质量问题可由高级管理者加以处理。
⑵ 实施承诺:项目遵循书面的SQA实施策略。
⑶ 实施能力:有负责协调和实施项目SQA组,其活动在资源、工具和人员培训等方面得到足够支持。
⑷ 实施活动:按照文档化的规程规定项目的SQA计划,SQA组按计划进行以下活动:① 参加准备和评审项目的开发计划、标准和规程;② 评审软件工程活动,检验其质量;③ 审计指定的软件工作产品,检验其质量;④ 定期向软件工程组报告其活动和结果;⑤ 按照文档化的规程对在软件活动和软件工作、产品中识别出的偏差加以记载和处理;⑥ 必要时与顾客的SQA人员一起对所进行的活动和发现的问题进行定期评审。
⑸ 测量和分析:进行测量,并根据结果确定SQA活动的成本和进度状态控制。
⑹ 实施验证:① 高级管理者定期参与评审SQA活动;② 项目经理定期地(也根据事件需要随时)参与评审SQA活动;③ 独立于SQA组的专家定期评审项目SQA组的活动和软件工作、产品。
2.4 应用CMM标准改进软件开发过程
CMM模型是为适应软件产业发展的需要,以软件工程学为基础、结合现代质量管理理论、总结多年实践经验并不断试用、改进而形成的。CMM自提出之后,首先在美国国防部(DoD)和国家航天局(NASA)范围内得到认可,并逐渐在美国、欧洲、日本和印度等国家和地区得到广泛应用,为软件开发组织不断改进软件工程过程、提高过程能力和产品质量指明了一条可行的科学途径。
全世界已有近万家软件机构通过认证,绝大部分通过2级,16%的企业通过3级,14家通过4级,6家通过5级。在通过5级认证的6家企业中,4家是美国公司,其余两家为印度公司,而印度维普罗公司是全球首家通过5级认证的企业。通过CMM2级评审认证即可向欧美国家承接订单,但美国要求军用软件开发组织一般应具有3级能力。
CMM在我国的影响也日渐扩大,国务院发布的《鼓励软件产业和集成电路产业发展的若干政策》对中国软件企业申请CMM认证给予了积极的支持,在第17条规定“对软件出口型企业CMM认证费用予以适当支持。”鼎新、东大阿尔派、联想、方正、金蝶、用友、浪潮等国内大型集团或企业从1997年以来都在进行研究、实验或实施预评估,其中鼎新公司于1999年7月、东大阿尔派公司于2000年10月先继通过第三方认证机构的CMM2级认证。2001年1月,联想软件经过英国路透集团的严格评估,顺利通过CMM2级认证。
许多软件开发组织多年的运用经验表明,CMM模型为软件开发组织不断改进软件工程过程、提高过程能力和产品质量指明了一条可行的科学途径。该模型及相应的一套评估方法的确能帮助软件开发组织迅速改进软件开发过程,提高软件工程能力。统计数据说明随着软件开发过程的改进,所开发的软件产品中所含缺陷数明显减少;费用进度控制情况也随过程改进而改进,但要达到3级以上才较有把握严格按照预定计划完成项目。
3 其他评估标准
3.1 ISO/IEC 15504评估标准
CMM的影响之一是促使ISO组织于1993年7月决定开始着手制定《ISO/IEC 15504:信息技术——软件过程评估》标准,该标准预计将于2002年正式发布,1998年发表了最新的进展技术报告TR( Technical Report)[3]。
ISO/IEC 15504提供了一个软件过程评估的框架。它可以被任何组织用于软件的设计、管理、监督、控制以及提高获得、供应、开发、操作、升级和支持的能力。 可供软件开发者了解本组织的过程状态,以便进行过程改进;确定其开发过程对需方的某种特定要求的适合程度和对某种具体合同的适合程度。
该标准将开发能力等级分为6个等级:第0级不完整级(Incomplete)、第1级可实施级(Performed)、第2级已管理级(Managed)、第3级确定级(Established)、第4级可预测级(Predictable)、第5级优化级(Optimizing)。
3.2 Bootstrap和Trillium评估标准
除此而外,还有一些影响较为有限的评估标准,如欧洲Bootstrap和加拿大Trillium等。
4 软件开发评估的实施
CMM和ISO/IEC 15504等评估标准不仅可供用户(需方)对软件开发组织(供方)的开发能力及水平进行考察评估,同时也为开发机构提升软件过程能力水平提供了依据。在软件开发组织按有关标准对本组织的软件过程进行考察和改进时,可以使用美国Rational公司的RUP、Intersolv公司的PVCS和CA公司的ADvantage 等软件开发管理工具来辅助和加强软件开发管理,营造一个规范而高效的管理机制,许多开发组织成功地采用上述工具而通过了CMM(2级或3级)或ISO的评估认证。
无论是CMM、还是ISO/IEC 15504或其他标准,在制定时都力求做到较为齐全而完备,因此无疑也都是极为复杂和庞大的,在具体应用时必须结合实际项目的特点和需要对标准进行裁剪,从中选取必要的部分形成一个标准的子集版本,这样才易于实际操作和应用。
对于已经通过了CMM或ISO评估认证的软件开发组织(供方),用户(需方)只需检验其资质证书并考察其管理现状有无退化即可。而对于未经认证的开发组织的软件过程能力评估,虽然需方可以独立组建评估小组自行实施,但鉴于研究、熟悉、裁剪和运用标准的专业性和复杂性,聘请第三方专业认证机构来实施评估是更为可靠而且更为经济的作法。http://www.dxlww.net代写论文网
总之,在信息化工作中,只有重视软件开发过程的改进和优化,加强评估标准和认证机构的建设,切实做好软件开发能力的评估工作,才能保障信息化工程的质量和效率,提高信息化对国民经济建设的贡献率。
主 要 参 考 文 献
1 David Herron,David Garmus.Estimating Software Earlier and More Accurately.METHODS & TOOLS,ISSN 1023-4918,Fall 1999 (Volume 7 - number 3)
2 Paulk,Mark C.Capability Maturity Model for Software,Version 1.1.Carnegie Mellon University, Software Engineering Institute:CMU/SEI-93-TR-25,February 1993
3 International Organization for Standardisation (ISO):Information technology - Software process assessment , Technical Report,ISO/IEC TR 15504:1998
4 International Organization for Standardisation (ISO): Information technology - Software Life Cycle Process,ISO/IEC 12207:1995
联系QQ:904272800
联系信箱:904272800@qq.com