Fundamentos de Ingeniería de Software: Ciclo de Vida, Metodologías y Desarrollo
Clasificado en Informática
Escrito el en
español con un tamaño de 4,36 KB
Conceptos Fundamentales de Software
El Software es el conjunto de programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación.
Clasificación por Función
- Sistema: Permite que el ordenador funcione (SO, drivers).
- Aplicación: Tareas específicas (ofimática, navegadores).
- Desarrollo: Herramientas para escribir código (editores, compiladores, IDEs).
Licenciamiento
- Software Propietario: Comercializado bajo licencia; se prohíbe su copia o distribución.
- Software Libre: Permite usar, estudiar, modificar y distribuir el código.
Niveles de Abstracción y Ejecución
Niveles de Lenguaje
- Bajo nivel: Lenguaje máquina (bits 0 y 1) o lenguaje ensamblador (usa mnemotécnicos).
- Alto nivel: Cercano al lenguaje humano e independiente de la arquitectura (Java, Python, C++).
Formas de Ejecución
- Compilados: Un software (compilador) traduce todo el código fuente globalmente de una sola vez y genera un archivo objeto. Son más rápidos de ejecutar (ej. C, C++, Rust).
- Interpretados: Un programa (intérprete) traduce y ejecuta el código instrucción a instrucción, línea a línea, en tiempo real. Son más lentos pero más portables (ej. Python, JavaScript).
- Java: El código fuente se compila a un código intermedio llamado bytecode y luego este se interpreta mediante la Máquina Virtual de Java.
Propósito y Paradigmas
- Propósito general: Sirven para cualquier programa (Java, C++, Python).
- Propósito específico: Diseñados para un área concreta (SQL para bases de datos, MATLAB).
- Paradigmas: Estructurados (secuencias, selecciones e iteraciones), Modulares (módulos reutilizables) u Orientados a Objetos (POO) (objetos que colaboran entre sí).
Metodologías de Gestión de Proyectos
Kanban
Visualiza el flujo de trabajo para detectar cuellos de botella y solucionarlos. La Pizarra Kanban consta de 3 columnas: To Do (Por hacer), Doing (Haciendo) y Done (Hecho).
- Limitar el trabajo en proceso (WIP): Fuerza al equipo a terminar una tarea antes de empezar la siguiente.
- Reglas explícitas: El proceso debe ser visible para todos.
Scrum
Se basa en bloques de tiempo fijos llamados Sprints (1 a 4 semanas). Roles obligatorios: Product Owner, Scrum Master y el Team.
Modelos de Desarrollo
- Modelo en Cascada (Clásico o Lineal): Fases ejecutadas de manera estrictamente secuencial.
- Modelo en V: Asocia fases de desarrollo con fases de verificación o pruebas.
- Metodologías Ágiles: Centradas en la entrega de valor continua mediante ciclos adaptativos y retroalimentación rápida.
Fases del Ciclo de Vida del Software
- Análisis: Comunicación con el cliente para recopilar necesidades. Se divide en Requerimientos Funcionales y No Funcionales. Se plasma en el documento ERS.
- Diseño: Se analiza el ERS para describir la estructura interna. Resultado: documento SDD.
- Codificación: Conversión del diseño en un sistema real. Estados del código: Fuente, Objeto y Ejecutable.
- Pruebas: Estrategia progresiva: Unitarias, de Integración, del Sistema y de Aceptación.
- Explotación: Instalación y puesta en funcionamiento (Beta Test).
- Mantenimiento: Fase más larga. Puede ser: Correctivo, Evolutivo o Perfectivo.
Traductores
Un traductor recibe código fuente y produce código objeto. El compilador traduce todo el bloque antes de ejecutar, mientras que el intérprete traduce y ejecuta línea a línea.