软件“够用”就可以了吗?

04-02-13 banq
                   

文章地址:

http://www.jdon.com/artichect/why.htm

欢迎大家发表见解,在讨论中明晰自己定位。

                   

yanyan
2004-02-13 13:48

当然不够用。但是,如果做一个好的框架,能在今后的项目中多处重用的话,得需要有过架构设计经验、有对复用软件技术理解的高水平的程序员。我也知道当然有这样的程序员,但是他们会拿出来与大家分享吗?

你在OA、电子商务等系统有过这样的经验,我在网站上也看到了您写过这方面的技术文章,也拜读过,学了不少,希望您还会继续写出更多的文章。

ajoo
2004-02-13 14:09

软件设计中,有不必要的假设和必要的假设两种。

不必要的假设,如很多该用ioc的地方直接就依赖于具体实现了,损害了系统的灵活性,扩展性,但是对简单性并没有大的帮助。当系统长大之后,反而因为灵活程度不够而损害了系统的简单性。

必要的假设,则在对灵活性影响不大的情况下,大大降低了系统的复杂度。

还有一个原则,叫做do one thing and do one thing well。

当你对一个未来预测的扩展不是100%肯定的时候,不要为了对付假想的敌人冒复杂化系统的危险。只有等你或者不得不做了,或者已经对问题100%了解吃透了,才去着手解决这个问题,然后一击必杀。

唉。我怎么也犯了着天不着地的毛病?一大篇东西都是虚头把脑的。好像我是个专家似的。算了,不故作高深状了。

一句话,我认为设计是讲究平衡的。不能走极端。

zbw
2004-02-13 21:17

这话听起来有点像在和banq唱对台戏:)

听我接着说下去。

软件开发,特别是面向实用的,商用的软件开发,不是空中楼阁,不是闭门造车,一定要考虑成本。没有老板愿意让你借他的鸡,下自己的蛋。如果你的开发、设计,会最终导致他的成本上升的话,你挨炒是迟早的事情。

关键在于,如果计算成本,假设我们要计算长期平均成本,多长期的成本是可以承受的。

假设:如果我的这个设计,能够在下一个项目中起到重要作用,那么效果自然立杆见影。这样的设计,当然是好的。

如果我的这个设计,考虑了今后1年内可能遇到的项目,那么这个设计需要说服老板,颇要花点功夫了。

如果我的这个设计,考虑了今后5年内可能遇到的项目,而且在今后5年内的技术进步中,这个设计不会落伍。那么我就是“超级天才”。没有一家公司(也许banq的公司除外)敢要我这样的设计师。

再换一个说法,banq的JdonSD,到现在有了多少个版本?不断了修改了多少设计?这些设计是你在一开始就已经考虑到了的吗?如果有这样的一个软件,他实现了所有的可能性,对于他的使用者来说,只存在一个如何配置的问题,他本身已经不再需要改进,我认为这是神话。

再换一个说法,我们需要一个标准,来判断什么是有前瞻性的设计,而什么是过度设计?我认为需要通过“长期维护成本+长期重用成本”来衡量。因为变化是无穷的,我们如果能花20%的成本,满足80%以上的需求变化,这样的设计我认为就是优秀的设计。而剩下的20%变化,应该在具体项目中具体解决,而不是提前解决,这样的追求,我认为就算是过度设计!

以上是我的一点初步的设想,不客气的地方,望banq原谅。

banq
2004-02-13 23:34

zbw 有一定道理。

我从另外一个角度说老板和设计的关系,如果老板意识到进行框架或可重用组件设计和完善实际是将公司的积累精华保留下来,我想老板肯定很支持。

以前我看到东大阿派老总就提出三大目标,前面两个是:提高开发效率;提高软件可重用性。这两点都和软件复用技术有关,可见明智的老板必然欢迎可复用软件技术。

中国信息化历程还很短,只有个别少数单位或个人深切饱尝信息系统反复维护、难于扩展之苦。总之一句话:硬件扩展只要花钞票就能扩展,软件则不是这样容易,如果原来软件系统仅仅对“够用”设计,请来再大能耐的高手也无法使得“老树发新芽”,死路一条,难道真的只有推倒重来?

当然政府一直喜欢这么做,这是异类,不去理会它。

8Go 1 2 3 4 ... 8 下一页