全球企业软件交付的成功之道
1. 敏捷与工业化的平衡
在企业软件交付中,敏捷与工业化的平衡至关重要,这对所有规模的企业都适用。中小企业可以通过深入理解自身在软件供应链中的角色、改进团队间的协作交付方式以及更有效地与供应链中的合作伙伴互动,从这种思维中获得价值。
2. 过程成熟度的影响
企业软件交付的工业化进程依赖于软件交付方法的成熟度,这对于实现成功所需的变革至关重要。理解组织成熟度及其对企业软件交付的影响,已有大量的研究和实践。软件工程研究所(SEI)的能力成熟度模型(CMM)及其集成模型(CMMI)定义的成熟度级别,很好地体现了成熟的软件交付实践的重要性。
2.1 CMMI成熟度级别
| 成熟度级别 | 描述 | 过程领域数量 |
|---|---|---|
| 初始级(Level 1) | 过程通常是临时和混乱的,环境不稳定,依赖个人能力和英雄主义,倾向于过度承诺,放弃过程且无法重复成功。 | - |
| 管理级(Level 2) | 需求得到管理,过程得到规划、执行、测量和控制。 | 7 |
| 定义级(Level 3) | 过程得到很好的表征和理解,并在标准、程序、工具和方法中进行描述,过程管理更积极主动。 | 11 |
| 定量管理级(Level 4) | 过程性能可预测,过程得到控制和测量。 | 2 |
| 优化级(Level 5) | 持续进行过程改进,解决过程变异的常见原因。 | 2 |
2.2 成熟度现状
过去十年的研究表明,多达70%的企业软件交付组织处于最低的两个成熟度类别。这些低成熟度组织由于缺乏必要的标准化、不遵循可预测的过程以及没有用于指导改进的测量基线,不太可能向更工业化的软件交付方法做出有效改变。
2.3 CMMI在软件外包中的应用
- 外包商 :近年来,外包商使用CMM和CMMI向潜在客户展示其交付能力的严谨性、可重复性和效率。他们通常为用于向客户交付软件和服务的软件工厂获得成熟度等级的最高认证,以证明其在企业软件交付中采用可重复、优化的过程。
- 外包客户 :外包客户使用CMM作为评估方法来评估潜在的外包商。SEI在将CMM应用于采购活动(所谓的软件采购CMM)时鼓励这种方法,CMM级别2和3中的关键过程领域成为评估外包商实践的计分卡基础,并提供了理解和管理软件外包风险的机制。
2.4 成熟度不匹配的挑战
当供应链中不同协作团队的成熟度不匹配时,会面临重大挑战。例如,一个处于CMM 2级成熟度的公司决定将业务外包给位于世界不同地区的CMM 5级公司时,失败的可能性会增加。尽管不成熟的外包公司最初可能通过较低的劳动力成本和更高的人员灵活性看到外包成本的节省,但由于管理过程的不稳定、测量经验不足以及对关键项目规划活动缺乏可见性,这些节省可能会被浪费。在这种情况下,CMM等基准和改进框架可以作为识别成熟度不匹配领域的重要工具,并提供分阶段提高供应链绩效的路线图。
3. 软件交付的特点:工艺与进化
“软件工厂”这一概念试图将软件交付与制造业进行类比,以提供一种思考企业软件交付工业化的有用方式,它具有治理、效率、控制和可预测性等积极特征。然而,这个术语也可能引发争议,因为它可能暗示着单调、重复的任务,抑制创造力和创新。
3.1 创造力与控制的平衡
Walker Royce将企业软件交付与电影制作进行类比,说明这两种活动都在严谨性和创造力之间寻求平衡。在过程的早期阶段,大量的“废弃和返工”是创造性过程的一部分,此时尽量减少返工通常是错误的,因为这会扼杀所需的创造力和灵活性。但在后期阶段,必须高度关注减少返工以消除低效。
3.2 对企业软件交付的启示
- 专业化与供应链方法 :即使在高度创新的情况下,也会采用专业化和供应链方法来控制成本和管理风险。例如,电影制作中,有专门从事设计、数字技术和后期制作编辑的公司。企业软件交付在生产满足利益相关者需求并为组织提供价值的系统时,也面临同样的压力、方法和挑战。
- 不同的交付风格 :不同类型的项目适合不同的软件交付风格。有些软件交付方面可能适合瀑布式交付,而在创新和不确定性较大的情况下,更需要迭代和敏捷的技术。
- 项目管理与规划 :项目管理和规划不是一次性事件,而是通过发现、协商和重新定向不断发展的关系。在项目开始时,协调和规划通常不那么详细和严格,随着对项目的了解增多,规划会变得更加详细和严格。
- 交付过程的适应性 :交付过程的执行过程中可能需要对企业软件交付的测量、治理和控制进行更改。必须预期并考虑到这种变化,就像电影的成功不仅取决于票房收入,还取决于其他重要指标一样,软件项目也需要考虑各种二级指标。
3.3 Royce的管理原则
Royce提出的敏捷软件交付的十条管理原则,对企业软件交付的工业化方法具有直接的相关性:
1. 首先与所有各方就架构框架和一套明确的架构原则达成一致,以减少不确定性。
2. 建立一组变更点和治理过程,允许采用自适应的生命周期过程,加速减少差异并提供明确的创新点。
3. 通过共享资产重用、公共资产库和标准化中间件组件,减少定制开发的工作量。
4. 强调测量变更成本、质量趋势和进度趋势,提高可见性和透明度。
5. 与所有利益相关者诚实地沟通进展和偏差,尽早发现问题,并将解决问题作为所有合作伙伴的重点。
6. 在过程中建立正式和非正式的方式,定期与组织内外的利益相关者进行协作,重新协商优先级、范围、资源和计划。
7. 持续集成版本并测试使用场景,随着广度和深度的发展,将这些活动作为所有各方协调的主要手段。
8. 建立一个协作平台,增强潜在分布式团队之间的团队合作,确保其特别适合跨不同地理和组织边界的工作。
9. 保持控制,但不要拘泥于初始计划,通过自动化增强更改计划、范围和代码发布的自由度。
10. 建立一个治理模型,在为组织、团队和从业者提供最大价值的地方保证创造性自由。
4. 供应链的弱点
向软件供应链的转变带来了一些常见的风险,主要包括以下几个方面:
-
交付失败
:合作伙伴可能无法按时、按质量或按约定规格交付。需要采用各种检查方法来确保协议得到遵守,许多供应链包括审查和分析活动,以确保创建的工件尽可能完整、一致和有效。
-
供应商倒闭
:依赖合作伙伴存在供应商倒闭的风险,这可能对企业的软件交付造成灾难性影响。许多组织选择多源采购关键组件以确保竞争,或托管关键源代码以确保访问权。
-
合作伙伴目标不一致或成为竞争对手
:由于市场经济的动态性,供应商可能面临来自多个客户的增强功能和新特性的压力,企业的需求不一定具有最高优先级。此外,供应商可能提供竞争能力或被竞争对手收购。为了减轻这种风险,一些组织投资于联合合作伙伴关系,明确各方的优先级。
-
安全和知识产权问题
:在当今环境中,必须关注安全和知识产权保护问题。例如,通常会对来自外包供应商的所有交付代码进行各种已知安全问题的扫描,建立外部安全团队监控软件开发和交付的各个方面,并定期进行合规性审计。
-
动机、成本、角色和文化差异
:供应链中的不同组织在不同的背景下运营,这种多样性既是优势的来源,也需要仔细理解和管理。许多组织开始通过提高意识的活动来解决地理分布团队之间的文化差异,帮助参与者了解分散团队的工作背景和社会环境。
5. 总结
尽管我们尽了最大努力,但基于软件供应链的更加多样化、分布式组织的转变带来了必须认识和解决的挑战。这些风险表明,要创建有效的企业软件交付工业化方法,必须克服一些障碍。这些问题虽然是常见的供应链问题,但由于两个重要因素而更加严重:
-
世界并非平坦
:高速网络和技术进步增强了沟通,但团队之间的距离仍然在导致误解、误判和不信任方面发挥着重要作用。
-
动机和文化很重要
:在企业软件交付中,个人、团队和组织层面都承载着大量的背景和历史。试图在这些差异上进行标准化的努力可能效果有限,而寻找拥抱和支持这种多样性的方法可能会带来更大的成功。
6. 其他领域的经验教训
工业化和供应链方法在解决方案交付中并非新鲜事物,在多个领域,包括软件密集型系统,都有丰富的经验来提高解决方案交付的一致性、可预测性和效率。以下三个领域的经验尤其值得关注:
-
进化式采购和全生命周期能力管理(TLCM)
:这种方法强调在整个系统生命周期中逐步获取和改进能力,而不是一次性采购。
-
供应链管理
:有效的供应链管理可以确保原材料、零部件和服务的及时供应,降低成本并提高质量。
-
精益制造
:精益制造的原则,如消除浪费、持续改进和以客户为中心,可以应用于软件交付,提高效率和质量。
通过借鉴这些领域的经验教训,企业可以更好地应对软件交付中的挑战,实现更高效、更成功的软件交付。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B{项目类型}:::decision
B -->|创新少、需求明确| C(瀑布式交付):::process
B -->|创新多、不确定性大| D(迭代和敏捷技术):::process
C --> E(初始规划):::process
D --> F(快速迭代):::process
E --> G(软件构建):::process
F --> H(持续集成与测试):::process
G --> I(交付):::process
H --> I
I --> J([结束]):::startend
这个流程图展示了根据项目类型选择不同软件交付风格的过程。对于创新少、需求明确的项目,适合采用瀑布式交付,先进行初始规划,再进行软件构建,最后交付。而对于创新多、不确定性大的项目,则更适合采用迭代和敏捷技术,通过快速迭代、持续集成与测试来完成项目。最终,两种交付方式都会导向项目的交付和结束。
7. 进化式采购和全生命周期能力管理(TLCM)的应用解析
7.1 进化式采购的流程
进化式采购强调在整个系统生命周期中逐步获取和改进能力。其具体流程如下:
1.
需求分析与规划
:对企业软件项目的长期需求进行全面分析,制定分阶段的采购计划。例如,企业计划开发一款大型的企业资源规划(ERP)系统,在初始阶段确定核心功能需求,如财务管理、人力资源管理等基础模块。
2.
初始采购
:根据第一阶段的需求,选择合适的供应商和产品进行采购。在ERP系统案例中,先采购具备基本财务管理和人力资源管理功能的软件模块。
3.
使用与评估
:在使用过程中,对已采购的软件进行评估,收集用户反馈,发现系统存在的问题和新的需求。比如,在使用ERP系统的财务管理模块时,发现报表生成功能不够灵活,需要增加自定义报表的功能。
4.
后续采购与改进
:根据评估结果,进行后续的采购和系统改进。继续以ERP系统为例,采购能够实现自定义报表功能的软件插件或对现有模块进行升级。
7.2 全生命周期能力管理(TLCM)的要点
全生命周期能力管理关注软件系统从规划、开发、部署到维护的整个过程中的能力提升。要点如下:
-
规划阶段
:明确软件系统的长期目标和所需能力,制定全面的能力发展蓝图。例如,对于一个电商平台软件,规划阶段要确定未来几年内需要具备的多语言支持、大数据分析等能力。
-
开发阶段
:按照规划,逐步实现各项能力。在电商平台开发过程中,分阶段实现商品管理、订单处理、用户评价等功能。
-
部署与维护阶段
:持续监控系统能力的运行情况,及时进行调整和优化。如电商平台在部署后,根据用户流量和业务变化,对系统的性能和功能进行调整,确保系统能够稳定运行。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([需求分析与规划]):::startend --> B(初始采购):::process
B --> C(使用与评估):::process
C --> D{是否有新需求}:::process
D -->|是| E(后续采购与改进):::process
E --> C
D -->|否| F([结束]):::startend
这个流程图展示了进化式采购的基本流程,从需求分析开始,经过采购、使用评估,根据是否有新需求决定是否进行后续采购和改进,形成一个循环迭代的过程,直到满足企业的软件需求。
8. 供应链管理在软件交付中的实践
8.1 供应链管理的关键环节
在软件交付中,供应链管理涉及多个关键环节:
1.
供应商选择
:选择合适的供应商是确保软件质量和交付进度的基础。评估供应商时,要考虑其技术能力、信誉、价格等因素。例如,在选择软件开发外包供应商时,查看其过往项目经验、客户评价等。
2.
合同管理
:签订明确的合同,规定双方的权利和义务,包括交付时间、质量标准、价格等条款。在合同中明确软件的功能需求、验收标准以及违约责任等内容。
3.
物流与交付
:确保软件产品能够按时、准确地交付。对于软件产品,可能涉及代码的传输、安装包的分发等。要建立高效的物流和交付机制,保证软件能够及时部署到企业环境中。
4.
风险管理
:识别和应对供应链中的风险,如供应商倒闭、技术问题等。可以通过多源采购、备份方案等方式降低风险。
8.2 供应链管理的绩效评估
为了确保供应链管理的有效性,需要进行绩效评估。评估指标包括:
| 评估指标 | 描述 |
| — | — |
| 交付及时性 | 软件是否按时交付,以交付时间与合同约定时间的偏差来衡量。 |
| 质量合格率 | 软件产品符合质量标准的比例,通过测试通过率等指标来评估。 |
| 成本控制 | 实际采购成本与预算成本的对比,评估成本控制的效果。 |
| 客户满意度 | 企业内部用户对软件产品和服务的满意度,通过问卷调查等方式收集。 |
9. 精益制造原则在软件交付中的应用
9.1 消除浪费
在软件交付中,浪费表现为不必要的代码、重复的工作、等待时间等。消除浪费的具体措施如下:
1.
代码优化
:对软件代码进行审查和优化,去除冗余代码,提高代码的可读性和可维护性。例如,在一个Web应用程序中,清理无用的函数和变量。
2.
流程简化
:简化软件开发流程,减少不必要的审批环节和文档工作。比如,采用敏捷开发方法,减少繁琐的文档编写,注重实际的软件功能实现。
3.
资源合理分配
:合理分配人力资源和设备资源,避免资源的闲置和浪费。根据项目的需求和进度,合理安排开发人员的工作任务。
9.2 持续改进
持续改进是精益制造的核心原则之一。在软件交付中,可以通过以下方式实现持续改进:
1.
定期回顾
:定期对软件开发项目进行回顾,总结经验教训,发现问题并及时解决。例如,每周或每月进行项目回顾会议,讨论项目进展、遇到的问题和解决方案。
2.
引入新技术
:关注行业内的新技术和最佳实践,适时引入到软件开发中。如引入新的开发框架、测试工具等,提高开发效率和软件质量。
3.
员工培训
:为开发人员提供培训机会,提升他们的技能水平和知识储备。组织内部培训课程或鼓励员工参加外部培训活动。
9.3 以客户为中心
软件交付要以满足客户需求为出发点。具体做法如下:
1.
需求调研
:深入了解客户的需求和期望,确保软件产品能够满足客户的实际业务需求。通过与客户沟通、实地调研等方式收集需求。
2.
客户反馈
:及时收集客户的反馈意见,对软件进行改进和优化。可以通过客户满意度调查、用户反馈渠道等方式获取客户反馈。
3.
定制化服务
:根据客户的特殊需求,提供定制化的软件解决方案。例如,为不同行业的客户开发具有行业特色的软件功能。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([消除浪费]):::startend --> B(持续改进):::process
B --> C(以客户为中心):::process
C --> A
这个流程图展示了精益制造原则在软件交付中的循环应用过程。从消除浪费开始,通过持续改进不断提升软件交付的效率和质量,以客户为中心确保软件产品能够满足客户需求,而客户的反馈又可以促使进一步的消除浪费和持续改进,形成一个良性循环。
10. 综合应用案例分析
假设一家制造企业计划开发一款生产管理软件,将上述各领域的经验教训进行综合应用:
1.
敏捷与工业化平衡
:在项目初期采用敏捷开发方法,快速响应需求变化,同时引入工业化的标准和流程,确保代码质量和开发效率。例如,制定统一的代码规范和开发流程。
2.
过程成熟度提升
:参照CMMI模型,逐步提升企业的软件交付过程成熟度。从初始级逐步向管理级、定义级迈进,建立完善的项目管理体系和质量保证体系。
3.
软件交付特点把握
:根据项目的创新程度和不确定性,选择合适的交付风格。对于生产管理软件中一些成熟的功能模块,采用瀑布式交付;对于一些需要创新和探索的功能,采用迭代和敏捷技术。
4.
供应链管理优化
:选择合适的供应商,签订明确的合同,确保软件的按时交付和质量。同时,建立风险管理机制,应对可能出现的供应商问题。
5.
借鉴其他领域经验
:应用进化式采购和全生命周期能力管理,分阶段采购和改进软件功能;引入精益制造原则,消除浪费,持续改进软件质量。
通过综合应用这些方法和原则,该制造企业有望成功开发出满足生产管理需求的软件,提高企业的生产效率和管理水平。
总之,在全球企业软件交付中,要实现成功,需要平衡敏捷与工业化,提升过程成熟度,把握软件交付的特点,应对供应链的弱点,并借鉴其他领域的经验教训。通过不断地实践和改进,才能创建出高效、可靠的企业软件交付模式。
超级会员免费看
1683

被折叠的 条评论
为什么被折叠?



