2007-01-26

绝世武功+宝刀

武侠小说中的高手往往都有两样东西:绝世武功和宝刀(或者宝剑等高效杀伤性武器)。一般模式是,主角一开始都比较菜鸟,被几个小毛贼追得满地跑,跑着跑着就跑到悬崖边,后面又有人追,没办法就跳下去了,结果大难不死,还因祸得福,发现山洞,里面居然有本书,还是武林秘籍,于是在没有其他娱乐选择的极度无聊情况下,只得照着书上小人的动作比划两下,没想到练就了一身绝技,再拿着洞里的被人遗弃的削铁如泥的宝刀,回去找追他跳崖的小毛贼单挑。结果可想而知,用宝刀削小毛贼的脑袋瓜子当然是不费吹灰之力了。渐渐发现还能削以前想都不敢想的人的脑袋瓜子,于是一个独步江河的大侠就这样出炉了。

其实,不管是武林秘籍还是宝刀,那都是法宝,和封神榜里的神人用的法宝一样,打仗得有好法宝,拼得是法宝,真正用法宝的人不重要,可见法宝的重要性。大侠在得到法宝之前什么都不是,人人可得而欺之,一得到法宝立马就翻身做主人了。作为大侠当然不能只靠超强的战斗力,还得有颗仁义之心,这是在检到法宝之前就有的,否则作者也不会让他捡。可是在拥有法宝之前,这颗仁义之心往往是毫无作为的,在以暴力作为游戏规则的江湖中,这颗脆弱的心是跳不起来的。只有等拿到法宝之后,大侠才能实现理想,才能继续读者的童话。

可见,光有美好的理想或目标是不够的,还得有法宝的支持。

软件开发也一样,光有好的目标是不够的,还得有好的工具或技术支持。

多快好省是所有产品开发的目标,不仅仅是软件开发的目标。那么在软件开发中,用什么工具和技术来达到目标呢?好的开发过程当然算是一个法宝了。什么样的开发过程可以称得上法宝呢?和宝刀一样,得使着顺手才能使得溜。因此,没有一个固定的好的开发过程,只有对特定项目情况和组织适合的好的开发过程。

而开发过程是一个大得方面,其本身也需要工具和技术支持,否则也只能是流于形式。比如要达到“好”的目标,需要bug少。从bug生命周期来看,可以在各阶段下功夫:

1. 引入bug

在编码阶段,目标当然是不引入或少引入bug。工具或技术有:聘任优秀的程序员,保持结构清晰的代码,消除重复代码,用SVN进行代码控制,进行review......

2. 发现bug

编写覆盖全面的单元和功能测试案例,使用自动化的测试手段和工具,如JUnit、Cruise Control、Bugzilla......

3. 找出bug

功能强大并且方便的编程环境和调试工具,如Eclipse, M$ VS......,还有纪录详细的log等等

4. 杀死bug

当然要切实杀死bug,最常见的问题是杀不死bug或引入新bug,杀不死是因为可能在其他地方隐藏着同样的bug,为了避免这种情况,在编码阶段就得努力消除重复代码。杀死bug过程也是编码的过程,因此又是下一轮的bug引入阶段,循环开始了。

可见,整个过程就是不断使出法宝的过程,过关斩将。

一件件法宝使出去了,固然制服了bug,达到了“好”的目标,可是“快”、“省”的目标还能达到吗?法宝的使用是要负使用费的,另外需要时间。

得从两个方向看:

1. 横向来看,即在静止的时间片中,多快好省之间是有内在矛盾的,这个不难理解。因此,必然不能全部达到最优。所能做的只能在这四个目标间进行平衡,达到设定的可接受目标即可,认了。

2. 纵向来看,即在前后两个时间片间比较,由于工具的进步和技术的发展,这四个目标是可以同时提升的。

因此,得时刻扫描一下周围,看看法宝从天而降。或者出门转悠一下,说不定就碰到一个恶棍,然后他就追着你跑,跑到悬崖边.......

没有评论: