Estructura de clases UML mostrando asociaciones y composiciones
← RECURSOS

Modelado Estático del Sistema con Diagramas de Clases UML

Representación estructural con UML: visibilidad de miembros (+, -, #), multiplicidades, asociaciones, composiciones, agregaciones y dependencias.

📌 En síntesis: Representación estructural con UML: visibilidad de miembros (+, -, #), multiplicidades, asociaciones, composiciones, agregaciones y dependencias.

Guía técnica desarrollada por el equipo de Proyecto Luna para formación profesional y consulta técnica abierta.


📌 Aprendizaje esperado


📌

Calcular voltajes y corrientes de mallas y nodos de acuerdo con especificaciones dadas.


📌 Aprendizaje esperado


📌

Comprender el Proceso Unificado de Desarrollo de Software, identificando sus componentes y relacionándolos con la planificación y construcción del software.

La gestión de la configuración de software (SCM), conforme al estándar IEEE 828-2005, se define como la disciplina destinada a identificar, documentar y controlar las características de un sistema, así como a gestionar los cambios sobre dichas características a lo largo del ciclo de vida. La gestión del cambio complementa a la SCM al establecer el proceso formal por el cual toda modificación es solicitada, analizada, aprobada, implementada y comunicada. En términos operativos, la primera responde al qué existe y en qué versión, mientras que la segunda precisa cómo y cuándo se modifica. Ambas funciones constituyen un sistema sociotécnico que integra políticas, procesos, herramientas y roles. En ausencia de estas prácticas emergen problemas recurrentes: versiones divergentes de los artefactos, pérdida de trazabilidad, cambios no autorizados, aumento de deuda técnica y retrabajo. Su correcta implantación habilita colaboración ordenada, auditabilidad, previsibilidad de entregas y conformidad contractual, además de favorecer la calidad del producto mediante líneas base verificables y un historial íntegro de decisiones. La gestión de proyectos provee la dirección estratégica (alcance, tiempo, costo y calidad) y se articula con la SCM/gestión del cambio a través de iteraciones planificadas, tableros de seguimiento e indicadores (velocidad, defectos, avance). El ambiente de desarrollo —conjunto de herramientas y estándares— operacionaliza esa coordinación mediante control de versiones (Git), gestión de incidencias (Jira/Trello) y automatización CI/CD (Jenkins, GitLab CI/CD), promoviendo ramificación controlada, revisiones de código, pruebas automatizadas y despliegues reproducibles. El enfoque integrado se orienta a reducir la incertidumbre y a mitigar riesgos (técnicos, organizacionales y de cumplimiento), sustentado por métricas como lead time de cambio, tasa de defectos posliberación, cumplimiento de SLAs de cambio y productividad del equipo. El resultado esperado es un flujo de trabajo trazable, controlado y adaptable, capaz de absorber cambios sin comprometer la estabilidad del sistema ni la confianza de los interesados.


🚀 Introducción


📌 Configuración y gestión del cambio

🔹 Definición

La gestión de configuración de software (SCM, Software Configuration Management) es un conjunto de actividades que permiten identificar, organizar, versionar y controlar los artefactos del proyecto. Estos artefactos incluyen: código fuente, modelos UML, documentos de requisitos, manuales de usuario, casos de prueba y scripts de despliegue. El estándar IEEE 828-2005, especificado en la industria, la define como: “la disciplina aplicada para identificar, documentar y controlar las características de un sistema, así como para gestionar y controlar los cambios en esas características durante el ciclo de vida del software”. La gestión del cambio, por su parte, regula cómo se introducen modificaciones en los artefactos. Su propósito es asegurar que cada solicitud de cambio sea registrada, evaluada, aprobada y comunicada antes de su implementación. En otras palabras:

  • Gestión de configuración: se ocupa del qué existe y en qué versión.
  • Gestión del cambio: se ocupa de cómo y cuándo se modifican esos elementos.

🔹 Importancia

Un proyecto de software sin gestión de configuración y cambio corre el riesgo de caer en el caos organizativo. Algunos problemas frecuentes son:

  • Varias versiones del mismo archivo circulando sin control.

  • Desarrolladores trabajando sobre artefactos obsoletos.

  • Cambios implementados sin aprobación del cliente.

  • Pérdida de trazabilidad: no se sabe quién cambió qué, ni cuándo, ni por qué. La correcta aplicación de estos procesos permite:

  • Trabajo colaborativo ordenado.

  • Confianza del cliente. Al saber que cada cambio se evalúa y aprueba formalmente.

  • Menor retrabajo. Gracias a la trazabilidad de versiones y decisiones.

  • Auditorías claras. Cada artefacto tiene un historial documentado.

🔹 Actividades principales

  1. Identificación de configuración o Definir qué artefactos son críticos y deben ser gestionados. o Ejemplo: código fuente, diagramas de clases, manual de usuario. 2. Control de versiones o Mantener un historial de modificaciones con numeración clara. o Uso de ramas para desarrollo paralelo (técnica que permite a los equipos de desarrollo trabajar en diferentes partes de un proyecto de software de forma independiente, creando “ramas” o líneas de desarrollo separadas en un repositorio de código) (ej.: main, develop, feature). 3. Auditorías de configuración o Revisiones periódicas para validar que los artefactos cumplen estándares de calidad y están completos. 4. Gestión de cambios o Flujo formal: solicitud análisis de impacto aprobación/rechazo implementación. o Se registra cada cambio junto con la justificación y responsables.

🔹 Herramientas en la industria

  • Para Control de versiones: Git, GitHub, GitLab, Bitbucket.
  • Para Gestión de cambios: Jira, Trello, ServiceNow, Azure DevOps.
  • Para Integración con CI/CD: Jenkins, GitLab CI/CD.

🔹 Riesgos de no aplicarlo

Dentro de los posibles riesgos podemos identificar los siguientes:

  • Confusión sobre cuál es la versión válida del sistema.
  • Cambios aplicados sin autorización.
  • Pérdida de trazabilidad.
  • Sobrecostos y retrasos.
  • Insatisfacción del cliente.

Figura 1: Ejemplo aplicado – Frogger Classic Figura 1: Ejemplo aplicado – Frogger Classic

🔹 Ejemplo aplicado – Frogger Classic

El cliente solicita añadir un modo multijugador en línea Sin gestión del cambio Un programador lo implementa directamente. Resultado: retrasos, bugs inesperados y conflictos con la arquitectura. La solicitud se registra en un sistema (Jira). Se analiza su impacto (tiempo, costo, riesgos técnicos). El comité de control decide si se incluye en la versión actual o se pospone para una futura iteración. Con gestión del cambio Resultado: el proyecto mantiene control,

Figura 2. Objetivos Gestión del proyecto Figura 2. Objetivos Gestión del proyecto (Fuente: ChatGPT (2023))

🔹 Definición

La gestión del proyecto de software consiste en planificar, coordinar, supervisar y controlar todas las actividades necesarias para cumplir los objetivos de tiempo, costo, calidad y alcance. Según el PMI (Project Management Institute, una organización global que estandariza la gestión de proyectos )(2017): “un proyecto exitoso es aquel que cumple con el alcance, se entrega a tiempo, dentro del presupuesto y con la calidad esperada”. En el PU, la gestión del proyecto es un proceso de soporte transversal: acompaña todas las fases y se articula con las iteraciones, permitiendo corregir desviaciones tempranamente.

🔹 Objetivos


📌 Gestión del proyecto


📌

Dividir el trabajo en fases e iteraciones manejables


📌

Detectar riesgos antes de que se conviertan en problemas


📌

Monitorear avances y ajustar planes cuando sea necesario


📌

Asegurar una comunicación fluida entre equipo y cliente


📌

Planificar recursos humanos, técnicos y financieros Objetivos Gestión del proyecto

Figura 3: Ejemplo aplicado – Frogger Classic Figura 3: Ejemplo aplicado – Frogger Classic

🔹 Actividades principales

Las actividades principales de la Gestión de Proyectos en PU son: 1. Planificación o Definición de fases, iteraciones y entregables. o Asignación de roles (analistas, programadores, testers, arquitectos). o Estimación de tiempos y costos. 2. Seguimiento y control o Reuniones periódicas de seguimiento. o Uso de métricas: velocidad de desarrollo, defectos encontrados, avance de iteraciones. o Ajuste de cronogramas ante desviaciones. 3. Gestión de riesgos o Identificación de riesgos técnicos (ej.: compatibilidad multiplataforma). o Evaluación de impacto y probabilidad. o Diseño de planes de mitigación. 4. Comunicación o Reportes claros para stakeholders. o Espacios de retroalimentación con el cliente.

🔹 Ejemplo aplicado – Frogger Classic

Para el ejemplo del que estamos hablando, el proyecto se organiza en iteraciones: Iteración 1: Motor gráfico y movimiento básico. Iteración 2: Obstáculos y lógica de colisiones. Iteración 2: Interfaz retro y compatibilidad móvil.

El gestor revisa semanalmente el avance en GitHub, organiza reuniones de seguimiento y ajusta plazos si surgen imprevistos, como fallos en pruebas de compatibilidad.

🔹 Herramientas

Para la Gestión de Proyectos existen varias herramientas que colaboran en las diferentes etapas, entre ellas tenemos:

  • Planificación y seguimiento: Microsoft Project, Asana, Jira, Trello.
  • Visualización: tableros Kanban, burndown charts.
  • Métricas de productividad: velocidad de iteración, cobertura de pruebas, defectos.

🔹 Riesgos de no aplicarlo

A pesar de que hablamos de una gestión de proyectos clara, con etapas, puede suceder que en un equipo se defina no utilizarlas y los riegos asociados a ello son, por ejemplo:

  • Sobrecostos por mala estimación inicial.
  • Descoordinación de roles.
  • Falta de comunicación con el cliente.
  • Retrasos acumulativos.
  • Productos de baja calidad.

🔹 Definición

El ambiente de desarrollo es el conjunto de herramientas, normas, procesos y plataformas que permiten al equipo aplicar el PU de manera eficiente. Incluye tanto el software como la cultura organizacional y la infraestructura.


📌 Ambiente

🔹 Importancia

La importancia de definir el ambiente permite:

  • Establecer un marco común de trabajo.
  • Permitir colaboración entre equipos distribuidos.
  • Facilitar la automatización de pruebas y despliegues.
  • Reducir errores mediante estándares de codificación.
  • Mejorar la productividad general del equipo.

🔹 Componentes

🔹 Ejemplo aplicado – Frogger Classic

El ambiente para el caso que estamos revisando incluye:

  • Repositorio en GitHub para código y diagramas UML.
  • Jenkins ejecutando pruebas automáticas.

Figura 4: Componentes del ambiente de desarrollo Figura 4: Componentes del ambiente de desarrollo


📌

Herramientas CASE Visual Paradigm, Enterprise Architect.


📌

Integración continua (CI/CD) Jenkins, Travis CI, GitLab CI/CD.


📌

Normas organizacionales Guías de codificación, revisiones de código, documentación estandarizada.


📌

Entornos de pruebas y despliegue Docker, Kubernetes, servidores de staging


📌

Repositorios de control de versiones GitHub, GitLab, Bitbucket. Componentes del ambiente de desarrollo

  • Docker para probar despliegues en entornos PC y móvil.
  • Guías de estilo para garantizar consistencia en el código.

🔹 Riesgos de un ambiente deficiente

Cuando gestionamos un proyecto, no considerara un adecuado ambiente de desarrollo, puede producir:

  • Artefactos duplicados o inconsistentes.
  • Retrasos por falta de integración.
  • Bugs no detectados por ausencia de pruebas automáticas.
  • Baja productividad del equipo.
  • Desmotivación por ausencia de estándares. Los procesos de soporte en el Proceso Unificado (PU) —configuración y gestión del cambio, gestión del proyecto y ambiente— no funcionan como compartimentos aislados, sino como engranajes interdependientes que deben sincronizarse para asegurar la coherencia y la calidad de cada iteración. Si se los visualiza como un sistema, la gestión de configuración aporta el orden documental y técnico, la gestión del proyecto aporta la dirección estratégica y organizativa, y el ambiente provee la infraestructura tecnológica necesaria para ejecutar las decisiones. Al trabajar juntos, permiten que cada ciclo del PU avance de manera controlada, transparente y productiva.

🔹 Flujo de interacción

  1. Gestión de configuración y cambios o Registra una nueva solicitud de modificación (ejemplo: incluir una nueva mecánica de juego en Frogger Classic). o Evalúa impacto en requisitos, código y artefactos asociados. o Establece la nueva versión del producto como línea base.

📌 Integración de los procesos de soporte

  1. Gestión del proyecto o Toma la decisión de incorporar el cambio en una iteración específica. o Reorganiza tareas, reasigna recursos y ajusta el cronograma. o Supervisa el avance de la implementación y verifica cumplimiento de plazos. 3. Ambiente o Ofrece las herramientas para que el cambio se lleve a cabo en condiciones óptimas: control de versiones, integración continua, pruebas automatizadas y entornos de despliegue. o Permite la trazabilidad técnica: desde el requerimiento inicial hasta la validación del producto en producción.

🔹 Ejemplo aplicado – Frogger Classic

Supongamos que el cliente aprueba la adición de un modo multijugador en el caso que estamos revisando, entonces:

  • La gestión de configuración y cambios documenta la solicitud y aprueba la modificación tras un análisis de impacto.

  • La gestión del proyecto incorpora el nuevo requisito en la iteración 3, ajustando cronograma, roles y presupuesto.

  • El ambiente asegura que el equipo implemente el código en GitHub, valide la integración con Jenkins y despliegue una versión de prueba en Docker para PC y móvil. De esta manera, el cambio no es una improvisación, sino una acción controlada que fluye de un proceso a otro.

🔹 Beneficios de la integración

  • Trazabilidad completa: desde la idea inicial hasta la validación en producción.

  • Adaptación flexible: cambios pueden introducirse sin comprometer estabilidad.

  • Eficiencia del equipo: cada rol sabe qué hacer, con qué herramientas y en qué plazos.

  • Mejora continua: cada iteración retroalimenta a la siguiente, fortaleciendo la disciplina del proyecto.

🔹 Riesgos de la falta de integración

  • Cambios aprobados que nunca llegan a ejecutarse correctamente.

  • Iteraciones mal planificadas o sin recursos suficientes.

  • Uso inconsistente de herramientas que genera versiones duplicadas o incompatibles.

  • Clientes descontentos por falta de visibilidad y control en la evolución del producto.

Los procesos de soporte del PU son la columna vertebral invisible que mantiene al proyecto funcionando con orden y calidad. Aunque no entregan directamente funcionalidades visibles al cliente, su aporte es fundamental.

  • La configuración y gestión del cambio evita el caos en proyectos con múltiples versiones y solicitudes.

  • La gestión del proyecto asegura que el trabajo esté organizado, con riesgos controlados y metas alcanzables.

  • El ambiente proporciona las condiciones necesarias para que los equipos colaboren de manera efectiva. En la práctica, los proyectos de software que descuidan estos procesos suelen experimentar retrasos, sobrecostos o productos de baja calidad. Por el contrario, aquellos que los aplican logran resultados más confiables y sostenibles. Para los futuros profesionales de informática, comprender y aplicar estos procesos significa estar preparados para liderar proyectos reales, donde no solo importa escribir código, sino también garantizar su estabilidad, evolución y éxito a lo largo del tiempo.


💡 Conclusión



🚀 Potencia tus proyectos tecnológicos con Proyecto Luna

En Proyecto Luna desarrollamos arquitectura de software de alto rendimiento, optimización de bases de datos críticas y soluciones aplicadas de inteligencia artificial y automatización para empresas y profesionales.

  • 💼 Soluciones de ingeniería: Conoce nuestras capacidades y casos de estudio en proyectoluna.com/work/.
  • 🛡️ Seguridad y auditoría: Orientación técnica y respuesta ante incidentes en ¿Te han hackeado?.
  • 📩 Contacto directo: Escríbenos a través de nuestro formulario de contacto o a contacto@proyectoluna.com.

📚 Fuentes y lecturas recomendadas

  • ● Jacobson, I., Booch, G., y Rumbaugh, J. (2000). El proceso unificado de desarrollo de software. Pearson/Addison Wesley. ● Jacobson, I., Booch, G., y Rumbaugh, J. (2006). El lenguaje Unificado de Modelado: Guía del usuario. Pearson/Addison Wesley. ● Pressman, R. S. (2010). Ingeniería de software: Un enfoque práctico. McGraw-Hill. ● Sommerville, I. (2011). Ingeniería del Software (9a ed.). Pearson. ● IEEE Standard for Configuration Management in Systems and Software Engineering. (2005). IEEE Std 828-2005.

CONTINÚA EXPLORANDO

ARTÍCULOS SUGERIDOS

Dilema ético en la toma de decisiones tecnológicas e informáticasInformática

Actos Humanos, Libertad y Dilemas Éticos en la Tecnología

Análisis de decisiones éticas: actos del hombre vs actos humanos voluntarios, consentimiento, privacidad de datos y dilemas en algoritmos de IA.

Representación conceptual de la dignidad de la persona y la ética del trabajoInformática

Dignidad de la Persona, Ética de las Virtudes y Excelencia Profesional

La persona como centro de la actividad técnica: dignidad intrínseca, virtudes cardinales y búsqueda de la excelencia en el ejercicio del trabajo.

Representación simbólica de la balanza de la justicia y la éticaInformática

Fundamentos de la Ética: Moral, Leyes y Responsabilidad Social

Distinción conceptual entre ética y moral: el origen de las normas de convivencia, relación con el ordenamiento jurídico y responsabilidad ciudadana.

VER TODOS LOS RECURSOS →

HABLEMOS DE TU CASO

¿Necesitas ayuda? Contáctanos y te contestamos!

SERVICIOS →