¿Qué es la Ingeniería de Software?
Estudio y aplicación de enfoques sistemáticos, económicos y medibles para el desarrollo y mantenimiento de software de calidad.
¿Qué es el Software?
Programas informáticos y documentación asociada.
Características del Software
La Ingeniería de Software se refiere a software (sistemas) desarrollado por grupos y no por particulares. El software debe cumplir con los requisitos solicitados por el usuario. Debe ser fácil de mantener, tener un buen funcionamiento, ser fiable y fácil de usar.
Ciclo de Vida del Software
El ciclo de vida del software describe las fases por las que pasa un producto de software desde su concepción hasta su retirada. Estas fases son:
- Definición de Requisitos
- Análisis
- Diseño
- Codificación
- Pruebas
Definición de Requisitos
Antes de comenzar la construcción de un sistema, es necesario definir qué se necesita, cómo va a interactuar con los usuarios y qué funciones se pretenden.
Análisis
El análisis busca los siguientes objetivos:
- Comprobar la calidad de los requisitos obtenidos.
- Describir los requisitos con suficiente detalle para los desarrolladores. En resumen, el análisis se interesa por lo que el sistema debe hacer.
Diseño
El diseño se refiere a cómo se implementarán los requisitos. En la fase de diseño se incorporan las necesidades tecnológicas a los componentes modelados en la fase de análisis y se define la plataforma y las herramientas a utilizar.
Codificación
La codificación debe ser una traducción de las decisiones de diseño a un lenguaje de programación específico.
Pruebas
Las pruebas de software son una actividad de garantía de calidad. El objetivo principal es analizar la calidad del software, asegurándose de que responda a las necesidades del cliente.
Los principales tipos de prueba son: pruebas unitarias, pruebas de integración y pruebas de sistema.
- Prueba Unitaria: Es la prueba de nivel más bajo y se realiza generalmente por el desarrollador.
- Prueba de Integración: Cuando las unidades se han certificado en las pruebas unitarias, deben integrarse en unidades mayores y, finalmente, en el sistema. El propósito de las pruebas de integración es comprobar si las distintas unidades funcionan conjuntamente.
- Prueba de Sistema: Se ejecuta en un entorno real de trabajo, pero a menudo se realiza en un entorno de prueba diferente de donde se instalará el sistema.
Modelos del Ciclo de Vida
Un modelo del ciclo de vida es una representación abstracta y simplificada del proceso de desarrollo de software, que muestra las principales actividades y los datos utilizados en la producción y mantenimiento del software.
Adopción de un Modelo
La adopción de un ciclo de vida no es suficiente para guiar y controlar un proyecto de software en la práctica.
Otras características deben ser tenidas en consideración en la vida de un producto de software:
- Organización de las actividades del proceso
- Recursos humanos, hardware y software
- Procedimientos operativos
- Políticas y restricciones
- Tipos de software
Características de los Modelos de Ciclo de Vida
Las características básicas comunes a todos los modelos son:
- Describir las principales etapas de desarrollo
- Establecer las principales actividades a realizar durante cada fase
- Especificar los productos de cada etapa y los insumos para las etapas iniciales
- Proporcionar un marco sobre el cual las actividades necesarias se pueden asignar
Los principales modelos de ciclo de vida del software son:
- Modelo Cascada
- Modelo Incremental
- Modelo Evolutivo
- Modelo RAD
- Prototipos
- Modelo Espiral
- Modelo de Ciclo de Vida Asociado a RUP
Modelo en Cascada
Es el modelo más antiguo y más ampliamente utilizado en ingeniería de software, modelado en términos del ciclo de ingeniería convencional.
- Requiere un enfoque sistemático y secuencial de desarrollo de software.
- Apropiado en situaciones en las que los requisitos son bien conocidos y el director del proyecto se basa en la capacidad del equipo para desarrollar empleando el procedimiento.
Características del Modelo en Cascada
- Su estructura se compone de varias fases que se realizan de forma sistemática y secuencial.
- En la práctica, existe una interacción entre las fases y cada fase puede llevar a cambios en las fases anteriores.
Ventajas y Desventajas del Modelo en Cascada
Ventajas:
- El uso de revisiones al final de cada fase permite la participación de los usuarios.
- El modelo permite una configuración que impone un control.
- Cada paso sirve como base para la aprobación y documentación del paso siguiente.
Desventajas:
- El flujo secuencial que el modelo propone no se sigue generalmente en proyectos reales.
- Los requisitos deberían ser establecidos de forma correcta, completa y clara al principio del proyecto.
- La solicitud debe ser entendida por el promotor desde el inicio del proyecto.
- Es difícil evaluar el progreso real del proyecto durante las primeras etapas.
Prototipos
Como en la exploración de programas, la primera fase incluye el desarrollo de un programa para la experiencia del usuario.
Sin embargo, el objetivo aquí es establecer los requisitos del sistema.
El software debe ser reimplementado en la siguiente fase.
La construcción de prototipos con los que los usuarios pueden interactuar es una idea muy atractiva:
- Para sistemas grandes y complejos.
- Cuando no existe un sistema anterior o un sistema manual que ayude a especificar los requisitos.
Objetivos de los Prototipos
- Entender las necesidades del usuario.
- Configurar la interfaz con los usuarios.
- Demostrar la viabilidad del sistema a los directivos.
Iteración
La forma en que se llevan a cabo los procesos de desarrollo de software se refiere a la iteración entre las actividades de este proceso, es decir, la forma en que están vinculados.
En los procesos iterativos, la especificación se desarrolla junto con el sistema. Estos procesos pueden ser:
- Incrementales
- En Espiral
Espiral de Desarrollo
El modelo en espiral añade la gestión de riesgos al proceso de desarrollo de software.
- Análisis del riesgo a intervalos regulares en el proceso de desarrollo de software
- Planificación
- Control
- Toma de decisiones
El proceso se representa como una espiral en lugar de una secuencia de actividades.
- Cada vuelta en la espiral representa una fase en el proceso.
- No se han establecido fases como la especificación o el diseño – se avanza en la espiral y se eligen las fases en función de lo que se requiere.
- Los riesgos se evalúan de forma explícita y se resuelven durante todo el proceso.
Incremental de Desarrollo
En lugar de entregar el sistema en su conjunto, el desarrollo y la entrega se dividen en incrementos, con cada incremento entregando parte de la funcionalidad requerida.
- Los requerimientos del usuario se priorizan y los requisitos de mayor prioridad se incluyen en las primeras iteraciones.
- Una vez que se ha iniciado el desarrollo de un incremento, los requisitos se congelan, mientras que los requisitos pueden seguir evolucionando en incrementos posteriores.
Enfoque Incremental
Estos modelos abordan el escenario al mismo tiempo para cada conjunto de requisitos planteados, realizando cortes a través de las etapas de desarrollo que generan iteraciones.
El enfoque incremental combina el modelo de cascada y evolutivo, con compromisos destinados a las etapas intermedias.
Los requisitos se dividen en departamentos que reciben una estructura de prioridades.
Enfoque Incremental (Detalles)
- Los servicios más importantes (prioridad alta) se abordan primero, como resultado de los incrementos a ser atacados en las primeras iteraciones del desarrollo.
- El sistema se entrega en incrementos de los servicios básicos.
- Cada incremento puede utilizar un enfoque interno en cascada (requisitos claros) o evolutivo (requisitos aún no establecidos).