本书从软件架构、框架、设计模式的方面来讲解了一些特定领域的框架,也就是一些模块、组件和设计模式的合适的结合。框架提供了通用的、可重用的软件架构,并可以产生新的应用。但是一个框架无法适用于多个商业/工业领域,需要构建特定领域应用框架。
本书给出了大量的例子涵盖了大量应用领域,包括:
柔性制造系统结构
计算机集成制造
新一代控制系统
并发工程
可靠的分布式计算
搞性能的WEB服务器
多媒体远程通信
网络和电信
工业可视化
一、框架定义
1、 一组类或组件的集合,它们为一个特定领域提供了一组服务和功能。
2、 一组交互的软件组件的规范,它们构成了特定领域的解决方案。
3、 一个面向对象的类层次结构和一个内建的交互模型,他们定义了从该类层次结构中所导出对象的交互方式。
4、 软件架构的一种实例,它可以使设计的组件具有良好的互操作性。
二、框架分类
1、 根据作用域可以将框架分为系统基础结构框架、中间件集成框架、企业应用框架。
系统基础结构框架是一组可以支持系统基础结构领域的高校可移植框架,例如可以支持操作系统、用户界面、通信及语言处理等,它们通常是由内部开发和使用的,有时也用作供其他应用使用的通用应用。
中间件集成框架的作用是增强软件对基础结构的模块化处理能力、重用能力及扩展能力,从而能够在分布式环境中无缝运行。中间件集成的例子有OmniBuilder框架和对象请求代理(ORB)。
企业应用框架处理的应用领域很广,如银行、电信、制药等,它们是领域应用的基石。企业应用中著名的实例有IBM SanFrancisco、企业资源规划(ERP)。
框架类别 | 框架实例 |
企业应用框架 | Amulet,IBM SanFrancisco,Asyn,LAMA,CORTAN,OMAC框架 |
中间件集成框架 | GUI,QC Services Layer,PFC/Open,OmniBuilder,PFX,FrameData Feed Handler框架 |
系统基础结构框架 | Protocol Layer,ACE,OPTF,DynaFind,ARES,DORB框架 |
2、 根据扩展技术,则可以将框架分为白箱框架、黑箱框架和灰箱框架。
白箱框架是通过面向对象特性(如继承和动态性)进行扩展的。我们对现有功能的重用和扩展是通过以下两种方式进行的:
■ 继承框架的基类。
■ 利用模式对预定义的钩子方法进行重载。
白箱框架的实例有MacApp和ACE框架等。
在黑箱框架中,我们获取可扩展性的方式是为组件定义接口并使用对象组合技术将其插接到框架中。其中,对现有功能的扩展方式包括:
■ 定义符合特定接口标准的组件。
■ 使用模式将组件集成到框架中。
黑箱框架的实例有G++组合用户界面框架。
灰箱框架是白箱框架和黑箱框架的混合。在灰箱框架中,我们既可以使用继承和动态绑定进行扩展,也可以通过定义接口来进行扩展。灰箱框架的实例有GUI和SanFrancisco计划。
三、框架文档
文档是软件生产过程中的关键部分。文档是框架的主要知识来源。框架文档的主要用户可以分为框架开发者和应用开发者。
文档类型 | 框架开发者 | 应用开发者 |
示例 |
| 是 |
操作指南 |
| 是 |
设计模式 | 是 |
|
接口契约 | 是 | 是 |
参考手册 |
| 是 |
框架概览 |
| 是 |
其他文档类型 | 建模图表 | 用户手册 故障检测指南 |
四、框架比较
应用框架调查的比较参数包括操作系统、程序设计语言、领域范畴等。
1、操作系统:Windows、UNIX、Linux
2、语言:C++、Java
3、 领域范畴
拥有框架最多的两个领域是商务/金融和电信/网络。
框架领域范畴
编号 | 领域范畴 | 框架列表 |
1 | 通用(无领域) | MaccApp,G++ |
2 | 通用GUI | GUI,Amulet,Visible Properties and Actions Framework |
3 | 数据库和数据管理 | FRAMEWARE,PFX(持久性框架),ROA’D,QC Services Layer框架,Advanced Software Architecture Platform |
4 | 商务和金融 | Asyn,SanFrancisco,BOOF,PFC/Open Frame,Omni Builder,Rule Parsing,File Parsing,CSFramelets |
5 | 保险 | Asyn,SanFrancisco |
6 | 医疗 | HBOC应用框架,Medical Business Object框架,Advanced Software Architecture Platform,Philips New York Project(开发中) |
7 | 教育和娱乐 | Multimedia框架 |
8 | 电信和网络 | 适应性面向对象事件过滤框架,Advanced Software Architecture Platform,CORTAN,Protocol Layer框架,ACE,SIGAL,DORB,Jadve |
9 | 工业和制造业 | OMAC,PrismTech BOF和CORBA服务 |
10 | 软件开发 | CLOS Meta Object Protocol,G++,OPTF,LAMA |
五、框架的经验
我们很清楚框架开发不是一件容易的事情,教授框架的正确使用方法也不是一件轻松的工作,有时候为了获取足够的灵活性和可扩展性,框架需要改写3-4遍甚至更多,但是最终得到的框架将说明这些努力是值得的。开发框架时需要记住一些经验方法。
1、 框架和类的概念存在很大的区别。类是框架的一部分。
2、 将热点分析和设计模式相结合的设计过程提供强大的开发工具。
3、 只要有可能,框架应当建立在一个标准之上(如CORBA)。使用标准可以避免很多问题,比如集成,与其他应用之间通信。
4、 原型方法非常重要(它大大增加了灵活性,提供了很多领域知识,但同时也需要更多的开发时间)。
5、 迭代是必须的。好的设计和实现需要多次迭代。
6、 框架开发需要有经验的架构师,有经验的开发人员和有经验的工程师。换句话说,框架开发需要顶尖人才。
7、 完备的文档是关键。
8、 及早培训团队并就基本方法达成一致。
9、 避免框架组件之间过多的数据耦合。
10、尽可能多地使用模式。
11、选择合适的开发团队人数。
12、在设计阶段花费足够的时间。
13、进行功能 抽象并隐藏细节。
14、保持简单性。设计应该尽可能简单,随着时间的流逝和需求的增加,复杂性会自动地增加。
15、将通用的子领域和特定的子领域分离。
16、框架的学习曲线非常陡峭。在学习框架的各个阶段中,我们使用合适的文档类型能够减少学习时间。整个学习过程分为三个阶段:
1)、框架概览
2)、示例和参考手册
3)、接口契约、操作指南、设计模式。
17一些成功的商品化框架中的启示:
1)确定客户已经同意你的框架方案。
2)确保投资方知道这是一项长期投资。
3)确保投资方知道框架将成为他们的系统中最可靠的部分。
4)为应用开发人员提供大量的调试接口。
5)完成应用所需要的代码应该很少。
6)将客户与框架变更隔离开来。
7)性能(执行性能,制作/维护性能)是一个重要的问题。
六、高层重用技术分类
|
高层重用 |
设计模式 |
框架 |
软件架构 |
架构风格 |
架构设计风格 |
架构框架 |
架构平台 |
框架:提供一组相互协作的类及运行时对象,用于生成某些特定领域的应用软件。我们可以根据特定应用的需求方便地对框架中的抽象和类进行定制,以重用框架的设计和代码。
软件架构:编制软件也称为架构软件。一个可操作的软件内部应具有某种形式的架构。软件架构技术中可重用的实体可以进一步地分为4类:架构风格、架构设计风格、架构框架、架构平台。
架构风格给出了精心设计的软件全局的通用形态。例如,Shaw和Garlan提出了7种架构风格:管道和过滤器、面向对象的组织、隐式调用、分层系统、仓库、状态机、解释器,及过程控制。
架构设计风格给出了软件架构的设计方法论。Shaw将众多的设计风格分类为如下8种:功能分解、数据流、面向对象、状态机、面向事情、过程控制、数据结构及决定表。
架构框架是来为详细而完整的框架,它为开发特定领域的应用系统使用了一系列多种架构设计风格。一个采用了某些设计风格的软件架构制品,只有当它具有完备的文档,并具备包含一个特定的应用领域所需要的充分灵活性时才可以作为软件框架来重用。
架构平台提供了一个可以适应多种应用系统的灵活的底层结构,架构平台的设计目的即是为了应用软件的互操作性提供硬件平台及操作系统平台无关环境。我们可以将它们用做底层结构,以促进对象级的协作和重用。对象管理组织(OMG)的通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA)即是一个示例。
本书中提供了大量的特定领域的框架,内容比较详细,有好多内容就不用列举了,可以作为软件设计框架行业参考书。在今后的设计中如果遇到框架设计问题,我觉得先参考本书内容找到是否有相关的框架的实例,这样可以为我们软件框架设计提供方便之门,缩短软件项目开发时间,降低成本与提高软件质量,避免风险,确保项目的顺利的完成。