可扩展性是指软件扩展新功能的容易程度。可扩展越好,表示软件适应“变化”的能力越强。由于软件是“软”的,那是否所有的软件必须设计能扩展新功能呢?这要视软件的规模和复杂性而定。
如果软件规模很小,问题很简单,那么扩展功能的确比较容易。要是软件的代码只有100行,这时就无所谓“可扩展性”了,你想怎么扩展都可以。如果软件规模很大,问题很复杂,倘若软件的可扩展性不好,那么该软件就像用卡片造成的房子,抽出或者塞进去一张卡片都有可能使房子倒塌。
是否任何软件在设计的时候都要考虑可扩展性呢?不见得,如果确信某个软件在它淘汰之前永远都不会变更(如一次性产品),那么在设计阶段就没必要考虑可扩展性,这样省事省力。
可扩展性越来越重要,社会的商业越来越发达,需求变化就越快。需求变化必将导致修改(或扩展)软件的功能,如果软件的扩展性比较差的话,那么修改(或扩展)功能的代价会很高。
现代软件产品通常采用“增量开发模式”开发商不断地推出软件产品的新版本,从而不断地获取增值利润。如果软件的可扩展性比较差的话,每次开发新版本的代价就会很高。虽然开发商抓住了商机,但却由于设计水平差而导致没有赚取多少利润,真是要活活气死。体系结构的稳定性是根据那些稳定不变的需求而设计的,体系结构的可扩展性则是依据那些可变的需求而设计的。从字面上看,稳定性和可扩展性似乎有点矛盾。两者之间存在辩证的关系:如果系统不可扩展的话,那么就没有发展前途,所以不能只关心稳定性而忽视可扩展性;而软件系统“可扩展”的前提条件是“保持结构稳定”,否则软件难以按计划开发出来,稳定性是使系统能够持续发展的基础。所以稳当性和扩展性都是体系结构设计的要素。
人们对物质有喜新厌旧的天性,你可以经常改变房子的装潢和摆设,但不能每次都去拆墙,挖地基。在软件开发过程中,变化是司空见惯的事情。如果每次变化都导致体系结构发生大的变化,那简直就是“伤筋动骨”,这样的体系结构无疑是败笔之作。
分层开发是一种重要的体系结构,有着良好的可扩展性,而且在扩充或修改功能时,基本不会破坏原有结构的稳定性。可以参看我的分层开发思想与小笼包一文。
四.可复用性
复用就是指“重复利用已经存在的东西”。复用不是人类懒惰的表现,而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。
复用有利于提高产品的质量、提高生产效率和降低成本。由经验可知,通常在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地,可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产效率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做的又快又好。
企业成功地开发了某个软件产品之后,如果下个新产品能够复用上个产品的体系结构的话,那么新产品的系统设计的成本和风险将大大降低。
可复用性是设计出来的,而不是偶然碰到的。要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这样的体系结构才可以被复用。
页次:
1/1 1篇/页
首页 上一页 下一页 尾页 合计
1 篇 Go: