{"id":10452,"date":"2026-03-04T14:36:35","date_gmt":"2026-03-04T06:36:35","guid":{"rendered":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/"},"modified":"2026-03-04T14:36:35","modified_gmt":"2026-03-04T06:36:35","slug":"complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners","status":"publish","type":"post","link":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/","title":{"rendered":"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos)"},"content":{"rendered":"<p data-nodeid=\"354\">A\u00a0<strong data-nodeid=\"141\">Diagrama de estado UML<\/strong>\u00a0es una herramienta visual potente que modela el comportamiento din\u00e1mico de un sistema al ilustrar c\u00f3mo cambia entre diferentes estados en respuesta a eventos. Captura el ciclo de vida de un objeto o proceso\u2014mostrando en qu\u00e9 puede estar\u00a0<em data-nodeid=\"142\">estar<\/em>\u00a0en, qu\u00e9 desencadena un cambio y qu\u00e9 acciones ocurren durante los cambios de estado\u2014lo que lo hace ideal para comprender sistemas complejos como sem\u00e1foros, m\u00e1quinas expendedoras, flujos de inicio de sesi\u00f3n o personajes de juegos. Al centrarse en estados (como \u201cRojo\u201d, \u201cEsperando pago\u201d o \u201cSaltando\u201d), transiciones (impulsadas por eventos como \u201cel temporizador expira\u201d o \u201cse presiona el bot\u00f3n\u201d) y condiciones (guardas), los diagramas de estado proporcionan claridad, evitan brechas l\u00f3gicas y sirven como base tanto para el dise\u00f1o como para el c\u00f3digo. Ya sea que seas un principiante que aprende modelado de sistemas o un desarrollador que construye software robusto, dominar los diagramas de estado te proporciona la capacidad de pensar, dise\u00f1ar y comunicar el comportamiento del sistema con precisi\u00f3n y claridad.<\/p>\n<p><img alt=\"State Machines for Everyone \u2014 Part 1 Introduction | by Alex Dodge | Well  Red | Medium\" decoding=\"async\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png\"\/><\/p>\n<p data-nodeid=\"354\">\ud83d\udca1\u00a0<strong data-nodeid=\"804\">Objetivo<\/strong>: Aprende a modelar sistemas del mundo real usando m\u00e1quinas de estados \u2014 desde la idea hasta un diagrama limpio y de aspecto profesional.<\/p>\n<p data-nodeid=\"354\">\n<h2 data-nodeid=\"356\">\ud83d\udd11 <strong data-nodeid=\"809\">Conceptos clave que debes entender primero<\/strong><\/h2>\n<table data-nodeid=\"358\">\n<thead data-nodeid=\"359\">\n<tr data-nodeid=\"360\">\n<th data-nodeid=\"362\">Concepto<\/th>\n<th data-nodeid=\"363\">Qu\u00e9 significa<\/th>\n<th data-nodeid=\"364\">Por qu\u00e9 es importante<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"368\">\n<tr data-nodeid=\"369\">\n<td data-nodeid=\"370\"><strong data-nodeid=\"816\">Estado<\/strong><\/td>\n<td data-nodeid=\"371\">Una condici\u00f3n o situaci\u00f3n en la que se encuentra el sistema (por ejemplo,\u00a0<code data-backticks=\"1\" data-nodeid=\"818\">Rojo<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"820\">Esperando moneda<\/code>)<\/td>\n<td data-nodeid=\"372\">Muestra lo que est\u00e1 sucediendo en cualquier momento<\/td>\n<\/tr>\n<tr data-nodeid=\"373\">\n<td data-nodeid=\"374\"><strong data-nodeid=\"826\">Evento<\/strong><\/td>\n<td data-nodeid=\"375\">Algo que desencadena un cambio (por ejemplo,\u00a0<code data-backticks=\"1\" data-nodeid=\"828\">Insertar moneda<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"830\">el temporizador expira<\/code>)<\/td>\n<td data-nodeid=\"376\">Provoca el movimiento entre estados<\/td>\n<\/tr>\n<tr data-nodeid=\"377\">\n<td data-nodeid=\"378\"><strong data-nodeid=\"836\">Transici\u00f3n<\/strong><\/td>\n<td data-nodeid=\"379\">Una flecha desde un estado a otro<\/td>\n<td data-nodeid=\"380\">Enlaza estados mediante eventos<\/td>\n<\/tr>\n<tr data-nodeid=\"381\">\n<td data-nodeid=\"382\"><strong data-nodeid=\"842\">Estado inicial<\/strong><\/td>\n<td data-nodeid=\"383\">El punto de inicio (\u25cf)<\/td>\n<td data-nodeid=\"384\">Siempre hay uno<\/td>\n<\/tr>\n<tr data-nodeid=\"385\">\n<td data-nodeid=\"386\"><strong data-nodeid=\"848\">Estado final<\/strong><\/td>\n<td data-nodeid=\"387\">Final del proceso (\u25cb)<\/td>\n<td data-nodeid=\"388\">Opcional \u2014 no siempre necesario<\/td>\n<\/tr>\n<tr data-nodeid=\"389\">\n<td data-nodeid=\"390\"><strong data-nodeid=\"857\">Guardia [condici\u00f3n]<\/strong><\/td>\n<td data-nodeid=\"391\">Condici\u00f3n que debe ser verdadera para que ocurra la transici\u00f3n<\/td>\n<td data-nodeid=\"392\">Agrega l\u00f3gica (por ejemplo, \u00bfsi hay suficiente dinero?)<\/td>\n<\/tr>\n<tr data-nodeid=\"393\">\n<td data-nodeid=\"394\"><strong data-nodeid=\"863\">Acci\u00f3n \/ entrada \/ hacer<\/strong><\/td>\n<td data-nodeid=\"395\">Lo que sucede al entrar, durante o al salir de un estado<\/td>\n<td data-nodeid=\"396\">Agrega comportamiento a los estados<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote data-nodeid=\"397\">\n<p data-nodeid=\"398\">\ud83d\udccc Piensa:<br \/>\n&#8220;Este sistema puede estar en\u00a0<strong data-nodeid=\"886\">X<\/strong>\u00a0estados.<br \/>\nCuando\u00a0<strong data-nodeid=\"887\">Y<\/strong>\u00a0ocurre, pasa a\u00a0<strong data-nodeid=\"888\">Z<\/strong>.\u201d<br \/>\n\u00a1Eso es una m\u00e1quina de estados!<\/p>\n<\/blockquote>\n<hr data-nodeid=\"399\"\/>\n<h2 data-nodeid=\"400\">\ud83d\udee0 Paso 0 \u2013 Mentalidad: Haz estas preguntas<\/h2>\n<p data-nodeid=\"401\">Antes de dibujar cualquier cosa:<\/p>\n<ul data-nodeid=\"402\">\n<li data-nodeid=\"403\">\n<p data-nodeid=\"404\">\u00bfCu\u00e1les son los\u00a0<strong data-nodeid=\"896\">situaciones claramente diferentes<\/strong>\u00a0en las que puede estar esta cosa?<\/p>\n<\/li>\n<li data-nodeid=\"405\">\n<p data-nodeid=\"406\">\u00bfQu\u00e9\u00a0<strong data-nodeid=\"902\">eventos<\/strong>\u00a0(acciones del usuario, tiempo, errores) causan cambios?<\/p>\n<\/li>\n<li data-nodeid=\"407\">\n<p data-nodeid=\"408\">\u00bfPuede estar en dos estados al mismo tiempo? (No \u2192 las m\u00e1quinas de estados b\u00e1sicas son mutuamente excluyentes.)<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"409\">\ud83d\udc49 Ejemplo: Un\u00a0<strong data-nodeid=\"913\">interruptor de luz<\/strong>\u00a0es either\u00a0<code data-backticks=\"1\" data-nodeid=\"909\">Encendido<\/code>\u00a0o\u00a0<code data-backticks=\"1\" data-nodeid=\"911\">Apagado<\/code>. Nunca ambos.<\/p>\n<hr data-nodeid=\"410\"\/>\n<h2 data-nodeid=\"411\">\ud83e\udde9 Paso 1 \u2013 Elige una cosa concreta para modelar<\/h2>\n<p data-nodeid=\"412\">\u2705 Buenas opciones para principiantes:<\/p>\n<ul data-nodeid=\"413\">\n<li data-nodeid=\"414\">\n<p data-nodeid=\"415\">Carril de acceso (bloqueado\/desbloqueado)<\/p>\n<\/li>\n<li data-nodeid=\"416\">\n<p data-nodeid=\"417\">Sem\u00e1foro (rojo\/verde\/amarillo)<\/p>\n<\/li>\n<li data-nodeid=\"418\">\n<p data-nodeid=\"419\">M\u00e1quina expendedora<\/p>\n<\/li>\n<li data-nodeid=\"420\">\n<p data-nodeid=\"421\">Sistema de inicio de sesi\u00f3n<\/p>\n<\/li>\n<li data-nodeid=\"422\">\n<p data-nodeid=\"423\">Estado del pedido:\u00a0<code data-backticks=\"1\" data-nodeid=\"921\">Creado \u2192 Pagado \u2192 Enviado \u2192 Entregado<\/code><\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"424\">\u274c Evita:<\/p>\n<ul data-nodeid=\"425\">\n<li data-nodeid=\"426\">\n<p data-nodeid=\"427\">\u201cLa tienda en l\u00ednea completa\u201d \u2192 demasiado grande<\/p>\n<\/li>\n<li data-nodeid=\"428\">\n<p data-nodeid=\"429\">\u201cLa experiencia del usuario\u201d \u2192 demasiado vago<\/p>\n<\/li>\n<\/ul>\n<blockquote data-nodeid=\"430\">\n<p data-nodeid=\"431\">\u270f\ufe0f\u00a0<strong data-nodeid=\"930\">Empieza sencillo.<\/strong>\u00a0Domina primero el ejemplo peque\u00f1o.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"432\"\/>\n<h2 data-nodeid=\"433\">\ud83d\udccc Paso 2 \u2013 Lista los estados (usa sustantivos o participios presentes)<\/h2>\n<p data-nodeid=\"434\">Escribe\u00a0<strong data-nodeid=\"937\">4\u20138 estados realistas<\/strong>.<\/p>\n<p data-nodeid=\"435\">Usa\u00a0<strong data-nodeid=\"943\">adjetivos o participios presentes<\/strong>\u00a0para que parezca un estado:<\/p>\n<ul data-nodeid=\"436\">\n<li data-nodeid=\"437\">\n<p data-nodeid=\"438\"><code data-backticks=\"1\" data-nodeid=\"944\">Rojo<\/code><\/p>\n<\/li>\n<li data-nodeid=\"439\">\n<p data-nodeid=\"440\"><code data-backticks=\"1\" data-nodeid=\"945\">Verde<\/code><\/p>\n<\/li>\n<li data-nodeid=\"441\">\n<p data-nodeid=\"442\"><code data-backticks=\"1\" data-nodeid=\"946\">Amarillo<\/code><\/p>\n<\/li>\n<li data-nodeid=\"443\">\n<p data-nodeid=\"444\"><code data-backticks=\"1\" data-nodeid=\"947\">Esperando moneda<\/code><\/p>\n<\/li>\n<li data-nodeid=\"445\">\n<p data-nodeid=\"446\"><code data-backticks=\"1\" data-nodeid=\"948\">Entregando art\u00edculo<\/code><\/p>\n<\/li>\n<li data-nodeid=\"447\">\n<p data-nodeid=\"448\"><code data-backticks=\"1\" data-nodeid=\"949\">Preparando<\/code><\/p>\n<\/li>\n<li data-nodeid=\"449\">\n<p data-nodeid=\"450\"><code data-backticks=\"1\" data-nodeid=\"950\">Pago fallido<\/code><\/p>\n<\/li>\n<\/ul>\n<blockquote data-nodeid=\"451\">\n<p data-nodeid=\"452\">\u2705 Consejo: Si tienes m\u00e1s de 10 estados \u2192 divide el sistema en sistemas m\u00e1s peque\u00f1os.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"453\"\/>\n<h2 data-nodeid=\"454\">\ud83d\udd8c Paso 3 \u2013 Dibuja los estados como rect\u00e1ngulos redondeados<\/h2>\n<p data-nodeid=\"455\">Usa\u00a0<strong data-nodeid=\"958\">rect\u00e1ngulos redondeados<\/strong>:<\/p>\n<pre data-nodeid=\"456\"><code>[ Rojo ]\r\n[ Verde ]\r\n[ Esperando moneda ]\r\n<\/code><\/pre>\n<blockquote data-nodeid=\"457\">\n<p data-nodeid=\"458\">\u2705 Herramientas:<\/p>\n<ul data-nodeid=\"459\">\n<li data-nodeid=\"460\">\n<p data-nodeid=\"461\">draw.io \/ diagrams.net (mejor opci\u00f3n gratuita)<\/p>\n<\/li>\n<li data-nodeid=\"462\">\n<p data-nodeid=\"463\">Excalidraw (sensaci\u00f3n de dibujo a mano)<\/p>\n<\/li>\n<li data-nodeid=\"464\">\n<p data-nodeid=\"465\">PlantUML (basado en texto \u2192 f\u00e1cil de control de versiones)<\/p>\n<\/li>\n<li data-nodeid=\"466\">\n<p data-nodeid=\"467\">Lucidchart \/ Miro<\/p>\n<\/li>\n<\/ul>\n<\/blockquote>\n<hr data-nodeid=\"468\"\/>\n<h2 data-nodeid=\"469\">\ud83d\udd37 Paso 4 \u2013 Agrega el estado inicial (punto negro)<\/h2>\n<p data-nodeid=\"470\">Dibuja un\u00a0<strong data-nodeid=\"970\">c\u00edrculo negro relleno<\/strong>\u00a0con una flecha que apunta al primer estado.<\/p>\n<pre class=\"lang-plantuml\" data-nodeid=\"471\"><code data-language=\"plantuml\">[*] --&gt; Rojo\r\n<\/code><\/pre>\n<blockquote data-nodeid=\"472\">\n<p data-nodeid=\"473\">El\u00a0<code data-backticks=\"1\" data-nodeid=\"972\">[*]<\/code>\u00a0significa \u201cestado inicial\u201d \u2014 es el punto de partida.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"474\"\/>\n<h2 data-nodeid=\"475\">\u27a1\ufe0f Paso 5 \u2013 Dibuja transiciones con eventos<\/h2>\n<p data-nodeid=\"476\">Para cada estado, pregunta:<\/p>\n<blockquote data-nodeid=\"477\">\n<p data-nodeid=\"478\">\u201c\u00bfQu\u00e9 puede suceder aqu\u00ed que me haga salir de este estado?\u201d<\/p>\n<\/blockquote>\n<p data-nodeid=\"479\">Etiqueta las flechas con:<\/p>\n<pre data-nodeid=\"480\"><code>evento [guardia] \/ acci\u00f3n\r\n<\/code><\/pre>\n<blockquote data-nodeid=\"481\">\n<p data-nodeid=\"482\">\ud83d\udd39 Comienza de forma sencilla: simplemente<code data-backticks=\"1\" data-nodeid=\"981\">evento<\/code>\u00a0o\u00a0<code data-backticks=\"1\" data-nodeid=\"983\">evento \/ acci\u00f3n<\/code><\/p>\n<\/blockquote>\n<p data-nodeid=\"483\"><strong data-nodeid=\"988\">Eventos comunes<\/strong>:<\/p>\n<ul data-nodeid=\"484\">\n<li data-nodeid=\"485\">\n<p data-nodeid=\"486\"><code data-backticks=\"1\" data-nodeid=\"989\">Insertar moneda<\/code><\/p>\n<\/li>\n<li data-nodeid=\"487\">\n<p data-nodeid=\"488\"><code data-backticks=\"1\" data-nodeid=\"990\">el temporizador expira<\/code><\/p>\n<\/li>\n<li data-nodeid=\"489\">\n<p data-nodeid=\"490\"><code data-backticks=\"1\" data-nodeid=\"991\">el pago fall\u00f3<\/code><\/p>\n<\/li>\n<li data-nodeid=\"491\">\n<p data-nodeid=\"492\"><code data-backticks=\"1\" data-nodeid=\"992\">se presion\u00f3 el bot\u00f3n<\/code><\/p>\n<\/li>\n<li data-nodeid=\"493\">\n<p data-nodeid=\"494\"><code data-backticks=\"1\" data-nodeid=\"993\">pedBot\u00f3n<\/code><\/p>\n<\/li>\n<li data-nodeid=\"495\">\n<p data-nodeid=\"496\"><code data-backticks=\"1\" data-nodeid=\"994\">tiempo de espera agotado<\/code><\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"497\"\/>\n<h2 data-nodeid=\"498\">\u2705 Paso 6 \u2013 Agregar estado final (opcional)<\/h2>\n<p data-nodeid=\"499\">Usa un\u00a0<strong data-nodeid=\"1001\">c\u00edrculo con un borde grueso<\/strong>\u00a0para el estado final.<\/p>\n<pre class=\"lang-plantuml\" data-nodeid=\"500\"><code data-language=\"plantuml\">[Entregado] --&gt; [\u25cf]\r\n<\/code><\/pre>\n<blockquote data-nodeid=\"501\">\n<p data-nodeid=\"502\">No todos los sistemas tienen estados finales (como los sem\u00e1foros que funcionan para siempre).<\/p>\n<\/blockquote>\n<hr data-nodeid=\"503\"\/>\n<h2 data-nodeid=\"504\">\ud83d\udd01 Paso 7 \u2013 Agregar casos extremos realistas<\/h2>\n<p data-nodeid=\"505\">Pregunta:<\/p>\n<ul data-nodeid=\"506\">\n<li data-nodeid=\"507\">\n<p data-nodeid=\"508\">\u00bfPuedes cancelar? \u2192 agrega\u00a0<code data-backticks=\"1\" data-nodeid=\"1006\">Cancelar<\/code>\u00a0\u2192 volver a\u00a0<code data-backticks=\"1\" data-nodeid=\"1008\">Inactivo<\/code><\/p>\n<\/li>\n<li data-nodeid=\"509\">\n<p data-nodeid=\"510\">\u00bfSe agota el tiempo? \u2192\u00a0<code data-backticks=\"1\" data-nodeid=\"1010\">tiempo de espera agotado<\/code>\u00a0\u2192 volver a\u00a0<code data-backticks=\"1\" data-nodeid=\"1012\">Esperando<\/code><\/p>\n<\/li>\n<li data-nodeid=\"511\">\n<p data-nodeid=\"512\">\u00bfPuede fallar? \u2192 agrega\u00a0<code data-backticks=\"1\" data-nodeid=\"1014\">error<\/code>\u00a0\u2192\u00a0<code data-backticks=\"1\" data-nodeid=\"1016\">Volver al inicio<\/code><\/p>\n<\/li>\n<li data-nodeid=\"513\">\n<p data-nodeid=\"514\">\u00bfPuede permanecer en el mismo estado? \u2192<strong data-nodeid=\"1021\">transici\u00f3n aut\u00f3noma<\/strong><\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"515\">Ejemplo de<strong data-nodeid=\"1027\">transici\u00f3n aut\u00f3noma<\/strong> (a\u00f1adiendo m\u00e1s dinero):<\/p>\n<pre data-nodeid=\"516\"><code>[Tiene cr\u00e9dito] -- moneda insertada --&gt; [Tiene cr\u00e9dito]\r\n<\/code><\/pre>\n<hr data-nodeid=\"517\"\/>\n<h2 data-nodeid=\"518\">\ud83d\udea6 Paso 8 \u2013 Usa guardas para l\u00f3gica inteligente<\/h2>\n<p data-nodeid=\"519\">Cuando<strong data-nodeid=\"1042\">el mismo evento<\/strong> lleva a <strong data-nodeid=\"1043\">resultados diferentes<\/strong>, usa<strong data-nodeid=\"1044\">guardas<\/strong>.<\/p>\n<p data-nodeid=\"520\">Ejemplo:<\/p>\n<blockquote data-nodeid=\"521\">\n<p data-nodeid=\"522\">Si presionas<code data-backticks=\"1\" data-nodeid=\"1047\">pedButton<\/code> durante<code data-backticks=\"1\" data-nodeid=\"1049\">Verde<\/code>, pero a\u00fan no hay demanda \u2192 entras a<code data-backticks=\"1\" data-nodeid=\"1053\">Verde con peat\u00f3n esperando<\/code>.<\/p>\n<\/blockquote>\n<p data-nodeid=\"523\">Pero si la demanda ya est\u00e1 establecida \u2192 simplemente la ignoras.<\/p>\n<pre class=\"lang-plantuml\" data-nodeid=\"524\"><code data-language=\"plantuml\">[Verde para veh\u00edculos] --&gt; [Verde para veh\u00edculos] : pedButton \/ establecer demanda = verdadero\r\n<\/code><\/pre>\n<blockquote data-nodeid=\"525\">\n<p data-nodeid=\"526\">Este es un<strong data-nodeid=\"1061\">transici\u00f3n aut\u00f3noma con acci\u00f3n<\/strong> \u2014 no es un nuevo estado.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"527\"\/>\n<h2 data-nodeid=\"528\">\ud83c\udfaf Paso 9 \u2013 Agregar acciones de entrada\/realizar\/salida (Opcional pero potente)<\/h2>\n<p data-nodeid=\"529\">Puedes escribir acciones<strong data-nodeid=\"1068\">dentro de la caja del estado<\/strong>:<\/p>\n<pre class=\"lang-plantuml\" data-nodeid=\"530\"><code data-language=\"plantuml\">[Rojo]\r\nentrada \/ encender rojo\r\nsalida \/ apagar rojo\r\ndurante \/ esperar 30 segundos\r\n<\/code><\/pre>\n<blockquote data-nodeid=\"531\">\n<p data-nodeid=\"532\">Ayuda a aclarar el comportamiento sin ensuciar las transiciones.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"533\"\/>\n<h2 data-nodeid=\"534\">\u2705 Paso 10 \u2013 Lista de verificaci\u00f3n final (preg\u00fantate)<\/h2>\n<table data-nodeid=\"536\">\n<thead data-nodeid=\"537\">\n<tr data-nodeid=\"538\">\n<th data-nodeid=\"540\">\u2705 Verificar<\/th>\n<th data-nodeid=\"541\">\u00bfPor qu\u00e9 importa<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"544\">\n<tr data-nodeid=\"545\">\n<td data-nodeid=\"546\">\u00bfUn estado inicial?<\/td>\n<td data-nodeid=\"547\">Debe comenzar en alg\u00fan lugar<\/td>\n<\/tr>\n<tr data-nodeid=\"548\">\n<td data-nodeid=\"549\">\u00bfTodos los estados tienen flechas salientes (excepto el final)?<\/td>\n<td data-nodeid=\"550\">Sin puntos muertos<\/td>\n<\/tr>\n<tr data-nodeid=\"551\">\n<td data-nodeid=\"552\">\u00bfSin estados inalcanzables?<\/td>\n<td data-nodeid=\"553\">Cada estado deber\u00eda ser alcanzable<\/td>\n<\/tr>\n<tr data-nodeid=\"554\">\n<td data-nodeid=\"555\">\u00bfLas transiciones etiquetadas con eventos?<\/td>\n<td data-nodeid=\"556\">Causa y efecto claros<\/td>\n<\/tr>\n<tr data-nodeid=\"557\">\n<td data-nodeid=\"558\">Las flechas no dicen \u00abir a X\u00bb \u2014 la flecha muestra la direcci\u00f3n<\/td>\n<td data-nodeid=\"559\">M\u00e1s limpio<\/td>\n<\/tr>\n<tr data-nodeid=\"560\">\n<td data-nodeid=\"561\">\u00bfIncluidos los caminos de cancelaci\u00f3n \/ tiempo agotado \/ error?<\/td>\n<td data-nodeid=\"562\">Los sistemas reales fallan \u2014 prep\u00e1rate para ello<\/td>\n<\/tr>\n<tr data-nodeid=\"563\">\n<td data-nodeid=\"564\">\u00bfEl diagrama cabe en la pantalla?<\/td>\n<td data-nodeid=\"565\">Limpio y legible<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr data-nodeid=\"566\"\/>\n<h2 data-nodeid=\"567\">\ud83d\udccb Referencia r\u00e1pida: Sintaxis de PlantUML (Est\u00e1ndar UML)<\/h2>\n<table data-nodeid=\"569\">\n<thead data-nodeid=\"570\">\n<tr data-nodeid=\"571\">\n<th data-nodeid=\"573\">S\u00edmbolo<\/th>\n<th data-nodeid=\"574\">Significado<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"577\">\n<tr data-nodeid=\"578\">\n<td data-nodeid=\"579\"><code data-backticks=\"1\" data-nodeid=\"1090\">[*]<\/code><\/td>\n<td data-nodeid=\"580\">Estado inicial<\/td>\n<\/tr>\n<tr data-nodeid=\"581\">\n<td data-nodeid=\"582\"><code data-backticks=\"1\" data-nodeid=\"1092\">[*] --&gt; Estado<\/code><\/td>\n<td data-nodeid=\"583\">Comienza desde este estado<\/td>\n<\/tr>\n<tr data-nodeid=\"584\">\n<td data-nodeid=\"585\"><code data-backticks=\"1\" data-nodeid=\"1094\">Estado --&gt; Estado<\/code><\/td>\n<td data-nodeid=\"586\">Transici\u00f3n<\/td>\n<\/tr>\n<tr data-nodeid=\"587\">\n<td data-nodeid=\"588\"><code data-backticks=\"1\" data-nodeid=\"1096\">evento [guarda] \/ acci\u00f3n<\/code><\/td>\n<td data-nodeid=\"589\">Etiqueta en la flecha<\/td>\n<\/tr>\n<tr data-nodeid=\"590\">\n<td data-nodeid=\"591\"><code data-backticks=\"1\" data-nodeid=\"1098\">estado \"Nombre\"<\/code><\/td>\n<td data-nodeid=\"592\">Estado nombrado (opcional)<\/td>\n<\/tr>\n<tr data-nodeid=\"593\">\n<td data-nodeid=\"594\"><code data-backticks=\"1\" data-nodeid=\"1100\">estado \"X\" como X<\/code><\/td>\n<td data-nodeid=\"595\">Alias para nombres complejos<\/td>\n<\/tr>\n<tr data-nodeid=\"596\">\n<td data-nodeid=\"597\"><code data-backticks=\"1\" data-nodeid=\"1102\">nota a la derecha del Estado<\/code><\/td>\n<td data-nodeid=\"598\">Cuadro de comentarios<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr data-nodeid=\"599\"\/>\n<h1 data-nodeid=\"600\">\ud83c\udfaf\u00a0<strong data-nodeid=\"1108\">Ejemplo 1: Sem\u00e1foro simple (ciclo de 3 estados)<\/strong><\/h1>\n<blockquote data-nodeid=\"601\">\n<p data-nodeid=\"602\">Perfecto para principiantes absolutos.<\/p>\n<\/blockquote>\n<h3 data-nodeid=\"603\">\ud83e\udde0 Uso en el mundo real:<\/h3>\n<ul data-nodeid=\"604\">\n<li data-nodeid=\"605\">\n<p data-nodeid=\"606\">Ciclo b\u00e1sico de sem\u00e1foro:\u00a0<strong data-nodeid=\"1115\">Rojo \u2192 Verde \u2192 Amarillo \u2192 Rojo<\/strong><\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"607\">\u2705 Estados:<\/h3>\n<ul data-nodeid=\"608\">\n<li data-nodeid=\"609\">\n<p data-nodeid=\"610\"><code data-backticks=\"1\" data-nodeid=\"1117\">Rojo<\/code><\/p>\n<\/li>\n<li data-nodeid=\"611\">\n<p data-nodeid=\"612\"><code data-backticks=\"1\" data-nodeid=\"1118\">Verde<\/code><\/p>\n<\/li>\n<li data-nodeid=\"613\">\n<p data-nodeid=\"614\"><code data-backticks=\"1\" data-nodeid=\"1119\">Amarillo<\/code><\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"615\">\ud83d\udd04 Eventos:<\/h3>\n<ul data-nodeid=\"616\">\n<li data-nodeid=\"617\">\n<p data-nodeid=\"618\"><code data-backticks=\"1\" data-nodeid=\"1121\">el temporizador expira<\/code>\u00a0(despu\u00e9s de 30s, 25s, 5s)<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"619\">\ud83d\udee0 C\u00f3digo PlantUML (listo para copiar y pegar):<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/img_697b2457c4c0b.png\"\/><\/h3>\n<pre class=\"lang-plantuml\" data-nodeid=\"620\"><code data-language=\"plantuml\">@startuml\r\nskinparam monochrome true\r\n[*] --&gt; Rojo\r\nRojo --&gt; Verde : after(30s)nEl temporizador expira\r\nVerde --&gt; Amarillo : after(25s)nEl temporizador expira\r\nAmarillo --&gt; Rojo   : after(5s)nEl temporizador expira\r\n\r\nRojo   : entry \/ encender rojo\r\nVerde : entry \/ encender verde\r\nAmarillo: entry \/ encender amarillo\r\n\r\nnota a la derecha de Rojo\r\n  Los veh\u00edculos deben detenerse\r\nfin nota\r\n\r\nnota a la derecha de Verde\r\n  Los veh\u00edculos pueden avanzar\r\nfin nota\r\n\r\nnota a la derecha de Amarillo\r\n  Prepararse para detenerse\r\nfin nota\r\n@enduml\r\n<\/code><\/pre>\n<blockquote data-nodeid=\"621\">\n<p data-nodeid=\"622\">\u2705\u00a0<strong data-nodeid=\"1139\">C\u00f3mo usar<\/strong>:<br \/>\nVe a\u00a0<a data-nodeid=\"1133\" href=\"https:\/\/www.plantuml.com\/plantuml\">https:\/\/www.plantuml.com\/plantuml<\/a>, pega el c\u00f3digo y presiona \u201cGenerar\u201d.<\/p>\n<\/blockquote>\n<blockquote data-nodeid=\"623\">\n<p data-nodeid=\"624\">\ud83d\uddbc\ufe0f Salida: Un diagrama de m\u00e1quina de estados limpio y con aspecto animado.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"625\"\/>\n<h1 data-nodeid=\"626\">\ud83c\udfaf\u00a0<strong data-nodeid=\"1145\">Ejemplo 2: Sem\u00e1foro realista con solicitud de peat\u00f3n<\/strong><\/h1>\n<blockquote data-nodeid=\"627\">\n<p data-nodeid=\"628\">El\u00a0<strong data-nodeid=\"1151\">versi\u00f3n m\u00e1s educativa<\/strong>\u00a0\u2014 introduce condiciones, transiciones auto-referidas y l\u00f3gica compleja.<\/p>\n<\/blockquote>\n<h3 data-nodeid=\"629\">\ud83e\udde0 Uso en el mundo real:<\/h3>\n<ul data-nodeid=\"630\">\n<li data-nodeid=\"631\">\n<p data-nodeid=\"632\">Los peatones presionan un bot\u00f3n para cruzar.<\/p>\n<\/li>\n<li data-nodeid=\"633\">\n<p data-nodeid=\"634\">La luz espera m\u00e1s tiempo si alguien est\u00e1 esperando.<\/p>\n<\/li>\n<li data-nodeid=\"635\">\n<p data-nodeid=\"636\">Despu\u00e9s de que el verde termina, pasa al amarillo \u2192 rojo \u2192 cruzar \u2192 no cruzar parpadeando \u2192 de vuelta al verde.<\/p>\n<\/li>\n<\/ul>\n<h3 data-nodeid=\"637\">\ud83d\udccc Estados clave:<\/h3>\n<ol data-nodeid=\"638\">\n<li data-nodeid=\"639\">\n<p data-nodeid=\"640\"><code data-backticks=\"1\" data-nodeid=\"1157\">Veh\u00edculoVerde_SinDemanda<\/code>\u00a0\u2013 verde, sin peat\u00f3n esperando<\/p>\n<\/li>\n<li data-nodeid=\"641\">\n<p data-nodeid=\"642\"><code data-backticks=\"1\" data-nodeid=\"1159\">Veh\u00edculoVerde_PedEsperando<\/code>\u00a0\u2013 verde, alguien presion\u00f3 el bot\u00f3n<\/p>\n<\/li>\n<li data-nodeid=\"643\">\n<p data-nodeid=\"644\"><code data-backticks=\"1\" data-nodeid=\"1161\">Veh\u00edculoAmarillo<\/code>\u00a0\u2013 luz amarilla (sin cruzar)<\/p>\n<\/li>\n<li data-nodeid=\"645\">\n<p data-nodeid=\"646\"><code data-backticks=\"1\" data-nodeid=\"1163\">TodosRojo<\/code>\u00a0\u2013 buffer de seguridad (muy corto)<\/p>\n<\/li>\n<li data-nodeid=\"647\">\n<p data-nodeid=\"648\"><code data-backticks=\"1\" data-nodeid=\"1165\">PedCruzar<\/code>\u00a0\u2013 se\u00f1al de cruzar encendida<\/p>\n<\/li>\n<li data-nodeid=\"649\">\n<p data-nodeid=\"650\"><code data-backticks=\"1\" data-nodeid=\"1167\">PedAclaraci\u00f3n<\/code>\u00a0\u2013 no cruzar parpadeando (tiempo de aclaraci\u00f3n)<\/p>\n<\/li>\n<\/ol>\n<hr data-nodeid=\"651\"\/>\n<h3 data-nodeid=\"652\">\ud83e\udde9 Transiciones clave:<\/h3>\n<ul data-nodeid=\"653\">\n<li data-nodeid=\"654\">\n<p data-nodeid=\"655\"><code data-backticks=\"1\" data-nodeid=\"1170\">bot\u00f3nPeat\u00f3n<\/code>\u00a0\u2192 si no est\u00e1 esperando \u2192 establecer demanda<\/p>\n<\/li>\n<li data-nodeid=\"656\">\n<p data-nodeid=\"657\"><code data-backticks=\"1\" data-nodeid=\"1172\">\u00a0\u2192 el temporizador expira<\/code>\u00a0\u2192 pasar al amarillo (si se cumpli\u00f3 el tiempo verde)<\/p>\n<\/li>\n<li data-nodeid=\"658\">\n<p data-nodeid=\"659\"><code data-backticks=\"1\" data-nodeid=\"1174\">bot\u00f3nPeat\u00f3n<\/code>\u00a0mientras amarillo\/rojo \u2192 recordar la demanda<\/p>\n<\/li>\n<li data-nodeid=\"660\">\n<p data-nodeid=\"661\"><code data-backticks=\"1\" data-nodeid=\"1176\">timerWalk<\/code>\u00a0\u2192 ir al destello de no cruzar<\/p>\n<\/li>\n<li data-nodeid=\"662\">\n<p data-nodeid=\"663\"><code data-backticks=\"1\" data-nodeid=\"1178\">timerClearance<\/code>\u00a0\u2192 reiniciar y volver al verde<\/p>\n<\/li>\n<\/ul>\n<blockquote data-nodeid=\"664\">\n<p data-nodeid=\"665\">\ud83d\udea8 Nota: Esta versi\u00f3n\u00a0<strong data-nodeid=\"1189\">usa guardas y transiciones auto<\/strong>, mostrando\u00a0<strong data-nodeid=\"1190\">por qu\u00e9 las m\u00e1quinas de estado son potentes<\/strong>.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"666\"\/>\n<h3 data-nodeid=\"667\">\u2705 C\u00f3digo PlantUML (Funcional completo, listo para usar):<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/img_697b24596cebc.png\"\/><\/p>\n<pre class=\"lang-plantuml\" data-nodeid=\"668\"><code data-language=\"plantuml\">@startuml\r\nskinparam monochrome true\r\nskinparam shadowing false\r\nskinparam dpi 120\r\n\r\n[*] --&gt; VehicleGreen_NoDemand\r\n\r\nstate \"Verde para veh\u00edculosn(sin demanda peatonal)\" as VG_No\r\nstate \"Verde para veh\u00edculosn(pedestres esperando)\"   as VG_Wait\r\nstate \"Amarillo para veh\u00edculos\"                  as VYellow\r\nstate \"Todos rojosn(buffer de seguridad)\"      as AllRed\r\nstate \"Cruzar\"                    as PedWalk\r\nstate \"Clearance peatonaln(se\u00f1al parpadeante de no cruzar)\" as PedClear\r\n\r\nVG_No --&gt; VG_Wait : pedButton \/ setPedDemand = true\r\nVG_No --&gt; VYellow : after(35s)nor (pedDemand &amp;&amp; minGreenTimeMet)\r\nVG_Wait --&gt; VYellow : after(45s)nverde m\u00e1s largo cuando hay peatones esperando\r\nVG_Wait --&gt; VG_Wait : pedButton \/ ignorar (ya esperando)\r\nVYellow --&gt; AllRed : after(4s)\r\nAllRed --&gt; PedWalk : after(1s)\r\nPedWalk --&gt; PedClear : after(10s)nexpira el tiempo de cruce\r\nPedClear --&gt; VG_No : after(5s)nfinalizado el clearancen\/ resetPedDemand\r\n\r\nnote bottom of VG_No\r\n  Operaci\u00f3n normal\r\n  Sin demanda peatonal\r\nend note\r\n\r\nnote right of PedClear\r\n  Los peatones terminan de cruzar\r\n  Se\u00f1al parpadeante de no cruzar\r\nend note\r\n\r\nnote right of VG_Wait\r\n  El peat\u00f3n presion\u00f3 el bot\u00f3n\r\n  El verde se extiende hasta 10s\r\nend note\r\n\r\nnote right of VYellow\r\n  Prepararse para detenerse\r\n  Cambio de luz para veh\u00edculos\r\nend note\r\n\r\nnote right of PedWalk\r\n  La se\u00f1al de cruzar est\u00e1 encendida\r\n  Los peatones pueden cruzar\r\nend note\r\n@enduml\r\n<\/code><\/pre>\n<blockquote data-nodeid=\"669\">\n<p data-nodeid=\"670\">\ud83d\udca1\u00a0<strong data-nodeid=\"1196\">\u00bfPor qu\u00e9 esta versi\u00f3n es mejor que la versi\u00f3n simple?<\/strong><\/p>\n<ul data-nodeid=\"671\">\n<li data-nodeid=\"672\">\n<p data-nodeid=\"673\">Muestra\u00a0<strong data-nodeid=\"1201\">complejidad del mundo real<\/strong><\/p>\n<\/li>\n<li data-nodeid=\"674\">\n<p data-nodeid=\"675\">Muestra\u00a0<strong data-nodeid=\"1209\">guardas<\/strong>\u00a0(<code data-backticks=\"1\" data-nodeid=\"1207\">si pedDemand<\/code>)<\/p>\n<\/li>\n<li data-nodeid=\"676\">\n<p data-nodeid=\"677\">Usa\u00a0<strong data-nodeid=\"1217\">transiciones auto<\/strong>\u00a0(<code data-backticks=\"1\" data-nodeid=\"1215\">VG_Wait --&gt; VG_Wait<\/code>)<\/p>\n<\/li>\n<li data-nodeid=\"678\">\n<p data-nodeid=\"679\">Modela\u00a0<strong data-nodeid=\"1224\">comportamiento real<\/strong>: \u00a1el verde puede extenderse!<\/p>\n<\/li>\n<li data-nodeid=\"680\">\n<p data-nodeid=\"681\">Separaci\u00f3n clara entre\u00a0<strong data-nodeid=\"1234\">veh\u00edculo<\/strong>\u00a0y\u00a0<strong data-nodeid=\"1235\">peat\u00f3n<\/strong>\u00a0l\u00f3gica<\/p>\n<\/li>\n<\/ul>\n<\/blockquote>\n<hr data-nodeid=\"682\"\/>\n<h2 data-nodeid=\"683\">\ud83c\udf93 Ejercicios recomendados de pr\u00e1ctica (h\u00e1galo en orden)<\/h2>\n<table data-nodeid=\"685\">\n<thead data-nodeid=\"686\">\n<tr data-nodeid=\"687\">\n<th data-nodeid=\"689\">#<\/th>\n<th data-nodeid=\"690\">Ejemplo<\/th>\n<th data-nodeid=\"691\">Tiempo<\/th>\n<th data-nodeid=\"692\">Habilidades aprendidas<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"697\">\n<tr data-nodeid=\"698\">\n<td data-nodeid=\"699\">1<\/td>\n<td data-nodeid=\"700\">Interruptor de luz (Encendido \u2194 Apagado)<\/td>\n<td data-nodeid=\"701\">5 min<\/td>\n<td data-nodeid=\"702\">Transiciones b\u00e1sicas<\/td>\n<\/tr>\n<tr data-nodeid=\"703\">\n<td data-nodeid=\"704\">2<\/td>\n<td data-nodeid=\"705\">Carril de acceso (Bloqueado \u2194 Desbloqueado)<\/td>\n<td data-nodeid=\"706\">10 min<\/td>\n<td data-nodeid=\"707\">Eventos, condiciones<\/td>\n<\/tr>\n<tr data-nodeid=\"708\">\n<td data-nodeid=\"709\">3<\/td>\n<td data-nodeid=\"710\">Sem\u00e1foro (ciclo de 3 estados)<\/td>\n<td data-nodeid=\"711\">10 min<\/td>\n<td data-nodeid=\"712\">Temporizadores, acciones de entrada<\/td>\n<\/tr>\n<tr data-nodeid=\"713\">\n<td data-nodeid=\"714\">4<\/td>\n<td data-nodeid=\"715\">M\u00e1quina expendedora (espera \u2192 pago \u2192 dispensaci\u00f3n)<\/td>\n<td data-nodeid=\"716\">15 min<\/td>\n<td data-nodeid=\"717\">M\u00faltiples eventos, l\u00f3gica de dinero<\/td>\n<\/tr>\n<tr data-nodeid=\"718\">\n<td data-nodeid=\"719\">5<\/td>\n<td data-nodeid=\"720\">Inicio de sesi\u00f3n (vac\u00edo \u2192 escritura \u2192 env\u00edo \u2192 \u00e9xito\/fracaso)<\/td>\n<td data-nodeid=\"721\">15 min<\/td>\n<td data-nodeid=\"722\">Manejo de errores, estados finales<\/td>\n<\/tr>\n<tr data-nodeid=\"723\">\n<td data-nodeid=\"724\">6<\/td>\n<td data-nodeid=\"725\">Estado del pedido (6 estados)<\/td>\n<td data-nodeid=\"726\">20 min<\/td>\n<td data-nodeid=\"727\">Modelado de sistemas de la vida real<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote data-nodeid=\"728\">\n<p data-nodeid=\"729\">\u2705 Comienza con el #1\u20133 en papel o en draw.io. Luego usa<strong data-nodeid=\"1270\">PlantUML<\/strong> para el resto.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"730\"\/>\n<h2 data-nodeid=\"731\">\ud83e\udde0 Consejos finales para tener \u00e9xito<\/h2>\n<ul data-nodeid=\"732\">\n<li data-nodeid=\"733\">\n<p data-nodeid=\"734\"><strong data-nodeid=\"1276\">Empieza peque\u00f1o<\/strong> \u2014 no trates de incluir todo de una vez.<\/p>\n<\/li>\n<li data-nodeid=\"735\">\n<p data-nodeid=\"736\"><strong data-nodeid=\"1285\">Usa nombres reales<\/strong>\u00a0\u2014\u00a0<code data-backticks=\"1\" data-nodeid=\"1281\">Esperando la moneda<\/code>, no<code data-backticks=\"1\" data-nodeid=\"1283\">Estado1<\/code>.<\/p>\n<\/li>\n<li data-nodeid=\"737\">\n<p data-nodeid=\"738\"><strong data-nodeid=\"1296\">Etiqueta claramente las transiciones<\/strong>\u00a0\u2014\u00a0<code data-backticks=\"1\" data-nodeid=\"1290\">bot\u00f3n presionado<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1292\">tiempo de espera agotado<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1294\">el pago fall\u00f3<\/code>.<\/p>\n<\/li>\n<li data-nodeid=\"739\">\n<p data-nodeid=\"740\"><strong data-nodeid=\"1301\">Dib\u00fajalo primero a mano<\/strong> \u2014 luego digital\u00edzalo.<\/p>\n<\/li>\n<li data-nodeid=\"741\">\n<p data-nodeid=\"742\"><strong data-nodeid=\"1306\">Prueba mentalmente<\/strong>: \u201c\u00bfPuede este sistema quedar atrapado?\u201d \u2192 si es s\u00ed, a\u00f1ade una transici\u00f3n.<\/p>\n<\/li>\n<\/ul>\n<hr data-nodeid=\"743\"\/>\n<h2 data-nodeid=\"744\">\ud83d\udccc Resumen: tu lista de verificaci\u00f3n de m\u00e1quina de estados<\/h2>\n<p data-nodeid=\"745\">\u2705 Uno<code data-backticks=\"1\" data-nodeid=\"1309\">[*]<\/code> (estado inicial)<br \/>\n\u2705 Rect\u00e1ngulos redondeados para estados<br \/>\n\u2705 Flechas para transiciones<br \/>\n\u2705 Eventos en las flechas (<code data-backticks=\"1\" data-nodeid=\"1317\">despu\u00e9s(30s)<\/code>,\u00a0<code data-backticks=\"1\" data-nodeid=\"1319\">pedButton<\/code>)<br \/>\n\u2705 Guardas donde sea necesario (<code data-backticks=\"1\" data-nodeid=\"1323\">[pedDemand]<\/code>)<br \/>\n\u2705 Transiciones autoresolutivas para acciones repetidas<br \/>\n\u2705 Acciones de entrada\/salida para el comportamiento<br \/>\n\u2705 Dise\u00f1o limpio, fuente legible<\/p>\n<hr data-nodeid=\"746\"\/>\n<h2 data-nodeid=\"747\"><\/h2>\n<h2 data-nodeid=\"1363\">\ud83c\udfaf Palabras finales: \u00a1Ya est\u00e1s listo!<\/h2>\n<p data-nodeid=\"1364\">Acabas de aprender:<\/p>\n<ul data-nodeid=\"1365\">\n<li data-nodeid=\"1366\">\n<p data-nodeid=\"1367\">Qu\u00e9 es un\u00a0<strong data-nodeid=\"1453\">diagrama de m\u00e1quina de estados<\/strong>\u00a0es<\/p>\n<\/li>\n<li data-nodeid=\"1368\">\n<p data-nodeid=\"1369\">C\u00f3mo\u00a0<strong data-nodeid=\"1458\">pensar en estados y eventos<\/strong><\/p>\n<\/li>\n<li data-nodeid=\"1370\">\n<p data-nodeid=\"1371\">C\u00f3mo\u00a0<strong data-nodeid=\"1468\">dibujar<\/strong>\u00a0y\u00a0<strong data-nodeid=\"1469\">leer<\/strong>\u00a0como un profesional<\/p>\n<\/li>\n<li data-nodeid=\"1372\">\n<p data-nodeid=\"1373\">C\u00f3mo\u00a0<strong data-nodeid=\"1475\">modelar sistemas reales<\/strong>, como sem\u00e1foros<\/p>\n<\/li>\n<li data-nodeid=\"1374\">\n<p data-nodeid=\"1375\">C\u00f3mo\u00a0<strong data-nodeid=\"1481\">usar PlantUML<\/strong>escribir diagramas limpios y mantenibles<\/p>\n<\/li>\n<\/ul>\n<blockquote data-nodeid=\"1376\">\n<p data-nodeid=\"1377\">\ud83c\udf89\u00a0<strong data-nodeid=\"1487\">No est\u00e1s solo aprendiendo UML \u2014 est\u00e1s aprendiendo a modelar sistemas reales<\/strong>, un estado a la vez.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"1378\"\/>\n<h2 data-nodeid=\"1379\">\ud83d\udccc Pr\u00f3ximos pasos (tu camino de aprendizaje)<\/h2>\n<ol data-nodeid=\"1380\">\n<li data-nodeid=\"1381\">\n<p data-nodeid=\"1382\"><strong data-nodeid=\"1493\">Dibuja el sem\u00e1foro de 3 estados a mano<\/strong>\u2014 sin herramientas, solo papel.<\/p>\n<\/li>\n<li data-nodeid=\"1383\">\n<p data-nodeid=\"1384\"><strong data-nodeid=\"1498\">Prueba PlantUML<\/strong>con el c\u00f3digo anterior \u2014 verlo renderizado.<\/p>\n<\/li>\n<li data-nodeid=\"1385\">\n<p data-nodeid=\"1386\"><strong data-nodeid=\"1507\">Modifica<\/strong>: Cambia los tiempos de espera. A\u00f1ade el estado \u201cintervenci\u00f3n de emergencia\u201d.<\/p>\n<\/li>\n<li data-nodeid=\"1387\">\n<p data-nodeid=\"1388\"><strong data-nodeid=\"1512\">Prueba la m\u00e1quina expendedora<\/strong>\u2192 misma l\u00f3gica, pero con dinero.<\/p>\n<\/li>\n<li data-nodeid=\"1389\">\n<p data-nodeid=\"1390\"><strong data-nodeid=\"1517\">Dibuja el tuyo<\/strong>: Un personaje de juego (caminando \u2192 saltando \u2192 atacando \u2192 muerto).<\/p>\n<\/li>\n<\/ol>\n<blockquote data-nodeid=\"1391\">\n<p data-nodeid=\"1392\">\ud83d\udcac\u00a0<em data-nodeid=\"1529\">\u00bfNecesitas ayuda? Prueba esto: \u201cEstoy tratando de modelar un<strong data-nodeid=\"1528\">[tu sistema]<\/strong>\u2014 \u00bfpuedes ayudarme a crear una m\u00e1quina de estados?\u201d<\/em><\/p>\n<\/blockquote>\n<hr data-nodeid=\"1393\"\/>\n<h2 data-nodeid=\"1394\">\ud83d\ude4c Pensamiento final<\/h2>\n<blockquote data-nodeid=\"1395\">\n<p data-nodeid=\"1396\">\ud83d\udd04\u00a0<strong data-nodeid=\"1543\">Todo lo que cambia \u2014 ya sea una luz, un inicio de sesi\u00f3n o un pedido \u2014 puede ser modelado con una m\u00e1quina de estados.<\/strong><br \/>\nNo necesitas ser programador para entenderlo. Solo necesitas preguntarte:<strong data-nodeid=\"1544\">preguntar: \u201c\u00bfQu\u00e9 puede ser esta cosa y qu\u00e9 la hace cambiar?\u201d<\/strong><\/p>\n<\/blockquote>\n<hr data-nodeid=\"1397\"\/>\n<p data-nodeid=\"1398\">\u2705\u00a0<strong data-nodeid=\"1549\">Ahora sabes c\u00f3mo crear un diagrama profesional y funcional de m\u00e1quina de estados \u2014 desde principiante hasta modelador seguro.<\/strong><\/p>\n<blockquote data-nodeid=\"1399\">\n<p data-nodeid=\"1400\">\ud83c\udf89\u00a0<strong data-nodeid=\"1558\">\u00a1Feliz diagramaci\u00f3n!<\/strong><br \/>\nAv\u00edsame si quieres una versi\u00f3n imprimible en PDF, una prueba o un desaf\u00edo de programaci\u00f3n para probar tus habilidades.<\/p>\n<\/blockquote>\n<hr data-nodeid=\"1401\"\/>\n<p class=\"\" data-nodeid=\"1402\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A\u00a0Diagrama de estado UML\u00a0es una herramienta visual potente que modela el comportamiento din\u00e1mico de un sistema al ilustrar c\u00f3mo cambia<\/p>\n","protected":false},"author":3479,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[144,127],"tags":[],"class_list":["post-10452","post","type-post","status-publish","format-standard","hentry","category-ai","category-unified-modeling-language"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos) - ArchiMetric Spanish<\/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.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos) - ArchiMetric Spanish\" \/>\n<meta property=\"og:description\" content=\"A\u00a0Diagrama de estado UML\u00a0es una herramienta visual potente que modela el comportamiento din\u00e1mico de un sistema al ilustrar c\u00f3mo cambia\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/\" \/>\n<meta property=\"og:site_name\" content=\"ArchiMetric Spanish\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-04T06:36:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png\" \/>\n<meta name=\"author\" content=\"archimetric@visual-paradigm.com\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"archimetric@visual-paradigm.com\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/\"},\"author\":{\"name\":\"archimetric@visual-paradigm.com\",\"@id\":\"https:\/\/www.archimetric.com\/es\/#\/schema\/person\/e4027c9f5b602fc705716009e5671d28\"},\"headline\":\"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos)\",\"datePublished\":\"2026-03-04T06:36:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/\"},\"wordCount\":1611,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png\",\"articleSection\":[\"AI\",\"Unified Modeling Language\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/\",\"url\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/\",\"name\":\"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos) - ArchiMetric Spanish\",\"isPartOf\":{\"@id\":\"https:\/\/www.archimetric.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png\",\"datePublished\":\"2026-03-04T06:36:35+00:00\",\"author\":{\"@id\":\"https:\/\/www.archimetric.com\/es\/#\/schema\/person\/e4027c9f5b602fc705716009e5671d28\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#primaryimage\",\"url\":\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png\",\"contentUrl\":\"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.archimetric.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.archimetric.com\/es\/#website\",\"url\":\"https:\/\/www.archimetric.com\/es\/\",\"name\":\"ArchiMetric Spanish\",\"description\":\"EA, Dev Ops, Scrum, Agile and More\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.archimetric.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.archimetric.com\/es\/#\/schema\/person\/e4027c9f5b602fc705716009e5671d28\",\"name\":\"archimetric@visual-paradigm.com\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.archimetric.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/de58c1924d83d002dbce0b79f74ba4b70e2f85238332df6cabc0227effdf470d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/de58c1924d83d002dbce0b79f74ba4b70e2f85238332df6cabc0227effdf470d?s=96&d=mm&r=g\",\"caption\":\"archimetric@visual-paradigm.com\"},\"url\":\"https:\/\/www.archimetric.com\/es\/author\/archimetricvisual-paradigm-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos) - ArchiMetric Spanish","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.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/","og_locale":"es_ES","og_type":"article","og_title":"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos) - ArchiMetric Spanish","og_description":"A\u00a0Diagrama de estado UML\u00a0es una herramienta visual potente que modela el comportamiento din\u00e1mico de un sistema al ilustrar c\u00f3mo cambia","og_url":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/","og_site_name":"ArchiMetric Spanish","article_published_time":"2026-03-04T06:36:35+00:00","og_image":[{"url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png","type":"","width":"","height":""}],"author":"archimetric@visual-paradigm.com","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"archimetric@visual-paradigm.com","Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#article","isPartOf":{"@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/"},"author":{"name":"archimetric@visual-paradigm.com","@id":"https:\/\/www.archimetric.com\/es\/#\/schema\/person\/e4027c9f5b602fc705716009e5671d28"},"headline":"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos)","datePublished":"2026-03-04T06:36:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/"},"wordCount":1611,"commentCount":0,"image":{"@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#primaryimage"},"thumbnailUrl":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png","articleSection":["AI","Unified Modeling Language"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/","url":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/","name":"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos) - ArchiMetric Spanish","isPartOf":{"@id":"https:\/\/www.archimetric.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#primaryimage"},"image":{"@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#primaryimage"},"thumbnailUrl":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png","datePublished":"2026-03-04T06:36:35+00:00","author":{"@id":"https:\/\/www.archimetric.com\/es\/#\/schema\/person\/e4027c9f5b602fc705716009e5671d28"},"breadcrumb":{"@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#primaryimage","url":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png","contentUrl":"https:\/\/www.archimetric.com\/wp-content\/uploads\/2026\/01\/1t03qBGv_S_Iz7dxnOnwt_w.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.archimetric.com\/es\/complete-step-by-step-tutorial-how-to-create-a-state-machine-diagram-for-absolute-beginners\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.archimetric.com\/es\/"},{"@type":"ListItem","position":2,"name":"Tutorial paso a paso completo: C\u00f3mo crear un diagrama de m\u00e1quina de estados (para principiantes absolutos)"}]},{"@type":"WebSite","@id":"https:\/\/www.archimetric.com\/es\/#website","url":"https:\/\/www.archimetric.com\/es\/","name":"ArchiMetric Spanish","description":"EA, Dev Ops, Scrum, Agile and More","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.archimetric.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.archimetric.com\/es\/#\/schema\/person\/e4027c9f5b602fc705716009e5671d28","name":"archimetric@visual-paradigm.com","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.archimetric.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/de58c1924d83d002dbce0b79f74ba4b70e2f85238332df6cabc0227effdf470d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de58c1924d83d002dbce0b79f74ba4b70e2f85238332df6cabc0227effdf470d?s=96&d=mm&r=g","caption":"archimetric@visual-paradigm.com"},"url":"https:\/\/www.archimetric.com\/es\/author\/archimetricvisual-paradigm-com\/"}]}},"_links":{"self":[{"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/posts\/10452","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/users\/3479"}],"replies":[{"embeddable":true,"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/comments?post=10452"}],"version-history":[{"count":0,"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/posts\/10452\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/media?parent=10452"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/categories?post=10452"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.archimetric.com\/es\/wp-json\/wp\/v2\/tags?post=10452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}