请问模块与组件这两个概念在软件架构中有区别吗?
请问模块与组件这两个概念在软件架构中有区别吗?什么时候应该用模块这个术语什么时候应该用组件这个术语?
除了软件架构这两个术语还能用在那些地方呢?
先谢谢了!
[解决办法]
从形态上来看,模块和组件都是相对稳定的代码的一种称呼。
但是从实际的功能范围上来看,组件一般来说是实现某一种功能或者某一个功能的某一个细节的稳定的相对独立的类,而模块则至少有一个组件组成,也就是说模块的覆盖范围要比组件更大一些,它可能有多个组件组成,甚至除了组件之外还有很多相对稳定但并不会提供独立功能的代码一起来构成。
这就是两者的差别。
[解决办法]
模块,module,通常我们会说程序模块,功能模块,这实际上是在按照不同的标准对模块的内容和范围的不同定义,通常我们说的程序模块,是指的一段能够实现某个有价值目标的的成员代码段,这样的东西,我们还有另一个称呼:例程,而例程有两种,即函数和过程,它们都能实现一个有价值的目标供其它的模块使用。而功能模块的说法一般在分析和设计阶段出现得比较频繁,通常我们用一个功能模块来说明一个功能所包含的系统行为,当我们觉得分析的颗粒度可能更大一些的时候我们可以用一个功能模块来表示一组功能的集合,这似乎让我们觉得,模块这个词的概念和“子系统”这个词的概念有些模糊,是的,事实上,有些大的模块会慢慢的让我们觉得称呼他们子系统更合适,或者一个子系统,我们会慢慢发现你还包含着一些模块,但是无论怎样,定义模块的原则应该是:搞内聚 和 低耦合
组件,Component,这个词通常是现在描述产品的时候出现,一个大的产品会有很多小的部分组成,而小的部分除了是一个大的组件的部分以外,自己可能还包含更小的组件,所以组件是递归的,那么组件到底是什么呢?最常见的组件就是我们已经写好的程序代码,任何一小段代码都可以是一个组件,它可以和其它代码段连接起来组成更大的一段程序代码,一个更大的组件,然后可能是一个函数,或者一个类程序单元,或者数个类单元文件的集成,当不同的组件的组装形成更大的组件时候,我们实际就是在做我们通常提到的一件事情:集成,软件中有很多集成工作要做,每日集成,重要版本集成等等,集成是什么呢?软件中,就是链编调试。这样一来,我们知道集成是需要对被集成的组件有规模要求的,换句话说,至少是一个单元文件,所以通常说到的组件就可以直观的理解为单元文件,或者可以组成软件的其他文件,以及编译后的文件。