UML for C编程语言

UML最常用于使用C ++建模系统。 在我的项目中,C是实现语言。 我正在寻找适用于C的UML策略资源。我想在设计过程中使用UML并代表系统的不同方面。

我不知道任何现有的资源都讨论过专门为C使用UML。正如其他人所提到的,UML与语言无关。

请记住,使用UML,您可以为问题域建立模型,为实现创建另一个模型。 尽量不要用C语言模拟问题域,而是用高级OO建模。 一旦充分理解了问题域,就可以开始对实现进行建模。

对于过程式C实现的建模,以下图表可能很有用:

  • 类图:
    • 显示C模块API
    • 显示C模块关系(主要是非OO的依赖关系)
    • 显示结构和枚举(使用<>)
  • 包图:显示库的内容(模块)以及库之间的依赖关系
  • 活动图:流程图非平凡算法
  • 序列/协作图:显示模块/实体/输入/输出之间的事件/消息如何及时发生
  • 状态图:当然是状态机!

扩展类图,您可以通过以下方式“滥用”它们用于过程式C:

  • 全局外部函数 – >公共方法
  • 本地静态函数 – >私有方法
  • 全局外部变量 – >公共成员
  • 本地静态变量 – >私有成员
  • 结构 – >带有“struct”构造型的类
  • #define constants – >带有“枚举”构造型的类

实验,你会找到自己滥用UML的约定。

C的问题在于它更像是一种过程编程语言。 使用C应用程序更难获得细粒度设计。 如果您正在使用C,您可能希望坚持使用序列图和组件图,就像他们描述和概述正在发生的事情而不是依赖关系和交互图。

面向对象的设计独立于语言,您当然可以使用UML设计系统。 像Rhapsody这样的工具也允许代码生成和往返,我们用于一些不能选择C ++的特殊项目。 如果您想手动编写代码,请使用一些命名约定,如Subsystem_Module_Class_Method,以面向对象的方式命名函数,并为每个类使用.c文件。 使用C不是防止设计干净的障碍。