C - UML组件图中有哪些接口

问题描述 投票:4回答:3

C中组件图中的接口究竟是什么?

我是一名了解软件开发架构的嵌入式系统测试员。我已经看到了我执行Black Box测试的项目组件图。我已经看到组件由与“套接字”和“棒棒糖”连接的块表示。我知道那些是接口,组件提供和请求接口。我读过不同的文章,但我没有找到它的实际例子。它们是函数和变量,请求此类接口的组件是否调用它,并且提供程序具有函数的定义?

c components uml
3个回答
2
投票

C中组件图中的接口究竟是什么? [...]我读过不同的文章,但我没有找到它的实际例子。 [...]

我相信有些情况可能是低级接口(对于C模块)或更高级别的接口,例如REST API或通信协议。我认为一般的想法是接口是发布的东西,它允许实现交换进出。

以下是Craig Larman的“应用UML和模式”一书中使用的示例,具体如下:

PlantUML component diagram with two components

MyApp系统需要两个组件,一个用于消息传递,一个用于数据库(DB)。每个接口都是标准的(在本例中),分别是JMS和SQL。

在使用C的情况下,接口可能在每个组件的一个或多个.h文件中定义(可能是一个或多个.c文件,同样在组件的内容上有一些灵活性)。它们可能不像JMS,SQL等那样“标准”,但是如果你正在进行测试,你应该能够在界面的两端进行测试。


3
投票

根据UML标准定义组件:

组件表示系统的模块化部分,其封装其内容并且其表现形式可在其环境中替换。

Component是一个独立的单元,它封装了状态和行为(...)。组件根据其提供的和所需的接口,指定它向其客户端提供的服务的正式合同以及它从系统中的其他组件或服务所需的服务的正式合同。

组件是可替换的单元,可以在设计时或运行时由组件替换,该组件基于其接口的兼容性提供等效功能。 (......)

由API定义的组件

在C中,组件可以是一组编译单元,用于定义其他编译单元可见的函数和全局变量,并且可能需要在其他组件中存在函数或全局变量:

  • 组件实现的全局变量和函数集(可供其他人使用)是提供的接口。
  • 要在其他地方定义的组件所期望的外部全局变量和函数集是必需的接口。

由结构定义的组件

在C中,您还可以使用面向对象的样式进行开发。当然,它不像C ++那么好用和方便。但它允许开发可互换的组件。

诀窍是使用一个结构来定义数据成员或指向数据成员(状态)的指针和遵循某些签名(行为)的函数指针。在这种情况下,结构的定义定义了组件提供的接口。

例如,微软正在为其COM technology使用这种方法

由其系统接口定义的组件

C组件不需要是更大程序的一部分,并提供源代码或目标代码接口。它本身可以是一个独立的程序,它在运行时使用OS功能提供接口,例如网络协议(侦听套接字,或实现HTTP或其他网络协议),远程函数调用或其他IPC技术(例如共享内存,互斥锁)等等......)

界面是合同

如上面的示例所示,界面不限于特定的语言特征。接口是关于提供什么以及期望与组件通信的合同。


1
投票

基本上,接口是某人可能提供或需要的属性和操作的声明。类可以实现接口,这意味着它必须实现操作并且可以访问属性。现在,组件是由1..n类组成的,并且可以在组件外部使界面可见。因此,最后一个组件可以显示许多不同的接口,其中许多内部类提供给外部世界。

关于套接字和棒棒糖:棒棒糖代表提供的接口(已实现它的类)。套接字表示所需的接口。那就是必须有一个可以连接的对应物,它提供了接口的实现。

© www.soinside.com 2019 - 2024. All rights reserved.