Module 在软件项目中,如何区分组件和模块?

Module 在软件项目中,如何区分组件和模块?,module,project,components,Module,Project,Components,在软件中,您如何区分组件和模块?模块是赋予软件新功能的功能 组件是元素组件只是模块的另一个名称,它们是相同的东西。通常,组件是一个术语,您可以在软件工程书籍中找到,而模块有更广泛的用途。组件通常被视为遵循某种软件接口规范的自包含、可插拔项。一个很好的例子是GUI项目,例如增强的文本框和下拉列表。基本上,任何不是完整程序的东西,但可以插入另一个程序以增强其功能 单词模块在过去几年里已经不受欢迎了。模块是一个更通用的术语,但有些语言将其作为关键字,即模块2。VB.NET有一个Module关键字,但这

在软件中,您如何区分组件和模块?

模块是赋予软件新功能的功能


组件是元素

组件只是模块的另一个名称,它们是相同的东西。通常,组件是一个术语,您可以在软件工程书籍中找到,而模块有更广泛的用途。

组件通常被视为遵循某种软件接口规范的自包含、可插拔项。一个很好的例子是GUI项目,例如增强的文本框和下拉列表。基本上,任何不是完整程序的东西,但可以插入另一个程序以增强其功能


单词模块在过去几年里已经不受欢迎了。模块是一个更通用的术语,但有些语言将其作为关键字,即模块2。VB.NET有一个Module关键字,但这只是一个带有静态成员的普通类,我的理解是,大多数VB程序员更喜欢使用class关键字。

我认为答案取决于你问谁

我认为这是粒度和角色的不同。据我所知,软件组件是一个自包含的实体,具有定义良好(且更稳定)的接口,可与系统的其余部分交互,从系统架构的角度来看具有重要意义。例如,数据访问抽象层


对我来说,模块更像是一个可部署的源代码包,其中包含的代码具有共同的用途,但在系统中不起任何重要作用(这意味着替换它不需要更改系统的总体架构)。例如,web服务中的JSON序列化程序。

组件:黑盒模块

但实际上没有任何显著的区别。不要试图在这里寻找深刻的意义

一般来说

  • 组件是一个相对精细的组件 元素的粒度分组 在公共场所提供特定服务 解决方案
  • 模块是粗粒度的,并且 充当一个或多个组的分组 政府提供的有关服务 软件
一个模块将倾向于使用许多组件来提供其服务,而一个组件很可能由少数几个类和其他组件构成


在任何情况下,它都是主观的,取决于应用的规模。对于小型应用程序,可能只有一个程序(一个模块)和多个组件。在中型应用程序中,可能有多个模块和多个组件。在大型应用程序中,您可能希望引入“子系统”这一术语,它甚至比模块粒度更粗

组件是在软件系统级别定义的(如运行时所见/所想)。它们是执行系统的元素,共同构成一个更大的系统。这些组件/元素之间使用连接器(接口)进行交互。想象一下黑匣子之间的通信,不关心它们的实现/源代码

模块是在编程语言级别定义的(例如,一组5个类组成一个提供某些功能的模块)。它们是根据代码集合提供的功能在源代码级别定义的。(示例:应用程序中负责与数据库交互的持久性类)

请注意,模块也是组件的一种类型(按分类并与组件共享“is-a”关联)


参考:Len Bass,软件arch。实际上,有趣的是,根据我的经验,定义正好相反。例如,软件开发标准倾向于将“模块测试”与“单元测试”互换使用,这是不正确的。组件和模块不是完全相同的东西。虽然,但经常被错误地互换使用。