• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 675
  • Last Modified:

How well do UML and the C language work together?

I'm aware that UML is language-agnostic, but since it was originally developed for OOP, I'm wondering how well it would describe a procedural language like C.   I need to model legacy code, but if not UML, then what?

Thank you.
4 Solutions
Are you using Object C? or plain C? It also depends on what you want to draw i mean use-case would make sense but at the same time class diagram may not make sense. Sequence diagram may make some sense.
Do you need to create designs for new efforts in C or need to document and add to existing C code designs? In either case, you will want to use a tool - doing this by hand is not feasible in any reasonable size project.  Enterprise Architect (EA) among other tools will reverse engineer as well as generate C code from UML designs.  So, in either situation you should be all set.

There are ways to do OO designs that apply to function-oriented languages.  Take a read of this:

In addition, there are parts of UML and agile (e.g. user stories, collaboration and state diagrams) that apply no matter the language.  Finally, C++ and C# are in the same language family, adding different levels of OO support.  That may be a path you could consider.

Best of luck, Mark

This is an interesting article on Rhapsody.


The company has been bought by IBM since and you can get a trial version here.

Just a thought,

fuze44Author Commented:
This effort is to diagram an existing system which is coded in plain C.  The system is very large and complex, and it employs many complex mathematical algorithms.  No one developer can understand it all, so we're wanting to make the parts and the whole more comprehensible to the team.  Abstraction via diagrams would be very helpful.  

Perhaps an OO paradigm applied to this procedural code would be helpful.  Many of the developers here are actually engineers, so it might make concepts more tangible.   Processes and data could be discussed as more distinct entities.

Thanks to everyone for your input and links.  I will read those and follow up with any questions/comments that arise.  I'll also be checking here for additional posts.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Train for your Pen Testing Engineer Certification

Enroll today in this bundle of courses to gain experience in the logistics of pen testing, Linux fundamentals, vulnerability assessments, detecting live systems, and more! This series, valued at $3,000, is free for Premium members, Team Accounts, and Qualified Experts.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now