Please enable JavaScript.
Coggle requires JavaScript to display documents.
INGENIERIA DE SOFTWARE, Estudiante: Waldo Hurtado, Materia: Ingeniería de…
INGENIERIA DE SOFTWARE
EVOLUCIÓN E HISTORIA
1. Orígenes de la Ingeniería de Software (1950 - 1960)
Contexto:
La programación era una tarea manual y laboriosa. Los primeros lenguajes eran de bajo nivel (ensambladores, lenguaje de máquina).
Caracteristicas
Desarrollo de programas ad-hoc, sin planificación formal.
Uso de tarjetas perforadas y lenguaje de máquina.
Las primeras computadoras eran muy limitadas y costosas.
2. La Crisis del Software (1960 - 1970)
Causas:
La creciente complejidad y tamaño de los programas llevó a la incapacidad de gestionarlos adecuadamente.
Eventos importantes:
Crisis del software:
Muchas aplicaciones no se entregaban a tiempo o tenían errores graves debido a la falta de metodologías sistemáticas.
Informe de la NASA:
En 1968, el Dr. Winston Royce presentó el modelo en cascada como una solución.
Impacto:
Necesidad urgente de nuevas metodologías de desarrollo.
3. Primeras Metodologías y Modelos de Desarrollo (1970 - 1980)
Modelos Clave
Modelo en Cascada:
Desarrollado por Winston Royce en 1970. En este modelo, el proceso de desarrollo de software se divide en fases secuenciales (análisis, diseño, implementación, pruebas, mantenimiento).
Modelos de ciclo de vida del software:
Se comenzaban a definir procesos formales para gestionar la creación de software.
Características
Mayor estructura en el desarrollo.
Enfoque en la documentación exhaustiva.
4. Formalización y Estandarización (1980 - 1990)
Desarrollo de Estándares:
CMMI (Capability Maturity Model Integration):
Introducción del modelo CMMI para medir la madurez de los procesos de software y mejorar la calidad.
ISO 9000:
Se implementaron estándares internacionales para la gestión de calidad en software.
Características:
Aumento de la especialización en la ingeniería de software.
Creación de nuevas técnicas para análisis de sistemas, como diagramas de flujo y modelos de datos.
5. Movimientos Ágiles y Desarrollo Iterativo (1990 - 2000)
El cambio hacia enfoques más flexibles:
Metodologías Ágiles:
En 2001, se firmó el Manifiesto Ágil, que promovía la flexibilidad, el trabajo colaborativo y el enfoque en el cliente.
Scrum, Extreme Programming (XP):
Emergieron metodologías ágiles como Scrum y XP, que enfatizaban el desarrollo iterativo y la entrega frecuente de software funcional.
Características:
Menos enfoque en la documentación y más en el desarrollo rápido y flexible.
Respuesta a los cambios más que seguir un plan riguroso.
6. Ingeniería de Software Basada en la Web y la Nube (2000 - 2010)
Desarrollo de software en la web:
SaaS (Software as a Service):
Surgimiento de aplicaciones basadas en la nube, como Google Docs y Salesforce, que eliminaban la necesidad de instalación en sistemas locales.
Cambios importantes:
Aumento de la complejidad en las infraestructuras, con énfasis en escalabilidad, disponibilidad y seguridad.
DevOps:
Movimiento que promueve la integración continua y la entrega continua (CI/CD) entre los equipos de desarrollo y operaciones.
7. Tecnologías Emergentes y la Era de la Inteligencia Artificial (2010 - 2020)
Impacto de la IA en la ingeniería de software:
Inteligencia Artificial:
Herramientas que utilizan IA para mejorar la calidad del software (pruebas automáticas, análisis de código, etc.).
Microservicios y Contenedores:
Se popularizó el desarrollo de aplicaciones usando arquitecturas de microservicios y contenedores como Docker y Kubernetes.
Características:
Mayor integración de aprendizaje automático y algoritmos predictivos en el desarrollo de software.
Aumento del uso de herramientas de automatización en el ciclo de vida del software.
ETAPAS DE LA INGENIERIA DE SOFTWARE
1. Planificación
Descripción:
En esta etapa, se definen los objetivos, alcance y requisitos iniciales del proyecto de software.
Actividades principales
Definición de requisitos:
Recolección de las necesidades del cliente y análisis de las expectativas.
Evaluación de viabilidad:
Estudio de la factibilidad técnica, económica y operativa del proyecto.
Elaboración de un plan:
Establecimiento de cronograma, presupuesto y recursos necesarios.
2. Análisis de Requisitos
Descripción:
Durante esta etapa se identifican, documentan y validan los requisitos que debe cumplir el software.
Actividades principales:
Entrevistas con stakeholders:
Recopilación de necesidades y expectativas.
Elaboración de especificaciones funcionales:
Documentación detallada sobre lo que el software debe hacer.
Validación con el cliente:
Asegurarse de que los requisitos están alineados con las necesidades reales.
3. Diseño del Sistema
Descripción:
Aquí se define la arquitectura y el diseño detallado del sistema de software.
Actividades principales:
Diseño arquitectónico:
Estructuración del software a nivel global, seleccionando el tipo de arquitectura (cliente-servidor, microservicios, etc.).
Diseño detallado:
Definición de algoritmos, estructuras de datos, interfaces de usuario y cómo se comunicarán los módulos del software.
Selección de herramientas:
Decisión sobre lenguajes de programación, bases de datos, y tecnologías a utilizar.
4. Implementación
Descripción:
En esta etapa se lleva a cabo la codificación del software, siguiendo las especificaciones del diseño.
Actividades principales:
Desarrollo de código:
Programación de las funcionalidades de acuerdo al diseño establecido.
Control de versiones:
Uso de herramientas como Git para gestionar los cambios en el código.
Pruebas unitarias:
Pruebas iniciales de las funcionalidades desarrolladas para asegurarse de que cumplen los requisitos.
5. Pruebas
Descripción:
Se realiza una verificación exhaustiva para asegurarse de que el software funciona correctamente.
Actividades principales:
Pruebas de integración:
Verificación de que los distintos módulos del software trabajan juntos correctamente.
Pruebas de sistema:
Evaluación completa del sistema para asegurarse de que cumple con los requisitos funcionales y no funcionales.
Pruebas de aceptación:
Realización de pruebas finales con el cliente o usuarios para garantizar que el software satisface sus expectativas.
6. Despliegue (Implementación en Producción)
Descripción:
Esta etapa implica poner el software en un entorno de producción donde pueda ser utilizado por los usuarios finales.
Actividades principales:
Despliegue en el entorno de producción:
Instalación del sistema en los servidores de producción y configuración final.
Capacitación de usuarios:
Entrenamiento a los usuarios finales para que puedan usar el software eficientemente.
Monitoreo inicial:
Seguimiento para identificar posibles fallos o problemas después de la implementación.
7. Mantenimiento
Descripción:
El mantenimiento implica las actualizaciones y correcciones que se realizan después del lanzamiento inicial del software.
Actividades principales:
Corrección de errores:
Resolución de problemas que no fueron detectados durante las fases de prueba.
Actualizaciones y mejoras:
Inclusión de nuevas funcionalidades y mejoras basadas en el feedback de los usuarios.
Optimización de rendimiento:
Mejora de la eficiencia y rendimiento del software.
Adaptación a cambios:
Modificaciones debido a cambios en los requisitos o entorno tecnológico.
Estudiante: Waldo Hurtado
Materia: Ingeniería de software
Docente: Ing. Mariel Rojas