fly0176
作者fly0176·2011-04-22 10:27
IT顾问·新明星

软件开发,我们要传承的不仅是技术

字数 2333阅读 2834评论 3赞 4
一个复杂的产品,几十人,甚至几百人在开发,并持续了很多年,这样的产品,保持设计思想的一致几乎是不可能的。
 
通信行业,都是在开发大型的软件。开发这种大型的软件,最重要的是什么呢?就是设计思想的传承。
 
可惜的是,我们很少能够看到思想级别的文档。
 
谈技术的文章很多,谈思想的文章很少。技术好谈,思想难谈,因为思想似乎是看不到摸不着的东西,我们很容易评价一个人一个产品技术很牛还是很烂,却很难去评价一个人或一个产品的思想。
 
可是,思想、文化这样很虚很缥缈的东西,却往往起到了决定性的作用,无论是对我们的人生还是对产品的开发。
 
记得我刚进入系统架构组,发现我们组里的人总是在争论,几乎每一个需求每一个决定都会面临两种不同的意见。每次开会都会因为与会的人员不同而发生不同的倾向,产生出不同的结论。我们组的人员之间思想的差异,基本上也体现了ATM和IP之间思想的差异。
 
ATM和IP是差不多时间出现的,却从一开始就是两种完全不同的东西。ATM的目标就是为电信用户服务的,它一开始就强调QoS,要实现端到端的质量保证,为此做了很多努力。而IP是学校里的人为了互相通信,写写电邮,搞搞BBS用的。强调的就是互通和简单实用。
 
复杂的ATM和简单的IP高下已分,现在通信网络开始全面部署IP并不是通信人心甘情愿的,而是大势所趋,当年那些搞ATM的人现在又加入到了IP的行列里来了。可是行列易换,思想难移,他们重整旗鼓,开始了把IP改造成ATM的伟大创举,那就是电信级的IP技术。
 
我是一个实用主义者,也是一个简单至上的人。能用最简单的方法达到目的,就不用复杂的方法。我一直搞不懂为什么要弄出那么多级别的QoS来区分客户,为什么要搞出那么多复杂的接入控制来增加一点点的带宽利用率,为什么把那么多精力花在各种层次的冗余和备份上而极大地增加系统复杂性,为什么WCDMA要搞宏分级来提高语音质量?这些措施,本身引入过多的复杂因素,好处却有限得很。
 
做系统架构的人常常就要在简单而有点缺陷和复杂却看起来很完美的方案之中作出抉择。当我们转入IP,我们是不是就应该学习IP的思想,让世界变得简单而不那么完美呢?
 
还有一个思想的争锋,就在于我们是让硬件变得强大而软件变得简单,还是用软件去解决所有的问题?在一个硬件和带宽资源越来越便宜的时代,这似乎不需要去争论,答案是很明显的。可是有些过来人,似乎还是停留在过去的思维当中,总是希望通过软件的修改来解决硬件不够用、带宽不够用的问题。而这些软件的修改不仅破坏了原先的系统设计,使系统架构不再简单、清晰,也极大地增加了软件的复杂度。
 
当然,一个公司为什么在引入新硬件的时候会出现那么多问题,这也是值得我们思考的。在系统设计的时候是否要考虑到硬件的升级,软件该如何分层,层数过多过少都不好。移植已有的代码还是重新写代码,也是要抉择的。所以,一个公司不能总是被市场逼着跑,因为用户抱怨了才有所改进。硬件的发展太快了,不应该固守原有的硬件,而应该尽早尽快地采用强大的硬件,并且让自己的软件尽量减少移植的成本。这些思想必须贯彻在所有的新feature的设计中,无论是系统架构设计,还是软件架构设计,还是软件的实现,都要有统一的思想,这些思想都应该文档化,以利于传承。
 
在通信领域,随着光纤传输的发展,交换机的普及和降价,带宽已经越来越便宜了,我们距离2兆线打遍天下的日子越来越远了。可是很多人还停留在过去的思路当中,为了一点点的带宽,使用相当复杂的算法,又是非线性,又是无限逼近,又是很多的QoS等级区分,这些都已经落伍了。现在用户看中的是throughput,是performance,是stability。软件越简单,这些方面就会越强。如果用户知道我们大量的资源被用在计算几十K的带宽利用率上,而导致了大量的问题,鼻子不气歪了才怪。
 
现在IP领域也搞出了很多复杂的技术,但因为复杂也没有被推广,如EVC,MPLS,IPv6等等。记得当年我在上海参加CCNP的培训的时候,听过一个礼拜动态路由的课,学习并配置了流行的动态路由技术,RIP,OSPF,ISIS。课程结束的时候,我问老师,哪种路由协议应用最广泛,老师笑笑说,当然是静态路由咯!当我后来做OSPF的系统设计的时候,我充分地理解了这句话。我们形容OSPF在无线接入网的应用,如大炮打蚊子。它引入了过多复杂的东西,尤其是和Security相遇的时候,和QoS相遇的时候,和板卡间redundancy相遇的时候,OSPF带来的复杂度无法想象,以及它的组播报文的带宽占用、CPU占用,对troubleshooting的影响,都是值得仔细思考的。
 
我觉得将这些思考的过程记录下来,比仅仅输出一个需求文档,要有意义得多。当我们做取舍的时候,我们是遵循的简单实用的原则,还是复杂完美的原则,我们关注的是用户的哪种体验,我们是否是一个解决方案的提供者,还仅仅是一个销售产品,兜售feature的生产商?记录思想,是为了传承,是为了统一。不能让系统架构遵循的套路和软件架构及实现完全相反,这样的系统在今后的发展和维护上,就真是堪忧了。
 
最后引用一下我朋友awker特别推崇的一句话:Keep it simple and stupid,简单即美大智若愚,在我看来,这应该是贯穿在我们所有的系统设计、软件设计上的思想。可惜公司里有很多人都不是这么想的。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论3 条评论

meShare2011meShare2011顾问融智
2012-07-21 11:08
Simple and Stupid.
JonJon数据库管理员东南融通
2011-07-22 15:03
简单了怎么体现他们的价值,怪圈。很多人喜欢复杂,乐此不疲。真不知道简单有什么不好。
mophismophis软件开发工程师杭州
2011-05-27 19:06
对软件也有染指呀?
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广