两周前,在一家企业探讨面向大批量定制的产品开发管理方案,其中讨论比较多的就是当企业的产品开发从MTS到MTO,一直到随着市场针对产品迭代周期持续缩短,企业为了适应快速变动的市场,必须投放更多面向不同细分市场领域的产品,产品种类也急剧增加,大量定制化需求也不得不响应,产品开发交付模式就变成了CTO和ETO;那么有无更高效的办法满足这种定制化市场的产品开发方法?都说IPD是面向市场开发的“神丹妙药”,那么通过IPD的思路是否可以解决这方面的问题?
其实华为的确在二十多年前就识别到了产品面向不同需求时,传统的缺少整体策划的开发方法对与面向市场的复杂高效交付过程有很大挑战,因此将技术开发和产品开发分层异步运行,成立了“中研部”和“中试部”;并且在这个过程中逐步将无须的产品开发转型向有规则的平台开发,并且通过平台支撑企业的产品开发,例如C&C08平台的成功策划,不仅支撑了华为从困境中的转型,而且基于此平台衍生出大量的产品,满足了华为征战四方的很多领域的产品。
- 全面解耦原则:对业务进行抽象建模,业务数据与业务逻辑解耦,软件和硬件解耦,平台和产品解耦,系统各部件间解耦;
- 服务化、组件化原则:以服务、数据为中心,构建服务化、组件化架构,具备灵活、按需组合的能力。
- 接口隔离及服务自治原则:通过接口隐藏服务、组件的实现细节,服务、组件间只能通过接口进行交互,接口契约化、标准化,跨版本兼容;服务、组件可独立发展、独立发布、独立升级;服务自治,可视、可管、可控、可测、可维、故障自愈。
- 弹性伸缩原则:构建全分布式云化架构,或借鉴云化架构思想,每种服务具备横向扩展能力,支持按需使用、自动弹性伸缩,可动态替换、灵活部署,支撑高性能、高吞吐量、高并发、高可用业务场景。
- 安全可靠环保原则:构建最小权限、纵深防御、最小公共化、权限分离、不轻信、开放设计、完全仲裁、失效安全、保护薄弱环节、安全机制经济性、用户接受度以及加强隐私保护的安全体系,确保系统、网络和数据的机密性、完整性、可用性、可追溯;以业务系统零故障为导向,按需构筑分层分级的可靠性,通过故障的预测、预防、快速恢复,避免故障的发生;系统资源使用效率最大化,实现节能、节地、节材、环保。
- 用户体验和自动化运维原则:面向业务获取和使用场景,构建实时、按需、在线、自助、社区化、方便易用的用户体验;支持远程、自动、智能、安全、高效地完成网规/网设、安装、部署、调测、验收、扩缩容、软件升级、打补丁、日常维护、问题处理。
- 开放生态原则:面向生态场景,按需开放平台设施、中间件、数据、业务逻辑、UI等能力,构建开放生态,支持分层、远程、自动、自助、简单高效地完成定制、集成、第三方应用开发。
- 高效开发原则:创建支持迭代、增量、持续交付的架构,支持部件独立开发、自动化编译构建、测试、集成验证,并易于高效修改和持续优化;支持开发组织小型化、扁平化,支持小团队独立高效并行开发。
- 柔性供应制造原则:模块化设计,模块、物料归一化、标准化,支持自动化、数字化、智能化、随需应变的柔性制造。
- 持续演进原则:架构并非一蹴而就,需要有效地管理架构需求,持续构建和发展架构,适应业务需求变化,适时引入业界最佳实践,及时重构,确保架构生命力和竞争力。
平台的策划和设计非常专业,我在这里不浪费文字进行啰嗦;但是对于组成平台的子项架构设计,却在多家企业参与过咨询和辅导,一步一步走来,收获颇丰,感触也很多。
策划平台的架构时,组成最核心的是模块(什么是模块?),当然这里的模块在很多企业容易理解成为产品研发设计部门内的模块,当然这在一定程度上可以提升产品开发的效率,但是跨部门协同的壁垒依旧存在,因此这种模块化我们认为是企业的意识觉醒,即模块化2.0,要是提升模块化协同,必须向更高的层级层级提升,这样才能产生更大的应用价值。
那么如何定义模块呢?其实基本规则也很简单,按照模块的概念定义,有明确的输入,经过模块过程处理后,有确定的输出——其实和什么都没说一样,或者简单说就是可以独立实现一定的功能;那么提供一个产品,如何考虑模块呢?步骤如下:
- 功能从粗到细拆解:因为功能过细会增加过程管理的复杂性,因此按需逐步深入和细化;
- 评估是否建立与装配工艺分离面:就是可以单独在某一工艺单位完成使用,例如工厂/产线/工位段/工位等;
- 是否可以独立进行任务分工:每一个模块都有独立的负责人,负责模块的开发、验证和交付,因此必须进行拆分;
- 基于重用度继续拆分:将变化频率比较高的结构和比较低的分开,这样可以继续提升模块重用度,减少不必要的复杂变更;
当然,针对模块的定义,我在日常的工作中,也进行了复盘和总结,基本思路包括:
- 独立性原则:模块的选择、替换、生产和制造相对独立,接口耦合尽量少;
- 粒度适中原则:模块的粒度和数量必须控制在合理范围内,但可逐步细化;
- 重用性原则:通过将更多模块由客户定制选项升为备用选项提前开发,增加重用和效率;
- 唯一性原则:针对特定产品,模块仅唯一定义,包括左右件也属于不同模块;
- 设计分离面与工艺分离面一致原则:模块划分需要考虑设计和工艺的独立与协同;
- 单级分层原则:模块不能嵌套使用,这样可简化配置和有效性管理;
- “只加”原则:指模块可以像搭积木一样调整,满足客户差异配置需求(大批量定制);
- 广义原则:模块是一个组建的逻辑组合,同时可包含需求、功能、设计、工艺、制造和检验数据;
- 以产品坐标系为参考坐标系原则:基于产品,建立唯一的方向、位置主坐标系;
- 以安装件为参考原则:模块包含主体件和支撑主体的连接件;
当然对于一个真实的产品,这些只是最基本的产品平台策划、架构定义和模块划分的原则,实际操作起来受企业很多方面的约束