框架的评判准则

今天被问起,一个框架的评判准则是什么?如何判断一个给定的框架是不是一个好的框架?在给定一个项目时,如何选择框架?

这是个比较困难的问题。而且比较泛。我不知道国际上是否有人在研究这个问题,我看到很多的文章在谈论框架的作用,面向框架的设计开发方法,针对某个领域的框架构造等等,但是对于框架的评判,却很难找到合适的或者令人信服的方法。你很难仅仅凭借一个方法来评判一个具体的框架的优劣。或许,这是一个好的研究方向。

一个框架通常是面对一个领域的(从广义上说,一些基础构件框架如J2EE也是面对一个领域的),其实现可能也是多种方法的综合, 不仅仅是面向对象。框架由于强调高的可复用性和针对一个具体领域较为完整的解决方案,以及足够能力的可扩展性,这使得框架的构造相当复杂。其评估也必然是相当复杂。

但是,根据对框架的理解,框架的主要作用,我认为框架的评判可以从以下几个方面着手:

框架的稳定性。框架是为了构建具体的应用程序的,应有程序的稳定性建立在框架的稳定性之上。稳定性有几个方面:框架是否符合开-闭原则?是否对扩展是开放的,对修改是封闭的?如果建立一个新的应用程序需要对框架作较大的改动,说明框架不稳定。稳定性的另一个方面是,扩展框架建立应用程序引入的错误是否对框架造成影响?

框架的学习曲线。从框架构建应用程序和从头开始设计不同,从头开始可能有很大的发挥的空间,而框架基本上已经确定了构建应用程序的体系结构。其内部有一套固定的类之间的关系。要复用这个框架并对其进行扩展,首先要了解框架的构成,这必然要个学习过程。如果框架的学习是复杂的,则框架的可复用能力就要打一个折扣了。这要求框架的结构足够清晰,还要求有足够的文档和良好的描述的框架的语言和方式。

框架是否提供了该领域的足够多的支持,它的覆盖范围是否足够广。我们利用框架来构建应用程序时,希望框架提供的功能足够强大和丰富,只需要很少的扩展或配置就可以生成应用系统了。

框架的扩展方式和扩展能力如何?框架必须要有足够的扩展能力。框架构造的一个动力来源于应用程序是可以按需定制的。但是软件需求是不断变化和扩展的,要求框架能够适应这些变化。还有就是框架是采用何种方式进行扩展,是否方便?

可能其中有些是矛盾的。比如,黑盒框架的学习曲线比白盒平缓,但是就扩展能力来说,可能不如白盒框架。

一时乱想,不成体系。希望能得到更多的帮助。
posted @ 2005-02-01 15:26  Ahha  阅读(185)  评论(0编辑  收藏  举报