{"id":11394,"date":"2026-09-28T16:14:55","date_gmt":"2026-09-28T08:14:55","guid":{"rendered":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/"},"modified":"2026-09-30T08:33:29","modified_gmt":"2026-09-30T00:33:29","slug":"minimum-effective-uml-a-practical-guide-to-modeling-software-systems","status":"publish","type":"post","link":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/","title":{"rendered":"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software"},"content":{"rendered":"<p>El UML es m\u00e1s \u00fatil cuando mejora la comunicaci\u00f3n y la toma de decisiones, no cuando se convierte en un ejercicio de documentaci\u00f3n. Un equipo rara vez necesita todos los tipos de diagramas UML. En la mayor\u00eda de los proyectos, siete tipos de diagramas proporcionan una base s\u00f3lida:<\/p>\n<p><img alt=\"\" class=\"alignnone size-full wp-image-21215\" decoding=\"async\" height=\"941\" loading=\"lazy\" sizes=\"auto, (max-width: 1672px) 100vw, 1672px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d.png 1672w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d-300x169.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d-1024x576.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d-768x432.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d-1536x864.png 1536w\" width=\"1672\"\/><\/p>\n<ol>\n<li>\n<p>Diagramas de casos de uso<\/p>\n<\/li>\n<li>\n<p>Diagramas de actividad<\/p>\n<\/li>\n<li>\n<p>Diagramas de secuencia<\/p>\n<\/li>\n<li>\n<p>Diagramas de clases<\/p>\n<\/li>\n<li>\n<p>Diagramas de componentes<\/p>\n<\/li>\n<li>\n<p>Diagramas de despliegue<\/p>\n<\/li>\n<li>\n<p>Diagramas de m\u00e1quinas de estado<\/p>\n<\/li>\n<\/ol>\n<p>Juntos, estos diagramas describen el sistema desde perspectivas complementarias:<\/p>\n<p><img alt=\"\" class=\"alignnone size-full wp-image-21217\" decoding=\"async\" height=\"941\" loading=\"lazy\" sizes=\"auto, (max-width: 1672px) 100vw, 1672px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba168046439.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba168046439.png 1672w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba168046439-300x169.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba168046439-1024x576.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba168046439-768x432.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba168046439-1536x864.png 1536w\" width=\"1672\"\/><\/p>\n<ul>\n<li>\n<p><strong>Objetivos:<\/strong> Lo que los usuarios y los sistemas externos necesitan<\/p>\n<\/li>\n<li>\n<p><strong>Comportamiento:<\/strong> C\u00f3mo fluye el trabajo a trav\u00e9s del sistema<\/p>\n<\/li>\n<li>\n<p><strong>Interacci\u00f3n:<\/strong> C\u00f3mo colaboran los objetos y los servicios<\/p>\n<\/li>\n<li>\n<p><strong>Estructura:<\/strong> Qu\u00e9 entidades y relaciones existen<\/p>\n<\/li>\n<li>\n<p><strong>Arquitectura:<\/strong> C\u00f3mo se organizan las partes principales del software<\/p>\n<\/li>\n<li>\n<p><strong>Operaciones:<\/strong> D\u00f3nde se ejecuta el sistema<\/p>\n<\/li>\n<li>\n<p><strong>Ciclo de vida:<\/strong> C\u00f3mo cambian los objetos importantes con el tiempo<\/p>\n<\/li>\n<\/ul>\n<p>El objetivo no es crear un diagrama para cada posible preocupaci\u00f3n. El objetivo es crear el conjunto m\u00e1s peque\u00f1o y coherente de modelos que responda a las preguntas que realmente tienen las partes interesadas.<\/p>\n<h2>1. Qu\u00e9 significa &#8220;UML Efectivo M\u00ednimo&#8221;<\/h2>\n<p>El UML efectivo m\u00ednimo es una estrategia de modelado basada en cuatro principios:<\/p>\n<ul>\n<li>\n<p><strong>Modelar para una decisi\u00f3n:<\/strong> Crear un diagrama porque aclara un requisito, una elecci\u00f3n de dise\u00f1o, un riesgo o un detalle de implementaci\u00f3n.<\/p>\n<\/li>\n<li>\n<p><strong>Utilizar la notaci\u00f3n m\u00e1s simple adecuada:<\/strong>Evite s\u00edmbolos, decoraciones y detalles innecesarios.<\/p>\n<\/li>\n<li>\n<p><strong>Mantenga la trazabilidad:<\/strong>Conecte los requisitos con el comportamiento, la estructura, el c\u00f3digo, las pruebas y el despliegue cuando sea pr\u00e1ctico.<\/p>\n<\/li>\n<li>\n<p><strong>Mantenga los diagramas comprensibles:<\/strong>Un diagrama que contiene todo a menudo no comunica nada.<\/p>\n<\/li>\n<\/ul>\n<p>Un modelo \u00fatil debe ayudar a responder preguntas como:<\/p>\n<ul>\n<li>\n<p>\u00bfQui\u00e9n interact\u00faa con el sistema?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 capacidades debe proporcionar el sistema?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 pasos componen un proceso de negocio?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 objeto o servicio es responsable de cada acci\u00f3n?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 datos y conceptos del dominio deben representarse?<\/p>\n<\/li>\n<li>\n<p>\u00bfC\u00f3mo se dividen los subsistemas?<\/p>\n<\/li>\n<li>\n<p>\u00bfD\u00f3nde se despliegan las aplicaciones, las bases de datos y los servicios externos?<\/p>\n<\/li>\n<li>\n<p>\u00bfC\u00f3mo transita una entidad importante a trav\u00e9s de su ciclo de vida?<\/p>\n<\/li>\n<\/ul>\n<p>Si un diagrama no ayuda a responder una de estas preguntas, es posible que no sea necesario.<\/p>\n<h2>2. El n\u00facleo de los siete diagramas<\/h2>\n<table>\n<thead>\n<tr>\n<th>Diagrama<\/th>\n<th>Pregunta principal<\/th>\n<th>Audiencia principal<\/th>\n<th>Fase t\u00edpica del proyecto<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Caso de uso<\/td>\n<td>\u00bfQui\u00e9n necesita qu\u00e9 del sistema?<\/td>\n<td>Clientes, analistas, propietarios del producto<\/td>\n<td>Requisitos<\/td>\n<\/tr>\n<tr>\n<td>Actividad<\/td>\n<td>\u00bfC\u00f3mo fluye el trabajo?<\/td>\n<td>Analistas, dise\u00f1adores, desarrolladores, probadores<\/td>\n<td>Requisitos y dise\u00f1o de procesos<\/td>\n<\/tr>\n<tr>\n<td>Secuencia<\/td>\n<td>\u00bfC\u00f3mo colaboran los participantes a lo largo del tiempo?<\/td>\n<td>Desarrolladores, arquitectos, probadores<\/td>\n<td>Dise\u00f1o detallado<\/td>\n<\/tr>\n<tr>\n<td>Clase<\/td>\n<td>\u00bfQu\u00e9 conceptos, datos y relaciones existen?<\/td>\n<td>Desarrolladores, analistas, arquitectos<\/td>\n<td>Dise\u00f1o de dominio y software<\/td>\n<\/tr>\n<tr>\n<td>Componente<\/td>\n<td>\u00bfC\u00f3mo se divide el sistema en partes principales?<\/td>\n<td>Arquitectos, desarrolladores, equipos de operaciones<\/td>\n<td>Arquitectura<\/td>\n<\/tr>\n<tr>\n<td>Despliegue<\/td>\n<td>\u00bfD\u00f3nde se ejecuta el software?<\/td>\n<td>Arquitectos, DevOps, operaciones, equipos de seguridad<\/td>\n<td>Despliegue y operaciones<\/td>\n<\/tr>\n<tr>\n<td>M\u00e1quina de estados<\/td>\n<td>\u00bfC\u00f3mo cambia una entidad con el tiempo?<\/td>\n<td>Desarrolladores, analistas, probadores<\/td>\n<td>Dise\u00f1o del ciclo de vida<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Estos diagramas no son independientes. Forman una cadena:<\/p>\n<div id=\"app\">\n<div>\n<p>\u00a0<\/p>\n<section class=\"XFWmL2CnhbtDyKjgpizi M2Pw6rZOpBOxO5BhWKuG kVrhW4syiUcS0srQ3G37\">\n<div class=\"j0h4rSdUkBvyClzF8GSd vkw8uHSvi3wI9I4pKEn3\">\n<div class=\"nmLQcPOIo3MNL8oiV0cN\">\n<div class=\"G_r4UUA5KSOoClNtYWMw WR1zPj_pSOPMHbaPxAFr\">\n<div class=\"ulhFWA5BGGH5z8M1KsWn\" data-activeresponse=\"true\" data-has-limit-warning=\"\" id=\"2c6e548a-d794-4846-8a7f-6e87b6573f1f-assistant-message-3-1\">\n<div class=\"tfRkvU29nf962AABc1VN\">\n<div class=\"sJ_ySfZNjKwb6Ycl2rsF\">\n<div class=\"vB7kvkSLQa1WqtmqeylQ\">\n<div class=\"gtJvbOYVIXBFnY2IfpBD\">\n<div class=\"\">\n<div class=\"space-y-4 whitespace-normal *:first:mt-0 *:last:mb-0 U09wq0cxqsXjr06LOSSz MmViXVVh27cQF7CjyozL\">\n<p><span class=\"katex\"><span class=\"katex-mathml\">Casos de uso \u27f6 Actividades \u27f6 Secuencias \u27f6 Clases y Componentes \u27f6 Despliegue<\/span><span aria-hidden=\"true\" class=\"katex-html\"><span class=\"base\"><span class=\"mord text\"><span class=\"mord\"><span data-sd-animate=\"true\">Usar<\/span>\u00a0<span data-sd-animate=\"true\">Casos<\/span><\/span><\/span><span class=\"mrel\"><span data-sd-animate=\"true\">\u27f6<\/span><\/span><\/span><span class=\"base\"><span class=\"mord text\"><span class=\"mord\"><span data-sd-animate=\"true\">Actividades<\/span><\/span><\/span><span class=\"mrel\"><span data-sd-animate=\"true\">\u27f6<\/span><\/span><\/span><span class=\"base\"><span class=\"mord text\"><span class=\"mord\"><span data-sd-animate=\"true\">Secuencias<\/span><\/span><\/span><span class=\"mrel\"><span data-sd-animate=\"true\">\u27f6<\/span><\/span><\/span><span class=\"base\"><span class=\"mord text\"><span class=\"mord\"><span data-sd-animate=\"true\">Clases<\/span>\u00a0<span data-sd-animate=\"true\">y<\/span>\u00a0<span data-sd-animate=\"true\">Componentes<\/span><\/span><\/span><span class=\"mrel\"><span data-sd-animate=\"true\">\u27f6<\/span><\/span><\/span><span class=\"base\"><span class=\"mord text\"><span class=\"mord\"><span data-sd-animate=\"true\">Despliegue<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<p>\u00a0<\/p>\n<\/div>\n<\/div>\n<p>Los diagramas de m\u00e1quinas de estado atraviesan esta cadena al describir el ciclo de vida de objetos que tienen estados significativos.<\/p>\n<p>Por ejemplo, un pedido en l\u00ednea puede representarse de la siguiente manera:<\/p>\n<ul>\n<li>\n<p><strong>Caso de uso:<\/strong> Realizar un pedido<\/p>\n<\/li>\n<li>\n<p><strong>Actividad:<\/strong> Validar carrito, autorizar pago, reservar stock, confirmar pedido<\/p>\n<\/li>\n<li>\n<p><strong>Secuencia:<\/strong> La interfaz de cliente llama al servicio de pedidos, servicio de pagos y servicio de inventario<\/p>\n<\/li>\n<li>\n<p><strong>Clase:<\/strong> <code data-backticks=\"1\">Pedido<\/code>, <code data-backticks=\"1\">L\u00ednea de pedido<\/code>, <code data-backticks=\"1\">Pago<\/code>, y <code data-backticks=\"1\">Producto<\/code><\/p>\n<\/li>\n<li>\n<p><strong>Componente:<\/strong> Aplicaci\u00f3n web, servicio de pedidos, adaptador de pagos, servicio de inventario<\/p>\n<\/li>\n<li>\n<p><strong>Despliegue:<\/strong> Navegador, cl\u00faster de aplicaciones, base de datos, proveedor de pagos<\/p>\n<\/li>\n<li>\n<p><strong>M\u00e1quina de estado:<\/strong> Borrador \u2192 Pago pendiente \u2192 Pagado \u2192 Enviado \u2192 Entregado<\/p>\n<\/li>\n<\/ul>\n<h2>3. Diagramas de casos de uso: Definici\u00f3n de objetivos del sistema<\/h2>\n<p>Un diagrama de casos de uso presenta el sistema desde el exterior. Identifica los actores que interact\u00faan con el sistema y los objetivos que persiguen.<\/p>\n<h3>3.1 Qu\u00e9 contiene un diagrama de casos de uso<\/h3>\n<p>Los elementos principales son:<\/p>\n<p><img alt=\"\" class=\"alignnone size-full wp-image-21219\" decoding=\"async\" height=\"941\" loading=\"lazy\" sizes=\"auto, (max-width: 1672px) 100vw, 1672px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba17707eb25.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba17707eb25.png 1672w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba17707eb25-300x169.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba17707eb25-1024x576.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba17707eb25-768x432.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba17707eb25-1536x864.png 1536w\" width=\"1672\"\/><\/p>\n<ul>\n<li>\n<p><strong>L\u00edmite del sistema:<\/strong> Define qu\u00e9 est\u00e1 dentro del sistema que se est\u00e1 modelando<\/p>\n<\/li>\n<li>\n<p><strong>Actores:<\/strong> Personas, organizaciones, dispositivos o sistemas externos<\/p>\n<\/li>\n<li>\n<p><strong>Casos de uso:<\/strong> Objetivos o servicios que proporciona el sistema<\/p>\n<\/li>\n<li>\n<p><strong>Asociaciones:<\/strong> Conexiones entre actores y casos de uso<\/p>\n<\/li>\n<li>\n<p><strong>Relaciones de inclusi\u00f3n:<\/strong> Comportamiento reutilizable requerido por otro caso de uso<\/p>\n<\/li>\n<li>\n<p><strong>Relaciones de extensi\u00f3n:<\/strong> Comportamiento opcional o condicional<\/p>\n<\/li>\n<\/ul>\n<p>Ejemplo:<\/p>\n<p id=\"qTXLSvp\"><img alt=\"\" class=\"alignnone size-full wp-image-21221\" decoding=\"async\" height=\"878\" loading=\"lazy\" sizes=\"auto, (max-width: 1922px) 100vw, 1922px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba187c4326c.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba187c4326c.png 1922w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba187c4326c-300x137.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba187c4326c-1024x468.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba187c4326c-768x351.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba187c4326c-1536x702.png 1536w\" width=\"1922\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NP51QyCm38Nl1ly7uNiBMtSQ9NGBxDh0A3iRHsqCZWsolD6D_VSfRToHNcpq_AHFFEyoM-8o1gq27Xau0VdJmD1xGiS-HQsqieuJGLiofn6frgQpvn4ZGqVfq_T81co6MQpQpVnX2OTKCiBxEJEE5_DDd2WJqCPJG33x67mKftIYWH-j0CJah7IRLqfVSWkWBuxpPSwXVLXukc0TmfxgKeVsSV7-KdX8vB-nhZkxDWlNMmb77y9YpfDMlzEoDGnOhPeh_auHe1omNa_51fvXk_NHXT9ZqsXrbzBS8_Z_cAwIy7OOU_cXFm00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NP7DIWCn483lWRp3iFSMj9waB2rxbLAgFi2G36iWcsX-UgZuC1uzUF8HziMSxCR2UWcPoJVp3PDTJ1XI7gmKsWHIoem_3ZI1kRnbGq4Z88Vyye9II84g-G2TDUGI_ONDCVWpaUOhLnwnzx41Z71DJwah_MXYeg6qXRqTK8rVRiAdW5pHi2-DdwxFraFpn3AUWnmyZD-Ei85tAG1o98MHe3dWcNeCHQSpAsRvStUpe4w4rbmAHjfeNvdR1RFFFE0CySGLsIoGBW-lrlphSYV5HncxxWLMgtRsBnCiumFMwn9iu1wsM-EKpPhQLehbjce9o-jQQe9LEru7_zWl\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\ndirecci\u00f3n de izquierda a derecha\r\n\r\nactor Cliente\r\nactor \"Proveedor de Pagos\" as ProveedorPagos\r\nactor \"Sistema de Almac\u00e9n\" as Almacen\r\n\r\nrect\u00e1ngulo \"Tienda en L\u00ednea\" {\r\n  usecase \"Navegar Productos\" as UC1\r\n  usecase \"Realizar Pedido\" as UC2\r\n  usecase \"Autorizar Pago\" as UC3\r\n  usecase \"Cumplir Pedido\" as UC4\r\n}\r\n\r\nCliente --&gt; UC1\r\nCliente --&gt; UC2\r\nUC2 ..&gt; UC3 : &lt;&lt;include&gt;&gt;\r\nProveedorPagos --&gt; UC3\r\nAlmacen --&gt; UC4\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NP7DIWCn483lWRp3iFSMj9waB2rxbLAgFi2G36iWcsX-UgZuC1uzUF8HziMSxCR2UWcPoJVp3PDTJ1XI7gmKsWHIoem_3ZI1kRnbGq4Z88Vyye9II84g-G2TDUGI_ONDCVWpaUOhLnwnzx41Z71DJwah_MXYeg6qXRqTK8rVRiAdW5pHi2-DdwxFraFpn3AUWnmyZD-Ei85tAG1o98MHe3dWcNeCHQSpAsRvStUpe4w4rbmAHjfeNvdR1RFFFE0CySGLsIoGBW-lrlphSYV5HncxxWLMgtRsBnCiumFMwn9iu1wsM-EKpPhQLehbjce9o-jQQe9LEru7_zWl\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NP51QyCm38Nl1ly7uNiBMtSQ9NGBxDh0A3iRHsqCZWsolD6D_VSfRToHNcpq_AHFFEyoM-8o1gq27Xau0VdJmD1xGiS-HQsqieuJGLiofn6frgQpvn4ZGqVfq_T81co6MQpQpVnX2OTKCiBxEJEE5_DDd2WJqCPJG33x67mKftIYWH-j0CJah7IRLqfVSWkWBuxpPSwXVLXukc0TmfxgKeVsSV7-KdX8vB-nhZkxDWlNMmb77y9YpfDMlzEoDGnOhPeh_auHe1omNa_51fvXk_NHXT9ZqsXrbzBS8_Z_cAwIy7OOU_cXFm00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>3.2 Identificar correctamente los actores<\/h3>\n<p>Un actor no es necesariamente un rol humano. Es cualquier entidad externa que interact\u00faa con el sistema.<\/p>\n<p>Los posibles actores incluyen:<\/p>\n<ul>\n<li>\n<p>Cliente<\/p>\n<\/li>\n<li>\n<p>Agente de soporte<\/p>\n<\/li>\n<li>\n<p>Administrador<\/p>\n<\/li>\n<li>\n<p>Pasarela de pago<\/p>\n<\/li>\n<li>\n<p>Proveedor de identidad<\/p>\n<\/li>\n<li>\n<p>Sistema de gesti\u00f3n de almac\u00e9n<\/p>\n<\/li>\n<li>\n<p>Tarea programada<\/p>\n<\/li>\n<li>\n<p>Aplicaci\u00f3n m\u00f3vil<\/p>\n<\/li>\n<li>\n<p>Dispositivo IoT<\/p>\n<\/li>\n<\/ul>\n<p>Evite nombrar actores seg\u00fan detalles de implementaci\u00f3n interna. Un \u201ccontrolador REST\u201d generalmente no es un actor. Una \u201caplicaci\u00f3n de socio\u201d podr\u00eda serlo.<\/p>\n<h3>3.3 Nombrar los casos de uso como objetivos<\/h3>\n<p>Los buenos nombres de casos de uso describen los resultados:<\/p>\n<ul>\n<li>\n<p>Presentar informe de gastos<\/p>\n<\/li>\n<li>\n<p>Aprobar solicitud de compra<\/p>\n<\/li>\n<li>\n<p>Registrar nuevo paciente<\/p>\n<\/li>\n<li>\n<p>Generar factura<\/p>\n<\/li>\n<li>\n<p>Restablecer contrase\u00f1a<\/p>\n<\/li>\n<\/ul>\n<p>Los nombres d\u00e9biles describen mecanismos de implementaci\u00f3n:<\/p>\n<ul>\n<li>\n<p>Llamar a la API<\/p>\n<\/li>\n<li>\n<p>Ejecutar consulta SQL<\/p>\n<\/li>\n<li>\n<p>Abrir formulario<\/p>\n<\/li>\n<li>\n<p>Invocar controlador<\/p>\n<\/li>\n<\/ul>\n<p>Un caso de uso debe responder:<\/p>\n<blockquote>\n<p>\u00bfQu\u00e9 resultado significativo desea lograr un actor con el sistema?<\/p>\n<\/blockquote>\n<h3>3.4 Cu\u00e1ndo usar incluir y extender<\/h3>\n<p>Use <code data-backticks=\"1\">&lt;&lt;incluir&gt;&gt;<\/code> cuando un comportamiento es siempre requerido como parte de otro.<\/p>\n<p>Por ejemplo:<\/p>\n<ul>\n<li>\n<p>\u201cRealizar pedido\u201d incluye \u201cCalcular total\u201d<\/p>\n<\/li>\n<li>\n<p>\u201cRegistrar cuenta\u201d incluye \u201cValidar correo electr\u00f3nico\u201d<\/p>\n<\/li>\n<\/ul>\n<p>Use <code data-backticks=\"1\">&lt;&lt;extender&gt;&gt;<\/code> cuando el comportamiento es opcional o condicional.<\/p>\n<p>Por ejemplo:<\/p>\n<ul>\n<li>\n<p>\u201cRealizar pedido\u201d puede ser extendido por \u201cAplicar descuento promocional\u201d<\/p>\n<\/li>\n<li>\n<p>\u201cIniciar sesi\u00f3n\u201d puede ser extendido por \u201cCompletar autenticaci\u00f3n multifactor\u201d<\/p>\n<\/li>\n<\/ul>\n<p>No utilice estas relaciones simplemente para que un diagrama parezca m\u00e1s sofisticado. A menudo, un escenario escrito breve o un diagrama de actividades es m\u00e1s claro.<\/p>\n<h3>3.5 Lo que los diagramas de casos de uso no muestran<\/h3>\n<p>Los diagramas de casos de uso no est\u00e1n destinados a describir:<\/p>\n<ul>\n<li>\n<p>Dise\u00f1os detallados de la interfaz de usuario<\/p>\n<\/li>\n<li>\n<p>Clases de implementaci\u00f3n exactas<\/p>\n<\/li>\n<li>\n<p>Tablas de base de datos<\/p>\n<\/li>\n<li>\n<p>Orden de mensajes<\/p>\n<\/li>\n<li>\n<p>L\u00f3gica algor\u00edtmica<\/p>\n<\/li>\n<li>\n<p>Topolog\u00eda de infraestructura<\/p>\n<\/li>\n<\/ul>\n<p>Definen el alcance y los objetivos. Otros diagramas proporcionan los detalles.<\/p>\n<h2>4. Diagramas de actividad: Modelado de flujos de trabajo y procesos<\/h2>\n<p>Los diagramas de actividad muestran c\u00f3mo avanza el trabajo. Son particularmente efectivos para procesos empresariales, flujos de trabajo, l\u00f3gica de ramificaci\u00f3n, trabajo paralelo y manejo de excepciones.<\/p>\n<h3>4.1 Elementos centrales<\/h3>\n<p>Los diagramas de actividad utilizan com\u00fanmente:<\/p>\n<ul>\n<li>\n<p>Nodos iniciales<\/p>\n<\/li>\n<li>\n<p>Acciones<\/p>\n<\/li>\n<li>\n<p>Nodos de decisi\u00f3n<\/p>\n<\/li>\n<li>\n<p>Nodos de fusi\u00f3n<\/p>\n<\/li>\n<li>\n<p>Ramificaciones y uniones<\/p>\n<\/li>\n<li>\n<p>Carriles<\/p>\n<\/li>\n<li>\n<p>Nodos finales<\/p>\n<\/li>\n<li>\n<p>Guardias como &#8220;<code data-backticks=\"1\">[aprobado]<\/code> o &#8220;<code data-backticks=\"1\">[rechazado]<\/code><\/p>\n<\/li>\n<\/ul>\n<p>Ejemplo:<\/p>\n<p id=\"SaLwEJc\"><img alt=\"\" class=\"alignnone size-full wp-image-21222\" decoding=\"async\" height=\"873\" loading=\"lazy\" sizes=\"auto, (max-width: 1916px) 100vw, 1916px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18bb0a5e3.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18bb0a5e3.png 1916w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18bb0a5e3-300x137.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18bb0a5e3-1024x467.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18bb0a5e3-768x350.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18bb0a5e3-1536x700.png 1536w\" width=\"1916\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:PP0nRiCm34Lt0Re3H-SApj0KcJgrI83kQamtH6Koe2W3BdpuIdPI6Er4wVC_a9-7P44j3z6x-PYJoO0wUxUethNd_36GWMY7klUkc5xh4ywe8rsmEDlt4AaBXXiJzT2ilh4sdtPWLsHe9amxxm3QOuYN72jaOY4k440l-bKhmFmMfW7PDdEgt3vdkuhIDy9jDUmV78JFG7odNtWiFT7fBt_2L0G4UXWM7hcxpww_Vmdhli8zwV0R4Q1SwkOTneJGiAofJcXPUSqSZ8G1LKNJ5k2EUkyEfPQR_m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TL51JWCn3Bn7oXzyt7vXUw2eS4TKuXvjlCKYZIidcmFgPtX0Jtq04lindD2ALeAJbR5dnkEiKdQIfrsmvh0EX37ZmPe6MjC_na9EO8-UF2-jqQ4DIg6163oUyQI4_iK5yhUZD4BtzVdK02ZpXmxmtGBoAqReqdnSM0FGhrqOfg3CpDc5HWGOMTvg1RZrSzlcLXlz_PHPwBrwAhoyqC1j7SK_o1IBfdD2V55ungHz5VXjDHcC_hn1VVsJkAxESIJPNQS6I9dtrc1825tadumFM3WK540H5anLgRI33JIVuZKlUXgjMMdLF_a6\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\n|Cliente|\r\nstart\r\n:Enviar pedido;\r\n\r\n|Servicio de pedidos|\r\n:Validar pedido;\r\n\r\nif (\u00bfPedido v\u00e1lido?) then (s\u00ed)\r\n  :Calcular total;\r\n\r\n  fork\r\n    |Servicio de pagos|\r\n    :Autorizar pago;\r\n  fork again\r\n    |Servicio de inventario|\r\n    :Reservar inventario;\r\n  end fork\r\n\r\n  |Servicio de pedidos|\r\n  :Confirmar pedido;\r\n  stop\r\nelse (no)\r\n  :Devolver errores de validaci\u00f3n;\r\n  stop\r\nendif\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TL51JWCn3Bn7oXzyt7vXUw2eS4TKuXvjlCKYZIidcmFgPtX0Jtq04lindD2ALeAJbR5dnkEiKdQIfrsmvh0EX37ZmPe6MjC_na9EO8-UF2-jqQ4DIg6163oUyQI4_iK5yhUZD4BtzVdK02ZpXmxmtGBoAqReqdnSM0FGhrqOfg3CpDc5HWGOMTvg1RZrSzlcLXlz_PHPwBrwAhoyqC1j7SK_o1IBfdD2V55ungHz5VXjDHcC_hn1VVsJkAxESIJPNQS6I9dtrc1825tadumFM3WK540H5anLgRI33JIVuZKlUXgjMMdLF_a6\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:PP0nRiCm34Lt0Re3H-SApj0KcJgrI83kQamtH6Koe2W3BdpuIdPI6Er4wVC_a9-7P44j3z6x-PYJoO0wUxUethNd_36GWMY7klUkc5xh4ywe8rsmEDlt4AaBXXiJzT2ilh4sdtPWLsHe9amxxm3QOuYN72jaOY4k440l-bKhmFmMfW7PDdEgt3vdkuhIDy9jDUmV78JFG7odNtWiFT7fBt_2L0G4UXWM7hcxpww_Vmdhli8zwV0R4Q1SwkOTneJGiAofJcXPUSqSZ8G1LKNJ5k2EUkyEfPQR_m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>4.2 Use carriles para mostrar la responsabilidad<\/h3>\n<p>Los carriles aclaran qu\u00e9 rol, sistema o componente realiza cada acci\u00f3n.<\/p>\n<p>Los carriles \u00fatiles pueden representar:<\/p>\n<ul>\n<li>\n<p>Cliente<\/p>\n<\/li>\n<li>\n<p>Agente de servicio al cliente<\/p>\n<\/li>\n<li>\n<p>Servicio de pedidos<\/p>\n<\/li>\n<li>\n<p>Proveedor de pagos<\/p>\n<\/li>\n<li>\n<p>Almac\u00e9n<\/p>\n<\/li>\n<li>\n<p>Programador autom\u00e1tico<\/p>\n<\/li>\n<\/ul>\n<p>Las carriles son especialmente valiosos cuando un proceso cruza l\u00edmites organizacionales o de sistema.<\/p>\n<h3>4.3 Modelar decisiones expl\u00edcitamente<\/h3>\n<p>Una decisi\u00f3n debe tener guardias significativos:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">[Pago aprobado]\r\n[Pago rechazado]\r\n<\/code><\/pre>\n<p>Evite etiquetas vagas como:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">[s\u00ed]\r\n[no]\r\n<\/code><\/pre>\n<p>a menos que la pregunta de la decisi\u00f3n sea inmediatamente obvia.<\/p>\n<h3>4.4 Mostrar paralelismo cuando sea relevante<\/h3>\n<p>Las bifurcaciones y uniones son \u00fatiles cuando las actividades ocurren concurrentemente. Por ejemplo, despu\u00e9s de validar un pedido:<\/p>\n<ul>\n<li>\n<p>El pago puede ser autorizado<\/p>\n<\/li>\n<li>\n<p>El inventario puede ser reservado<\/p>\n<\/li>\n<li>\n<p>Puede ejecutarse una verificaci\u00f3n de fraude<\/p>\n<\/li>\n<\/ul>\n<p>Sin embargo, modele el paralelismo solo cuando afecte la temporizaci\u00f3n, la consistencia, el manejo de fallos o el dise\u00f1o del sistema. No utilice ramas paralelas meramente para hacer el diagrama m\u00e1s elaborado.<\/p>\n<h3>4.5 Diagramas de actividad y requisitos<\/h3>\n<p>Un diagrama de actividad puede revelar requisitos faltantes. Por ejemplo, al modelar un proceso de aprobaci\u00f3n, el equipo puede descubrir preguntas sin respuesta:<\/p>\n<ul>\n<li>\n<p>\u00bfQu\u00e9 sucede si un aprobador no est\u00e1 disponible?<\/p>\n<\/li>\n<li>\n<p>\u00bfPuede una solicitud ser rechazada y reenviada?<\/p>\n<\/li>\n<li>\n<p>\u00bfCu\u00e1l es el tiempo de escalaci\u00f3n?<\/p>\n<\/li>\n<li>\n<p>\u00bfPueden dos personas aprobar simult\u00e1neamente?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 sucede si el sistema aguas abajo no est\u00e1 disponible?<\/p>\n<\/li>\n<\/ul>\n<p>Esto hace que los diagramas de actividad sean \u00fatiles antes de comenzar la implementaci\u00f3n.<\/p>\n<h2>5. Diagramas de secuencia: Explicar la colaboraci\u00f3n a lo largo del tiempo<\/h2>\n<p>Los diagramas de secuencia muestran c\u00f3mo los participantes intercambian mensajes en una interacci\u00f3n ordenada en el tiempo. Son ideales para describir escenarios importantes en detalle.<\/p>\n<h3>5.1 Elementos principales<\/h3>\n<p>Un diagrama de secuencia t\u00edpicamente incluye:<\/p>\n<ul>\n<li>\n<p>Actores<\/p>\n<\/li>\n<li>\n<p>Objetos o servicios<\/p>\n<\/li>\n<li>\n<p>L\u00edneas de vida<\/p>\n<\/li>\n<li>\n<p>Mensajes<\/p>\n<\/li>\n<li>\n<p>Mensajes de retorno<\/p>\n<\/li>\n<li>\n<p>Barras de activaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Condiciones<\/p>\n<\/li>\n<li>\n<p>Bucles<\/p>\n<\/li>\n<li>\n<p>Rutas alternativas<\/p>\n<\/li>\n<li>\n<p>Mensajes as\u00edncronos<\/p>\n<\/li>\n<\/ul>\n<p>Ejemplo:<\/p>\n<p id=\"hFrCHaK\"><img alt=\"\" class=\"alignnone size-full wp-image-21223\" decoding=\"async\" height=\"868\" loading=\"lazy\" sizes=\"auto, (max-width: 1919px) 100vw, 1919px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18fadb888.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18fadb888.png 1919w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18fadb888-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18fadb888-1024x463.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18fadb888-768x347.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba18fadb888-1536x695.png 1536w\" width=\"1919\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XLBBQiD03BmR_0yY9-UG7_2X9AbJ2FGHIA7qL6HRfGksTz5g0-dNLrx7nYbzN8mzCngD1g-z84jecpJ1IYp3RV1YM-8qAMteQkGpB5weX8rp2q0F-fucbUs4RGEB9ww9uKXyCXL5FY8pnG7FBNLofRbWQLAZO8cUHgDY6_bYcoPfCYQ1rKs_5N8uXh8r0dPOqMDA3PCvL4me5B-oIczQzXu3gQfYgnAF9yhYj9AAh6RZ4TxNLqDZzXmmo8TbyqaPjbhBO8wDJ19qZks9T1ucR6u_vwz31QSjq55GWiyEctsnd6ccqxNFTyCjYh5TpyVZbPrAog4mtZLu_YQbHkiT4zLKDQRxFUMS_pFbwyFkyVdjRhE_t_sSrrtSYTdoFu4l6kfqxrgV-ZT-0G00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XL9BRi8m4DrRyXr6MS622x2eI1hQ3HL8NNHPJMmNB3bnD7QGohLwX5wiunWgWaIxSPnvRvxVV5OX8iMXTLAWYfxWqLdJHID5uuTE8tr2KVREAbJs-wk3DzCKW25zfL2-Y-GT5A-6ZbPP3zh0pcYhVHXP-NwFY7kVMNoHGcF41eE1eaed4sgCFjnArfKKKfnTmk8XEO4bhBkZHOB-_60ACfOJ6LPaaFBVJ26HZNwUTCu4fjOLq_O34jSyopBCuEZYMiVgIqdNkQa01d7W1jeJvxTSRtu0NSmmzkGRJ9cG0nFT2Jhrn6CPq2NPDS-A_U_AvxBUpg-flstWHdzOQlEm4cDi1CENXYtXnOT8tAeRgd4XZmJ8g0EUxbgTmlzuVIetc-qxExxZrn3npl68-t47_l8xKjbdfwLOySax-mC0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nactor Cliente\r\nboundary \"Aplicaci\u00f3n Web\" as Web\r\ncontrol \"Servicio de Pedidos\" as Pedido\r\ncontrol \"Servicio de Pago\" as Pago\r\ndatabase \"Base de Datos de Pedidos\" as DB\r\n\r\nCliente -&gt; Web : Enviar pedido\r\nWeb -&gt; Pedido : crearPedido(carrito)\r\n\r\nPedido -&gt; DB : guardar(pedido)\r\nDB --&gt; Pedido : idPedido\r\n\r\nPedido -&gt; Pago : autorizar(monto)\r\n\r\nalt Pago aprobado\r\n  Pago --&gt; Pedido : aprobado\r\n  Pedido -&gt; DB : actualizarEstado(PAGADO)\r\n  Pedido --&gt; Web : confirmaci\u00f3n\r\n  Web --&gt; Cliente : Mostrar confirmaci\u00f3n\r\nelse Pago rechazado\r\n  Pago --&gt; Pedido : rechazado\r\n  Pedido -&gt; DB : actualizarEstado(FALLO_PAGO)\r\n  Pedido --&gt; Web : error de pago\r\n  Web --&gt; Cliente : Mostrar error\r\nend\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XL9BRi8m4DrRyXr6MS622x2eI1hQ3HL8NNHPJMmNB3bnD7QGohLwX5wiunWgWaIxSPnvRvxVV5OX8iMXTLAWYfxWqLdJHID5uuTE8tr2KVREAbJs-wk3DzCKW25zfL2-Y-GT5A-6ZbPP3zh0pcYhVHXP-NwFY7kVMNoHGcF41eE1eaed4sgCFjnArfKKKfnTmk8XEO4bhBkZHOB-_60ACfOJ6LPaaFBVJ26HZNwUTCu4fjOLq_O34jSyopBCuEZYMiVgIqdNkQa01d7W1jeJvxTSRtu0NSmmzkGRJ9cG0nFT2Jhrn6CPq2NPDS-A_U_AvxBUpg-flstWHdzOQlEm4cDi1CENXYtXnOT8tAeRgd4XZmJ8g0EUxbgTmlzuVIetc-qxExxZrn3npl68-t47_l8xKjbdfwLOySax-mC0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XLBBQiD03BmR_0yY9-UG7_2X9AbJ2FGHIA7qL6HRfGksTz5g0-dNLrx7nYbzN8mzCngD1g-z84jecpJ1IYp3RV1YM-8qAMteQkGpB5weX8rp2q0F-fucbUs4RGEB9ww9uKXyCXL5FY8pnG7FBNLofRbWQLAZO8cUHgDY6_bYcoPfCYQ1rKs_5N8uXh8r0dPOqMDA3PCvL4me5B-oIczQzXu3gQfYgnAF9yhYj9AAh6RZ4TxNLqDZzXmmo8TbyqaPjbhBO8wDJ19qZks9T1ucR6u_vwz31QSjq55GWiyEctsnd6ccqxNFTyCjYh5TpyVZbPrAog4mtZLu_YQbHkiT4zLKDQRxFUMS_pFbwyFkyVdjRhE_t_sSrrtSYTdoFu4l6kfqxrgV-ZT-0G00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>5.2 Elija escenarios estrat\u00e9gicamente<\/h3>\n<p>No cree un diagrama de secuencia para cada caso de uso. Comience con escenarios que sean:<\/p>\n<ul>\n<li>\n<p>Cr\u00edticos para el negocio<\/p>\n<\/li>\n<li>\n<p>T\u00e9cnicamente riesgosos<\/p>\n<\/li>\n<li>\n<p>Con alta carga de integraci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Sensibles a la seguridad<\/p>\n<\/li>\n<li>\n<p>Transaccionales<\/p>\n<\/li>\n<li>\n<p>Dif\u00edciles de entender<\/p>\n<\/li>\n<li>\n<p>Probables de exponer problemas arquitect\u00f3nicos<\/p>\n<\/li>\n<\/ul>\n<p>Los ejemplos t\u00edpicos incluyen:<\/p>\n<ul>\n<li>\n<p>Autenticaci\u00f3n de usuario<\/p>\n<\/li>\n<li>\n<p>Procesamiento de pagos<\/p>\n<\/li>\n<li>\n<p>Carga de archivos<\/p>\n<\/li>\n<li>\n<p>Env\u00edo de pedidos<\/p>\n<\/li>\n<li>\n<p>Restablecimiento de contrase\u00f1a<\/p>\n<\/li>\n<li>\n<p>Publicaci\u00f3n de eventos<\/p>\n<\/li>\n<li>\n<p>Recuperaci\u00f3n ante fallos<\/p>\n<\/li>\n<li>\n<p>Ejecuci\u00f3n de trabajos en segundo plano<\/p>\n<\/li>\n<\/ul>\n<h3>5.3 Distinguir interacciones s\u00edncronas y as\u00edncronas<\/h3>\n<p>Una llamada s\u00edncrona significa que el remitente espera una respuesta. Un mensaje as\u00edncrono permite que el remitente contin\u00fae.<\/p>\n<p>Esta distinci\u00f3n afecta a:<\/p>\n<ul>\n<li>\n<p>Experiencia del usuario<\/p>\n<\/li>\n<li>\n<p>L\u00edmites de transacci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Gesti\u00f3n de errores<\/p>\n<\/li>\n<li>\n<p>Escalabilidad<\/p>\n<\/li>\n<li>\n<p>Comportamiento de reintento<\/p>\n<\/li>\n<li>\n<p>Observabilidad<\/p>\n<\/li>\n<\/ul>\n<p>Utilice notaciones diferentes de forma coherente y explique el comportamiento as\u00edncrono importante en una nota o texto acompa\u00f1ante.<\/p>\n<h3>5.4 Modelar rutas de fallo<\/h3>\n<p>Un diagrama de secuencia que solo muestra la ruta exitosa puede ocultar riesgos importantes de dise\u00f1o. Utilice <code data-backticks=\"1\">alt<\/code>, <code data-backticks=\"1\">opt<\/code>, y <code data-backticks=\"1\">loop<\/code> fragmentos para mostrar:<\/p>\n<ul>\n<li>\n<p>Fallo de validaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Fallo de autorizaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Tiempo de espera agotado<\/p>\n<\/li>\n<li>\n<p>Reintentar<\/p>\n<\/li>\n<li>\n<p>Fallo parcial<\/p>\n<\/li>\n<li>\n<p>Solicitud duplicada<\/p>\n<\/li>\n<li>\n<p>Indisponibilidad del servicio<\/p>\n<\/li>\n<li>\n<p>Compensaci\u00f3n o reversi\u00f3n<\/p>\n<\/li>\n<\/ul>\n<p>Por ejemplo:<\/p>\n<p id=\"VuPWytA\"><img alt=\"\" class=\"alignnone size-full wp-image-21224\" decoding=\"async\" height=\"871\" loading=\"lazy\" sizes=\"auto, (max-width: 1917px) 100vw, 1917px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1cb2403fe.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1cb2403fe.png 1917w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1cb2403fe-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1cb2403fe-1024x465.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1cb2403fe-768x349.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1cb2403fe-1536x698.png 1536w\" width=\"1917\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VP0n3eCm34NtIBc3By05EbHKdReXu09fSAL82Q6sKwctRm88MChYuVlx_P_KB8Oa1Q_LtJiS1Qeht9e7NA1Bp-042Dy9MRJIgkXvtI5zdCLiQIXQP3vwZ9VDGCXJ70VM2ZQjslWjSl9ITZCtwsk34cqBLolqZD2xW37jpcE35eM-Upv0oLz4BX1Sqi_ppne0p1qMvCiuptykUWnJ9BEw4k5yEmxv4MNKUUPl_W40\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XP5B2i8m48RtWTnXBj0BT26AABWhrGk4PeJ0D2d9j7W5p-N5d0JQKa7Tp6B-ntmX-yGcyjYJLaTow1cXsi6XkK0D9pyv4o45SftZqMgbLLR4SCKuoJA8gucXm_JfCyIhAM8QWhUe5QpBQhdJOXg9ZGrPBmT4ccbgU3qVZaL3IWWtX_qGm2989qQpH3PCBJh9UjvI0MIgMGk0kJULg_-vVf415BQr-Mw8tFVSMUG0d5yI3PMy5xuozZBbEzu0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nCliente -&gt; API : Enviar solicitud\r\n\r\nAPI -&gt; Servicio : Procesar solicitud\r\n\r\nalt Servicio responde\r\n  Servicio --&gt; API : Resultado\r\n  API --&gt; Cliente : \u00c9xito\r\nelse Tiempo de espera\r\n  API -&gt; Servicio : Reintentar solicitud\r\n  alt Reintento exitoso\r\n    Servicio --&gt; API : Resultado\r\n    API --&gt; Cliente : \u00c9xito\r\n  else Reintento fallido\r\n    API --&gt; Cliente : Fallo temporal\r\n  end\r\nend\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:XP5B2i8m48RtWTnXBj0BT26AABWhrGk4PeJ0D2d9j7W5p-N5d0JQKa7Tp6B-ntmX-yGcyjYJLaTow1cXsi6XkK0D9pyv4o45SftZqMgbLLR4SCKuoJA8gucXm_JfCyIhAM8QWhUe5QpBQhdJOXg9ZGrPBmT4ccbgU3qVZaL3IWWtX_qGm2989qQpH3PCBJh9UjvI0MIgMGk0kJULg_-vVf415BQr-Mw8tFVSMUG0d5yI3PMy5xuozZBbEzu0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VP0n3eCm34NtIBc3By05EbHKdReXu09fSAL82Q6sKwctRm88MChYuVlx_P_KB8Oa1Q_LtJiS1Qeht9e7NA1Bp-042Dy9MRJIgkXvtI5zdCLiQIXQP3vwZ9VDGCXJ70VM2ZQjslWjSl9ITZCtwsk34cqBLolqZD2xW37jpcE35eM-Upv0oLz4BX1Sqi_ppne0p1qMvCiuptykUWnJ9BEw4k5yEmxv4MNKUUPl_W40\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>5.5 Evitar diagramas de secuencia excesivamente detallados<\/h3>\n<p>Un diagrama de secuencia se vuelve dif\u00edcil de mantener cuando incluye cada llamada de m\u00e9todo interna. Enf\u00f3quese en responsabilidades y l\u00edmites significativos:<\/p>\n<ul>\n<li>\n<p>Interfaz de usuario<\/p>\n<\/li>\n<li>\n<p>Servicio de aplicaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Objeto de dominio<\/p>\n<\/li>\n<li>\n<p>Repositorio<\/p>\n<\/li>\n<li>\n<p>Servicio externo<\/p>\n<\/li>\n<li>\n<p>Intermediario de mensajes<\/p>\n<\/li>\n<li>\n<p>Base de datos<\/p>\n<\/li>\n<\/ul>\n<p>Los diagramas de implementaci\u00f3n detallados pueden ser \u00fatiles durante la depuraci\u00f3n, pero no deber\u00edan convertirse en la documentaci\u00f3n arquitect\u00f3nica principal.<\/p>\n<h2>6. Diagramas de clases: Descripci\u00f3n de estructura y conceptos de dominio<\/h2>\n<p>Los diagramas de clases muestran la estructura est\u00e1tica. Pueden describir:<\/p>\n<ul>\n<li>\n<p>Un modelo de dominio conceptual<\/p>\n<\/li>\n<li>\n<p>Un modelo de objetos a nivel de dise\u00f1o<\/p>\n<\/li>\n<li>\n<p>Una estructura de clases orientada a la implementaci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<p>Estos son diferentes niveles de abstracci\u00f3n y no deben mezclarse sin cuidado.<\/p>\n<h3>6.1 Diagramas de clases conceptuales frente a diagramas de implementaci\u00f3n<\/h3>\n<p>Un modelo conceptual podr\u00eda contener:<\/p>\n<ul>\n<li>\n<p>Cliente<\/p>\n<\/li>\n<li>\n<p>Pedido<\/p>\n<\/li>\n<li>\n<p>Producto<\/p>\n<\/li>\n<li>\n<p>Pago<\/p>\n<\/li>\n<\/ul>\n<p>Un modelo de implementaci\u00f3n podr\u00eda contener:<\/p>\n<ul>\n<li>\n<p><code data-backticks=\"1\">Controlador de pedido<\/code><\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">Servicio de aplicaci\u00f3n de pedido<\/code><\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">Repositorio de pedido<\/code><\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">Adaptador de pasarela de pago<\/code><\/p>\n<\/li>\n<\/ul>\n<p>Ambas son v\u00e1lidas, pero responden a preguntas diferentes.<\/p>\n<h3>6.2 Relaciones fundamentales<\/h3>\n<p>Las relaciones comunes incluyen:<\/p>\n<ul>\n<li>\n<p>Asociaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Agregaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Composici\u00f3n<\/p>\n<\/li>\n<li>\n<p>Generalizaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Dependencia<\/p>\n<\/li>\n<li>\n<p>Realizaci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<p>Utilice las relaciones con cuidado. En muchos casos, una asociaci\u00f3n simple es m\u00e1s clara que una distinci\u00f3n elaborada entre agregaci\u00f3n y composici\u00f3n.<\/p>\n<p>Ejemplo:<\/p>\n<p id=\"EZmAkdd\"><img alt=\"\" class=\"alignnone size-full wp-image-21225\" decoding=\"async\" height=\"871\" loading=\"lazy\" sizes=\"auto, (max-width: 1919px) 100vw, 1919px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1d8258454.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1d8258454.png 1919w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1d8258454-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1d8258454-1024x465.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1d8258454-768x349.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1d8258454-1536x697.png 1536w\" width=\"1919\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:PP71IWCn48RlWRp3a5ExqcAlEKX5F0YAXVe2CHbBC9jeCZaKyTtTdMPhLqzXVlxvPlx9jf39LFiWXGsc5BYhXLAF6Rwa0BZoJf-b1yTID3rgs5FsyS02ziO73VVZS-jSnbAa-9PYGZvdD-DntM33UAgbQNikMAT49YoM6fvInEF9MbzxJulbV_QZZzZudzL4ydJKu2EnKgEdNVOMBrbXw7ZvC-A2kil9LKkDMTxhBE_y0DnslfhQA5YjG5slrvrgoJLy16Dn27QgHqytcZQ_9ewWmQP8niV9oghgHkGDjqsBQSZuXha09Ics6DtmWpy0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:PP71IWCn48RlWRp3a5ExqcAlEKX5F0YAXVe2CHbBC9jeCZaKyTtTdMPhLqzXVlxvPlx9jf39LFiWXGsc5BYhXLAF6Rwa0BZoJf-b1yTID3rgs5FsyS02ziO73VVZS-jSnbAa-9PYGZvdD-DntM33UAgbQNikMAT49YoM6fvInEF9MbzxJulbV_QZZzZudzL4ydJKu2EnKgEdNVOMBrbXw7ZvC-A2kil9LKkDMTxhBE_y0DnslfhQA5YjG5slrvrgoJLy16Dn27QgHqytcZQ_9ewWmQP8niV9oghgHkGDjqsBQSZuXha09Ics6DtmWpy0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Customer {\r\n  +id: CustomerId\r\n  +name: String\r\n  +email: EmailAddress\r\n}\r\n\r\nclass Order {\r\n  +id: OrderId\r\n  +status: OrderStatus\r\n  +total(): Money\r\n  +submit()\r\n}\r\n\r\nclass OrderLine {\r\n  +quantity: int\r\n  +unitPrice: Money\r\n  +lineTotal(): Money\r\n}\r\n\r\nclass Product {\r\n  +sku: String\r\n  +name: String\r\n}\r\n\r\nCustomer \"1\" -- \"0..*\" Order : places\r\nOrder \"1\" *-- \"1..*\" OrderLine : contains\r\nOrderLine \"*\" --&gt; \"1\" Product : refers to\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:PP71IWCn48RlWRp3a5ExqcAlEKX5F0YAXVe2CHbBC9jeCZaKyTtTdMPhLqzXVlxvPlx9jf39LFiWXGsc5BYhXLAF6Rwa0BZoJf-b1yTID3rgs5FsyS02ziO73VVZS-jSnbAa-9PYGZvdD-DntM33UAgbQNikMAT49YoM6fvInEF9MbzxJulbV_QZZzZudzL4ydJKu2EnKgEdNVOMBrbXw7ZvC-A2kil9LKkDMTxhBE_y0DnslfhQA5YjG5slrvrgoJLy16Dn27QgHqytcZQ_9ewWmQP8niV9oghgHkGDjqsBQSZuXha09Ics6DtmWpy0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:PP71IWCn48RlWRp3a5ExqcAlEKX5F0YAXVe2CHbBC9jeCZaKyTtTdMPhLqzXVlxvPlx9jf39LFiWXGsc5BYhXLAF6Rwa0BZoJf-b1yTID3rgs5FsyS02ziO73VVZS-jSnbAa-9PYGZvdD-DntM33UAgbQNikMAT49YoM6fvInEF9MbzxJulbV_QZZzZudzL4ydJKu2EnKgEdNVOMBrbXw7ZvC-A2kil9LKkDMTxhBE_y0DnslfhQA5YjG5slrvrgoJLy16Dn27QgHqytcZQ_9ewWmQP8niV9oghgHkGDjqsBQSZuXha09Ics6DtmWpy0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>6.3 La multiplicidad es importante<\/h3>\n<p>La multiplicidad expresa restricciones:<\/p>\n<ul>\n<li>\n<p><code data-backticks=\"1\">1<\/code> \u2014 exactamente uno<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">0..1<\/code> \u2014 opcional<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">*<\/code> \u2014 muchos<\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">1..*<\/code> \u2014 uno o m\u00e1s<\/p>\n<\/li>\n<\/ul>\n<p>Por ejemplo:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">Customer \"1\" -- \"0..*\" Order\r\n<\/code><\/pre>\n<p>significa que cada pedido pertenece a un cliente, mientras que un cliente puede tener cero o m\u00e1s pedidos.<\/p>\n<h3>6.4 Modelar responsabilidades, no solo campos de datos<\/h3>\n<p>Un diagrama de clases debe ayudar a explicar d\u00f3nde pertenece el comportamiento. Un objeto de dominio con operaciones significativas suele ser m\u00e1s informativo que un conjunto de clases que contienen solo getters y setters.<\/p>\n<p>Por ejemplo:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">Order.submit()\r\nOrder.cancel()\r\nOrder.calculateTotal()\r\nPayment.authorize()\r\n<\/code><\/pre>\n<p>Las operaciones exactas dependen del enfoque de dise\u00f1o, pero el principio es consistente:<\/p>\n<blockquote>\n<p>Coloque las responsabilidades empresariales importantes cerca de los conceptos que las poseen.<\/p>\n<\/blockquote>\n<h3>6.5 Evite convertir diagramas de clases en esquemas de base de datos<\/h3>\n<p>Un diagrama de clases no es autom\u00e1ticamente un esquema relacional. No agregue cada columna de base de datos a menos que el prop\u00f3sito sea espec\u00edficamente el dise\u00f1o de persistencia.<\/p>\n<p>Una distinci\u00f3n \u00fatil es:<\/p>\n<ul>\n<li>\n<p><strong>Modelo de dominio:<\/strong> Conceptos y reglas empresariales<\/p>\n<\/li>\n<li>\n<p><strong>Modelo de dise\u00f1o:<\/strong> Clases de software y responsabilidades<\/p>\n<\/li>\n<li>\n<p><strong>Modelo de datos:<\/strong> Tablas, claves, \u00edndices y restricciones<\/p>\n<\/li>\n<\/ul>\n<p>Estos pueden estar relacionados, pero no deben confundirse.<\/p>\n<h2>7. Diagramas de componentes: Mostrando l\u00edmites arquitect\u00f3nicos<\/h2>\n<p>Los diagramas de componentes describen las partes principales reemplazables o desplegables de un sistema y las interfaces a trav\u00e9s de las cuales interact\u00faan.<\/p>\n<p>Son \u00fatiles para responder:<\/p>\n<ul>\n<li>\n<p>\u00bfCu\u00e1les son los subsistemas principales?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 componente posee una responsabilidad?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 proporciona cada componente?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 requiere cada componente?<\/p>\n<\/li>\n<li>\n<p>\u00bfD\u00f3nde est\u00e1n los l\u00edmites de integraci\u00f3n?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 dependencias son estables o riesgosas?<\/p>\n<\/li>\n<\/ul>\n<p>Ejemplo:<\/p>\n<p id=\"CGGjAEH\"><img alt=\"\" class=\"alignnone size-full wp-image-21226\" decoding=\"async\" height=\"874\" loading=\"lazy\" sizes=\"auto, (max-width: 1914px) 100vw, 1914px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ea8d3726.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ea8d3726.png 1914w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ea8d3726-300x137.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ea8d3726-1024x468.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ea8d3726-768x351.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ea8d3726-1536x701.png 1536w\" width=\"1914\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NP713eCW44Jl9Fp3ndj_m4EZZHuyrRHDUbvbcv0e643J_dq1fQqzCJjCtYoXi0wDcyU1irwFarQa76Htwg2Sfa7swAHM6Q05x-qoPoF8m9NC8dkAYUZiCYs-nY1AWPCZ4rERjyirQl6dDgyTx-Do9j1XXvPIRRNDCLUTF6pGiu2iVleQXKDgWTReHOfKlGsSSHQUU3WSrwKXXqjzlK7PDfojJhXBaFoZfFBy1_Rq6_jkd__eFrPr2XWoLbf7AW0ICpPjcuLCaX5Ga1B-Tzu0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TP51QiCm44Nt0jrXy3uNwA8a9bbuLP4Kifv8qoAmDKPIJ9DhzGYzMCUoOvn2DnAQ__ZpFzgcZ35VkrOhortFWKA6QjUttgBrFzy1pdIf0DDuFp4dYeEtdi4H67BUSIhSMtGKdzqSzXaTnuBY9nVEuAqJ-L_F9Wmom-WdV7fol6dbCEC54q5LZwUmCk7qDyY-5k-Mhmug4taWMYM0mrUc6EOaeleIMYjf2PlDwzG2Nc1d6ZWUJkzQJPDHcvEBsWHn-S3xQDkBxPfQ0iykWlYbqXhSrq8OYicdJC5wrEgneMoRqoqsBVIFEbfjAJZvlLy0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\ncomponent \"Aplicaci\u00f3n Web\" as Web\r\ncomponent \"Servicio de Pedidos\" as Order\r\ncomponent \"Adaptador de Pago\" as Payment\r\ncomponent \"Servicio de Inventario\" as Inventory\r\ndatabase \"Base de datos de Pedidos\" as DB\r\ncloud \"Proveedor de Pago Externo\" as Provider\r\n\r\nWeb --&gt; Order : API REST\r\nOrder --&gt; Payment : Interfaz de pago\r\nOrder --&gt; Inventory : API de inventario\r\nOrder --&gt; DB : Persistencia\r\nPayment --&gt; Provider : API del proveedor\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TP51QiCm44Nt0jrXy3uNwA8a9bbuLP4Kifv8qoAmDKPIJ9DhzGYzMCUoOvn2DnAQ__ZpFzgcZ35VkrOhortFWKA6QjUttgBrFzy1pdIf0DDuFp4dYeEtdi4H67BUSIhSMtGKdzqSzXaTnuBY9nVEuAqJ-L_F9Wmom-WdV7fol6dbCEC54q5LZwUmCk7qDyY-5k-Mhmug4taWMYM0mrUc6EOaeleIMYjf2PlDwzG2Nc1d6ZWUJkzQJPDHcvEBsWHn-S3xQDkBxPfQ0iykWlYbqXhSrq8OYicdJC5wrEgneMoRqoqsBVIFEbfjAJZvlLy0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NP713eCW44Jl9Fp3ndj_m4EZZHuyrRHDUbvbcv0e643J_dq1fQqzCJjCtYoXi0wDcyU1irwFarQa76Htwg2Sfa7swAHM6Q05x-qoPoF8m9NC8dkAYUZiCYs-nY1AWPCZ4rERjyirQl6dDgyTx-Do9j1XXvPIRRNDCLUTF6pGiu2iVleQXKDgWTReHOfKlGsSSHQUU3WSrwKXXqjzlK7PDfojJhXBaFoZfFBy1_Rq6_jkd__eFrPr2XWoLbf7AW0ICpPjcuLCaX5Ga1B-Tzu0\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>7.1 Los diagramas de componentes no son diagramas de paquetes<\/h3>\n<p>Un diagrama de paquetes agrupa elementos del modelo, a menudo para organizaci\u00f3n. Un diagrama de componentes describe unidades arquitect\u00f3nicas que proporcionan y consumen funcionalidad.<\/p>\n<p>Un componente podr\u00eda ser:<\/p>\n<ul>\n<li>\n<p>Un servicio desplegable<\/p>\n<\/li>\n<li>\n<p>Una aplicaci\u00f3n web<\/p>\n<\/li>\n<li>\n<p>Una aplicaci\u00f3n m\u00f3vil<\/p>\n<\/li>\n<li>\n<p>Una biblioteca<\/p>\n<\/li>\n<li>\n<p>Un intermediario de mensajes<\/p>\n<\/li>\n<li>\n<p>Una plataforma externa<\/p>\n<\/li>\n<li>\n<p>Una base de datos<\/p>\n<\/li>\n<li>\n<p>Una integraci\u00f3n de terceros<\/p>\n<\/li>\n<\/ul>\n<p>El nivel adecuado depende de la arquitectura.<\/p>\n<h3>7.2 Mostrar interfaces donde aclaren los contratos<\/h3>\n<p>Las interfaces hacen que las dependencias sean m\u00e1s expl\u00edcitas:<\/p>\n<p id=\"vcChcDI\"><img alt=\"\" class=\"alignnone size-full wp-image-21227\" decoding=\"async\" height=\"873\" loading=\"lazy\" sizes=\"auto, (max-width: 1912px) 100vw, 1912px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ef0b30d5.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ef0b30d5.png 1912w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ef0b30d5-300x137.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ef0b30d5-1024x468.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ef0b30d5-768x351.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1ef0b30d5-1536x701.png 1536w\" width=\"1912\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuUNAp2j9BKfBJ4vL24Yip4tDAt5FB4ajJwpavUBbIixFBSZF0uefAFaNfQGMAGId5fLb9gSgAIGMAu15KDH03L1mJ4ai01eALWLbWqo36A6dPuTX4rIHWYw6Z4DgNWhGcG00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuUNAp2j9BKfBJ4vL24Yip4tDAt5FB4ajJwpavUBbIixFBSZF0uefAFaNfQGMAGId5fLb9gSgAIGMAu15KDH03L1mJ4ai01eALWLbWqo36A6dPuTX4rIHWYw6Z4DgNWhGcG00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\ninterface PaymentGateway\r\n\r\ncomponent \"Order Service\" as Order\r\ncomponent \"Payment Adapter\" as Adapter\r\n\r\nOrder ..&gt; PaymentGateway\r\nAdapter - PaymentGateway\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuUNAp2j9BKfBJ4vL24Yip4tDAt5FB4ajJwpavUBbIixFBSZF0uefAFaNfQGMAGId5fLb9gSgAIGMAu15KDH03L1mJ4ai01eALWLbWqo36A6dPuTX4rIHWYw6Z4DgNWhGcG00\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuUNAp2j9BKfBJ4vL24Yip4tDAt5FB4ajJwpavUBbIixFBSZF0uefAFaNfQGMAGId5fLb9gSgAIGMAu15KDH03L1mJ4ai01eALWLbWqo36A6dPuTX4rIHWYw6Z4DgNWhGcG00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p>Esto comunica que el servicio de pedidos depende de una abstracci\u00f3n en lugar de un proveedor en particular.<\/p>\n<h3>7.3 Utilizar diagramas de componentes para respaldar decisiones arquitect\u00f3nicas<\/h3>\n<p>Un diagrama de componentes se vuelve m\u00e1s valioso cuando se acompa\u00f1a de notas de dise\u00f1o breves:<\/p>\n<ul>\n<li>\n<p>\u00bfPor qu\u00e9 est\u00e1 presente este l\u00edmite?<\/p>\n<\/li>\n<li>\n<p>\u00bfQui\u00e9n es el propietario de los datos?<\/p>\n<\/li>\n<li>\n<p>\u00bfLa interacci\u00f3n es s\u00edncrona o as\u00edncrona?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 sucede cuando falla la dependencia?<\/p>\n<\/li>\n<li>\n<p>\u00bfEs el componente desplegable de forma independiente?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 l\u00edmite de seguridad representa?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 garant\u00edas de consistencia existen?<\/p>\n<\/li>\n<\/ul>\n<p>El diagrama no deber\u00eda necesitar contener todas las respuestas, pero deber\u00eda dirigir la atenci\u00f3n hacia las importantes.<\/p>\n<h2>8. Diagramas de implementaci\u00f3n: Conectando el software con la infraestructura<\/h2>\n<p>Los diagramas de implementaci\u00f3n muestran el entorno f\u00edsico o virtual donde se ejecutan los artefactos de software.<\/p>\n<p>Ayudan a responder:<\/p>\n<ul>\n<li>\n<p>\u00bfD\u00f3nde se ejecuta cada aplicaci\u00f3n?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 nodos se comunican?<\/p>\n<\/li>\n<li>\n<p>\u00bfD\u00f3nde se encuentran las bases de datos?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 servicios son accesibles externamente?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 l\u00edmites de red existen?<\/p>\n<\/li>\n<li>\n<p>\u00bfC\u00f3mo est\u00e1 distribuido el sistema?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 decisiones de infraestructura afectan la confiabilidad o el rendimiento?<\/p>\n<\/li>\n<\/ul>\n<p>Ejemplo:<\/p>\n<p id=\"elzfaZS\"><img alt=\"\" class=\"alignnone size-full wp-image-21228\" decoding=\"async\" height=\"871\" loading=\"lazy\" sizes=\"auto, (max-width: 1916px) 100vw, 1916px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f269aa17.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f269aa17.png 1916w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f269aa17-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f269aa17-1024x466.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f269aa17-768x349.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f269aa17-1536x698.png 1536w\" width=\"1916\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RPB1QiCm38Rl1h-3oBqliCDeinns62mq6JkxjZOCQHmSDsEClVjaMqv2sKtw_v_Fal1n3ig7stMGOdG6eNgRqKE3YzLOWPgvX1yf02XfFvGEKDNUVL4m9RYMubUAGdaQtCt06J-j6rCe2ucI4-zuWTuoWffOPt__JaoTfccmMeM28esac4mF5k0kje59_1_ywWt97VfrqQHqYxvFjkhxYcE0ar5JO2nhdEOnZ0hgecOiy8RxVCQQxwFJ8LPgwzrYJS5o4tDyLJWS7dbZU83dlcyxARYFLfbwCrSbsarDHlzoB-_dt-fiyGmRy8YZeG_o1m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RLBBJiCm4Bn7yZ-iSkyFS41jcWC7H2CIYVF6NY9BQMpPJYg4-2e-WH_3hv9Gk5ZspkpipiXxwz2u-JooObA2eAobrSfA9nS5_ZtR6OrK9Q25cXR92TvP0U2Rv2jo1-KJBZIWK2PoAgCkbWmhFbXnbNocGNvzJa5kcdkAlEEePf6a4kc86k52VKHVgEyacOHlXntqA3doABSX7xGEp3Zpbw2_uDeIwPxxltPBnlkJqROc8OMoiU5a19bsuNzs4QXTC1uRS4WXDVXsfibbVjv8eCCUhT-g2gVd-ugojvFgAkV6OpfbOzH2j9cGQA4iHGYP5JblsEtkSn1m1mzTrxIioEy0NJsiu4ybm7NbWUxnjhprijuJb7TO1VSq2V-FlW40\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nnode \"Dispositivo de usuario\" as Device {\r\n  artifact \"Navegador\" as Browser\r\n}\r\n\r\nnode \"Regi\u00f3n de nube\" as Cloud {\r\n  node \"Capa web\" as WebTier {\r\n    artifact \"Aplicaci\u00f3n web\" as WebApp\r\n  }\r\n\r\n  node \"Capa de aplicaci\u00f3n\" as AppTier {\r\n    artifact \"Servicio de pedidos\" as OrderSvc\r\n    artifact \"Adaptador de pago\" as PaymentSvc\r\n  }\r\n\r\n  database \"Base de datos de pedidos\" as DB\r\n}\r\n\r\ncloud \"Proveedor de pagos\" as Provider\r\n\r\nBrowser --&gt; WebApp : HTTPS\r\nWebApp --&gt; OrderSvc : HTTPS\r\nOrderSvc --&gt; DB : TLS\r\nOrderSvc --&gt; PaymentSvc\r\nPaymentSvc --&gt; Provider : HTTPS\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RLBBJiCm4Bn7yZ-iSkyFS41jcWC7H2CIYVF6NY9BQMpPJYg4-2e-WH_3hv9Gk5ZspkpipiXxwz2u-JooObA2eAobrSfA9nS5_ZtR6OrK9Q25cXR92TvP0U2Rv2jo1-KJBZIWK2PoAgCkbWmhFbXnbNocGNvzJa5kcdkAlEEePf6a4kc86k52VKHVgEyacOHlXntqA3doABSX7xGEp3Zpbw2_uDeIwPxxltPBnlkJqROc8OMoiU5a19bsuNzs4QXTC1uRS4WXDVXsfibbVjv8eCCUhT-g2gVd-ugojvFgAkV6OpfbOzH2j9cGQA4iHGYP5JblsEtkSn1m1mzTrxIioEy0NJsiu4ybm7NbWUxnjhprijuJb7TO1VSq2V-FlW40\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:RPB1QiCm38Rl1h-3oBqliCDeinns62mq6JkxjZOCQHmSDsEClVjaMqv2sKtw_v_Fal1n3ig7stMGOdG6eNgRqKE3YzLOWPgvX1yf02XfFvGEKDNUVL4m9RYMubUAGdaQtCt06J-j6rCe2ucI4-zuWTuoWffOPt__JaoTfccmMeM28esac4mF5k0kje59_1_ywWt97VfrqQHqYxvFjkhxYcE0ar5JO2nhdEOnZ0hgecOiy8RxVCQQxwFJ8LPgwzrYJS5o4tDyLJWS7dbZU83dlcyxARYFLfbwCrSbsarDHlzoB-_dt-fiyGmRy8YZeG_o1m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>8.1 Distinguir nodos, artefactos y entornos<\/h3>\n<ul>\n<li>\n<p>Un <strong>nodo<\/strong> es un entorno de ejecuci\u00f3n, como un servidor, contenedor, dispositivo, m\u00e1quina virtual o plataforma gestionada.<\/p>\n<\/li>\n<li>\n<p>Un <strong>artefacto<\/strong> es una unidad de software desplegable, como un binario, imagen de contenedor, paquete o aplicaci\u00f3n.<\/p>\n<\/li>\n<li>\n<p>Un <strong>entorno<\/strong> puede representar desarrollo, pruebas, preproducci\u00f3n o producci\u00f3n.<\/p>\n<\/li>\n<\/ul>\n<h3>8.2 Incluir detalles operativamente importantes<\/h3>\n<p>Seg\u00fan el prop\u00f3sito, los diagramas de despliegue pueden mostrar:<\/p>\n<ul>\n<li>\n<p>Balanceadores de carga<\/p>\n<\/li>\n<li>\n<p>Firewalls<\/p>\n<\/li>\n<li>\n<p>Zonas de red<\/p>\n<\/li>\n<li>\n<p>Cl\u00fasteres de contenedores<\/p>\n<\/li>\n<li>\n<p>Zonas de disponibilidad<\/p>\n<\/li>\n<li>\n<p>Bases de datos y r\u00e9plicas<\/p>\n<\/li>\n<li>\n<p>Cach\u00e9s<\/p>\n<\/li>\n<li>\n<p>Intermediarios de mensajes<\/p>\n<\/li>\n<li>\n<p>Almacenamiento de objetos<\/p>\n<\/li>\n<li>\n<p>Servicios externos<\/p>\n<\/li>\n<li>\n<p>Sistemas de monitoreo y registro<\/p>\n<\/li>\n<\/ul>\n<p>No agregue detalles de infraestructura que no tengan efecto en la decisi\u00f3n que se est\u00e1 documentando.<\/p>\n<h3>8.3 Utilice diagramas de implementaci\u00f3n para el an\u00e1lisis de riesgos<\/h3>\n<p>La modelizaci\u00f3n de la implementaci\u00f3n puede revelar:<\/p>\n<ul>\n<li>\n<p>Un punto \u00fanico de fallo<\/p>\n<\/li>\n<li>\n<p>Una base de datos expuesta<\/p>\n<\/li>\n<li>\n<p>Un l\u00edmite de red ausente<\/p>\n<\/li>\n<li>\n<p>Tr\u00e1fico excesivo entre regiones<\/p>\n<\/li>\n<li>\n<p>Una dependencia sin estrategia de conmutaci\u00f3n por error<\/p>\n<\/li>\n<li>\n<p>Separaci\u00f3n inadecuada entre entornos<\/p>\n<\/li>\n<li>\n<p>Una conexi\u00f3n no cifrada<\/p>\n<\/li>\n<li>\n<p>Una suposici\u00f3n de escalado poco realista<\/p>\n<\/li>\n<\/ul>\n<h2>9. Diagramas de m\u00e1quinas de estado: Modelado de ciclos de vida<\/h2>\n<p>Los diagramas de m\u00e1quinas de estado describen c\u00f3mo una entidad responde a eventos movi\u00e9ndose entre estados.<\/p>\n<p>Son valiosos cuando el comportamiento de un objeto depende fuertemente de su estado actual.<\/p>\n<p>Los ejemplos comunes incluyen:<\/p>\n<ul>\n<li>\n<p>Pedido<\/p>\n<\/li>\n<li>\n<p>Pago<\/p>\n<\/li>\n<li>\n<p>Env\u00edo<\/p>\n<\/li>\n<li>\n<p>Ticket de soporte<\/p>\n<\/li>\n<li>\n<p>Cuenta de usuario<\/p>\n<\/li>\n<li>\n<p>Solicitud de flujo de trabajo<\/p>\n<\/li>\n<li>\n<p>Suscripci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Documento<\/p>\n<\/li>\n<li>\n<p>Dispositivo<\/p>\n<\/li>\n<li>\n<p>Ejecuci\u00f3n de trabajo<\/p>\n<\/li>\n<\/ul>\n<p>Ejemplo:<\/p>\n<p id=\"WrBBVMg\"><img alt=\"\" class=\"alignnone size-full wp-image-21229\" decoding=\"async\" height=\"870\" loading=\"lazy\" sizes=\"auto, (max-width: 1918px) 100vw, 1918px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f7d6a9fe.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f7d6a9fe.png 1918w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f7d6a9fe-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f7d6a9fe-1024x464.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f7d6a9fe-768x348.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1f7d6a9fe-1536x697.png 1536w\" width=\"1918\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TP5DQiCm48Nt0jr1wq0kq4K8f6GTwB9aCP56pi1O5fBiuDj7djXrqhIxuSttUFEppmLIwLlMwdjpDjljpdmcy4KhhQGGwOJ1KMXECBOOYlamkR-qLA5V3M61N2NYB46CgHlG_SDAVGHYV3Ovj4n1J2_4dxCaB6bSh9E3PZ1r5dEkR8Kks50mlcTFp3EuzYVywqenoXIESeHYhrejcfm5cGPCGjWkU4fjdLEqyIdr0C4YFzQnKhyblIE6l07cxZQjl0PDSFsALglZHzhNCzIttG40\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TP4xRW9138RxbVOEhYDnWHHe5HHg-eZ2p9h4qhpacQNWDfo5Y-6PVGa5Ee_z_MF_TfSoIXwSRPkVZoDiDblu2YBO1scRjfdZMZZWRpYGxvby9lW4yXT6nPxp4wagHQAM0AE4axxVa66FrlAA2va_l2xyN7qrWH1huDL2bLO1pgm4Gmbz_PWz6vqLpE2YPLVqXLwHelWkVYhUKugeKwYvEJa2MMXoPe8_ipZzayRiK_CTUaDs8iTO_lLx1K5Ye9JlDuWaZZENDQnzYqplr3QhTabrkXWzv0C0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\n[*] --&gt; Borrador\r\n\r\nBorrador --&gt; PagoPendiente : enviar\r\nPagoPendiente --&gt; Pagado : pago aprobado\r\nPagoPendiente --&gt; PagoFallido : pago rechazado\r\nPagoFallido --&gt; PagoPendiente : reintentar pago\r\nPagado --&gt; Procesando : iniciar cumplimiento\r\nProcesando --&gt; Enviado : despachar\r\nEnviado --&gt; Entregado : confirmar entrega\r\nPagado --&gt; Cancelado : cancelar\r\nProcesando --&gt; Cancelado : cancelar si est\u00e1 permitido\r\nEntregado --&gt; [*]\r\nCancelado --&gt; [*]\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TP4xRW9138RxbVOEhYDnWHHe5HHg-eZ2p9h4qhpacQNWDfo5Y-6PVGa5Ee_z_MF_TfSoIXwSRPkVZoDiDblu2YBO1scRjfdZMZZWRpYGxvby9lW4yXT6nPxp4wagHQAM0AE4axxVa66FrlAA2va_l2xyN7qrWH1huDL2bLO1pgm4Gmbz_PWz6vqLpE2YPLVqXLwHelWkVYhUKugeKwYvEJa2MMXoPe8_ipZzayRiK_CTUaDs8iTO_lLx1K5Ye9JlDuWaZZENDQnzYqplr3QhTabrkXWzv0C0\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TP5DQiCm48Nt0jr1wq0kq4K8f6GTwB9aCP56pi1O5fBiuDj7djXrqhIxuSttUFEppmLIwLlMwdjpDjljpdmcy4KhhQGGwOJ1KMXECBOOYlamkR-qLA5V3M61N2NYB46CgHlG_SDAVGHYV3Ovj4n1J2_4dxCaB6bSh9E3PZ1r5dEkR8Kks50mlcTFp3EuzYVywqenoXIESeHYhrejcfm5cGPCGjWkU4fjdLEqyIdr0C4YFzQnKhyblIE6l07cxZQjl0PDSFsALglZHzhNCzIttG40\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>9.1 Defina los estados con cuidado<\/h3>\n<p>Un estado debe representar una condici\u00f3n significativa, no simplemente una acci\u00f3n.<\/p>\n<p>Buenos estados:<\/p>\n<ul>\n<li>\n<p>Pendiente de aprobaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Aprobado<\/p>\n<\/li>\n<li>\n<p>Rechazado<\/p>\n<\/li>\n<li>\n<p>Pago fallido<\/p>\n<\/li>\n<li>\n<p>Enviado<\/p>\n<\/li>\n<\/ul>\n<p>Estados d\u00e9biles:<\/p>\n<ul>\n<li>\n<p>Hacer clic en el bot\u00f3n<\/p>\n<\/li>\n<li>\n<p>Llamar al servicio<\/p>\n<\/li>\n<li>\n<p>Ejecutar m\u00e9todo<\/p>\n<\/li>\n<\/ul>\n<p>Las acciones son eventos o transiciones. Los estados son condiciones que persisten.<\/p>\n<h3>9.2 Incluya reglas de transici\u00f3n<\/h3>\n<p>Una transici\u00f3n puede incluir:<\/p>\n<ul>\n<li>\n<p>Evento<\/p>\n<\/li>\n<li>\n<p>Condici\u00f3n de guarda<\/p>\n<\/li>\n<li>\n<p>Acci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<p>Por ejemplo:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">Pendiente de aprobaci\u00f3n -- aprobar [gerente autorizado] \/ registrarAprobaci\u00f3n --&gt; Aprobado\r\n<\/code><\/pre>\n<p>Esto hace que las reglas de negocio sean visibles y comprobables.<\/p>\n<h3>9.3 Use m\u00e1quinas de estados para derivar pruebas<\/h3>\n<p>Cada transici\u00f3n sugiere casos de prueba:<\/p>\n<ul>\n<li>\n<p>Transici\u00f3n v\u00e1lida<\/p>\n<\/li>\n<li>\n<p>Transici\u00f3n inv\u00e1lida<\/p>\n<\/li>\n<li>\n<p>Fallo de guarda<\/p>\n<\/li>\n<li>\n<p>Evento repetido<\/p>\n<\/li>\n<li>\n<p>Tiempo de espera agotado<\/p>\n<\/li>\n<li>\n<p>Reintentar<\/p>\n<\/li>\n<li>\n<p>Cancelaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Recuperaci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<p>Para un ciclo de vida de pedido, las pruebas podr\u00edan verificar:<\/p>\n<ul>\n<li>\n<p>Un pedido borrador puede ser enviado<\/p>\n<\/li>\n<li>\n<p>Un pedido entregado no puede ser cancelado<\/p>\n<\/li>\n<li>\n<p>Un fallo de pago permite un reintento<\/p>\n<\/li>\n<li>\n<p>Un pedido cancelado no puede volver a estado pagado<\/p>\n<\/li>\n<\/ul>\n<h2>10. C\u00f3mo trabajan juntos los siete diagramas<\/h2>\n<p>Los diagramas deber\u00edan formar un modelo coherente en lugar de siete ilustraciones desconectadas.<\/p>\n<p>Considere una capacidad de \u201cEnviar informe de gastos\u201d.<\/p>\n<p><img alt=\"\" class=\"alignnone size-full wp-image-21237\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba240a1b34e.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba240a1b34e.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba240a1b34e-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba240a1b34e-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba240a1b34e-768x615.png 768w\" width=\"1402\"\/><\/p>\n<h3>Caso de uso<\/h3>\n<ul>\n<li>\n<p>El empleado env\u00eda el informe de gastos<\/p>\n<\/li>\n<li>\n<p>El gerente aprueba el informe de gastos<\/p>\n<\/li>\n<li>\n<p>El oficial de finanzas procesa el reembolso<\/p>\n<\/li>\n<\/ul>\n<h3>Actividad<\/h3>\n<ul>\n<li>\n<p>Introducir gastos<\/p>\n<\/li>\n<li>\n<p>Adjuntar recibos<\/p>\n<\/li>\n<li>\n<p>Validar datos<\/p>\n<\/li>\n<li>\n<p>Enviar informe<\/p>\n<\/li>\n<li>\n<p>Enrutar al gerente<\/p>\n<\/li>\n<li>\n<p>Aprobar o rechazar<\/p>\n<\/li>\n<li>\n<p>Enviar a finanzas<\/p>\n<\/li>\n<\/ul>\n<h3>Secuencia<\/h3>\n<ul>\n<li>\n<p>La interfaz del empleado llama al servicio de gastos<\/p>\n<\/li>\n<li>\n<p>El servicio de gastos valida el informe<\/p>\n<\/li>\n<li>\n<p>El servicio de recibos almacena los archivos adjuntos<\/p>\n<\/li>\n<li>\n<p>El servicio de flujo de trabajo asigna al gerente<\/p>\n<\/li>\n<li>\n<p>El servicio de notificaciones env\u00eda alertas<\/p>\n<\/li>\n<\/ul>\n<h3>Clase<\/h3>\n<ul>\n<li>\n<p><code data-backticks=\"1\">Empleado<\/code><\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">Informe de gastos<\/code><\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">\u00cdtem de gasto<\/code><\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">Recibo<\/code><\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">Aprobaci\u00f3n<\/code><\/p>\n<\/li>\n<li>\n<p><code data-backticks=\"1\">Reembolso<\/code><\/p>\n<\/li>\n<\/ul>\n<h3>Componente<\/h3>\n<ul>\n<li>\n<p>Aplicaci\u00f3n web<\/p>\n<\/li>\n<li>\n<p>Servicio de gastos<\/p>\n<\/li>\n<li>\n<p>Almacenamiento de recibos<\/p>\n<\/li>\n<li>\n<p>Servicio de flujo de trabajo<\/p>\n<\/li>\n<li>\n<p>Servicio de notificaciones<\/p>\n<\/li>\n<li>\n<p>Integraci\u00f3n financiera<\/p>\n<\/li>\n<\/ul>\n<h3>Despliegue<\/h3>\n<ul>\n<li>\n<p>Navegador<\/p>\n<\/li>\n<li>\n<p>Capa web<\/p>\n<\/li>\n<li>\n<p>Cl\u00faster de aplicaciones<\/p>\n<\/li>\n<li>\n<p>Almacenamiento de objetos<\/p>\n<\/li>\n<li>\n<p>Base de datos relacional<\/p>\n<\/li>\n<li>\n<p>Plataforma financiera<\/p>\n<\/li>\n<\/ul>\n<h3>M\u00e1quina de estados<\/h3>\n<pre class=\"lang-text\"><code data-language=\"text\">Borrador \u2192 Enviado \u2192 En revisi\u00f3n \u2192 Aprobado \u2192 Reembolsado\r\n                         \u2193\r\n                      Rechazado\r\n<\/code><\/pre>\n<p>Cada diagrama a\u00f1ade una perspectiva diferente sin duplicar todas las dem\u00e1s.<\/p>\n<h2>11. Elegir qu\u00e9 diagramas crear<\/h2>\n<p>Un proceso de selecci\u00f3n pr\u00e1ctico es preguntar qu\u00e9 tipo de incertidumbre tiene el equipo.<\/p>\n<p><img alt=\"\" class=\"alignnone size-full wp-image-21238\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba24949c71a.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba24949c71a.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba24949c71a-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba24949c71a-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba24949c71a-768x615.png 768w\" width=\"1402\"\/><\/p>\n<table>\n<thead>\n<tr>\n<th>Incertidumbre<\/th>\n<th>Diagrama \u00fatil<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>El alcance del sistema no est\u00e1 claro<\/td>\n<td>Caso de uso<\/td>\n<\/tr>\n<tr>\n<td>El proceso de negocio no est\u00e1 claro<\/td>\n<td>Actividad<\/td>\n<\/tr>\n<tr>\n<td>La colaboraci\u00f3n o integraci\u00f3n no est\u00e1 clara<\/td>\n<td>Secuencia<\/td>\n<\/tr>\n<tr>\n<td>Los conceptos del dominio no est\u00e1n claros<\/td>\n<td>Clase<\/td>\n<\/tr>\n<tr>\n<td>Los l\u00edmites arquitect\u00f3nicos no est\u00e1n claros<\/td>\n<td>Componente<\/td>\n<\/tr>\n<tr>\n<td>La topolog\u00eda de infraestructura o de red no est\u00e1 clara<\/td>\n<td>Despliegue<\/td>\n<\/tr>\n<tr>\n<td>Las reglas del ciclo de vida no est\u00e1n claras<\/td>\n<td>M\u00e1quina de estados<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>No necesitas cada diagrama para cada funcionalidad.<\/p>\n<h3>Una regla de decisi\u00f3n ligera<\/h3>\n<p>Crea un diagrama cuando al menos una de las siguientes condiciones sea verdadera:<\/p>\n<ul>\n<li>\n<p>M\u00faltiples partes interesadas interpretan el requisito de manera diferente.<\/p>\n<\/li>\n<li>\n<p>Un proceso tiene un comportamiento de ramificaci\u00f3n o paralelo importante.<\/p>\n<\/li>\n<li>\n<p>Un escenario cruza varios l\u00edmites del sistema.<\/p>\n<\/li>\n<li>\n<p>Un objeto de dominio tiene reglas no triviales.<\/p>\n<\/li>\n<li>\n<p>Una decisi\u00f3n de arquitectura necesita ser comunicada.<\/p>\n<\/li>\n<li>\n<p>La topolog\u00eda de despliegue afecta la fiabilidad, la seguridad o el rendimiento.<\/p>\n<\/li>\n<li>\n<p>Las reglas del ciclo de vida son dif\u00edciles de explicar en prosa.<\/p>\n<\/li>\n<li>\n<p>El diagrama se reutilizar\u00e1 para la implementaci\u00f3n, revisi\u00f3n, pruebas o operaciones.<\/p>\n<\/li>\n<\/ul>\n<p>Evita crear un diagrama simplemente porque una plantilla indica que se espera uno.<\/p>\n<h2>12. Niveles de detalle<\/h2>\n<p>Una buena pr\u00e1ctica de modelado utiliza m\u00faltiples niveles de abstracci\u00f3n.<\/p>\n<h3>Nivel de contexto<\/h3>\n<p>Muestra el sistema y los principales actores o sistemas externos.<\/p>\n<p>\u00datil para:<\/p>\n<ul>\n<li>\n<p>Alcance<\/p>\n<\/li>\n<li>\n<p>Comunicaci\u00f3n con las partes interesadas<\/p>\n<\/li>\n<li>\n<p>L\u00edmites del sistema<\/p>\n<\/li>\n<\/ul>\n<h3>Nivel de contenedor o subsistema<\/h3>\n<p>Muestra aplicaciones, servicios, bases de datos e integraciones principales.<\/p>\n<p>\u00datil para:<\/p>\n<ul>\n<li>\n<p>Arquitectura<\/p>\n<\/li>\n<li>\n<p>Propiedad<\/p>\n<\/li>\n<li>\n<p>Planificaci\u00f3n del despliegue<\/p>\n<\/li>\n<\/ul>\n<h3>Nivel de componente<\/h3>\n<p>Muestra partes internas de la arquitectura e interfaces.<\/p>\n<p>\u00datil para:<\/p>\n<ul>\n<li>\n<p>Dise\u00f1o detallado<\/p>\n<\/li>\n<li>\n<p>Revisi\u00f3n de dependencias<\/p>\n<\/li>\n<li>\n<p>L\u00edmites del equipo<\/p>\n<\/li>\n<\/ul>\n<h3>Nivel de c\u00f3digo<\/h3>\n<p>Muestra clases, m\u00e9todos y dependencias de implementaci\u00f3n.<\/p>\n<p>\u00datil para:<\/p>\n<ul>\n<li>\n<p>Trabajo del desarrollador<\/p>\n<\/li>\n<li>\n<p>Refactorizaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Depuraci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<p>No coloque todos los niveles en un solo diagrama. Un diagrama de contexto no debe contener todas las clases, y un diagrama de clases no debe intentar representar toda la red de producci\u00f3n.<\/p>\n<h2>13. Visual Paradigm UML<\/h2>\n<p>Visual Paradigm es muy adecuado para equipos que prefieren el modelado gr\u00e1fico y la documentaci\u00f3n integrada.<\/p>\n<p><img alt=\"Herramienta UML gratuita\" decoding=\"async\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/05-use-case-diagram.png\"\/><\/p>\n<p>Puede ser \u00fatil para:<\/p>\n<ul>\n<li>\n<p>Dibujar diagramas UML de forma interactiva<\/p>\n<\/li>\n<li>\n<p>Mantener un repositorio de modelos<\/p>\n<\/li>\n<li>\n<p>Vincular diagramas a los requisitos<\/p>\n<\/li>\n<li>\n<p>Crear relaciones de trazabilidad<\/p>\n<\/li>\n<li>\n<p>Generaci\u00f3n de documentaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Colaboraci\u00f3n a trav\u00e9s de un entorno de modelado compartido<\/p>\n<\/li>\n<li>\n<p>Generaci\u00f3n o ingenier\u00eda inversa de artefactos seleccionados<\/p>\n<\/li>\n<li>\n<p>Gesti\u00f3n de modelos grandes con funciones de navegaci\u00f3n y organizaci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<h3>13.1 Fortalezas<\/h3>\n<p>Las herramientas gr\u00e1ficas de UML son particularmente \u00fatiles cuando:<\/p>\n<ul>\n<li>\n<p>Los analistas y los no desarrolladores necesitan editar diagramas<\/p>\n<\/li>\n<li>\n<p>Los interesados prefieren la manipulaci\u00f3n visual<\/p>\n<\/li>\n<li>\n<p>Un proyecto requiere una organizaci\u00f3n formal del modelo<\/p>\n<\/li>\n<li>\n<p>La trazabilidad es importante<\/p>\n<\/li>\n<li>\n<p>El equipo mantiene un repositorio central<\/p>\n<\/li>\n<li>\n<p>La documentaci\u00f3n debe generarse de manera consistente<\/p>\n<\/li>\n<\/ul>\n<h3>13.2 Uso recomendado<\/h3>\n<p>Utilice Visual Paradigm para las vistas del modelo que se benefician de:<\/p>\n<ul>\n<li>\n<p>Dise\u00f1o interactivo<\/p>\n<\/li>\n<li>\n<p>Anotaciones ricas<\/p>\n<\/li>\n<li>\n<p>Navegaci\u00f3n entre diagramas<\/p>\n<\/li>\n<li>\n<p>Gesti\u00f3n formal del repositorio<\/p>\n<\/li>\n<li>\n<p>Trazabilidad<\/p>\n<\/li>\n<li>\n<p>Talleres con interesados<\/p>\n<\/li>\n<\/ul>\n<p>No permita que la herramienta determine la estrategia de modelado. Primero decida:<\/p>\n<ul>\n<li>\n<p>Qu\u00e9 decisi\u00f3n apoya el diagrama<\/p>\n<\/li>\n<li>\n<p>Qui\u00e9n lo leer\u00e1<\/p>\n<\/li>\n<li>\n<p>Qu\u00e9 nivel de detalle es apropiado<\/p>\n<\/li>\n<li>\n<p>C\u00f3mo se mantendr\u00e1<\/p>\n<\/li>\n<li>\n<p>Si el modelo necesita conectarse a requisitos o c\u00f3digo<\/p>\n<\/li>\n<\/ul>\n<h3>13.3 Disciplina del repositorio<\/h3>\n<p>Un repositorio de modelo compartido se beneficia de las mismas pr\u00e1cticas que el control de fuentes:<\/p>\n<ul>\n<li>\n<p>Establezca convenciones de nomenclatura<\/p>\n<\/li>\n<li>\n<p>Asigne la propiedad de las \u00e1reas principales del modelo<\/p>\n<\/li>\n<li>\n<p>Revisar cambios significativos<\/p>\n<\/li>\n<li>\n<p>Evitar diagramas duplicados innecesarios<\/p>\n<\/li>\n<li>\n<p>Archivar vistas obsoletas<\/p>\n<\/li>\n<li>\n<p>Registrar el prop\u00f3sito de los diagramas importantes<\/p>\n<\/li>\n<li>\n<p>Mantener los elementos del modelo con nombres consistentes<\/p>\n<\/li>\n<\/ul>\n<h2>14. VPasCode y modelado basado en texto<\/h2>\n<p>VPasCode respalda un enfoque orientado al texto para el modelado dentro de un ecosistema de Visual Paradigm. Este estilo es \u00fatil para equipos que desean que los diagramas se comporten m\u00e1s como artefactos de c\u00f3digo fuente.<\/p>\n<p id=\"VRBvpNU\"><img alt=\"\" class=\"alignnone size-full wp-image-21241\" decoding=\"async\" height=\"745\" loading=\"lazy\" sizes=\"auto, (max-width: 1192px) 100vw, 1192px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba2529a7695.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba2529a7695.png 1192w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba2529a7695-300x188.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba2529a7695-1024x640.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba2529a7695-768x480.png 768w\" width=\"1192\"\/><\/p>\n<p>\u00a0<\/p>\n<p>Los diagramas basados en texto pueden ofrecer:<\/p>\n<ul>\n<li>\n<p>Compatibilidad con control de versiones<\/p>\n<\/li>\n<li>\n<p>Revisi\u00f3n de c\u00f3digo<\/p>\n<\/li>\n<li>\n<p>Ramas y fusiones<\/p>\n<\/li>\n<li>\n<p>Generaci\u00f3n automatizada<\/p>\n<\/li>\n<li>\n<p>Compilaciones repetibles<\/p>\n<\/li>\n<li>\n<p>Actualizaciones por lotes m\u00e1s f\u00e1ciles<\/p>\n<\/li>\n<li>\n<p>Proximidad al c\u00f3digo fuente y la documentaci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<p>Un modelo basado en texto podr\u00eda verse as\u00ed:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">actor Cliente\r\nusecase \"Realizar Pedido\" como PlaceOrder\r\nCliente --&gt; PlaceOrder\r\n<\/code><\/pre>\n<p>La sintaxis exacta depende de la herramienta y el flujo de trabajo, pero la ventaja m\u00e1s amplia es que el diagrama se representa como texto editable en lugar de solo como un archivo gr\u00e1fico.<\/p>\n<h3>14.1 Cu\u00e1ndo funciona bien el modelado basado en texto<\/h3>\n<p>Use diagramas basados en texto cuando:<\/p>\n<ul>\n<li>\n<p>Los desarrolladores mantienen los modelos<\/p>\n<\/li>\n<li>\n<p>Los diagramas cambian con frecuencia<\/p>\n<\/li>\n<li>\n<p>El equipo utiliza Git u otro sistema de control de versiones<\/p>\n<\/li>\n<li>\n<p>Los revisores quieren inspeccionar cambios textuales<\/p>\n<\/li>\n<li>\n<p>Los diagramas se generan como parte de la documentaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>M\u00faltiples ramas necesitan evolucionar de forma independiente<\/p>\n<\/li>\n<\/ul>\n<h3>14.2 Limitaciones potenciales<\/h3>\n<p>El modelado basado en texto puede ser menos conveniente cuando:<\/p>\n<ul>\n<li>\n<p>Las partes interesadas del negocio necesitan editar los diagramas directamente<\/p>\n<\/li>\n<li>\n<p>El dise\u00f1o debe optimizarse manualmente<\/p>\n<\/li>\n<li>\n<p>El modelo contiene anotaciones visuales ricas<\/p>\n<\/li>\n<li>\n<p>El equipo no est\u00e1 familiarizado con la sintaxis de los diagramas<\/p>\n<\/li>\n<li>\n<p>Un repositorio requiere una navegaci\u00f3n visual sofisticada<\/p>\n<\/li>\n<\/ul>\n<p>Un enfoque h\u00edbrido suele ser efectivo: utilice diagramas basados en texto para la arquitectura orientada al c\u00f3digo y herramientas gr\u00e1ficas para el an\u00e1lisis dirigido a las partes interesadas.<\/p>\n<h2>15. PlantUML<\/h2>\n<p>PlantUML es un enfoque de diagramaci\u00f3n basado en texto muy popular que puede generar diagramas UML y diagramas arquitect\u00f3nicos relacionados a partir de texto plano.<\/p>\n<p>Ejemplo:<\/p>\n<p id=\"xaIpfSL\"><img alt=\"\" class=\"alignnone size-full wp-image-21230\" decoding=\"async\" height=\"871\" loading=\"lazy\" sizes=\"auto, (max-width: 1915px) 100vw, 1915px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1fda479f0.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1fda479f0.png 1915w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1fda479f0-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1fda479f0-1024x466.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1fda479f0-768x349.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba1fda479f0-1536x699.png 1536w\" width=\"1915\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NP2z3i8m38JtI7a7gtl5tW4LgRn04M9sKm-HGX8IXv-tnuaAGcpEVRuxAsDcJ5okJYiq71ASCoMjeeZMs8YUeRlG0eSOEy0CClzH8SuQP1iyd2ZThQ6sARfMAp8kc0ccRT1Agre1_RvcmG0ptGfbrge-HHMVgCSdcS848L9gsLfL8FoJrAouxXx9obujqkhB-c_GJBautjm_fJa6NyzfhQAtemQOR8uENv0ssqX-bTzv0m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NL2z2W8n3DuBVOVWBkuESWUwwU8Xph7DK3al9MrzCH_15pF5UefRyltb8rtAABdSHclGPHOufO8Is9geU70XufG95dqSWqCNdey9pdHPWECRr-bVE93STMFm13-cPkXZjCPZnWicWcqRhB6ctONbfgR26WPMSyZ5MrC1nTMi-EvAhcXfu4Zo3hUcKghu1AfiJoGhIauqGh2sqRESh9aropdoIAcC6JsteBc34h6GlgXrKEBJSmq7JbcqXtpT7KrUV_a2\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nactor Usuario\r\nparticipante \"Aplicaci\u00f3n Web\" como Web\r\nparticipante \"Servicio de Aplicaci\u00f3n\" como App\r\ndatabase Database\r\n\r\nUsuario -&gt; Web : Solicitud\r\nWeb -&gt; App : Ejecutar operaci\u00f3n\r\nApp -&gt; Database : Leer\/escritura de datos\r\nDatabase --&gt; App : Resultado\r\nApp --&gt; Web : Respuesta\r\nWeb --&gt; Usuario : Mostrar resultado\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NL2z2W8n3DuBVOVWBkuESWUwwU8Xph7DK3al9MrzCH_15pF5UefRyltb8rtAABdSHclGPHOufO8Is9geU70XufG95dqSWqCNdey9pdHPWECRr-bVE93STMFm13-cPkXZjCPZnWicWcqRhB6ctONbfgR26WPMSyZ5MrC1nTMi-EvAhcXfu4Zo3hUcKghu1AfiJoGhIauqGh2sqRESh9aropdoIAcC6JsteBc34h6GlgXrKEBJSmq7JbcqXtpT7KrUV_a2\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:NP2z3i8m38JtI7a7gtl5tW4LgRn04M9sKm-HGX8IXv-tnuaAGcpEVRuxAsDcJ5okJYiq71ASCoMjeeZMs8YUeRlG0eSOEy0CClzH8SuQP1iyd2ZThQ6sARfMAp8kc0ccRT1Agre1_RvcmG0ptGfbrge-HHMVgCSdcS848L9gsLfL8FoJrAouxXx9obujqkhB-c_GJBautjm_fJa6NyzfhQAtemQOR8uENv0ssqX-bTzv0m00\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Editar PlantUML en VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<h3>15.1 Beneficios<\/h3>\n<p>PlantUML es valioso porque los diagramas pueden:<\/p>\n<ul>\n<li>\n<p>Almacenarse junto al c\u00f3digo fuente<\/p>\n<\/li>\n<li>\n<p>Revisarse en solicitudes de extracci\u00f3n (pull requests)<\/p>\n<\/li>\n<li>\n<p>Generarse autom\u00e1ticamente<\/p>\n<\/li>\n<li>\n<p>Actualizarse con ediciones de texto simples<\/p>\n<\/li>\n<li>\n<p>Incluirse en flujos de trabajo de Markdown o documentaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Producirse de manera consistente en todos los entornos<\/p>\n<\/li>\n<\/ul>\n<h3>15.2 Organizaci\u00f3n de archivos PlantUML<\/h3>\n<p>Una estructura de repositorio pr\u00e1ctica podr\u00eda ser:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">docs\/\r\n  arquitectura\/\r\n    contexto-sistema.puml\r\n    componentes.puml\r\n    despliegue.puml\r\n  flujos-de-trabajo\/\r\n    realizar-pedido.puml\r\n    reembolso-pago.puml\r\n  dominio\/\r\n    modelo-pedido.puml\r\n    ciclo-vida-pedido.puml\r\n<\/code><\/pre>\n<p>Utilice nombres descriptivos y organice los diagramas por prop\u00f3sito en lugar de por herramienta.<\/p>\n<h3>15.3 Mantenga las im\u00e1genes generadas fuera de la fuente de verdad<\/h3>\n<p>Cuando sea posible:<\/p>\n<ul>\n<li>\n<p>Almacene <code data-backticks=\"1\">.puml<\/code> archivos como la fuente autoritativa<\/p>\n<\/li>\n<li>\n<p>Genere archivos PNG, SVG o PDF durante la construcci\u00f3n de la documentaci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Evite editar manualmente las im\u00e1genes generadas<\/p>\n<\/li>\n<li>\n<p>Validar que los diagramas se rendericen correctamente en la automatizaci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<h3>15.4 Utilice un estilo consistente<\/h3>\n<p>Defina un vocabulario visual peque\u00f1o:<\/p>\n<ul>\n<li>\n<p>Un color para sistemas externos<\/p>\n<\/li>\n<li>\n<p>Un color para servicios internos<\/p>\n<\/li>\n<li>\n<p>Un color para bases de datos<\/p>\n<\/li>\n<li>\n<p>Una notaci\u00f3n para mensajer\u00eda as\u00edncrona<\/p>\n<\/li>\n<li>\n<p>Una convenci\u00f3n de nombres para interfaces<\/p>\n<\/li>\n<li>\n<p>Una forma de representar l\u00edmites de seguridad<\/p>\n<\/li>\n<\/ul>\n<p>La consistencia es m\u00e1s valiosa que la decoraci\u00f3n.<\/p>\n<h2>16. Modelado UML asistido por IA<\/h2>\n<p>La IA puede acelerar el modelado, pero debe tratarse como un asistente de modelado en lugar de una autoridad.<\/p>\n<p><img alt=\"De texto a arquitectura: Acelerando el modelado UML con la IA generativa de Visual Paradigm - Blog de Visual Paradigm\" decoding=\"async\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/how-to-generate-diagram-with-ai-in-visual-paradigm.png\"\/><\/p>\n<p>La IA es \u00fatil para:<\/p>\n<ul>\n<li>\n<p>Convertir requisitos en casos de uso candidatos<\/p>\n<\/li>\n<li>\n<p>Extraer actores y objetivos<\/p>\n<\/li>\n<li>\n<p>Proponer flujos de actividad<\/p>\n<\/li>\n<li>\n<p>Generar PlantUML<\/p>\n<\/li>\n<li>\n<p>Sugerir participantes de secuencia<\/p>\n<\/li>\n<li>\n<p>Identificar entidades del dominio<\/p>\n<\/li>\n<li>\n<p>Detectar rutas alternativas faltantes<\/p>\n<\/li>\n<li>\n<p>Revisar la consistencia de los diagramas<\/p>\n<\/li>\n<li>\n<p>Producir documentaci\u00f3n a partir de diagramas<\/p>\n<\/li>\n<li>\n<p>Traducir entre representaciones gr\u00e1ficas y textuales<\/p>\n<\/li>\n<li>\n<p>Generar ideas de prueba a partir de transiciones de estado<\/p>\n<\/li>\n<\/ul>\n<h3>16.1 Un flujo de trabajo productivo con IA<\/h3>\n<p>Un flujo de trabajo confiable es:<\/p>\n<ol>\n<li>\n<p>Proporcione los requisitos, las restricciones y el contexto del sistema.<\/p>\n<\/li>\n<li>\n<p>Pida a la IA que identifique suposiciones y ambig\u00fcedades.<\/p>\n<\/li>\n<li>\n<p>Genere un diagrama candidato.<\/p>\n<\/li>\n<li>\n<p>Revise el diagrama en funci\u00f3n de los requisitos reales.<\/p>\n<\/li>\n<li>\n<p>Comp\u00e1relo con la implementaci\u00f3n y la infraestructura.<\/p>\n<\/li>\n<li>\n<p>Corrija los detalles inexactos o inventados.<\/p>\n<\/li>\n<li>\n<p>Genere y revise visualmente el resultado.<\/p>\n<\/li>\n<li>\n<p>Obtenga una revisi\u00f3n de las partes interesadas relevantes.<\/p>\n<\/li>\n<li>\n<p>Almacene el modelo aprobado en el repositorio del proyecto.<\/p>\n<\/li>\n<li>\n<p>Actual\u00edcelo cuando el sistema cambie.<\/p>\n<\/li>\n<\/ol>\n<h3>16.2 Indique restricciones a la IA<\/h3>\n<p>Indicaci\u00f3n d\u00e9bil:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">Cree un diagrama UML para un sistema de pedidos.\r\n<\/code><\/pre>\n<p id=\"atqOFyp\"><img alt=\"\" class=\"alignnone size-full wp-image-21231\" decoding=\"async\" height=\"674\" loading=\"lazy\" sizes=\"auto, (max-width: 1772px) 100vw, 1772px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba205eb7220.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba205eb7220.png 1772w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba205eb7220-300x114.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba205eb7220-1024x389.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba205eb7220-768x292.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba205eb7220-1536x584.png 1536w\" width=\"1772\"\/><\/p>\n<p>Indicaci\u00f3n m\u00e1s fuerte:<\/p>\n<p id=\"VLHHdnc\"><img alt=\"\" class=\"alignnone size-full wp-image-21232\" decoding=\"async\" height=\"867\" loading=\"lazy\" sizes=\"auto, (max-width: 1918px) 100vw, 1918px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21e2793ad.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21e2793ad.png 1918w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21e2793ad-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21e2793ad-1024x463.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21e2793ad-768x347.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21e2793ad-1536x694.png 1536w\" width=\"1918\"\/><\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">Cree un diagrama de secuencia PlantUML para enviar un pedido.\r\n\r\nParticipantes:\r\n- Cliente\r\n- Aplicaci\u00f3n web\r\n- Servicio de pedidos\r\n- Proveedor de pagos\r\n- Servicio de inventario\r\n- Base de datos de pedidos\r\n\r\nRestricciones:\r\n- El pago debe autorizarse antes de confirmar el pedido.\r\n- La reserva de inventario puede ocurrir en paralelo con la autorizaci\u00f3n del pago.\r\n- Un pago rechazado debe dejar el pedido en el estado PagoFallido.\r\n- Un tiempo de espera debe reintentarse una vez.\r\n- Muestre las rutas de \u00e9xito, rechazo y tiempo de espera.\r\n- No invente servicios que no est\u00e9n listados aqu\u00ed.\r\n<\/code><\/pre>\n<p id=\"VIasGVW\"><img alt=\"\" class=\"alignnone size-full wp-image-21233\" decoding=\"async\" height=\"1418\" loading=\"lazy\" sizes=\"auto, (max-width: 966px) 100vw, 966px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21ef08ecd.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21ef08ecd.png 966w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21ef08ecd-204x300.png 204w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21ef08ecd-698x1024.png 698w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba21ef08ecd-768x1127.png 768w\" width=\"966\"\/><\/p>\n<p>Cuanto m\u00e1s claramente se expresen las restricciones, menos probable ser\u00e1 que el resultado contenga una arquitectura no soportada.<\/p>\n<h3>16.3 Pida a la IA una cr\u00edtica, no solo generaci\u00f3n<\/h3>\n<p>Las indicaciones \u00fatiles para la revisi\u00f3n incluyen:<\/p>\n<ul>\n<li>\n<p>\u00bfQu\u00e9 requisitos no est\u00e1n representados?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 ramas faltan?<\/p>\n<\/li>\n<li>\n<p>\u00bfEste diagrama de secuencia contradice la m\u00e1quina de estados?<\/p>\n<\/li>\n<li>\n<p>\u00bfHay alguna dependencia sin explicar?<\/p>\n<\/li>\n<li>\n<p>\u00bfHay responsabilidades asignadas al componente incorrecto?<\/p>\n<\/li>\n<li>\n<p>\u00bfEl modelo de implementaci\u00f3n soporta el requisito de disponibilidad?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 transiciones deber\u00edan convertirse en casos de prueba?<\/p>\n<\/li>\n<li>\n<p>\u00bfQu\u00e9 suposiciones necesitan confirmaci\u00f3n?<\/p>\n<\/li>\n<\/ul>\n<h3>16.4 Fallos comunes en el modelado con IA<\/h3>\n<p>Los modelos generados por IA pueden:<\/p>\n<ul>\n<li>\n<p>Inventar actores o servicios<\/p>\n<\/li>\n<li>\n<p>Confundir roles de negocio con componentes t\u00e9cnicos<\/p>\n<\/li>\n<li>\n<p>A\u00f1adir tablas de base de datos no soportadas<\/p>\n<\/li>\n<li>\n<p>Asumir comunicaci\u00f3n sincr\u00f3nica<\/p>\n<\/li>\n<li>\n<p>Omitir rutas de fallo<\/p>\n<\/li>\n<li>\n<p>Representar incorrectamente la propiedad<\/p>\n<\/li>\n<li>\n<p>Usar relaciones UML incorrectamente<\/p>\n<\/li>\n<li>\n<p>Producir diagramas que sean sint\u00e1cticamente v\u00e1lidos pero sem\u00e1nticamente incorrectos<\/p>\n<\/li>\n<li>\n<p>Mezclar niveles de abstracci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Tratar suposiciones como requisitos<\/p>\n<\/li>\n<\/ul>\n<p>El principio clave es:<\/p>\n<blockquote>\n<p>La IA puede generar un borrador r\u00e1pidamente, pero solo la revisi\u00f3n de dominio y t\u00e9cnica puede establecer si el borrador es correcto.<\/p>\n<\/blockquote>\n<h2>17. Validaci\u00f3n de UML frente a la realidad<\/h2>\n<p>Un diagrama solo es valioso si permanece alineado con el sistema.<\/p>\n<h3>17.1 Validar frente a los requisitos<\/h3>\n<p>Verificar:<\/p>\n<ul>\n<li>\n<p>\u00bfAparece cada requisito importante en uno o m\u00e1s modelos?<\/p>\n<\/li>\n<li>\n<p>\u00bfSon correctos los actores y los objetivos?<\/p>\n<\/li>\n<li>\n<p>\u00bfEst\u00e1n representadas las reglas de negocio?<\/p>\n<\/li>\n<li>\n<p>\u00bfEst\u00e1n incluidas las excepciones?<\/p>\n<\/li>\n<li>\n<p>\u00bfSe reflejan los requisitos no funcionales donde sea relevante?<\/p>\n<\/li>\n<\/ul>\n<h3>17.2 Validar frente a la implementaci\u00f3n<\/h3>\n<p>Verificar:<\/p>\n<ul>\n<li>\n<p>\u00bfCoinciden los l\u00edmites de los componentes con el c\u00f3digo?<\/p>\n<\/li>\n<li>\n<p>\u00bfExisten los participantes de la secuencia?<\/p>\n<\/li>\n<li>\n<p>\u00bfSon precisas las interfaces y los mensajes?<\/p>\n<\/li>\n<li>\n<p>\u00bfSon realistas las responsabilidades de las clases?<\/p>\n<\/li>\n<li>\n<p>\u00bfSe muestran correctamente las operaciones as\u00edncronas?<\/p>\n<\/li>\n<li>\n<p>\u00bfSon aplicadas las transiciones de estado por la implementaci\u00f3n?<\/p>\n<\/li>\n<\/ul>\n<h3>17.3 Validar frente a las operaciones<\/h3>\n<p>Verificar:<\/p>\n<ul>\n<li>\n<p>\u00bfPuede el diagrama de despliegue ser implementado realmente?<\/p>\n<\/li>\n<li>\n<p>\u00bfSon realistas las conexiones de red?<\/p>\n<\/li>\n<li>\n<p>\u00bfEst\u00e1n representados los sistemas externos?<\/p>\n<\/li>\n<li>\n<p>\u00bfEst\u00e1n incluidas las bases de datos, colas, cach\u00e9s y almacenamiento donde sea importante?<\/p>\n<\/li>\n<li>\n<p>\u00bfSon plausibles las suposiciones de fallo y escalado?<\/p>\n<\/li>\n<\/ul>\n<h3>17.4 Validar entre diagramas<\/h3>\n<p>Busque contradicciones como:<\/p>\n<ul>\n<li>\n<p>Un caso de uso nombra un actor ausente del contexto del sistema<\/p>\n<\/li>\n<li>\n<p>Un diagrama de secuencia llama a un componente no mostrado en la arquitectura<\/p>\n<\/li>\n<li>\n<p>Una m\u00e1quina de estados permite una transici\u00f3n no soportada por las reglas de negocio<\/p>\n<\/li>\n<li>\n<p>Un diagrama de clases muestra uno a muchos mientras que la base de datos impone uno a uno<\/p>\n<\/li>\n<li>\n<p>Un diagrama de despliegue omite un servicio requerido por los diagramas de secuencia<\/p>\n<\/li>\n<li>\n<p>Un diagrama de actividad muestra operaciones paralelas mientras que la implementaci\u00f3n es estrictamente secuencial<\/p>\n<\/li>\n<\/ul>\n<p>La consistencia entre diagramas suele ser m\u00e1s importante que la calidad art\u00edstica de cualquier diagrama individual.<\/p>\n<h2>18. Trazabilidad<\/h2>\n<p>La trazabilidad vincula los modelos con los requisitos, el c\u00f3digo, las pruebas y los artefactos operativos.<\/p>\n<p>Una cadena de trazabilidad simple podr\u00eda ser:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">Requisito\r\n  \u2192 Caso de uso\r\n    \u2192 Flujo de actividad\r\n      \u2192 Escenario de secuencia\r\n        \u2192 Componente\r\n          \u2192 Implementaci\u00f3n\r\n            \u2192 Prueba automatizada\r\n<\/code><\/pre>\n<p>Para un objeto de dominio con estado:<\/p>\n<pre class=\"lang-text\"><code data-language=\"text\">Regla de negocio\r\n  \u2192 Transici\u00f3n de estado\r\n    \u2192 Condici\u00f3n de guarda\r\n      \u2192 Caso de prueba\r\n<\/code><\/pre>\n<p>La trazabilidad no requiere conectar cada elemento con todo lo dem\u00e1s. Enf\u00f3quese en relaciones de alto valor:<\/p>\n<ul>\n<li>\n<p>Comportamiento cr\u00edtico para la seguridad<\/p>\n<\/li>\n<li>\n<p>Requisitos regulatorios<\/p>\n<\/li>\n<li>\n<p>Controles de seguridad<\/p>\n<\/li>\n<li>\n<p>Integraciones importantes<\/p>\n<\/li>\n<li>\n<p>Reglas de negocio complejas<\/p>\n<\/li>\n<li>\n<p>Decisiones arquitect\u00f3nicas de alto riesgo<\/p>\n<\/li>\n<\/ul>\n<h2>19. Control de versiones y mantenimiento de modelos<\/h2>\n<p>Un diagrama es documentaci\u00f3n, y la documentaci\u00f3n se vuelve poco fiable cuando no se mantiene.<\/p>\n<h3>19.1 Almacenar los modelos cerca del trabajo que describen<\/h3>\n<p>Los enfoques posibles incluyen:<\/p>\n<ul>\n<li>\n<p>Archivos UML en el repositorio de origen<\/p>\n<\/li>\n<li>\n<p>Repositorios de documentaci\u00f3n de arquitectura<\/p>\n<\/li>\n<li>\n<p>Un repositorio de modelado compartido<\/p>\n<\/li>\n<li>\n<p>Diagramas generados publicados junto con la documentaci\u00f3n t\u00e9cnica<\/p>\n<\/li>\n<li>\n<p>Vinculaciones entre requisitos y elementos del modelo<\/p>\n<\/li>\n<\/ul>\n<h3>19.2 Revisar diagramas con el c\u00f3digo<\/h3>\n<p>Para cambios de arquitectura o comportamiento, incluya la actualizaci\u00f3n del diagrama relevante en el mismo cambio que la implementaci\u00f3n, cuando sea pr\u00e1ctico.<\/p>\n<p>Los revisores pueden entonces evaluar:<\/p>\n<ul>\n<li>\n<p>Si la implementaci\u00f3n coincide con el dise\u00f1o previsto<\/p>\n<\/li>\n<li>\n<p>Si el cambio de dise\u00f1o est\u00e1 completo<\/p>\n<\/li>\n<li>\n<p>Si las dependencias han cambiado<\/p>\n<\/li>\n<li>\n<p>Si existen nuevas rutas de fallo<\/p>\n<\/li>\n<li>\n<p>Si se consideraron las implicaciones de implementaci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<h3>19.3 Preferir menos diagramas autoritativos<\/h3>\n<p>M\u00faltiples diagramas contradictorios son peores que un diagrama incompleto. Establezca qu\u00e9 diagramo es autoritativo para cada preocupaci\u00f3n.<\/p>\n<p>Por ejemplo:<\/p>\n<ul>\n<li>\n<p>Diagrama de componentes: autoritativo para los l\u00edmites principales de los servicios<\/p>\n<\/li>\n<li>\n<p>Diagrama de despliegue: autoritativo para la topolog\u00eda de producci\u00f3n<\/p>\n<\/li>\n<li>\n<p>M\u00e1quina de estados: autoritativa para el ciclo de vida del pedido<\/p>\n<\/li>\n<li>\n<p>Diagrama de clases: autoritativo para las relaciones del dominio<\/p>\n<\/li>\n<\/ul>\n<h2>20. Errores comunes de modelado<\/h2>\n<p><img alt=\"\" class=\"alignnone size-full wp-image-21244\" decoding=\"async\" height=\"1536\" loading=\"lazy\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba26088f655.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba26088f655.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba26088f655-200x300.png 200w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba26088f655-683x1024.png 683w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba26088f655-768x1152.png 768w\" width=\"1024\"\/><\/p>\n<h3>Modelar todo<\/h3>\n<p>M\u00e1s diagramas no producen autom\u00e1ticamente m\u00e1s comprensi\u00f3n. Modele los riesgos y las decisiones que importan.<\/p>\n<h3>Mezclar niveles de abstracci\u00f3n<\/h3>\n<p>No coloque roles de negocio, clases de programaci\u00f3n, infraestructura en la nube y columnas de base de datos en un solo diagrama indiferenciado.<\/p>\n<h3>Usar nombres vagos<\/h3>\n<p>Nombres como \u00abProcesar datos\u00bb o \u00abGestionar solicitud\u00bb ocultan la intenci\u00f3n. Prefiera nombres que identifiquen un objetivo, una responsabilidad o un evento significativo.<\/p>\n<h3>Omitir el comportamiento de fallo<\/h3>\n<p>Los modelos de solo \u00e9xito crean expectativas poco realistas. Incluya excepciones importantes, reintentos, tiempos de espera y estados rechazados.<\/p>\n<h3>Tratar los diagramas como permanentes<\/h3>\n<p>La arquitectura evoluciona. Un diagrama debe tener un responsable y una expectativa de mantenimiento.<\/p>\n<h3>Abusar de las relaciones UML<\/h3>\n<p>Una simple asociaci\u00f3n suele ser mejor que un conjunto t\u00e9cnicamente preciso pero confuso de tipos de relaci\u00f3n.<\/p>\n<h3>Hacer los diagramas ilegibles<\/h3>\n<p>Utilice m\u00faltiples vistas enfocadas en lugar de un \u00fanico diagrama enorme. Divida los modelos grandes por escenario, subsistema, ciclo de vida o l\u00edmite de implementaci\u00f3n.<\/p>\n<h3>Permitir que las herramientas impulsen el dise\u00f1o<\/h3>\n<p>Una herramienta puede facilitar el dibujo de diagramas, pero no puede decidir qu\u00e9 debe modelarse ni si el modelo es correcto.<\/p>\n<h2>21. Un flujo de trabajo de modelado pr\u00e1ctico<\/h2>\n<p>Un equipo puede adoptar el siguiente flujo de trabajo para una caracter\u00edstica o sistema.<\/p>\n<h3>Paso 1: Establecer el alcance<\/h3>\n<p>Cree una vista de contexto ligera e identifique:<\/p>\n<ul>\n<li>\n<p>L\u00edmite del sistema<\/p>\n<\/li>\n<li>\n<p>Usuarios principales<\/p>\n<\/li>\n<li>\n<p>Sistemas externos<\/p>\n<\/li>\n<li>\n<p>Objetivos principales<\/p>\n<\/li>\n<\/ul>\n<h3>Paso 2: Identificar casos de uso<\/h3>\n<p>Escriba los casos de uso como objetivos del actor. Agrupe la funcionalidad relacionada e identifique los escenarios m\u00e1s importantes.<\/p>\n<h3>Paso 3: Modelar el flujo de trabajo principal<\/h3>\n<p>Utilice un diagrama de actividades para mostrar:<\/p>\n<ul>\n<li>\n<p>Flujo normal<\/p>\n<\/li>\n<li>\n<p>Decisiones<\/p>\n<\/li>\n<li>\n<p>Responsabilidades<\/p>\n<\/li>\n<li>\n<p>Trabajo en paralelo<\/p>\n<\/li>\n<li>\n<p>Excepciones<\/p>\n<\/li>\n<\/ul>\n<h3>Paso 4: Seleccionar escenarios cr\u00edticos<\/h3>\n<p>Cree diagramas de secuencia para las interacciones que sean importantes, complejas, riesgosas o con alta dependencia de integraci\u00f3n.<\/p>\n<h3>Paso 5: Definir la estructura del dominio<\/h3>\n<p>Cree un diagrama de clases a nivel conceptual o de dise\u00f1o para los conceptos involucrados en esos escenarios.<\/p>\n<h3>Paso 6: Establecer l\u00edmites arquitect\u00f3nicos<\/h3>\n<p>Utilice un diagrama de componentes para mostrar:<\/p>\n<ul>\n<li>\n<p>M\u00f3dulos o servicios principales<\/p>\n<\/li>\n<li>\n<p>Interfaces<\/p>\n<\/li>\n<li>\n<p>Dependencias<\/p>\n<\/li>\n<li>\n<p>Propiedad<\/p>\n<\/li>\n<li>\n<p>Puntos de integraci\u00f3n<\/p>\n<\/li>\n<\/ul>\n<h3>Paso 7: Implementaci\u00f3n del modelo<\/h3>\n<p>Cree un diagrama de implementaci\u00f3n cuando la infraestructura, la seguridad, la escalabilidad, la disponibilidad o las operaciones sean preocupaciones significativas.<\/p>\n<h3>Paso 8: Ciclos de vida del modelo<\/h3>\n<p>Cree diagramas de m\u00e1quina de estados para entidades cuyo comportamiento depende del estado o de las transiciones permitidas.<\/p>\n<h3>Paso 9: Validar<\/h3>\n<p>Compare los modelos con:<\/p>\n<ul>\n<li>\n<p>Requisitos<\/p>\n<\/li>\n<li>\n<p>C\u00f3digo existente<\/p>\n<\/li>\n<li>\n<p>Pruebas<\/p>\n<\/li>\n<li>\n<p>Estructuras de datos<\/p>\n<\/li>\n<li>\n<p>Infraestructura<\/p>\n<\/li>\n<li>\n<p>Restricciones operativas<\/p>\n<\/li>\n<\/ul>\n<h3>Paso 10: Mantener<\/h3>\n<p>Actualice los diagramas afectados cuando cambien el comportamiento, las interfaces, la propiedad o la implementaci\u00f3n.<\/p>\n<h2>22. Un entregable m\u00ednimo para un sistema t\u00edpico<\/h2>\n<p>Para una aplicaci\u00f3n de tama\u00f1o mediano, una base pr\u00e1ctica podr\u00eda ser:<\/p>\n<ul>\n<li>\n<p>Una vista de contexto del sistema o de casos de uso<\/p>\n<\/li>\n<li>\n<p>De dos a cinco diagramas de actividad para procesos comerciales importantes<\/p>\n<\/li>\n<li>\n<p>De dos a cinco diagramas de secuencia para escenarios cr\u00edticos<\/p>\n<\/li>\n<li>\n<p>Un diagrama de clases del dominio<\/p>\n<\/li>\n<li>\n<p>Un diagrama de componentes<\/p>\n<\/li>\n<li>\n<p>Un diagrama de implementaci\u00f3n de producci\u00f3n<\/p>\n<\/li>\n<li>\n<p>Diagramas de m\u00e1quina de estados para entidades clave del ciclo de vida<\/p>\n<\/li>\n<\/ul>\n<p>Esto no es una cuota obligatoria. Algunos sistemas pueden necesitar menos diagramas; otros pueden necesitar m\u00e1s. El n\u00famero adecuado depende de la complejidad, el riesgo, el tama\u00f1o del equipo, la regulaci\u00f3n y el costo de la mala interpretaci\u00f3n.<\/p>\n<h2>23. Estrategia de selecci\u00f3n de herramientas<\/h2>\n<p>Diferentes herramientas satisfacen diferentes necesidades de modelado.<\/p>\n<table>\n<thead>\n<tr>\n<th>Necesidad<\/th>\n<th>Enfoque adecuado<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Talleres con partes interesadas<\/td>\n<td>Herramienta gr\u00e1fica de UML<\/td>\n<\/tr>\n<tr>\n<td>Repositorio formal y trazabilidad<\/td>\n<td>Plataforma de modelado visual<\/td>\n<\/tr>\n<tr>\n<td>Documentaci\u00f3n de arquitectura gestionada por desarrolladores<\/td>\n<td>PlantUML o VPasCode<\/td>\n<\/tr>\n<tr>\n<td>Diagramas revisados en solicitudes de extracci\u00f3n<\/td>\n<td>Diagramas basados en texto<\/td>\n<\/tr>\n<tr>\n<td>Borrador inicial r\u00e1pido<\/td>\n<td>Generaci\u00f3n asistida por IA<\/td>\n<\/tr>\n<tr>\n<td>Topolog\u00eda operativa de alta fidelidad<\/td>\n<td>Modelado gr\u00e1fico o consciente de la infraestructura<\/td>\n<\/tr>\n<tr>\n<td>Documentaci\u00f3n de larga duraci\u00f3n<\/td>\n<td>Fuente controlada por versiones m\u00e1s renderizado automatizado<\/td>\n<\/tr>\n<tr>\n<td>Modelado exploratorio<\/td>\n<td>Pizarra blanca o diagramaci\u00f3n ligera<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Un equipo no necesita seleccionar una sola herramienta para cada situaci\u00f3n. Un enfoque mixto puede funcionar bien si la fuente de la verdad y las responsabilidades de mantenimiento est\u00e1n claras.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Una estrategia pr\u00e1ctica de UML no se trata de usar todos los tipos de diagramas. Se trata de seleccionar el conjunto m\u00e1s peque\u00f1o de vistas que haga el sistema comprensible.<\/p>\n<p>El n\u00facleo de siete diagramas proporciona una cobertura amplia:<\/p>\n<ul>\n<li>\n<p>Los diagramas de casos de uso explican los objetivos y el alcance.<\/p>\n<\/li>\n<li>\n<p>Los diagramas de actividad explican los flujos de trabajo y las responsabilidades.<\/p>\n<\/li>\n<li>\n<p>Los diagramas de secuencia explican la colaboraci\u00f3n y la temporizaci\u00f3n.<\/p>\n<\/li>\n<li>\n<p>Los diagramas de clases explican la estructura y los conceptos del dominio.<\/p>\n<\/li>\n<li>\n<p>Los diagramas de componentes explican los l\u00edmites arquitect\u00f3nicos.<\/p>\n<\/li>\n<li>\n<p>Los diagramas de despliegue explican la ubicaci\u00f3n en tiempo de ejecuci\u00f3n y la infraestructura.<\/p>\n<\/li>\n<li>\n<p>Los diagramas de m\u00e1quinas de estado explican las reglas del ciclo de vida.<\/p>\n<\/li>\n<\/ul>\n<p>Visual Paradigm puede soportar modelado gr\u00e1fico, trazabilidad y colaboraci\u00f3n basada en repositorios. VPasCode y PlantUML hacen que los diagramas sean m\u00e1s f\u00e1ciles de versionar, revisar, generar y mantener con el c\u00f3digo fuente. La IA puede acelerar el borrado, la transformaci\u00f3n y la revisi\u00f3n, pero su salida debe verificarse contra los requisitos reales, la implementaci\u00f3n actual y las restricciones operativas.<\/p>\n<p>La pr\u00e1ctica de modelado m\u00e1s s\u00f3lida es disciplinada en lugar de exhaustiva:<\/p>\n<ol>\n<li>\n<p>Modela las decisiones, riesgos y comportamientos que importan.<\/p>\n<\/li>\n<li>\n<p>Elige el tipo de diagrama que mejor responda a la pregunta.<\/p>\n<\/li>\n<li>\n<p>Mantenga cada diagrama enfocado en un solo nivel de abstracci\u00f3n.<\/p>\n<\/li>\n<li>\n<p>Conecte los diagramas relacionados mediante nombres consistentes y trazabilidad.<\/p>\n<\/li>\n<li>\n<p>Valide los modelos frente a los requisitos, el c\u00f3digo, las pruebas y el despliegue.<\/p>\n<\/li>\n<li>\n<p>Almacene y revise los diagramas como artefactos de proyecto mantenibles.<\/p>\n<\/li>\n<li>\n<p>Elimine los diagramas que ya no aportan valor.<\/p>\n<\/li>\n<\/ol>\n<p class=\"\">La eficacia de UML no se mide por la cantidad de diagramas producidos. Se mide por si los modelos ayudan a las personas a construir, probar, operar y modificar el sistema con mayor confianza.<\/p>\n<h2>Referencia<\/h2>\n<ol>\n<li><a href=\"https:\/\/guides.visual-paradigm.com\/vpascode-ai-assisted-diagram-as-code-with-plantuml-mermaid-and-graphviz\/\"><strong>VPasCode: Diagramas como c\u00f3digo asistidos por IA con PlantUML, Mermaid y Graphviz<\/strong><\/a>: Gu\u00eda oficial que cubre el motor de texto a diagrama de VPasCode, las mejores pr\u00e1cticas de sintaxis y los flujos de trabajo de modificaci\u00f3n asistidos por IA.<\/li>\n<li><a href=\"https:\/\/guides.visual-paradigm.com\/cn\/docs\/mastering-uml-visual-modeling-in-the-visual-paradigm-ai-ecosystem\/module-1-introduction-to-uml-and-the-ai-transformation\/from-drawing-chores-to-articulation\/\"><strong>De \u201cTareas de dibujo\u201d a \u201cArticulaci\u00f3n\u201d: Visi\u00f3n general del chatbot de IA<\/strong><\/a>: Explica c\u00f3mo el chatbot de IA de Visual Paradigm convierte el lenguaje natural en UML y otros diagramas que cumplen con los est\u00e1ndares.<\/li>\n<li><a href=\"https:\/\/guides.visual-paradigm.com\/turn-notes-into-ai-diagrams-noteskeep-guide\/\"><strong>Potencie el chatbot de IA de Visual Paradigm con la base de conocimientos de NotesKeep<\/strong><\/a>: Muestra c\u00f3mo conectar repositorios de NotesKeep como fuente de conocimiento para la generaci\u00f3n de diagramas impulsada por IA y la s\u00edntesis de requisitos.<\/li>\n<li><a href=\"https:\/\/guides.visual-paradigm.com\/cn\/revolutionize-your-mac-uml-modeling-with-visual-paradigm-unleash-the-power-of-professional-tools\/\"><strong>Revolutionice su modelado UML en Mac con Visual Paradigm<\/strong><\/a>: Visi\u00f3n general del soporte de UML 2.x de Visual Paradigm, la ingenier\u00eda de c\u00f3digo y la trazabilidad de modelos en macOS.<\/li>\n<li><a href=\"https:\/\/updates.visual-paradigm.com\/releases\/introducing-ai-vpp-chatbot-conversational-ai-for-your-visual-paradigm-projects\/\"><strong>Presentaci\u00f3n del chatbot AI VPP en Visual Paradigm 18.1<\/strong><\/a>: Anuncio de lanzamiento del chatbot AI VPP que permite a los usuarios consultar archivos de proyecto .vpp mediante lenguaje natural.<\/li>\n<li><a href=\"https:\/\/www.vpascode.com\/pricing\/\"><strong>Planes y precios de VPasCode<\/strong><\/a>: Precios y comparaci\u00f3n de funciones para la capa gratuita de VPasCode y su integraci\u00f3n con las ediciones Online y de escritorio de Visual Paradigm.<\/li>\n<li><a href=\"https:\/\/www.vpascode.com\/tw\/docs\/vpascode-docs\/welcome-to-vpascode\/\"><strong>Bienvenido a Visual Paradigm VPasCode: El cambio hacia diagramas como c\u00f3digo<\/strong><\/a>: Presenta el flujo de trabajo de diagramas como c\u00f3digo y el entorno de renderizado unificado para PlantUML, Mermaid y Graphviz.<\/li>\n<li><a href=\"https:\/\/www.vpascode.com\/id\/revolutionize-your-workflow-introducing-native-ai-diagram-generation-in-vpascode\/\"><strong>Generaci\u00f3n nativa de diagramas con IA en Visual Paradigm VPasCode<\/strong><\/a>: Detalla la IA integrada de VPasCode que genera y modifica diagramas de PlantUML\/Mermaid\/Graphviz directamente dentro del editor.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>El UML es m\u00e1s \u00fatil cuando mejora la comunicaci\u00f3n y la toma de decisiones, no cuando se convierte en un<\/p>\n","protected":false},"author":11,"featured_media":11395,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","footnotes":""},"categories":[79,3,117],"tags":[],"class_list":["post-11394","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-chatbot","category-unified-modeling-language","category-vpascode"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software - Cibermedio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software - Cibermedio\" \/>\n<meta property=\"og:description\" content=\"El UML es m\u00e1s \u00fatil cuando mejora la comunicaci\u00f3n y la toma de decisiones, no cuando se convierte en un\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/\" \/>\n<meta property=\"og:site_name\" content=\"Cibermedio\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-28T08:14:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-30T00:33:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d.png\" \/><meta property=\"og:image\" content=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1672\" \/>\n\t<meta property=\"og:image:height\" content=\"941\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"curtis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"curtis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"26 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/\"},\"author\":{\"name\":\"curtis\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\"},\"headline\":\"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software\",\"datePublished\":\"2026-09-28T08:14:55+00:00\",\"dateModified\":\"2026-09-30T00:33:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/\"},\"wordCount\":6517,\"image\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cybermedian.com\/es\/wp-content\/uploads\/sites\/8\/2026\/09\/img_6aba16348678d.png\",\"articleSection\":[\"AI Chatbot\",\"Unified Modeling Language\",\"VPasCode\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/\",\"url\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/\",\"name\":\"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software - Cibermedio\",\"isPartOf\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cybermedian.com\/es\/wp-content\/uploads\/sites\/8\/2026\/09\/img_6aba16348678d.png\",\"datePublished\":\"2026-09-28T08:14:55+00:00\",\"dateModified\":\"2026-09-30T00:33:29+00:00\",\"author\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#primaryimage\",\"url\":\"https:\/\/www.cybermedian.com\/es\/wp-content\/uploads\/sites\/8\/2026\/09\/img_6aba16348678d.png\",\"contentUrl\":\"https:\/\/www.cybermedian.com\/es\/wp-content\/uploads\/sites\/8\/2026\/09\/img_6aba16348678d.png\",\"width\":1672,\"height\":941},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.cybermedian.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/#website\",\"url\":\"https:\/\/www.cybermedian.com\/es\/\",\"name\":\"Cibermedio\",\"description\":\"Aprendiendo una cosa nueva todos los d\u00edas\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.cybermedian.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\",\"name\":\"curtis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"caption\":\"curtis\"},\"url\":\"https:\/\/www.cybermedian.com\/es\/author\/curtis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software - Cibermedio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/","og_locale":"es_ES","og_type":"article","og_title":"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software - Cibermedio","og_description":"El UML es m\u00e1s \u00fatil cuando mejora la comunicaci\u00f3n y la toma de decisiones, no cuando se convierte en un","og_url":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/","og_site_name":"Cibermedio","article_published_time":"2026-09-28T08:14:55+00:00","article_modified_time":"2026-09-30T00:33:29+00:00","og_image":[{"url":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d.png","type":"","width":"","height":""},{"width":1672,"height":941,"url":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d.png","type":"image\/png"}],"author":"curtis","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/09\/img_6aba16348678d.png","twitter_misc":{"Escrito por":"curtis","Tiempo de lectura":"26 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#article","isPartOf":{"@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/"},"author":{"name":"curtis","@id":"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d"},"headline":"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software","datePublished":"2026-09-28T08:14:55+00:00","dateModified":"2026-09-30T00:33:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/"},"wordCount":6517,"image":{"@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cybermedian.com\/es\/wp-content\/uploads\/sites\/8\/2026\/09\/img_6aba16348678d.png","articleSection":["AI Chatbot","Unified Modeling Language","VPasCode"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/","url":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/","name":"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software - Cibermedio","isPartOf":{"@id":"https:\/\/www.cybermedian.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#primaryimage"},"image":{"@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cybermedian.com\/es\/wp-content\/uploads\/sites\/8\/2026\/09\/img_6aba16348678d.png","datePublished":"2026-09-28T08:14:55+00:00","dateModified":"2026-09-30T00:33:29+00:00","author":{"@id":"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d"},"breadcrumb":{"@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#primaryimage","url":"https:\/\/www.cybermedian.com\/es\/wp-content\/uploads\/sites\/8\/2026\/09\/img_6aba16348678d.png","contentUrl":"https:\/\/www.cybermedian.com\/es\/wp-content\/uploads\/sites\/8\/2026\/09\/img_6aba16348678d.png","width":1672,"height":941},{"@type":"BreadcrumbList","@id":"https:\/\/www.cybermedian.com\/es\/minimum-effective-uml-a-practical-guide-to-modeling-software-systems\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cybermedian.com\/es\/"},{"@type":"ListItem","position":2,"name":"UML Efectivo M\u00ednimo: Una Gu\u00eda Pr\u00e1ctica para Modelar Sistemas de Software"}]},{"@type":"WebSite","@id":"https:\/\/www.cybermedian.com\/es\/#website","url":"https:\/\/www.cybermedian.com\/es\/","name":"Cibermedio","description":"Aprendiendo una cosa nueva todos los d\u00edas","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cybermedian.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d","name":"curtis","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.cybermedian.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","caption":"curtis"},"url":"https:\/\/www.cybermedian.com\/es\/author\/curtis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/posts\/11394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/comments?post=11394"}],"version-history":[{"count":0,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/posts\/11394\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/media\/11395"}],"wp:attachment":[{"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/media?parent=11394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/categories?post=11394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cybermedian.com\/es\/wp-json\/wp\/v2\/tags?post=11394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}