【问题标题】:In a software project, how would you differentiate a Component from a Module? [closed]在软件项目中,您将如何区分组件和模块? [关闭]
【发布时间】:2010-11-04 21:36:10
【问题描述】:

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

【问题讨论】:

    标签: module project components


    【解决方案1】:

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

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

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

    参考:Len Bass,软件拱门。在实践中和Dr. Timothy Lethbridge lecture

    【讨论】:

      【解决方案2】:

      一般来说,

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

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

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

      【讨论】:

      • 有趣 - 根据我的经验,定义完全相反。例如,软件开发标准倾向于将“模块测试”与“单元测试”互换使用。
      【解决方案3】:

      组件:黑盒模块。

      但实际上并没有任何显着差异。不要试图在这里寻找深层含义。

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

            • 这是不正确的。组件和模块并不完全相同。虽然,经常被错误地互换使用。
            【解决方案7】:

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

            组件就是元素

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-11-15
              • 1970-01-01
              • 2010-12-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多