Ingeniería de Software
Al principio, el software era desarrollado por virtuosos que, basándose en la intuición y en la experiencia acumulada al desarrollar programas, se aventuraban a crear software. Naturalmente, nadie entendía ni podía modificar dicho software, a veces ni ellos mismos. Enseguida se observó que el software podía ser útil y que existían procedimientos y actividades más adecuados que otros para conseguir productos mejores. Se consiguió dotar al software de una importancia que no tenía hasta ese momento y fue entonces cuando se empezó a pensar que era necesario establecer los criterios que debía cumplir el software y cómo conseguirlos. Por estos motivos apareció la Ingeniería del Software.
Definición de Ingeniería de Software
El establecimiento y uso de los principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales.
Lo que se pretende conseguir con la Ingeniería del Software es: reducir costes, mejorar la calidad, explotar y aprovechar el potencial que proporciona el hardware.
Elementos Clave de la Ingeniería de Software
La Ingeniería del Software abarca un conjunto de tres elementos clave para facilitar al gestor controlar el proceso de desarrollo del software y suministrar las bases para construir software de alta calidad de una forma productiva:
- Métodos: Indican cómo construir técnicamente el software.
- Herramientas: Suministran un soporte automático o semiautomático para los métodos.
- Procedimientos: Son los que asocian los métodos con las herramientas y facilitan un desarrollo racional y oportuno al software de computadora.
Técnicas de Apoyo
En la Ingeniería del Software, además, se suelen emplear algunas técnicas de apoyo:
- Técnicas de apoyo: Con estas técnicas es posible crear modelos virtuales sobre cómo será el producto final y cómo será el proceso de desarrollo de ese producto.
- Representaciones: Técnicas utilizadas en las diferentes fases de desarrollo para la planificación de tiempos y recursos, los procesos a seguir, la estimación de costes, tareas del personal, etc.
- Evaluaciones: Permiten determinar el grado de finalización del producto concluido e incluso de cada una de las fases del producto.
Ciclos de Desarrollo del Software
El Ciclo de Desarrollo del Software es una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software. Es un marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definición de los requisitos hasta la finalización de su uso.
Podemos definirlo como el conjunto de fases o etapas, procesos y actividades requeridas para ofertar, desarrollar, integrar, explotar y mantener un producto software.
Fases y Tareas Clave del Desarrollo
- Análisis: Construye un modelo de requisitos. Se debe entender y comprender de forma detallada el problema que se va a resolver. Es importante producir en esta etapa una buena documentación.
- Diseño: Se deducen estructuras de datos, la arquitectura del software, la interfaz del usuario y los procedimientos. Se debe elegir el lenguaje de programación, el sistema gestor de bases de datos, etc.
- Codificación: En esta etapa se traduce lo descrito en el diseño a una forma legible por la máquina. La salida de esta fase es el código ejecutable.
- Pruebas: Se comprueba que se cumplen criterios de corrección y calidad.
- Mantenimiento: Hay que asegurar que el sistema pueda adaptarse a los cambios.
Funciones del Ciclo de Vida
- Determinar el orden de las fases y procesos involucrados en el desarrollo.
- Establecer los criterios de transición para pasar de una fase a la siguiente.
Ventajas del Ciclo de Vida
- Asegura un desarrollo progresivo con controles sistemáticos.
- Permite controlar el sobrepasar los plazos de entrega y los costes excesivos.
- La documentación se realizará de manera formal y estandarizada simultáneamente al desarrollo.
- Supone un marco de referencia para el personal de desarrollo.
- Minimiza la necesidad de rehacer el trabajo y los problemas de puesta a punto.
Tipos de Ciclo de Vida
Existe un enfoque inicial, a menudo llamado Desarrollo Ad-hoc o Código y Arreglo, que consiste en implementar algo de código primero y luego pensar acerca de requisitos, diseño, validación y mantenimiento. Esto es, solucionar los problemas cuando aparezcan, sin realizar ninguna previsión.
Problemas del Desarrollo Ad-hoc (Código y Arreglo)
Este modelo presenta serios inconvenientes:
- El código puede tener una muy mala estructura.
- No se ajusta a las necesidades reales del usuario.
- El código es difícil de reparar debido a su pobre preparación para probar y modificar.
Por todo esto, no es el modelo más recomendable, lo que impulsó la aparición de modelos más estructurados. Por ello, tenemos diferentes alternativas para llevar a cabo un proyecto, como por ejemplo:
- Modelos en Cascada (Waterfall).
- Modelos Evolutivos (Modelo Iterativo Incremental, Modelo en Espiral, Desarrollo Exploratorio, entre otros).
