代码之家  ›  专栏  ›  技术社区  ›  Andy

用于C编程语言的UML[关闭]

uml c
  •  27
  • Andy  · 技术社区  · 15 年前

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

    3 回复  |  直到 7 年前
        1
  •  32
  •   Emile Cormier    7 年前

    我不知道有什么现有的资源专门讨论使用UML来实现C语言。正如其他人提到的,UML是语言不可知论者。

    请记住,使用UML,可以为问题域建立一个模型,为实现建立另一个模型。试着不要用C来建模问题域,而是用高级OO来建模。一旦充分了解了问题域,就可以开始对实现建模。

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

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

    在类图上展开,对于过程样式C,可以用以下方式“滥用”它们:

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

    实验,你会发现你自己滥用UML的约定。

        2
  •  8
  •   monksy    15 年前

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

        3
  •  5
  •   jdehaan    15 年前

    面向对象的设计独立于语言,您当然可以使用UML设计您的系统。一些工具,如Rhapsody也将允许代码生成和跳闸,我们使用一些特殊的项目,其中C++不是一个选项。如果您想手工编写代码,请使用一些命名约定,如subsystem_module_class_方法,以面向对象的方式命名函数,并对每个类使用.c文件。使用C并不是妨碍清洁设计的障碍。