|
作者:Administrator
|
|
2008-06-21 15:35 |
|
如果客户让你实现一个日志功能,你会估计多少时间完成?很清楚,这无法决定,因为它取决于需求的复杂程度,基本上来说针对第三方软件,使用复杂度通常是分三个阶段,往往随着时间的发展,依次为:
第一阶段 最简单的需求,第三方工具提供的例子完全能满足。
比如日志功能,客户惜字如斤的给你说,“我需要日志”,你可能想到Log4j,你未曾用过,但久仰其名。然后你就打开Log4j的官方文档,很快你就知道,“哦,我可以创建一个log4j.properties文件放到classpath路径里,内容可以从官方文档里拷贝出来“,也许你就只用了不到三天就实现了。
在比如,需求是有几个后台任务需要调度,Ok,你认为很简单,打开www.open-open.com,选择调度框架,选择第一个Quartz,发现文档很全, 改写了参考文档的例子,也许你只用了不到一周便做完了
第二阶段 需要二次开发,客户越来越过分,他的需求你发现你选择的第三方软件无法满足
即使现在很多第三方软件都提供了插件功能或者可扩展功能,但需求前变万化除了二次开发,别无选择
比如日志功能里,客户说,我很喜欢Logger提供了info,waning,debug这些方法,能不能给我提供一个audit 专用于审计的方法。哎~~Logger里没有这个方法,那你只好去研究Logger源代码,然后创建好几个新类,最后,终于能实现
MyLogger logger = MyLogger.getLogger(XXXX.class);logger.info("same with Logger"); logger.audit(“new method“);
这次的二次开发也许要花上你俩周到四周的时间
再比如任务调度,客户突然发现,这俩个任务有依赖关系,客户给你描述,负责统计数据的任务必须先执行完并且成功执行,负责扣钱的任务才能在第二天执行。这下你就肯定抓狂了,Quartz只负责定时执行任务,没有处理依赖关系的功能,这时候,你就不得不二次开发,最后终于实现:
@Task(id="koufei" depend="tongji")...也许要花上你一个月的时间.
第三阶段:居然需要跟别的工具平台整合。你的开发时间将由别的系统来决定,你不能控制时间了
系统越做越好,客户很满意,于是客户说,我现在有个统计报表系统,你跟他们去整合一下,我希望能在他们系统看到你们纪录日志的情况。。。。 或者,客户说,“任务调度有时候会成功,有时候失败,我现在买了一个KPI系统,你们的调度数据看看能不能倒入到他们系统里,这样,我们管理员可以查考调度情况。。顺便说一下,这是KPI系统负责人员电话,你去联系一下他。。。。![[:@]](/faces/11.gif)
如果你运气非常好,你也许使用第三方软件只在第一阶段就够了,但是你得要警惕,充分考虑到有可能的二次开发,系统整合后期俩阶段,它们影响了你对任务完成时间的估计,难度的估测.也影响了你的士气!!!
最后简要说一下3c的概念Component,Customize,Cooperation,分别对应于每个阶段,方便你记忆
支持一下本人博客 http://hi.baidu.com/joelli/blog/item/2206414c290862fcd62afc68.html,谢谢
|
|
最后更新于: 2008-06-21 15:35 |