|首页|产品介绍|优秀论文|关于我们|诚聘英才|联系我们|
 
模式化轻松重用过去  
 
模式化轻松重用过去

软件拒绝喜新厌旧

 

重用软件再工程的灵魂

 

举一反三的结果——面向模式的Web化再工程辅助平台eVWB

 
Web化再工程的两种整体解决方案
 
 
北京工业大学软件工程研究所 赵晓华
    很多搞软件的人喜欢将目光盯在程序上。着眼于程序还是系统,只要看他是就事论事还是举一反三就大致可分经纬。软件再工程如果“就事论事”,就会陷入“维护地狱”,只有“举一反三”——模式化思考——才能从“地狱”中自拔。
20世纪90年代“软件模式(Software Patterns)”被引入软件工程,确切地说是再工程将其引入了软件开发技术。这可能是软件工程诞生以来最大的一次理论飞跃,也开创了一个新的理念—— 再工程与模式化运动

    美国加利佛尼亚大学环境结构中心研究所所长Alexander博士用了约20年的时间,对舒适住宅和周边环境进行了大量的调查和资料收集工作,发现人们对舒适住宅和城市环境存在着共同的认同规律。他把它们归纳为253个模式,对每一个模式都从Context(模式可适用的前提条件)、Theme或Problem(在特定条件下要解决的目标问题)、Solution(对目标问题求解过程中各种物理关系的记述)三个侧面进行描述,并给出了从用户需求条件分析到建筑环境结构设计直至经典实例的过程模型。

    Alexander的贡献主要在两方面:其一是集既往之大成——它概括归纳了迄今为止各种风格建筑师的共同设计规则,给东西方、古代派、现代派建筑设计与城市规划提供了共同的语言和准则;其二是他不仅给出了方法,还给出了最优解决方案。     

    在Alexander研究模式以前,人们注重研究的是高质量、高效率、低成本的系统开发方法,而Alexander的模式注重则是“什么是最好的、成功的”系统。为了找出最优方案——模式,Alexander用了20年对既存物进行比较分析;如果没有对大量既存建筑的逆向分析,就不可能筛选出最优方案,从这一点可以说模式思想起源于再工程。
查看大图

    1990年,软件工程界开始关注这一住宅、公共建筑与城市规划领域的重大突破。最早将该思路引入软件工程方法学的是1991~1992年以“四人帮(Gang of Four,GoF)”自称的四位著名软件工程学者,他们在1994年归纳发表了23种设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟。

    所谓“模式”是指遵从某种规则或规律反复出现的思维方式或表现。Alexander把模式的集合称为模式语言(Pattern Language)。构成模式语言的各模式是针对某一特定前提的解法,它们记述着我们身边频繁发生的某类问题及其基本解法。我们可以反复使用这些解法,对同类问题可以使用同一解法,而不必总是一切从头做起。模式并不是单独存在的,它们可以由粒度小的模式组合而成,也可以和其他模式一起组合成粒度更大的模式。

  软件模式是将“模式”的一般概念用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式并非仅限于“设计模式”,还有“体系结构模式”、“分析模式”、“过程模式”等,软件生存期的各个阶段都存在着被认同的模式。换言之,是不是软件模式取决于是否按照模式的基本构成方式来描述,而与问题域和以软件生存期的哪一阶段为对象无关。根据这一思路,近来的模式化研究已将模式概念的应用从软件开发领域推广到组织机构、应用业务、经营活动甚至日常生活领域。对此西方称之为“模式化运动”
查看大图

    面向模式的软件再工程

    模式不是面向特定的,而是面向一般的;模式应该能够得到广泛认同;模式的形态是多样的,可以是物理实现级的,也可以是逻辑抽象级的,可以是方法模式,也可以是过程模式、结构模式;非模式是一对一的,模式是一对多的;模式可以重用……

    模式的思想是基于对既成的继承——对既存系统的模式化抽象和既成模式的再利用。面向模式是在面向对象思路上建立起来的,可以将软件模式看成“宏对象类”,这是一个理解软件模式的捷径。

    可以认为软件模式是对软件开发这一特定“问题”的“解法”的某种统一表示,它和Alexander所描述的模式定义完全相同,即软件模式=一定状况下的{问题+解法}。如图1所示,软件模式的基础结构由4个部分构成:问题、前提条件、解法和适用结果。
目前尚没有对于上述基本构成表述法的约束,因此用UML、DFD或其他表述法在理论上都是允许的。由于面向模式方法也被解释为“宏面向对象方法”,所以一般用UML表述较顺理成章,特别是对下层使用Java、C++等面向对象语言的软件模式而言。图2是用UML类图表述的软件模式元模型。

  <1> <2>
 

版权声明

北京工业大学软件工程研究所 版权所有
建议使用:1024*768分辨率,16位以上颜色、
Netscape6.0、IE5.0以上版本浏览器和中文大字符集
网页设计:软件工程研究所