许多WebLogic项目的软件架构师或项目负责人已经在重用的努力中备受挫折而且死板的CASE工具套件用于开发可重用软件时给许多开发人员留下了坏印象因此究竟是什么改变了从而使得今天软件重用得以可行?在这个关键时刻三个关键因素使得人们觉得软件重用计划值得考虑或重新考虑 · 成熟基于组件的开发环境 · Web服务和面向服务的体系结构 · 面向重用的软件工程过程和工具 我将讨论为什么三个因素中的每一个对于有效软件重用的目标都非常关键并且许多情况下在越来越多IT机构中为什么它们和商业因素结合在一起使软件的重用计划成为标准操作过程中的强制执行部分 成熟的基于组件的开发环境 当回顾过去年的软件开发时无论在编程技巧的精巧方面还是在供开发人员使用的特定于语言的服务方面我们都可以看到一个稳健的过程从早期C只有有限的标准库而且很多事情依靠智力来自己做到结构化编程的提出以及到面向对象编程迅速壮大的早期阶段到CORBA的分布式组件基础结构和服务到今天的现代JEE和NET组件架构我们可以区分出一些使创建和使用可重用软件可行的主要因素 结构化编程技术对模块调用者使用的明确定义的功能协议概念有所贡献根据其前提条件期望的输入和输出参数(包括那些参数的语义)副作用以及调用所描述函数可能引起的任何违例条件等来定义一个协议该定义对在调用者和被调用模块之间传递明确的描述 面向对象编程引入了数据封装和多态的概念它们都对有效的软件重用有所贡献数据封装避免将底层数据结构暴露于对象的调用者这些数据结构用于管理持久数据并允许信息传递给与调用者目标更加准确的方法调用多态在将调用代码和实现分离的同时使类的开发人员能够提供含义丰富的抽象这些抽象与根据特定算法需求调整的内部灵活的实现结合在一起 进一步讨论一下分离的概念分布组件技术为开发人员提供了定义和部署粗粒度组件接口的能力其底层实现汇集了一组处理通用数据和功能目标的相关操作尽管早期组件基础结构提供的工具(如CORBA)有所限制并且开发人员经常必须成为火箭科学家来使所有东西能够正确地协同工作但是如果做得正确作为结果部署后的组件情形将会提供一个有效的灵活的可重用的应用程序基础结构 最后随着两个主要的组件体系结构(JEE 和NET)的成熟为开发人员提供了一个丰富而稳定的平台在该平台上可以构建和部署它们的组件这两种体系结构提供的技术服务例如事务完整性消息传递和目录服务安全异常处理远程访问以及许多其他许多服务他们使开发人员能够将注意力集中在组件功能上而无需关注工作需要的所有底层技术基础结构 Web服务和面向服务的体系结构 我相信您正在疑惑一些问题难道Web服务与面向服务的体系结构不具有相同含义吗?面向服务的体系结构是什么样的?它和Web服务有什么区别?简单来说面向服务的体系结构是一个这样的体系结构应用程序功能集中在一起呈现一种独立于其底层实现的松散耦合形式这些松散耦合的服务典型地呈现粗粒度能力这意味着它们通过某种形式的消息传递运行库能够汇集在一起 也可以说许多(如果不是大多数的话)面向服务的体系结构利用了正被主要应用服务器厂商实现和促进的基于Internet的Web服务基础结构 Web服务和面向服务体系结构的特性鼓励重用实际上从本质上来说它们也需要重用因为服务的唯一目标是将一整套功能向多个消费者公开如果这都不是重用那什么是呢?另外因为服务意味着部署一次就能在适当的位置访问它它们鼓励跨越应用程序边界的业务流程集合的概念 使一系列支持业务流程的服务交织在一起业务流程可能通过图形化的设计时用户界面来描述尽管支持这一概念的工具和底层机制还处于初期但是一些计划如BPELWS(Business Process Execution Language For Web Services)在启用这种形式的应用程序开发时做出了很大的承诺尽管期望图形应用程序集合将会完全取代其他开发技术的想法不太现实但是它确实在那些技术旁找到了自己的位置并且在这个过程中鼓励底层服务的更有效的重用 服务和组件之间具有支持软件重用的共生关系组件通常是服务背后的底层机制或者完全实现了服务所定义的功能或者为使用一个或多个遗留系统连接到现代web服务基础结构提供了必需的附带代码 软件工程过程和工具 过去的十年已经朝着遵守规则和有效的软件开发环境迈进了一大步迭代方法比如RUP(Rational Unified Process)鼓励关键需求的早期发现实施和提炼在有规律和及时基础上的增量改进与重量级的瀑布方法有巨大差别瀑布方法经常导致软件的晚交付并且无法满足用户需求这种情况不少因为用户需求经常会随时间改变 RUP和其他软件开发环境通过在开发过程中引入特定的Software Development Asset (SDA)搜索和重用回顾检查点来鼓励重用这些搜索和回顾活动发生在开发生命周期的所有层次上从最初的需求定义到分析和设计以及到实施现代基于UML的建模技术也通过为分析师和开发人员提供一个明确定义功能需求的简单图形方式来鼓励重用这种形式的需求可以被其他开发工具使用比如代码生成器映射引擎和资产元数据资料库基于UML的IDE工具不仅可以用于创建UML而且也适用于可重用的知识SDA例如设计模式到结果代码自动在源代码和模型之间保持一致 重用的商业例子 有了这些工具和技术的帮助并且经历着不断地消减IT预算的压力在任何规模的IT机构中都不难看到重用计划的正当理由Dr Jeffrey Poulin是着名的软件行业重用专家曾经进行了很多研究指明重用的回报发生在SDA的第一次重用时他甚至考虑了建立重用资产所需的额外努力Michael Blechar是Gartner Research的副总裁和研究总监他指出企业可以通过提交的软件资产重用计划充分提高应用程序开发效率和质量比例可达:或更高同时也减少了上市的时间考虑到这一点分析师和开发人员都必须具有查找和重用这些资产的能力花些时间研究这些鼓励重用的工具(我将在以后编辑的文章中更详细地讨论这些过程和工具)甚至那些看上去很简单的事情比如向开发团队传播体系结构方面的指导以及通过资产元数据资料库分布的UML模型通过使用行业和组织的最佳实践来实现的代码从而获得显着的回报这样就会大大地减少重新编写代码和增加沉重的维护成本的机会在您的组织中添加用于定义和分发结构良好的粗粒度组件和服务的能力可以加速开发效率同样重要地可以大幅度提高应用程序的一致性 可能也会使您在这场交易中成为英雄! |