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

有帮助吗?

解决方案

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

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

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

其他提示

一般来说,

  • 组件是相对细菌的元素分组,可在解决方案中提供特定服务。
  • 一个模块是Courser Geraining,并作为软件提供的一项或多项相关服务的分组。

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

无论如何,它是主观的,取决于应用程序的规模。对于小型应用程序,可能有一个程序(一个模块)和多个组件。在中型应用程序中,可能有多个模块和许多组件。在大型应用程序中,您可能需要引入术语“子系统”,它比模块更细致!

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

组件是元素

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

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

组件:黑盒模块。

但确实没有任何显着差异。不要试图在这里寻找深刻的意义。

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

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

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

参考文献:Len Bass,Software arch。在实践中和博士蒂莫西莱斯布里奇演讲

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top