目前在框架设计方面成熟的技术较少,大体可分为两类:实践法与系统法。
1. 实践法
许多专家甚至认为框架不可能是系统设计的结果,而只是在从底向上设计中的一个结果。实践法也可以说是实例(Example)驱动的设计方法,它是从若干个具体的典型应用中,抽象出相似点来构建框架,框架反过来又应用于不同的问题,并在解决不同问题的过程中得到更新,在框架的设计和实现的两步中,不断反复。等到框架逐渐成熟时,需要修改和反复的内容就会越来越少。
具体步骤为:
分析问题领域,确定所需框架。从一类应用而不是单个的程序去分析、比较各种不同的软件解决方案,寻求这些方案的共性和每个程序的唯一性特征。这些共性,尤其是那些经常被多个程序使用的部分将成为框架的基础。然后定义框架体系结构并设计,包括设计用户与框架间的交互、给用户提供的最终工具等。
框架的实现。包括框架核心类的实现、框架的测试、框架的试运行、框架的反复更新。
框架的部署。包括文档的提供、分发过程,为用户提供技术支持,维护和更新框架。
这种方法也就是先在具体类基础上进行泛化,提取出抽象类。抽象化也是框架开发的一个关键。不过,根据这种方法设计出的框架的可适用性很大程度上依赖于其基于的具体应用。
由于框架的开发具有反复性,且需要深入了解应用领域,因此框架的开发很难按进度表进行。框架的设计者也需要和应用开发者紧密合作,因为框架只有在使用它开发应用的过程中才能发现其哪些部分有待改进。
2. 系统法
由于有人认为框架的设计也可以通过系统的方法得到,因此人们提出了逐步泛化的框架设计方法。此时框架的设计分两步:
第一步是问题的泛化。它要求解决如下问题:问题领域中的哪些概念可以表现为变量,并且需要统一处理?是否可以发现一些具体的概念,它们能被泛化为一个更抽象的概念?
第二步是框架的设计。在这一步中,泛化是从反向考虑,以实现每一级的框架。换言之,最先实现最通用的框架,然后实现次通用的框架,以此类推。如图1所示, 其中,框架0就是最终要实现的框架。
这一步需要解决如下问题:系统的哪一部分可能需要改变?用户需要在什么地方向框架中加入自己的代码?
采用两步的设计方法可以避免在早期的开发过程中局限于应用专用的类和体系结构,并且有利于使用通用的设计模式。
框架的设计是一个反复的过程,在这个过程中需要领域和设计两方面的专家意见,框架用户和框架开发者之间的交流对框架的设计也很重要,因为框架是在不断反复的过程中逐步成熟的。
3. 框架设计与应用设计
框架的设计和应用的设计到底有何不同?一般而言,两者的侧重点不同。设计应用系统时,要求对专用领域的重要概念有深入的了解。这些概念通过建模演变成类,并作为实现整个应用的构建块。而设计框架时,重点在识别出必须具备灵活性的地方,也就是“热点”,这也是框架的关键所在。
构件库系统基于框架而不是具体的类,使得构件库系统的使用更具灵活性。但在框架基础上构建具体的应用时, 类的使用和开发总是随之而来,在框架上生成应用可以通过创建子类、配置各构件对象、调整实例等来获得。
4. 框架文档
文档必须包括如下内容:框架的目的,如何使用框架,框架的设计细节等。
原文(http://www.miiceic.org.cn/07/0702/070201/200910291632478.asp)