C中组件图中的接口究竟是什么?
我是一名了解软件开发架构的嵌入式系统测试人员。我已经看到了我执行Black Box测试的项目组件图。我已经看到组件由与“套接字”和“棒棒糖”连接的块表示。我知道那些是接口,组件提供和请求接口。我读过不同的文章,但我没有找到它的实际例子。它们是函数和变量,请求此类接口的组件是否调用它,提供程序是否具有函数的定义?
答案 0 :(得分:3)
根据UML标准定义组件:
组件表示封装的系统的模块化部分 其内容及其表现形式可在其内部取代 环境。
组件是一个自包含单元,用于封装状态 和行为(...)。组件根据其提供的和所需的接口,指定它向其客户提供的服务的正式合同以及它从系统中的其他组件或服务所需的服务的正式合同。
组件是可替代的单元,可以在设计时替换 时间或运行时由提供等效功能的组件提供 基于其接口的兼容性。 (...)
由其API定义的组件
在C中,组件可以是一组编译单元,用于定义其他编译单元可见的函数和全局变量,并且可能需要在其他组件中存在函数或全局变量:
由结构定义的组件
在C中,您还可以使用面向对象的样式进行开发。当然,它不如C ++那么好用和方便。但它允许开发可互换的组件。
技巧是使用一个结构来定义数据成员或指向数据成员(状态)的指针和遵循某些签名(行为)的函数指针。在这种情况下,结构的定义定义了组件提供的接口。
例如,微软正在为其COM technology
使用这种方法由系统界面定义的组件
C组件不需要是更大程序的一部分,并提供源代码或目标代码接口。它本身可以是一个独立的程序,它在运行时使用OS功能提供接口,例如网络协议(侦听套接字,或实现HTTP或其他网络协议),远程函数调用或其他IPC技术(例如共享内存,互斥锁)等等......)
界面是合约
如上面的示例所示,界面不限于特定的语言特征。接口是关于提供什么以及期望与组件通信的合同。
答案 1 :(得分:2)
C中组件图中的接口究竟是什么? [...]我读过不同的文章,但我没有找到它的实际例子。 [...]
我认为有些情况可能是低级接口(对于C模块)或更高级别的接口,例如REST API或通信协议。我认为一般的想法是接口是已发布的东西,它允许实现交换进出。
这是Craig Larman应用UML和模式书中的一个例子,具体是:
{
[links: {"source": 0, "target": 1, "bond": 1},
{"source": 0, "target": 2, "bond": 1},
{"source": 0, "target": 3, "bond": 1},
{"source": 0, "target": 4, "bond": 1}],
[nodes: {"id": 0, "atom": C},
{"id": 1, "atom": H},
{"id": 2, "atom": H},
{"id": 3, "atom": H},
{"id": 4, "atom": H}]
}
系统需要两个组件,一个用于消息传递,一个用于数据库(DB)。每个接口都是标准的(在本例中),分别是JMS和SQL。
在使用C的情况下,接口可能在每个组件的一个或多个MyApp
文件中定义(可能是一个或多个.h
文件,同样在什么是零件)。他们可能不像标准"作为JMS,SQL等,但如果您正在进行测试,您应该能够在界面的两端进行测试。
答案 2 :(得分:1)
基本上,界面是某人可能提供或需要的属性和操作的声明。类可以实现接口,这意味着它必须实现操作并且可以访问属性。现在,组件是由1..n类组成的,并且可以在组件外部使界面可见。因此,最后一个组件可以显示许多不同的接口,其中许多内部类提供给外部世界。
关于套接字和棒棒糖:棒棒糖代表提供的接口(已实现它的类)。套接字表示所需的接口。那就是必须有一个可以连接的对应物,它提供了接口的实现。