【问题标题】:Which UML diagram should be used for a Software overview which will be written in C for microcontrollers?哪个 UML 图应该用于将用 C 语言为微控制器编写的软件概述?
【发布时间】:2021-11-29 11:05:14
【问题描述】:

我想知道如何使用 UML 图呈现软件概览。代码将用 C 语言编写,用于微控制器。所以,我猜我不能使用类图/对象图/复合结构图。那么,

  1. 我应该使用哪个 UML 图?

  2. 可以使用活动图吗?如果是这样,有没有办法将所有活动组合在一个图表中以查看整个软件?

  3. 如果 UML 图不适合,那么哪一个适合这个目的?

提前致谢。

【问题讨论】:

  • 如果编程语言具有特定名称的某些特性或属性,请不要陷入困境。例如,在 C 语言中,您可以拥有结构对象和一些函数,它们形成与类对象及其方法相同的功能。
  • 图表类型的选择遵循需要显示的内容,而不是相反。如果要显示活动,请使用它。如果你想展示合作、构图、结构、序列……同上。如果您愿意,您可以将模块(或如何称呼它们)视为类。
  • 您好 Nusrat,请检查以下答案之一以将其标记为已接受,或解释您的问题未得到正确回答的原因。

标签: c uml microcontroller


【解决方案1】:

理想情况下,程序设计应该与您的需求规范相关联,这样每个需求都有一个代码模块,并且对于该代码模块,有一个测试来证明它如何满足需求。这是一种在实践中很少能坚持的乌托邦,但这种设计无论如何都是一个很好的抱负。

那么一般来说,如何记录程序设计并不重要,只要整体设计得到记录即可 - 即使在专业环境中,这种情况也非常罕见。但是 UML 的所有迂腐细节实际上都是可选的,在找到适合它们的地方使用它们,不要仅仅为了它而使用它们。我经常使用 UML 类图来记录代码依赖关系,以及用于记录应用程序行为的状态图。依此类推 - 保持广泛而没有实现细节。

类的 C 等价物通常是具有相同名称的 .h/.c 对,共同构成“模块”或“ADT”或任何您希望调用的名称。

您需要记录所有class A 使用class B 的依赖关系,以及所有class B 是class A 的依赖关系(继承)。继承在嵌入式系统中并不常见,但实现 HAL 是使用它的典型示例。您在特定于硬件的驱动程序之上有一个抽象 API。

显然,您需要尽早决定此类抽象是否合理 - 程序最终会移植到另一个 MCU 还是您是否指望芯片供应商的“长寿”保证,即 MCU 不会在预期产品中结束生命周期寿命?看看今天完全崩溃的硅市场,我认为任何微控制器项目都需要在其生命周期内多次移植。

【讨论】:

    【解决方案2】:

    为了对用 C 编写的大型应用程序的静态结构进行建模,我建议使用包图。图中的包代表子系统,很可能对应于应用程序的高级目录结构。这些包之间的依赖关系箭头将指示哪个子系统使用了其他子系统。

    对于每个顶级包,您可以创建一个单独的包图,显示子系统/子目录及其依赖关系。

    【讨论】:

      猜你喜欢
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 2011-03-01
      相关资源
      最近更新 更多