UML最常用于使用C++建模系统.在我的项目中,C是实现语言.我正在寻找适用于C的UML策略资源.我想在设计过程中使用UML并代表系统的不同方面.
我不知道有任何现有资源讨论使用UML专门用于C.正如其他人所提到的,UML与语言无关.
请记住,使用UML,您可以拥有问题域的模型,以及实现的另一个模型.尽量不要用C语言模拟问题域,而是用高级OO建模.一旦充分理解了问题域,就可以开始对实现进行建模.
对于过程式C实现的建模,以下图表可能很有用:
类图:
显示C模块API
显示C模块关系(主要是非OO的依赖关系)
显示结构和枚举(使用<
包图:显示库的内容(模块)以及库之间的依赖关系
活动图:流程图非平凡算法
序列/协作图:显示模块/实体/输入/输出之间的事件/消息如何及时发生
状态图:当然是状态机!
扩展类图,您可以通过以下方式"滥用"它们用于过程式C:
全局外部函数 - >公共方法
本地静态函数 - >私有方法
全球外部变量 - >公共成员
本地静态变量 - >私有成员
结构 - >带有"struct"构造型的类
#define
常量 - >带有"枚举"构造型的类
实验,你会找到自己滥用UML的约定.
C的问题在于它更像是一种过程编程语言.使用C应用程序更难获得细粒度设计.如果您正在使用C,您可能希望坚持使用序列图和组件图,就像他们描述和概述正在发生的事情而不是依赖关系和交互图.
面向对象的设计独立于语言,您当然可以使用UML设计系统.像Rhapsody这样的工具也允许代码生成和往返,我们用于一些不能选择C++的特殊项目.如果您想手动编写代码,请使用一些命名约定,如Subsystem_Module_Class_Method,以面向对象的方式命名函数,并为每个类使用.c文件.使用C不是防止设计干净的障碍.