【问题标题】:Example for a UML-Project of a plugin-based software.基于插件的软件的 UML 项目示例。
【发布时间】:2014-04-10 09:19:44
【问题描述】:

我们将开发一个强大的基于插件的 c++ 软件。它只有很少的源代码示例。由于项目规模较大,我们想做一个简单的软件建模,然后再开始实施。首先是类和序列图。我们是 UML 的新手,由于这个原因,如果有一个基于插件的项目的 UML 示例,那就太好了。我们在网上没有找到任何例子。我们想要使用的设计模式是插件、插件管理器、工厂方法、单例和其他一些。现在我的问题是:

您知道用于类似软件设计的 UML 项目的(简单)示例吗?

谢谢。

干杯亚历克斯。

【问题讨论】:

  • 恐怕这个问题不完全符合网站的规则,因为它可能有不同的答案,但我个人喜欢这个主题,所以,+1,欢迎来到 StackOverflow。
  • 是的,这是题外话。幸运的是,您顺利通过了关闭过程,对于未来,请阅读有关如何在 SO 上提问的帮助。

标签: c++ plugins uml


【解决方案1】:

我不知道此类示例,但我可以建议您在此类项目中创建一组图表/视图。 UML 是一种非常灵活的工具,软件项目在本质上是如此多样化,以至于很难设置规则。您应该倾听您的开发人员的直觉,并简单地为您需要的东西建模以推进项目。

所以……

1- 组件(强制) 由于这是一个插件项目,因此涉及到隐含的外部依赖项。您应该制作一个组件图,以将您未来的插件(组件)显示为其环境中的黑盒。另一个明显的组件将是基本工具(您的组件将插入其中) - 为零件之间的所有相关接口建模!这是根本 - 使用原型展示每个组件的实现平台(例如 C++)

2- 用例(可选) 在这里,您可以识别您的用户(参与者)以及他们可以使用插件(用例)做什么。另一种方法是使用线框模型(非 UML)或类似的东西来捕获请求。

3- 概念视图(可选) 你没有告诉任何关于你的插件功能逻辑的事情。它有多复杂?如果插件逻辑很复杂,有很多概念、算法等,那么你应该考虑在概念层面对这方面进行建模。使用类图捕获问题概念及其关系。此外,您可以在概念分析级别使用状态机(用于活动类)、活动图(用于复杂算法)、序列(相关场景)等(无实现细节) 如果你的插件领域逻辑很简单,你可以最小化这个视图。有时单个状态机可以帮助或活动图等。

4- 架构(强制) 在这里,您可以使用组件和/或类图来显示插件内部结构的高级视图。此视图扩展了黑盒视图(在 1- 中进行了解释),提供了白盒补充。只有主要模块会强调它们之间的接口,尤其是与外部世界的接口。

5- 设计(可选) 在这里你应该务实,而不是仅仅为了完成它而做这个观点。如果插件不是很大并且您有一个训练有素的团队,架构视图将完成这项工作。这一切都取决于您的插件复杂性,您可以决定显示一个或多个层次相关的视图。组件通常位于顶层,包括更多组件和/或设计类。 请注意,我们在这个级别上讲实现语言,所有元素都应该有一个明确的原型(C++、DLL、EXE 等)。 设计视图还应该有一些选择的行为图(序列、活动、状态等),同样在实现级别。

可追溯性 最后的但并非最不重要的。所有这些观点都从不同的角度和不同的阶段看待同一个底层系统。因此,不同视图中的元素之间存在许多隐式或显式的依赖关系和关系。您应该充分了解它们,甚至在单独的图表上或通过可追溯性矩阵(一些工具支持它)显示其中的一些。您可以在建议的视图之间进行一些跟踪:

  • 1->4个黑盒和相应的白盒
  • 4->5 个高层到低层的映射(架构层的组件由设计层的类实现)
  • 2->4, 2->5 哪些组件/类将参与哪些用例
  • 2->3 单个用例逻辑可以通过一些概念建模进一步指定

  • 行为图与结构元素密切相关(状态机属于类或组件),序列图包括类/组件的协作实例,活动可以显示组件的所有使用场景或类的方法算法等。 等等。

有很多方法可以完成这项工作,没有人能给你一个具体的成功公式。 UML 建模应该帮助您进行分析/设计工作,这是它的自然副产品。如果您觉得自己不知道要建模什么,或者看不到图表的明确目的,那就不要这样做。

【讨论】:

  • 对不起,但是根据您的 p.3,算法可以通过类图建模。你最好改写适当的句子。
  • @Gangnus:谢谢,我刚刚完成了。我希望现在更清楚了。
  • 现在好多了:-) +1
【解决方案2】:
  • 至于“工厂方法、单例和其他一些”,用类图表示,请阅读Gang of Four book
  • 至于插件,您正在寻找不好的地方。它们将以组件和包图的方式表达,而不是类图。
  • 至于序列图(还有状态机、时序、活动...),它们不是用来显示结构问题的。而插件是一个结构术语。行为图很有用,但在用于插件时没有任何细节。
  • 对于插件的交互,还可以查找 UML 通信和交互概览图。也许看看书中"Enterprise Integration Patterns..." 中的图表。他们的图表不是 UML 标准图表,但恕我直言,对于组件和包(或插件)级别的交互建模非常方便和有用。

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多