1、软件开发能力评估在 IBM Bluemix 云平台上开发并部署您的下一个应用。开始您的试用不同种类的评估已经成为一个能够更好地理解开发组织的需求的商业工具。评估可以有多或少的细节,它可以集中在过程架构,或者配置和变更管理环境上。当需求的领域跨越多个项目时,很多组织需要确定努力的优先级,即使他们知道在那里开始。这个两部分的文章可以帮助你理解项目级的评估转换到到组织级的评估的理由,引入的复杂度和提供什么样的价值增值。我们的素材基于我们在一些IBM Rational 在金融、电信、IT 、医药工业等的客户那里已经完成的评估。在第一部分,我们讨论动机,引入关键的概念;在第二部分,我们给出如何完成评估的
2、路线图,这个路线图基于我们在 IBM 软件开发平台上的解决方案上的经验。编者注释:本文最早准备作为 IBM Rational Brand Services 给 IBM 用户进行软件爱你开发能力评估的指导。在保持原有目的的同时,作者扩大了它的范围使得任何组织都可以自己进行评估或者请外部机构进行评估什么是软件开发能力评估?IBM Rational tech rep toolbox 已经提供了相当多种类的评估。有些评估可以做为现货服务产品,如:metrics assessment package, Rational ClearCase administration assessment packag
3、e, 和 software development capability assessment package.1 软件开发能力评估的概念来自于为用户在组织范围内改善它们的开发能力的工作。评估的原因有很多,下面是一些我们碰到较多的情况:新技术 新的技术(例如从 COBOL 环境转到 Java 和 J2EE)将迫使组织重新思考他们的开发过程和工具环境,人们将构建他们的组织以学习新的工作方法。评估可以帮助定义哪些实践或者组织的哪些部分最需要变更,以及变更活动的优先级。快速成长 软件开发组织在相当短的时间内快速成长,习惯于使用的非正规的软件开发环境已经不再适用。组织需要了解如何恢复对他们的开发能力的
4、控制,然后转到更进一步的改进。 (这种情况以前经常在 dotcom 领域出现,现在很罕见了)合并 商业并购需要开发组织进行合并,这就意味着需要合并不同的和有时互相冲突的开发实践。需要创建通用的开发环境,但是经常不清楚应该首先引入哪些变更。采购 开发组织的项目是采购项目,或者需要考虑是否采购。组织通常希望能够改善评估和管理供应商的方法。如果供应商在海外就需要更多的挑战。能力改善 组织通常需要改善总体的软件开发能力。组织需要理解它的强项和弱项,找到快速回报的方法。组织可以不需要通用工具集的标准化,但是评估可以指出采用标准化的益处。市场驱动的过程改善 一些组织需要改善它们的软件或者系统开发过程以满足
5、市场竞争的需要。合适的认证(如服从公认的质量标准如 CMM, ISO, FDA, 等等)通常是在特定市场寻找机会的强制标准。系统和产品 在一些工业领域(国防、电信、航天等等) ,系统从过去简单的机械和电子的简单组合增加为复杂的软件系统。系统开发组不同部分的协作在采用新技术时通常是一个挑战,并且增加系统的复杂度。一个改善的方法是不同的组使用通用的标准和通用的开发架构。产品线的开发 组织可以开发和维护一条软件或者系统产品线,而不是单一产品。这一般意味着高水平的产品线的重用,过程可以在产品线的每个产品上重用,自动化开发可以帮助控制开发成本。这些产品线上的重复的开发周期也产生了对改善和开发过程持续优化
6、的要求。与软件开发能力评估对比,项目评估是改善一个特定项目组的软件开发能力,它不需要考虑跨组织的标准。这里需要处理的相关人员比较少,考虑的问题也较少,因此对哪些问题需要解决容易达成一致意见。专门技术评估 可以是组织范围的,但是它们集中在专门的技术领域。例如,一个评估可能集中在组织怎样进行度量以确认项目的进展和质量方面。回页首大范围评估的标准让我们假定组织想要进行大范围评估而不是项目级或者专门技术评估。那么完成组织范围的软件开发能力评估的标准是什么?这种范围的评估需要一个组织和评估员的有意义的委托。例如,对于除了他们的软件开发能力之外没有稳定的理由的组织,可能是不值得进行评估的,因为获得评估结果
7、的价值是很困难的。下面是一些在你决定是否开始评估时需要考虑的:商业驱动 商业驱动是什么?它是成本节约?达到更高的质量?或者能够更快交付?它们的优先级如何?驱动是否强烈得足够有一个变更的委托?如果有的话,委托是否与组织水平对应?涉众 你的涉众是谁?确保你有不同的组织的观点。一个风险是你花费了太多的时间讨论拥护者-一个人的观点容易得到,但是谁也不可能有对所有位置的观点的描述。组织的状态 组织的状态是什么?它的成熟的和可接受的变更是什么?在讨论时有哪些失败出现?这些与软件开发能力有关(我们可以帮助) ,或者与其它事情相关?软件开发能力是否是组织的关键?是否有以前的成功的变更的例子或者改善的进展?价值
8、机会 变更的价值看起来是什么?项目平均有多大,它们一般运行多长时间,开发组织有多大?软件开发能力的改变如何影响商业结果?组织如何依赖它的软件开发能力?是否应该进行组织范围的评估依赖于几个标准。基于上面的描述,这里给出几个建议:应该有强烈的商业驱动和迫切的变更需求 - 其它的建议都不应该考虑,不值得做这样的评估。组织范围的评估应该领导变更。在评估时你需要在你的团队包括正确的人。你与这些人的关系应该是稳固的,与客户组织的关系也必须稳固。你应该给出评估的预算,它与任何考虑在开发工具上的全面投资相比都应该相当小。应该给组织的管理层一个远景,其中应该包括构建强有力的软件开发能力。组织应该通过创建管理层的
9、领导变更的协作以展示承诺。回页首什么是评估的价值?组织范围软件开发能力评估的主要目标是给被评估的团队提供价值。由外部人员进行的评估能够提供组织强项和弱项的外部的观点。它可以协助发现问题,基于最佳实践提供改进建议的先后次序。评估过程也将给关键人员提供一个阐述和讨论想法的机会,而他们以前没有时间充分地展示他们的想法。它在组织中构建对变更需求的理解。主要的一点是开发组织必须提供商业的价值。更好的软件开发将带来更好的商业结果。能力的评估意味着价值的改善。评估的结果将帮助激发对变更的投资,以及帮助构建变更的策略。最后,评估将作为阐述在组织中实现一个建议的解决方案的很好的基础,这个方案在评估期间完成需求的
10、确定。涉众和结果因素有大量的因素影响商业结果,但是软件开发能力评估仅仅集中在那些与软件或者系统开发活动有关的方面:换句话说,那些因素可以由IBM 和 IBM Rational 解决方案实现,并能够增加客户的商业价值。因为因素和期待的结果的数量通常很大,在评估的早期确定合适的涉众对评估结果的期望是很关键的。图 1 给出了客户端的涉众对商业结果的期望:图 1:评估过程的涉众正如图 1 中显示的,在一个视图中有很多不同的涉众对评估成果的看法:行政管理(Executive management) 关注与商业前景和商业策略,包括 IT 策略相关的结果。结果应该创建对于变更的紧迫需求,包括与商业驱动、角色
11、定义、组织变更管理、风险管理、通信、和投资回报等相关的看法。财务(Finance) 关注成本驱动、合同管理、价值链的费用、回报率、维护费用。供应商管理(Supplier management) 考虑 COTS 使用,例如 B2B、子承包商管理和离岸开发的集成。生产制造(Production) 关注工业过程自动化,控制和质量。销售和市场(Sales and marketing) 关注用户关心的(如 CRM - 客户关系管理) ,支持,在线服务,供应链集成,后勤,仓储和销售渠道。运作(Operations) 关注商业过程和性能,过程集成,自动化和系统支持,过程和工具支持,质量管理,和跨操作架构的内
12、部关系。IT 关注组建策略,COTS,过程,工具,重用, Enterprise Architecture Integration (EAI),采购策略,标准,技术,遗产,维护费用。开发人员(Developers) 关注更好的软件开发技能,动机,公司文化,创造性,职业发展,授权和团队凝聚力。产品管理(Product management) 关注通过产品策略产生收入,布置,包装,定价,技术,架构,质量约束,顺从标准,重用策略,质量图景,用户满意度,市场时机,细分,产品和操作的技术,覆盖的人群,创新管理。所有涉众关注的内容都是相关的,并且相互增强。他们在一个组织中给出不同的观点,并帮助评估组组织评估
13、问题和答案。并不是所有的观点都能够在单一的软件过程能力评估中展现出来,但是我们在规划这样一个评估时要牢记组织的架构。回页首能力评估框架在介绍评估路线图之前,我们首先讨论在评估活动中能够提供的指导框架:四个成功项目的协作领域 - 基于对不同的 engineering disciplines 如何互相协作的调查简化的软件经济模型 - 例如,基于 COCOMO II 六个软件开发的最佳实践 - 基于对工程实践的调研最佳实践的框架在某种程度上通常更加适合于那些已经采用了 IBM Rational Unified Process, RUP, 和 Rational 技术的组织,否则你可能更加适合使用软件经
14、济学模型或者四个实践领域。你也可以选择它们的组合。因为最佳实践的框架与更多的技术相关,你可以使用那些开发者和项目经理已经很熟悉的Rational 技术,在与高层管理者交流时使用软件经济学模型和四个实践领域。为什么我们没有提及 CMM/CMMI 作为框架之一? CMM/CMMI ,一般来说,集中在组织中过程是否被使用和改善的过程成熟度上 - 换句话说,这是一个开发组织的质量的标识,可以用来给它们的客户建立信任。我们这里讨论的评估更加集中在理解什么开发实践在使用,它们在哪里和怎样被改善以影响开发效果上。2 四个协作领域如果评估在组织水平上进行,讨论的框架就集中在可以显著帮助的关键协作领域上。这种类
15、型的框架支持一个好的开发基础架构,它推动跨开发项目所有领域的协作。IBM Rational 的 Murray Cantor 和 Lynn Mueller 已经定义了这样一个框架,在本文中称为“四个协作领域”:工程,程序/项目管理,业务集成和开发供应商管理。这些协作领域都可以用在 IT 应用开发,也可以用在产品开发。每个领域可以分为一系列的实践,我们评估每个实践意味着对组织成熟度的理解。每个实践的具体细节依赖于评估的开发组织的类型。工程讨论下面的实践可以让我们理解在产品/应用工程领域团队如何协作:采用面向对象的系统架构和 UML 以获取逻辑和物理设计使用需求、设计、数据库模型,而不只使用文档使用
16、通用的集成库保存系统工程产物和产品数据使用基于管理和专门领域(如硬件,电子等)的设计工具程序/项目管理讨论管理实践提供对组织、计划、成功度量和结果如何监控和通讯的洞察:团队按照逻辑和物理组件划分,而不是功能单元系统架构组维护整个项目生命周期基于风险选择,降低完成费用的偏离组织使用基于能力的,use-case 驱动的迭代开发有一个通用的、组织范围的集成的程序状态、稳定性、质量和财务的度量集合挣值依赖于可论证的结果,而不是费用花费有正在进行的系统和部件的集成测试业务集成大部分商业操作依赖于计算机系统,而评估组织考虑的范围和把系统开发作为集成的商业过程是至关重要的。理想情况下,系统开发应该反映组织的
17、特性和商业策略 - 例如,开发能力(按时间和预算交付高质量的产品的能力)应该考虑作为商业成功的关键因素。在这个协作领域,我们评估下列实践:保证所有商业管理过程映射到工程和管理实践使用通用的跨产品线的基础架构可以帮助优化操作环境(Service Oriented Architectures - SOA - 可以有效地优化商业过程到发布、集成和重用。它还可以帮助降低开发费用。)开发供应商管理在最后一个领域,我们评估供应商如何更有效地与项目生命周期集成,以及如何更有效地管理合同:与供应商的合同映射到项目管理过程和开发生命周期模型(而不是反过来) 。使用共享的工程协作基础架构使用集成的管理基础架构上面
18、描述的四个协作领域的每个的成熟度都可以描述为 1 到 5 级,如下所示:1 = No capabilities (无能力的) 。 使用不同的方法和过程,几乎没有跨开发组织的集成 2 = Aware(有意识的)。 现代开发过程已经在知道这些方法的价值的项目组单独使用 3 = Capable(有能力的) 。 现代开发过程已经在一些商业产品线的多个项目组使用,但是没有计划配置跨企业的集成过程 4 = Mature(成熟的) 。 企业已经开发了配置现代开发过程的计划,已经在选择的产品线上配置。5 = World Class(世界级的) 。 企业已经在企业和它的供应商范围采用和配置了现代开发过程。结果可
19、以表示为一个矩阵 (15 x 5),但是我们认为它更容易表示为一个可视化的radar chart,如图 2 所示。图 2 的例子显示了现在的情况和组织将来要达到的目标。 (点击放大)图 2:开发组织的程度度越高,在图上覆盖的面积越大。由蓝点覆盖的区域表示当前的能力,由红点覆盖的区域表示期望的能力目标简化的软件经济学模型一种描述软件开发能力是否达到它们的商业目标的方法是,从软件经济学有关的角度看产品开发项目是如何完成的。为了评估能力和给出建议的目的,我们使用简化的 COCOMO II 模型,它由四个关键的软件开发性能参数组成:Software Development Effort = (Comp
20、lexity)(Process)(Team)(Environment)这些参数对软件开发成果有以下影响:Complexity(复杂度) 。 构建的大小,可以表示为人产生的素材的多少,包括技术素材,如源代码,也包括其它技术产物。因此评估应该寻找降低软件方案大小的机会,例如,通过增加重用程度来降低。Process(过程) 。 过程的成熟度和效率,以及过程避免增加不应该增加的活动的能力,如返工,过多沟通等。当过程系数大于 1 时,diseconomy of scale3 将显著增加。评估应该找到是否有机会改善过程的成熟度和提高过程执行的效率。Team(团队) 。 软件开发技巧,经验和团队成员的动力,也会影响团队的能力。评估应该寻找机会加速软件