Web服务和面向服务体系结构的特性鼓励重用,实际上从本质上来说它们也需要重用,因为服务的唯一目标是将一整套功能向多个消费者公开。假如这都不是重用,那什么是呢?另外,因为服务意味着部署一次,就能在适当的位置访问它,它们鼓励跨越应用程序边界的业务流程集合的概念 -- 使一系列支持业务流程的服务交织在一起,业务流程可能通过图形化的设计时用户界面来描述。尽管支持这一概念的工具和底层机制还处于初期,但是一些计划,如BPEL4WS(Business PRocess Execution Language For Web Services),在启用这种形式的应用程序开发时做出了很大的承诺。尽管期望图形应用程序集合将会完全取代其他开发技术的想法不太现实,但是它确实在那些技术旁找到了自己的位置,并且在这个过程中,鼓励底层服务的更有效的重用。 服务和组件之间具有支持软件重用的共生关系。组件通常是服务背后的底层机制,或者完全实现了服务所定义的功能,或者为使用一个或多个遗留系统连接到现代web服务基础结构提供了必需的附带代码。
软件工程过程和工具 过去的十年已经朝着遵守规则和有效的软件开发环境迈进了一大步。迭代方法,比如RUP(Rational Unified Process)鼓励要害需求的早期发现、实施和提炼。在有规律和及时基础上的增量改进与重量级的瀑布方法有巨大差别,瀑布方法经常导致软件的晚交付,并且无法满足用户需求,这种情况不少,因为用户需求经常会随时间改变。 RUP和其他软件开发环境通过在开发过程中引入特定的Software Development Asset (SDA)搜索和重用回顾检查点来鼓励重用。这些搜索和回顾活动发生在开发生命周期的所有层次上,从最初的需求定义,到分析和设计,以及到实施。现代基于UML的建模技术也通过为分析师和开发人员提供一个明确定义功能需求的简单图形方式来鼓励重用。这种形式的需求可以被其他开发工具使用,比如代码生成器、映射引擎和资产元数据资料库。基于UML的IDE工具不仅可以用于创建UML,而且也适用于可重用的知识SDA,例如设计模式到结果代码,自动在源代码和模型之间保持一致。