Please enable JavaScript.
Coggle requires JavaScript to display documents.
INGENIERÍA DE SOFTWARE Y SISTEMAS EMPRESARIALES - Coggle Diagram
INGENIERÍA DE SOFTWARE Y SISTEMAS EMPRESARIALES
Naturaleza del Software y Fundamentos
Sistemas Socio-Técnicos
Definición extendida: Enfoque de diseño que concibe los Sistemas de Información como un conjunto interdependiente compuesto por tecnología (software/hardware), procesos de negocio y factores humanos o psicológicos.
Punto clave: Un error conceptual grave es asumir que la introducción o modificación del código no alterará la dinámica social, la cultura o la estructura de trabajo de la organización.
Programación vs. Ingeniería de Software
Definición: La programación se limita a la escritura de código, diseño de algoritmos eficaces y obtención de binarios ejecutables para resolver un problema delimitado.
Punto clave: La Ingeniería de Software es una disciplina integral que gestiona todo el Ciclo de Vida del Desarrollo (SDLC), abarcando la complejidad, estimación de costos, análisis de requisitos, arquitectura, mantenibilidad y el impacto organizacional a largo plazo.
Complejidad Esencial (Fred Brooks)
Definición: Propiedad intrínseca del software derivada de la naturaleza misma del dominio del problema.
Punto clave: Al ser intangible, abstracta y llena de casos de borde interconectados, la complejidad esencial no se elimina con nuevas tecnologías (como herramientas CASE, frameworks o Inteligencia Artificial), sino que únicamente se puede mitigar y estructurar mediante abstracción, modularidad y diseño arquitectónico.
Maleabilidad Engañosa e Invisibilidad
Definición extendida: Característica del software que crea la falsa ilusión de que, al ser intangible, modificarlo "no cuesta nada" o es trivial.
Punto clave: Debido al alto acoplamiento interno, un cambio en una función aparentemente simple puede desencadenar efectos secundarios imprevistos e indeseados en cascada a lo largo de todo el sistema.
Crisis del Software
Definición: Periodo histórico (finales de la década de 1960) donde los proyectos informáticos fallaban sistemáticamente en presupuesto, tiempo y calidad.
Punto clave: Demostró que el software no se descompone físicamente ni sigue las leyes de la construcción tradicional (física/civil), sino que su complejidad escala de forma exponencial no lineal a medida que crece el sistema.
Complejidad Accidental
Definición: Dificultades artificiales que surgen debido al entorno de desarrollo, el lenguaje de programación elegido, herramientas obsoletas o mala infraestructura
Punto clave: A diferencia de la esencial, la complejidad accidental sí puede eliminarse completamente utilizando mejores metodologías, lenguajes modernos y herramientas adecuadas.
Ecosistema de Sistemas de Información Empresariales
ERP (Enterprise Resource Planning)
Definición: Sistema integral de software modular que centraliza e interconecta en tiempo real todos los procesos operativos clave de una compañía (compras, inventarios, producción, finanzas, nómina y contabilidad).
Punto clave: Constituye un proyecto de alto riesgo tecnológico y cultural porque obliga a la empresa a reorganizar sus procesos de negocio e implantar una reingeniería profunda.
CRM (Customer Relationship Management)
Definición: Plataforma estratégica enfocada en centralizar el flujo de trabajo comercial y el historial completo de interacciones de los clientes con la empresa.
Punto clave: Soluciona el problema de dispersión de datos de ventas, oportunidades de negocio y seguimiento de marketing que habitualmente quedan aislados en correos y hojas de cálculo.
BI (Business Intelligence) + Data Warehouse
Definición: Ecosistema analítico diseñado para extraer, consolidar y procesar enormes volúmenes de datos transaccionales e históricos (por ejemplo, registros de 5 años).
Punto clave: Su propósito es generar tableros de control (dashboards), minería de datos y analítica predictiva de demanda para apoyar la toma de decisiones estratégicas de la alta gerencia.
BPM (Business Process Management)
Definición: Disciplina y suite de software dedicada al modelado, automatización, ejecución, optimización y monitoreo continuo de los flujos de trabajo de negocio de extremo a extremo.
Punto clave: Permite reducir tiempos de ciclo y estandarizar procesos operativos entre diferentes departamentos.
DMS (Document Management System)
Definición: Software orientado a la digitalización, almacenamiento centralizado, control estricto de versiones, seguridad, indexación y recuperación eficiente de archivos y documentos electrónicos de la empresa (contratos, presupuestos, manuales).
SCM (Supply Chain Management)
Definición: Módulo o sistema enfocado en la optimización integral de la cadena de suministro, gestionando el flujo de materiales, información y finanzas desde la adquisición de insumos con proveedores hasta la distribución del producto terminado al cliente final.
Arquitectura, Calidad y Compensaciones (Trade-Offs)
Integración vs. Vulnerabilidad Sistémica
Definición: Compensación arquitectónica (trade-off) en la que una alta integración de procesos reduce tiempos de operación y elimina redundancias, pero incrementa el nivel de acoplamiento.
Punto clave: Eleva la vulnerabilidad sistémica, ya que la caída de un solo nodo central puede paralizar a toda la organización (Punto Único de Falla / Single Point of Failure).
Atributos de Calidad / Requerimientos No Funcionales
Definición: Criterios de diseño que definen cómo debe operar el sistema más allá de sus funciones individuales.
Mantenibilidad: Facilidad para modificar, corregir y hacer evolucionar el software sin introducir errores.
Escalabilidad: Capacidad del sistema para responder eficientemente ante un aumento significativo de usuarios o transacciones.
Resiliencia / Disponibilidad: Capacidad de mantenerse operativo y recuperarse rápidamente ante fallas imprevistas de infraestructura o red.
Monolitos vs. Microservicios
Monolito: Sistema construido como una unidad de código única y centralizada; más simple de desplegar al inicio, pero con alto acoplamiento y difícil de escalar.
Microservicios: Arquitectura distribuida donde la aplicación se divide en servicios independientes comunicados por red; ofrece alta escalabilidad pero introduce mayor complejidad accidental.