模块和盒子之间的区别

时间:2018-12-23 15:13:48

标签: oop modular

我想知道框和模块在编程中有什么区别 我被问到这个问题 并以某种方式使我感到困惑

在网络和文档上阅读编程中的方框 我在下面找到链接
https://www.nbs-system.com/en/blog/black-box-grey-box-white-box-testing-what-differences/

如果该框是顶部链接和类似链接,则该框是对 程序和模块是程序设计

1 个答案:

答案 0 :(得分:0)

“框”只是您在现实世界中认识的对象中的常用词。它类似于将代码组合在一起以形成某种软件组件的服务器。这是因为它的内部部分彼此之间,在责任和沟通,内部数据使用,总体目标上都如此相关,因此将它们组合在一起是有意义的。我们将其命名为模块,并且很多时候它都映射到源文件(但不是必须),但是相同的分组概念适用于类,包(通常将模块/类分组在一起),库甚至是完整的应用程序或系统。 / p>

Box术语最常指的是以下事实:盒子内部与从外部(用户或其他系统)进行交互的参与者之间存在边界。

该盒子必须提供与外界的公共接口,以便变得可用或有用。必须对此进行记录,否则您将不知道如何使用它。当您仅根据此信息使用它来实现您的目标,而不了解内部情况时,我们说您正在使用“黑匣子”。

这具有许多优点,因为它可以使盒子成为易于使用的强大抽象,并将可能的复杂实现包装在内部。它封装事物并将其对用户隐藏。

无论如何,作为外部角色,您都以某种方式使用该盒子,因为您知道内部的处理方式,因此违反了这种封装原理。您可能正在进入“灰色框”使用模式。这很危险,因为如果更改此框,您的假设(和代码)可能会失败。

当将其用作“白盒”时,您确实完全知道它是如何制成的,因此您可以在代码中做出非常明智的决定,但是现在盒型代码确实无法触及。这样便有了抽象。

进行编码时,出于抽象,内聚和模块化的原因,您通常希望针对黑盒进行编码,并且还希望构建自己的黑盒。

灰框和白框在测试您编写的代码的时候(希望从一开始)最有意义。在这里,您仍然希望将系统作为黑匣子进行测试,但也希望使用白盒测试,因为您希望可观察到的行为和内部详细行为都正确。

特别是在测试使用其他模块或库编写的代码而您又不想进行测试(通常已经测试过其他代码)的灰色测试可能适用,但是您仍然对以下方面有所了解它的内部结构,并且您需要进行其他测试以涵盖您的代码,从而探索了这一知识。

编辑: 因此,除非他们希望您将模块区分为内部代码,以及将框区分为模块的包装公共接口,否则实际上没有任何区别。