INGENIERÍA DE SOFTWARE
INGENIERÍA DE SOFTWARE
TEMARIO Inicio < Previo | Próximo >
Del análisis de necesidades a la construcción, evaluación y mantenimiento de soluciones de software.
Desarrollar software exige comprender las necesidades de los usuarios, organizar el trabajo, diseñar soluciones coherentes y comprobar que los resultados cumplen su propósito. Una aplicación debe funcionar correctamente, proteger la información, facilitar su utilización y permitir que futuros cambios se incorporen de manera controlada.
El Diplomado en Ingeniería de Software desarrolla una formación que conecta los fundamentos de la disciplina con la gestión de proyectos, la ingeniería de requisitos, el diseño, la arquitectura y la construcción de aplicaciones. Integra bases de datos, pruebas, seguridad y prácticas de operación y mantenimiento.
La secuencia permite comprender cómo una necesidad se convierte en requisitos, cómo estos orientan las decisiones técnicas y cómo se verifica su cumplimiento. El programa culmina con un proyecto integrador que reúne planificación, diseño, implementación, pruebas y puesta en funcionamiento.
El participante aprenderá a:
Comprender el desarrollo como una actividad de ingeniería: relacionar fundamentos, decisiones técnicas y responsabilidades profesionales.
Organizar proyectos de software: seleccionar procesos, estimar recursos y gestionar alcance, costos, plazos y riesgos.
Definir necesidades verificables: obtener, analizar, especificar y gestionar requisitos con trazabilidad.
Diseñar y construir soluciones coherentes: integrar arquitectura, componentes, interfaces y persistencia de datos.
Comprobar calidad y seguridad: planificar pruebas, gestionar defectos y verificar controles.
Sostener y mejorar el producto: aplicar prácticas de entrega, operación, observabilidad y mantenimiento.
Desarrollar competencias para analizar, diseñar, construir, verificar, implementar y mantener soluciones de software que respondan a necesidades reales, mediante procesos organizados y decisiones técnicas justificadas.
Duración: 12 meses.
Carga académica: 1,200 horas académicas y 48 créditos.
Estructura: 12 módulos, 48 capítulos y 144 temas.
Objetivo del módulo: Comprender los fundamentos de la ingeniería de software, el ciclo de vida de los sistemas y las responsabilidades técnicas y profesionales que orientan su desarrollo.
1.1.1. Concepto de software, componentes y características de los productos informáticos.
1.1.2. Diferencias y relaciones entre programación, desarrollo e ingeniería de software.
1.1.3. Problemas de complejidad, cambio y coordinación en proyectos de software.
1.2.1. Lógica, abstracción y descomposición de problemas computacionales.
1.2.2. Algoritmos, estructuras de datos y análisis básico de eficiencia.
1.2.3. Sistemas operativos, redes y plataformas de ejecución de aplicaciones.
1.3.1. Análisis, diseño, construcción, pruebas, implementación y mantenimiento.
1.3.2. Modelos de desarrollo predictivos, iterativos, incrementales y adaptativos.
1.3.3. Productos de trabajo, entregables y trazabilidad durante el ciclo de vida.
1.4.1. Roles, competencias y colaboración en equipos de ingeniería de software.
1.4.2. Ética profesional, propiedad intelectual y licencias de software.
1.4.3. Responsabilidad sobre la privacidad, accesibilidad e impacto de los sistemas.
Objetivo del módulo: Planificar y gestionar proyectos mediante procesos, estimaciones y seguimiento del alcance, costos, plazos y riesgos.
2.1.1. Actividades, roles, entradas y resultados del proceso de software.
2.1.2. Selección y adaptación de procesos según tamaño, riesgo y naturaleza del proyecto.
2.1.3. Evaluación del proceso y mejora continua basada en resultados.
2.2.1. Valores y principios ágiles aplicados al desarrollo de productos.
2.2.2. Scrum: responsabilidades, eventos, artefactos y compromisos.
2.2.3. Kanban: visualización del trabajo, límites de trabajo en curso y gestión del flujo.
2.3.1. Definición del alcance, entregables y estructura de trabajo del proyecto.
2.3.2. Estimación de esfuerzo, duración y costos con supuestos explícitos.
2.3.3. Viabilidad económica, costo total de propiedad y decisiones de construir o adquirir.
2.4.1. Identificación, evaluación y tratamiento de riesgos técnicos y organizacionales.
2.4.2. Indicadores de avance, flujo de trabajo y previsibilidad de las entregas.
2.4.3. Comunicación con interesados, gestión de cambios y acuerdos del equipo.
Objetivo del módulo: Analizar, especificar, validar y gestionar requisitos de software que respondan a necesidades reales, con trazabilidad hacia sus fuentes, decisiones, implementación y evidencias de cumplimiento.
3.1.1. Problema de negocio, contexto de uso y delimitación del sistema.
3.1.2. Identificación de usuarios, interesados y fuentes de requisitos.
3.1.3. Entrevistas, observación, talleres y análisis documental para obtener información.
3.2.1. Requisitos funcionales, atributos de calidad y restricciones del sistema.
3.2.2. Reglas de negocio, dependencias y resolución de conflictos entre requisitos.
3.2.3. Priorización según valor, riesgo, costo y necesidades de los interesados.
3.3.1. Redacción de requisitos claros, consistentes, verificables y viables.
3.3.2. Casos de uso, historias de usuario y criterios de aceptación.
3.3.3. Especificación de interfaces, datos y condiciones de operación.
3.4.1. Revisión de requisitos mediante escenarios, prototipos y acuerdos con usuarios.
3.4.2. Matrices de trazabilidad entre requisitos, diseño, código y pruebas.
3.4.3. Líneas base, análisis de impacto y control de cambios de requisitos.
Objetivo del módulo: Representar el dominio, la estructura y el comportamiento del software, y diseñar componentes e interfaces coherentes con los requisitos y las necesidades de los usuarios.
4.1.1. Identificación de entidades, conceptos, relaciones y reglas del dominio.
4.1.2. Representación de procesos, flujos de información y límites del sistema.
4.1.3. Correspondencia entre modelos del dominio y requisitos del software.
4.2.1. Diagramas UML de clases, componentes y despliegue.
4.2.2. Diagramas UML de secuencia, actividades y estados.
4.2.3. Selección de modelos según su propósito y nivel de detalle.
4.3.1. Responsabilidades, cohesión y acoplamiento entre componentes.
4.3.2. Contratos, interfaces y dependencias entre partes del sistema.
4.3.3. Patrones de diseño y criterios para su aplicación.
4.4.1. Perfiles de usuario, tareas y recorridos de interacción.
4.4.2. Arquitectura de información, prototipos y diseño de interfaces accesibles.
4.4.3. Evaluación de usabilidad y mejora del diseño mediante retroalimentación.
Objetivo del módulo: Definir y evaluar arquitecturas de software mediante la comparación de alternativas, el análisis de atributos de calidad y el registro de decisiones y consecuencias.
5.1.1. Arquitectura de software, partes interesadas y requisitos determinantes.
5.1.2. Vistas arquitectónicas y representación de la estructura del sistema.
5.1.3. Registro de decisiones, alternativas y consecuencias arquitectónicas.
5.2.1. Arquitecturas en capas, cliente-servidor y monolitos modulares.
5.2.2. Arquitecturas hexagonales y separación entre dominio e infraestructura.
5.2.3. Arquitecturas orientadas a servicios, microservicios y eventos.
5.3.1. Comunicación entre servicios, latencia y fallos parciales.
5.3.2. Consistencia de datos, transacciones distribuidas e idempotencia.
5.3.3. Resiliencia mediante tiempos de espera, reintentos controlados y aislamiento de fallos.
5.4.1. Escenarios de rendimiento, disponibilidad, seguridad y modificabilidad.
5.4.2. Evaluación de alternativas y compensaciones entre atributos de calidad.
5.4.3. Prototipos técnicos y pruebas de concepto para reducir incertidumbre.
Objetivo del módulo: Construir componentes de software mediante principios de programación, selección de algoritmos, revisión técnica y control de versiones, procurando claridad y mantenibilidad del código.
6.1.1. Modularidad, abstracción, encapsulamiento y separación de responsabilidades.
6.1.2. Programación estructurada, orientada a objetos y funcional.
6.1.3. Principios SOLID y criterios para evitar complejidad innecesaria.
6.2.1. Selección de estructuras de datos y algoritmos según el problema.
6.2.2. Manejo de errores, excepciones y validación de entradas.
6.2.3. Concurrencia, sincronización y programación asíncrona.
6.3.1. Convenciones de código, nombres descriptivos y documentación útil.
6.3.2. Refactorización, eliminación de duplicación y tratamiento de deuda técnica.
6.3.3. Revisión de código, análisis estático y programación colaborativa.
6.4.1. Git: repositorios, confirmaciones, ramas e integración de cambios.
6.4.2. Gestión de conflictos, revisión de contribuciones y trazabilidad del código.
6.4.3. Uso de asistentes de inteligencia artificial con revisión, pruebas y protección de información.
Objetivo del módulo: Diseñar e integrar mecanismos de almacenamiento y persistencia que mantengan la integridad de los datos y respondan a necesidades de consulta, consistencia, desempeño y recuperación.
7.1.1. Modelos conceptuales, lógicos y físicos de bases de datos.
7.1.2. Entidades, relaciones, claves y restricciones de integridad.
7.1.3. Normalización y desnormalización según necesidades de consulta.
7.2.1. SQL para definición, consulta y modificación de datos.
7.2.2. Transacciones, propiedades ACID y niveles de aislamiento.
7.2.3. Índices, planes de ejecución y optimización de consultas.
7.3.1. Repositorios, mapeo objeto-relacional y separación de la persistencia.
7.3.2. Migraciones de esquemas y compatibilidad entre versiones.
7.3.3. Gestión de conexiones, consultas parametrizadas y operaciones eficientes.
7.4.1. Bases de datos documentales, clave-valor, de columnas y de grafos.
7.4.2. Selección del almacenamiento según acceso, consistencia y escalabilidad.
7.4.3. Copias de seguridad, restauración y verificación de recuperación de datos.
Objetivo del módulo: Desarrollar aplicaciones y servicios que integren interfaces, reglas de negocio y datos, utilizando contratos de comunicación y mecanismos de tratamiento de errores.
8.1.1. Modelo de solicitud y respuesta, HTTP y comunicación cliente-servidor.
8.1.2. Tecnologías de presentación y organización de aplicaciones frontend.
8.1.3. Gestión del estado, formularios y validación de la interacción.
8.2.1. Organización del backend y separación de responsabilidades.
8.2.2. Implementación de reglas de negocio y acceso a datos.
8.2.3. Procesamiento asíncrono, tareas en segundo plano y manejo de errores.
8.3.1. Diseño de API REST, recursos y uso de métodos HTTP.
8.3.2. Contratos, documentación, versionado y compatibilidad de interfaces.
8.3.3. Validación de respuestas, paginación y control de solicitudes.
8.4.1. Integración mediante API, webhooks y colas de mensajes.
8.4.2. Transformación de datos y tratamiento de errores de integración.
8.4.3. Pruebas de contratos, interoperabilidad y seguimiento de operaciones distribuidas.
Objetivo del módulo: Planificar y ejecutar actividades de verificación y validación, gestionar defectos y evaluar la calidad del software mediante pruebas e indicadores relacionados con requisitos y riesgos.
9.1.1. Diferencias entre error, defecto y fallo del software.
9.1.2. Verificación, validación y objetivos de las pruebas.
9.1.3. Estrategia de pruebas según requisitos, riesgos y características del producto.
9.2.1. Pruebas unitarias, de integración, de sistema y de aceptación.
9.2.2. Particiones de equivalencia, valores límite y tablas de decisión.
9.2.3. Pruebas estructurales, cobertura de código y pruebas exploratorias.
9.3.1. Automatización de pruebas y organización de suites de regresión.
9.3.2. Pruebas de carga, estrés, rendimiento y recuperación.
9.3.3. Pruebas de seguridad, accesibilidad, usabilidad y compatibilidad.
9.4.1. Plan de calidad, revisiones y criterios de aprobación de entregables.
9.4.2. Registro, priorización y seguimiento de defectos.
9.4.3. Indicadores de calidad y análisis de causas para prevenir fallos recurrentes.
Objetivo del módulo: Incorporar controles de seguridad desde el diseño, proteger identidades, aplicaciones y datos, y verificar vulnerabilidades y mecanismos de respuesta y recuperación.
10.1.1. Confidencialidad, integridad y disponibilidad de información y servicios.
10.1.2. Modelado de amenazas, activos y superficies de ataque.
10.1.3. Mínimo privilegio, defensa en profundidad y configuraciones seguras.
10.2.1. Autenticación, autorización y gestión de identidades.
10.2.2. Protección de contraseñas, sesiones y mecanismos de recuperación.
10.2.3. Roles, permisos y validación del acceso a recursos.
10.3.1. Prevención de inyecciones, ejecución de scripts y falsificación de solicitudes.
10.3.2. Uso de bibliotecas criptográficas para cifrado y protección de comunicaciones.
10.3.3. Gestión de secretos y minimización de datos sensibles.
10.4.1. Análisis de dependencias y gestión de vulnerabilidades.
10.4.2. Pruebas de seguridad autorizadas y verificación de correcciones.
10.4.3. Registro de eventos, respuesta a incidentes y recuperación segura.
Objetivo del módulo: Organizar la integración, entrega y operación del software mediante automatización, despliegues controlados, observabilidad y prácticas de mantenimiento y evolución.
11.1.1. Colaboración entre desarrollo y operaciones mediante prácticas DevOps.
11.1.2. Integración continua con compilación, pruebas y análisis automatizados.
11.1.3. Entrega continua, gestión de artefactos y aprobación de versiones.
11.2.1. Configuración de entornos de desarrollo, pruebas y producción.
11.2.2. Contenedores, infraestructura como código y gestión de configuración.
11.2.3. Estrategias de despliegue gradual, verificación y reversión.
11.3.1. Registros, métricas y trazas para comprender el comportamiento del sistema.
11.3.2. Indicadores y objetivos de nivel de servicio.
11.3.3. Gestión de incidentes, análisis posterior y prevención de recurrencias.
11.4.1. Mantenimiento correctivo, adaptativo, perfectivo y preventivo.
11.4.2. Análisis de impacto, modernización y migración de sistemas existentes.
11.4.3. Gestión de deuda técnica, obsolescencia y retiro planificado del software.
Objetivo del módulo: Integrar los conocimientos del diplomado en una solución de software con alcance definido, decisiones justificadas, implementación controlada y evidencias de cumplimiento de los requisitos.
12.1.1. Selección de un problema real y definición de resultados esperados.
12.1.2. Especificación del alcance, requisitos y criterios de aceptación.
12.1.3. Plan de trabajo, estimación de recursos y análisis de riesgos.
12.2.1. Diseño de arquitectura, datos e interfaces con decisiones justificadas.
12.2.2. Construcción incremental y control de versiones de la solución.
12.2.3. Integración de componentes y aplicación de controles de seguridad.
12.3.1. Ejecución de pruebas y evaluación del cumplimiento de requisitos.
12.3.2. Despliegue reproducible, configuración y monitoreo inicial.
12.3.3. Documentación técnica, manual de usuario y preparación del soporte.
12.4.1. Presentación de resultados y demostración mediante escenarios de uso.
12.4.2. Evaluación de calidad, costos, limitaciones y beneficios de la solución.
12.4.3. Plan de mantenimiento, mejoras futuras y lecciones aprendidas.
TEMARIO Inicio < Previo | Próximo >
Modelos de procesos corporativos.
Inteligencia de negocios y modelamiento de datos.
Gestión de los procesos de producción de software.
Gestión y modelamiento de sistemas de información. Análisis y Diseño con UML y Patrones.
Arquitectura y Construcción de Software.
Paradigmas de Programación y Base de Datos. Visual Studio 2010 en plataforma Visual Basic. SQL Server.
Gestión estratégica e innovación de tecnologías web.
Calidad y capacidad de software.
Metodologías para el Desarrollo de Software.
Gestión de Configuración y Pruebas de Software.
Administración de Proyectos Informáticos. Planeamiento estratégico, auditoría y desarrollo de proyectos.
Definición, Evaluación y Mejora del Proceso de Software.