关于通用软件框架

原创 2007年10月01日 14:16:00
术语框架在软件工程中被定义为从相同类型的应用中挖掘出的可复用的体系结构。问题是,相同类型的应用这一限定范围在面对现实世界时往往表现出超出原定预期的多样性。虽然仍然可称作相同类型,但新的应用很容易便在不经意间提出某种超越已有框架能力的需求。一旦出现这种情况,用户通常便踏入了修改扩展旧有框架的泥潭。他们很快发现,即使拥有原框架的源代码,新功能也很难被融洽的添入到框架中。旧有的结构很容易就被修改得面目全非,最终导致整个框架的推倒重来。
 
如果你曾经经历这样的窘境,那么你的第一反应很可能是抱怨框架设计者在通用性上的考虑欠周。然而,既然框架被定义为相同类型应用的归纳,那么它就不可避免地包含有领域相关的细节。一旦你的需求超越了这些细节所定义的结构,这个框架自然有可能在你的压力下出现雪崩。
 
除非,这个框架包含的层面足够广阔,即使在特定的应用层不符合你的要求时,其更低层次的结构仍能使你获得使用上的便利。这样一个理想化的大框架形如下图:
  
 


分层的框架设计
 
 
图形最底端是最为通用的框架层。这个层次不包含任何领域细节,理论上应适合于所有的应用。稍上一层的框架包含有一定的领域相关细节,但这个领域的限定范围足够大,因此该层次仍适用于大部分应用。随着层次向上攀升,领域相关的细节越来越多,相应的层次也就越来越局限于特定的应用范围。最顶层是极其专业化的框架层。也可以认为,最顶层便是某个特定的应用。即使是同一个应用,也存在变化的空间,因此从这个意义上来看,应用和框架并没有明确的界限。
 
遗憾的是,大量的软件框架并非遵循这样的结构完成。通常的情形是,极度专业化的框架的开发者同时也在开发属于通用框架的内容。并且,两者混杂在一起,缺乏明确界定。这样的框架即使由最优秀的程序员来完成,也必然徒劳无功。
 
在确定了软件框架层次观之后,你也许立刻就对最底端的通用框架产生了兴趣。毫无疑问,开发一个理论上能适用于所有应用的软件框架对任何一个编程者来说都具有莫大的吸引力。简单设想一下,这样一个软件框架的开发必定具有极大的挑战性。
 
不过,如果从另一个角度来考虑,通用软件框架的开发未必是件太难的事。因为,既然这个层次不具备任何领域相关的细节,那么它必然极其的简洁。我们所要做的只是抓住它背后潜在的规律,然后一切便如顺水推舟般容易。这就好像是爱因斯坦的那个了不起的公式E=mc2所揭示出的:上帝喜欢简洁。
具体如何开发,请参考BOS。BOS的源码下载地址:http://sourceforge.net/projects/bos-code
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

通用软件架构设计

应用级架构层面,作为一个应用级的架构必须对整个系统的共性应用处理进行抽象,让有共性、有规律的东西由架构来统一处理,但架构的设计并不仅限于此,还应从架构设计的原则和涉及商业领域出发主动为应用系统提供更高...

推荐+1置顶+1(分享、讨论、实现) 通用软件注册功能之建立有效的软件保护机制

推荐+1置顶+1(分享、讨论、实现)通用软件注册功能之建立有效的软件保护机制          众所周知,一些共享软件往往提供给使用者的是一个功能不受限制的限时使用版,在试用期内使用者可以无限制的使用...

POS58通用软件

  • 2015-11-19 09:57
  • 1.82MB
  • 下载

通用软件KPG55

  • 2015-06-20 21:34
  • 77KB
  • 下载

软件工程通用makefile写法学习总结

工程通用makefile简单实现 最近学习了一下makefile,总结了一些经验,自己试着写了一套简单通用的软件工程makefile,总结下来以后可能会用到。 我的工程目录是这样的结构: 顶层目...

hp 打印机通用软件

  • 2016-04-28 16:34
  • 45.92MB
  • 下载

Linux软件桌面快捷方式创建--通用

创建桌面图标 前提:以root 1.创建文件-进入到软件安装目录下面的bin目录 这里以webstorm前端编辑工具为例: sudo gedit WebStorm.desktop 2.写入内...

通用软件自动更新模块

  • 2014-04-20 05:41
  • 172KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)