2010-01-11 34 views
25

UML es el más comúnmente utilizado para modelar el sistema mediante el uso de C++. En mis proyectos C es el lenguaje de implementación. Estoy buscando recursos sobre estrategias UML que sean aplicables para C. Quiero usar UML durante el diseño y representar los diferentes aspectos del sistema.UML para el lenguaje de programación C

+1

Mi pregunta no es acerca de cómo OOP se puede hacer en C. Para esto tenemos muchos métodos como www.state-machine.com/devzone/cplus_3.0_manual.pdf y www.planetpdf.com/codecuts/pdfs/ooc .pdf. Como steven mencionó, en C podemos querer usar solo un diagrama de secuencia y un diagrama de componentes. Estoy buscando algunos recursos que describen estas estrategias. Tengo una idea similar, el archivo representa un módulo y se puede usar en lugar del objeto en el diagrama de secuencia. Y muestro el flujo entre diferentes módulos usando esta estrategia. – Andy

+0

Gracias por los enlaces, Andy. –

Respuesta

29

No conozco ningún recurso existente que discuta el uso de UML específicamente para C. Como otros han mencionado, UML es independiente del lenguaje.

Tenga en cuenta que con UML, puede tener un modelo para el dominio del problema y otro para la implementación. Intente no modelar el dominio del problema en términos de C, sino más bien como OO de alto nivel. Una vez que comprenda el dominio del problema adecuadamente, puede comenzar a modelar una implementación.

Para modelar las implementaciones de tipo procedimental C, los siguientes diagramas pueden ser útiles:

  • Diagrama de clases:
    • Mostrar C API módulo
    • show c relaciones de módulos (dependencias sobre todo para no OO)
    • Mostrar estructuras y enumeraciones (usando < < estereotipo>>)
  • paquete diagrama: Mostrar el contenido (módulos) de las bibliotecas, y las relaciones de dependencia entre las bibliotecas
  • diagrama de
  • Actividad: Diagramas de Flujo algoritmos no triviales
  • Secuencia diagrama/colaboración: mostrar cómo eventos/mensajes entre los módulos/entidades/las entradas/salidas ocurren en el tiempo
  • Diagrama de estado: ¡Para máquinas de estado, por supuesto!

Ampliando los diagramas de clases, puede "abuso" en el siguiente paso a al estilo de procedimiento C:

  • funciones globales extern -> métodos públicos
  • funciones estáticas locales -> métodos privados
  • las variables extern Global -> miembros públicos
  • variables estáticas locales -> miembros privados
  • Structs -> clase con stereotyp "estructura" e
  • #define constantes -> clase con estereotipo "enumeración"

Experimento, y encontrará sus propias convenciones para abusar de UML.

6

El problema con C es que se trata más de un lenguaje de programación de procedimientos. Es más difícil obtener el diseño de grano fino con una aplicación C. Si está trabajando con C, puede seguir los diagramas de secuencia y los diagramas de componentes, ya que describen y resumen de lo que está sucediendo, en lugar de un gráfico de dependencias e interacción.

+0

C no es un lenguaje de programación "funcional". Creo que el término que se buscó es "procesal". – coobird

+0

Tiene razón al respecto, estaba pensando ... funciones pero no clases = funcional ... pero por la definición más estricta es funcional ... funciona: P – monksy

+1

Estoy de acuerdo en que UML no es muy adecuado para C , dado que UML se derivó de la escuela de pensamiento orientada a objetos. Pero usted * puede * hackear juntos una construcción mínima similar a un Objeto, en forma de relación, en C que utiliza estructuras que contienen punteros a funciones ... aunque la herencia y el polimorfismo no son tan simples. De cualquier manera, UML no es tan útil en C –

5

Un diseño orientado a objetos es independiente del idioma y, por supuesto, puede diseñar su sistema utilizando UML. Algunas herramientas como Rhapsody también permitirán la generación de código y el disparo circular, que usamos para algunos proyectos especiales donde C++ no es una opción. Si desea escribir su código a mano, utilice una convención de nombres como Subsystem_Module_Class_Method para nombrar sus funciones de forma orientada a objetos y utilice un archivo .c por clase. Usar C no es un obstáculo para tener un diseño limpio.

+0

No es un obstáculo para el diseño limpio ... pero no va a tener el nivel de abstracción y diseño de componentes como lo haría con un lenguaje OOP. Esa es la razón por la cual se crearon OOP. – monksy

+0

OOP también se puede hacer en C: GTK es un buen ejemplo para ello. Hace un uso intensivo de macros, está bien, pero sintácticamente está bastante limpio. Estoy de acuerdo en que otros idiomas lo integran mejor en su sintaxis y el código parece ser un poco más limpio, pero con C puede alcanzar los mismos objetivos. La abstracción está en el diseño, el código simplemente lo refleja más o menos bien. – jdehaan

Cuestiones relacionadas