【问题标题】:Is component always interface implementation?组件总是接口实现吗?
【发布时间】:2019-12-28 14:31:07
【问题描述】:

我想展示我的软件的架构表示。我的大学讲座推荐我使用组件图。但是如果我的软件根本不使用界面,我应该画什么作为我的组件?

因为 AFAIK,组件图中的组件由接口及其实现组成。不幸的是,我的软件(一个 Android 应用程序)根本不使用接口(只使用接口作为改造 API)。我在堆栈溢出中阅读了一些帖子,但这并没有给我一种感觉。我最终为每个目录绘制了下面的组件图。请给我一些绘制组件图的建议。

【问题讨论】:

  • API = 接口,不是吗?
  • 但不是软件中的每个功能都需要API,我应该如何绘制架构?
  • 如果你的组件没有接口,你就不能与之交互。所以没有意义。
  • @qwerty_so:一个组件可能有与之交互的公共操作。您可以将其称为接口,但我认为 ferrari_nato 指的是 UML 定义的“接口”,它是一个单独的分类器(参见 UML 规范的第 10.4 节)。
  • @www.admiraalit.nl 正是<<interface>> 是您用来收集这些操作的,并且您将显示从组件到该接口的实现关系。

标签: android uml component-diagram


【解决方案1】:

根据 UML 规范,允许在组件图中使用没有接口的组件,至少我不知道规范中有任何禁止这样做的内容。如果一个组件 X 使用另一个组件 Y,您应该绘制从 X 到 Y 的依赖关系(带有空心箭头的虚线箭头),可选地使用构造型≪use≫装饰。

这是我在组件图上的 cmets:

  • 之间的实线箭头替换为组件之间的虚线箭头。
  • 不要使用球窝表示法,而是使用对接口的依赖项(请参阅my answer on this topic)。

【讨论】:

    【解决方案2】:

    答案在您的图表中。你有四个组件,在四个不同的包中。您已经明确识别了您的 Android 应用程序和服务器之间的 API(应用程序编程接口),这很明显。但是,您还在这里确定了至少 5 个其他接口:

    1. 您的 Android 应用程序被定型为“UI”(我认为它是指用户界面)。这是您的用户和系统之间的接口。
    2. Android 应用程序连接到(引用?)数据库。那是另一个接口——假设某种 OLTP 如果它是一个 RDBMS?
    3. 应用程序模型的 UI。假设您的模型已编译到应用中,这可以在您的运行时内部进行接口。
    4. 服务器到应用程序模型。假设已编译在服务器内部。
    5. 数据库的应用程序模型(我假设您在这里的参考箭头方向错误?)。

    【讨论】:

    • 我认为你没有回答这个问题。问题是关于对现有软件进行逆向工程。问题是如果至少有一些组件不使用单独定义的接口,那么组件图应该是什么样子。是否允许从图表中省略接口,或者图表是否应该显示不存在的接口?
    • 这取决于你想展示什么。如果存在关联,则很可能存在某种接口,如果您正在谈论组件模型。我认为您是否选择将用户界面隔离为界面取决于您,如果您选择将参与者放置在代表人类用户的图表上,那么它可能是值得的。
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 2017-06-23
    • 2018-11-11
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多