人们在探索软件工程方法的几十年里,提出了许多软件开发的方法,但这些方法都不是严密的理论。我们不应该教条地套用方法,更重要的是学会"选择合适的方法"和"产生新方法"。
软件开发中的三种基本策略:复用、分而治之、优化与折衷。
1.复用
对于建立软件系统而言,所谓复用就是利用某些已开发的、对建立新系统有用的软件元素来生成新的软件系统。在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地,可以相信成熟的东西总是比较可靠的,而大量成熟的工作可以通过复用来快速实现,人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得既快又好。
我们将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component),软件复用就是直接使用已有的软构件,即可组装(或加以合理修改)成新的系统,而可以不必每次从零做起。一方面,软件复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量,因此由软构件组成的新系统也具有较高的质量。
2.分而治之
分而治之是指把大而复杂的问题分解成若干个简单的小问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,也完全适合于技术领域。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。
3.优化与折衷
软件的优化是指优化软件的各个质量因素,如提高运行速度、提高对内存资源的利用率、使用户界面更加友好、使三维图形的真实感更强等等。我们应该树立这样的正确认识:优化工作不是可有可无的事情,而是必须要做的事情。
当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把 Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级,其技术水平已经远胜于目前国内领先的图形学相关科研成果。
优化工作是十分复杂的,有时很难实现所有目标的优化,这时就需要"折衷"策略。软件的折衷策略是指通过协调各个质量因素,实现整体质量的最优。
软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象"舍鱼而取熊掌"那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了。
折衷是有原则的,如果滥用折衷的话,那么一旦碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以,我们应当坚持这样的折衷立场:在保证其它因素不差的前提下,使某些因素变得更好。
人们对软件存在着许多错误的观点,这些观点表面上看起来很有道理,符合人们的直觉,但实际上给管理者和开发人员带来了严重的问题。认为正视这些问题上很有必要的。