【问题标题】:How do you define a software component?您如何定义软件组件?
【发布时间】:2009-07-09 13:24:49
【问题描述】:

您如何定义软件组件,OOP 和组件编程之间存在什么样的关系?这些范式的优缺点和“黄金比例”是什么?

【问题讨论】:

    标签: oop components system


    【解决方案1】:

    我认为组件是比对象更高级别的组织概念。

    组件通常是发布和部署的单元。您会期望定义它们公开的接口以及它们在其他组件和基础架构方面的依赖关系。系统中的不同组件很可能使用非常不同的技术进行开发,实际上单个组件不一定是同质的。

    如果使用某种 OO 语言开发组件,您将分解职责,并为该组件得出 OO 设计。

    【讨论】:

    • 理论上可以将系统设计为完全没有任何组件的面向对象层次结构。我必须同意霍华德的观点,重用的粒度似乎决定了一个组件应该是什么以及有多大。
    【解决方案2】:

    我认为组件编程本质上是对 oo 的再发明。

    oo 旨在成为黑盒......但不是,组件编程正试图成为黑盒。

    因此,我认为组件编程意味着过度工程(以积极的方式) - 因为为了成为黑盒,您必须预测未来的用例并已经满足它们。

    这也暗示了彻底测试的记录心理学,以我的经验,无论如何似乎在oo编码中退居二线。

    因此您将提供线程和异步支持。您将发布接口、文档和单元测试。有清晰的事件结构和行为。

    基本上你可以允许某人重复使用它并帮助他们这样做。

    关键是组件具有定义良好的接口和定义良好的功能。实际的实现细节不是其中的一部分,因为在考虑如何使用组件时它们超出了范围。即一个组件可以是一组相当复杂的对象。

    【讨论】:

    • 我会说一个类是一个在程序上下文中工作的黑盒(希望),而组件是一个在几个不同程序的上下文中工作的黑盒,包括有些还没有写。
    • 是的,同意。我是这么想的,但一直没说出口;)
    【解决方案3】:

    软件组件的粒度应该映射到重用的粒度。如果一块软件在其他地方被重用,那么它应该被版本化并作为它自己的组件发布。如果它没有在其他地方重复使用,那么这增加的价值很小。

    如果任何小于完整类的东西都被认为是一个组件,并且预期类的集合将形成一个组件,那将是令人惊讶的。

    【讨论】:

      【解决方案4】:

      我会将组件视为应用程序的子系统,您可以将其视为黑盒。
      因此,在 OOD 中,一组类和接口具有明确的规范和一个明确的目的,允许您执行一些计算而无需知道盒子是由什么组成的。

      输入 -> [ 黑盒 ] -> 输出

      进一步识别组件的是:

      • 高内聚力
      • 与应用程序的其余部分没有依赖关系,因此可以轻松地将组件导入一个或多个项目中。

      我认为组件编程实际上是组装组件以构建更大的应用程序。
      在一个非常“乌托邦”的观点中,应该有公共存储库,您可以在其中查找满足您的规范的组件。找到组件后,您可以将其集成到您的应用中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-11
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        • 2010-09-21
        • 2010-11-04
        • 2010-09-14
        • 2013-01-22
        相关资源
        最近更新 更多