在大连零售会员管理软件开发过程中,有成千上万个决策点需要进行预判。那是什么概念?我们说,几乎每走一步,都需要作出预判。前面那个用ID作为参数的例子我讲了很多次,而它只是万千决策中的九牛一毛。就是这么小小的一个决策,对软件系统造成的影响却大得惊人。
致远服软认为:http://www.soft8.com.cn/为了保证设计方向和设计的主体结构足够好,我们要对关键的决策点进行预判。在这一点上,没有任何捷径,也就是说,想要通过一些过程管理机制来保证预判的质量几乎是不可能的。预判的质量完全取决于人的智慧,取决于人才。
敏捷方法不够现实的地方就在于这里,他们依赖于有足够预判能力的人,但是没有强调这一点。如果组件化开发是一个好的解决方案,为什么还需要等待走投无路时的重构呢?!
我们已经反复强调,从大连零售会员管理软件开发维护所期待的系统扩展能力来看,用组件来构建软件系统是个好的解决方案。接下来,我们来看一个简化的案例。和前面大多数的案例一样,这个组件化开发的案例也是偏重于设计思路。
背景:
在保险业务中,保费计算是非常重要的。我们将以保费计算逻辑作为切入点,用组件的形式来构建后台的业务计算模式。前端应用程序、应用平台、技术框架、数据存储等不在本次讨论的范畴。
在具体设计开始之前,我考虑了这样几个问题:
设计思想应该足够简单,可以用一个词或一句话表述清楚,例如,组件化、插件结构、微内核等。简单可以保证目标明确,而且有利于思想的统一。
工作成果应该长期有效。我们知道,应用平台、业界标准、技术框架、编程模型、业务逻辑等总是处在不断的变化之中。这些变化有些来自它们自身,有些来自市场的选择。从大连软件维护成本的角度来看,可以保证长期有效的工作成果只有设计思想,具体来说,体现在我们对工作内容(代码)的组织方式上。长期有效的工作成果将成为大连零售会员管理软件开发资产的一部分。
工作成果应该保持独立性。独立性是保证工作成果长期有效的一个必要条件,而且更有利于工作成果的移植。可以移植的工作成果具有可重用的价值。
工作成果在演进时应该使影响面最小化,换句话说,工作成果应该具有良好的可扩展性。糟糕的扩展能力往往表现为牵一发而动全身,这会大大增加工作成本。
工作内容(代码)的组织方式应该有利于软件开发团队工作在一种高效的模式下。什么是高效的工作模式?很简单,就是一个最小的工作单元(个人或小组)可以工作在依赖关系最少的环境下。