Mat*_*ias 7

我会说答案取决于你问的是谁.

我认为差异是粒度和角色之一.我理解的软件组件是一个自包含的实体,具有定义明确(且优选稳定)的接口,该接口与系统的其余部分交互,从系统架构的角度来看具有重要意义.一个例子是数据访问抽象层.

对我来说,一个模块宁愿是一个可部署的源代码包,其中包含共享共同目的的代码,但不会在系统中执行任何重要的角色(这意味着替换它不需要更改系统的整体架构).一个例子是Web服务中的JSON序列化程序.


Tom*_*ter 6

一般来说,

  • 组件是一个相对精细的元素分组,为解决方案中的特定服务提供服务.
  • 模块是粗粒度的,并且充当由软件提供的一个或多个相关服务的分组.

模块将倾向于使用许多组件来提供其服务,而组件可能由少数类和其他组件构成.

无论如何,它的主观性取决于应用的规模.对于小型应用程序,可能存在单个程序(模块)和许多组件.在中型应用中,可能有几个模块和许多组件.在大型应用程序中,您可能希望引入术语子系统,它比模块更加粗糙!

  • 有趣 - 根据我的经验,定义恰恰相反.例如,软件开发标准倾向于将"模块测试"与"单元测试"互换使用. (4认同)