分类: 项目管理
2010-11-21 22:04:28
每当空闲的时候,回想过去做过的系统,总是出现若干个念头,如果这样,如果那样会不会做的更好,下次如果我重新做一个会如何如何…..于是决定把这些想法记录下来,算是一次总结。
提到软件应用系统优化,人们很快就会想到:更新设备,采用更好的数据库系统,抑或是优化代码,等等。个人认为,这些说法都对,但是又都不尽对。
我们通常的应用系统分两部分,应用软件和其他配套的承载资源。配套的承载资源就包括给我们提供数据存储的数据库系统,软件运行的硬件,以及网络带宽等相关的资源。优化一个系统是一个需要全局考虑的事情,应该从整体的角度去寻找一个合适的解决方案。因此优化应该从软件和资源这两方面去考虑,考虑的因素就是综合成本最少,包括时间,风险、钱等。我们如果只是一味的要求提升硬件,而不去研究提升软件的效率,从技术人员的职业素养以及经济成本的角度都是说不过去的;反之,如果只是专研软件技术细节,而不提高外围的资源,会陷入一个死胡同,浪费了时间成本也增加了产品的风险。
提升资源我这里就暂时不多写了,这个基本属于通用方法,只要砸钱大家都会,接下来主要谈下优化软件。
优化软件,主要从 业务流程,架构设计,编码技术三个层面去考虑。这三个层面是软件的从宏观到微观,从提纲到细节的过程,同样也对应了软件设计过程中需求分析,概要设计,编码的过程。理顺业务流程,减少不必要的处理可以从宏观的角度优化系统,通常这个也是最见效果的,但是这个也是大家最忽略的。同样一个事情,别人用一步做完,你用4步做完,即使你每一步都比别人快一些,但是整体下来你还是慢。接下来是架构设计。架构设计是一个软件的框架,架构设计的好坏决定了这个软件的可扩展性,易用性,稳定性,并发性等等好多方面。同样是网络编程,不同的并发模型使用的场景是不同的,如果选错了模型,结果必然是再好的编码技术也无法弥补。最后提到的是编码技术。编码技术对于一个软件来说是基础,如果没有足够的编码技术做保证,其他一切都是纸上谈兵。但是编码技术也仅仅是编码技术,能够达到一般的水准就够了。个人认为这个是最后考虑的一个因素。
优化软件系统也就像是平时做其他事情一样,抑或像是人生的一个缩影。举个简单的例子,我们平时都在喊没钱,穷,面对现实,我们现有的资源只能是那么多,还不像我们优化软件系统可以容易的依靠增加更多的资源来优化,于是我们只能去考虑在现在的环境下怎么去突围。如果我们死扣着每天节约一个苹果,依靠每天省出来半块钱而不从大的角度去寻求解决方案,那一辈子就只能如此不会有大的起色。合理的方法应该是从长远的角度,从大的方向上去考虑,同时适当的兼顾细节。换个工作,换个方向,采取不同的策略等等都是可以尝试的。