Flier's Sky

天空,蓝色的天空,眼睛看不到的东西,眼睛看得到的东西

导航

重用的粒度

Posted on 2004-07-08 10:02  Flier Lu  阅读(711)  评论(0编辑  收藏  举报
重用的粒度

http://www.blogcn.com/user8/flier_lu/index.html?id=1183014&run=.08F07F8

    最近正在看的两本书《产生式编程》(简称为GP)和《C++网络编程 卷2》(简称为CNPv2)中都讨论到了软件开发中重用的粒度问题。特别是[GP]中一针见血地指出

以下为引用:

     在OO发展的早期,人们相信对象是可以重用的,并且可重用的软件会作为应用程序开发的副产品,简单地“释放”出来。现在,OO社团普遍认识到这种想法离实际情况简直是十万八千里。可重用地软件要求必须自己地进行工程,为重用而进行工程(engineering for reuse)要求进行充分地研究。

 《产生式编程》第3章3.2节
 


     [GP]中进一步指出应该从两个方面:问题空间视角(分析方法)和解空间视角(实现技术)来讨论重用地问题。
     问题空间视角:我们一般关注的是单独的系统,这种重用是有限的,针对特定客户需求和背景的。而[GP]则指出应该更多地关注产品线、系统族以及相关领域。产品线是一系列相关的旨在“满足一个给定市场”的系统集合,其组成元素不一定要有很强相关性。系统族则是“一组分享足够多的通用属性的系统,可以使用一组通用的资源来构建它”。而系统族的构建需要针对特定领域的领域工程来划分范围。
     解空间视角:从传统的函数库、类库和模式,到高层的组件和框架,一层层演化而来。函数库关注算法的可重用性;类库则进一步将具有强内聚性的数据与算法绑定;模式则是抽象的针对处理变化的知识的归纳;组件则偏向于基于外部接口的封装。而框架则是[CNPv2]主要关注的层面,它不同于类库的被动性和独立性,其成员往往主动并且协作地通过回调(Callback)和IoC(Inversion of Control)来与使用者交互;框架同时也是模式的实践;框架和组件则是高度协作互不从属。

 btw: [GP]不愧是善于做逻辑思辨的德国人的著作,前三章写的高屋建瓴,让我第一遍看的时候感觉云里雾里,呵呵,思考几天后才好歹摸到点门道。希望把第一部分读完后回头再读,能够有所体会。:P