Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Conceptos básicos
La ingeniería de software es una disciplina formada por un conjunto de métodos,
herramientas y técnicas que se utilizan en el desarrollo de los programas
informáticos (software).
Esta disciplina trasciende la actividad de programación, que es la actividad principal
a la hora de crear un software. El ingeniero de software se encarga de toda la
gestión del proyecto para que éste se pueda desarrollar en un plazo determinado y
con el presupuesto previsto.
La ingeniería de software, por lo tanto, incluye el análisis previo de la situación, el
diseño del proyecto, el desarrollo del software, las pruebas necesarias para
confirmar su correcto funcionamiento y la implementación del sistema.
Cabe destacar que el proceso de desarrollo de software implica lo que se conoce
como ciclo de vida del software, que está formado por cuatro etapas: concepción,
elaboración, construcción y transición.
La concepción fija el alcance del proyecto y desarrolla el modelo de negocio; la
elaboración define el plan del proyecto, detalla las características y fundamenta la
arquitectura; la construcción es el desarrollo del producto; y la transición es la
transferencia del producto terminado a los usuarios.
Una vez que se completa este ciclo, entra en juego el mantenimiento del software.
Se trata de una fase de esta ingeniería donde se solucionan los errores descubiertos
(muchas veces advertidos por los propios usuarios) y se incorporan actualizaciones
para hacer frente a los nuevos requisitos. El proceso de mantenimiento incorpora
además nuevos desarrollos, para permitir que el software pueda cumplir con una
mayor cantidad de tareas.
Los Ingenieros de Software deben:
• Adoptar un enfoque sistemático para llevar a cabo su trabajo.
• Utilizar las herramientas y técnicas apropiadas para resolver el problema
planteado, de acuerdo a las restricciones de desarrollo y a los recursos
disponibles.
Fases de la ingeniería de software
La ingeniería de programas informáticos es el proceso formal de desarrollo de
programas informáticos en el que las necesidades de los usuarios se traducen en
requisitos, éstos se transforman en un diseño que se aplica en un código que se
prueba, documenta y certifica para su uso operacional.
El proceso requiere una metodología de cinco pasos:
• Análisis de los requisitos: Se extraen los requisitos del producto de software.
En esta etapa, la habilidad y la experiencia en ingeniería de software es
fundamental para reconocer los requisitos incompletos, ambiguos o
contradictorios. Por lo general, el cliente/usuario tiene una visión
incompleta/inexacta de lo que necesita y es necesario ayudarle a obtener la
visión completa de los requisitos. El contenido de la comunicación en esta
etapa es muy intenso ya que el objetivo es eliminar la ambigüedad en la
medida de lo posible.
• Especificación: Es la tarea de describir en detalle el software que se va a
escribir, de forma rigurosa. Describe el comportamiento esperado del
software y su interacción con los usuarios y/u otros sistemas.
• Diseño y arquitectura: Determinar cómo funcionará de manera general sin
entrar en detalles, incorporando consideraciones de implementación
tecnológica, como el hardware, la red, etc. Consiste en el diseño de los
componentes del sistema que responden a las funcionalidades descritas en
la segunda etapa, también conocidas como entidades empresariales.
Generalmente se realiza en base a diagramas que permiten describir las
interacciones entre las entidades y su secuenciación.
• Programación: El diseño se traduce en código. Es la parte más obvia del
trabajo de ingeniería de software y la primera en la que se obtienen
resultados “tangibles”. No es necesariamente la etapa más larga ni la más
compleja, aunque una especificación o diseño incompleto/ambiguo puede
requerir que las tareas de las etapas anteriores se lleven a cabo en ésta.
• Prueba: Consiste en comprobar que el programa informático responde
correctamente / realiza las tareas indicadas en la especificación. Es una
buena práctica realizar pruebas a diferentes niveles (por ejemplo, primero a
nivel de unidad y luego de forma integrada para cada componente) y por
equipos diferentes al de desarrollo (pruebas cruzadas entre programadores
o realizadas por un área de pruebas independiente).
• Documentación: Elaboración del manual de usuario y, posiblemente, de un
manual técnico para el mantenimiento y las futuras ampliaciones del sistema.
Las tareas de esta etapa comienzan ya en la primera fase, pero sólo terminan
una vez terminadas las pruebas.
• Mantenimiento: En esta etapa se realiza un mantenimiento correctivo (para
solucionar errores) y un mantenimiento evolutivo (para mejorar las
funcionalidades y/o dar respuesta a nuevos requerimientos).
metodología de desarrollo de software
1.3.1 Metodologías clásicas
Cascada
En Ingeniería de Software el desarrollo en cascada, también llamado modelo en
cascada, es el enfoque metodológico que ordena rigurosamente las etapas
del proceso para el desarrollo de software de tal forma que el inicio de cada etapa
debe esperar a la finalización de la etapa anterior.
Desventajas:
• Los proyectos reales raramente siguen el flujo secuencial que propone el
modelo, siempre hay iteraciones y se crean problemas en la aplicación del
paradigma.
• Normalmente, es difícil para el cliente establecer explícitamente al principio
todos los requisitos. El ciclo de vida clásico lo requiere y tiene dificultades
en acomodar posibles incertidumbres que pueden existir al comienzo de
muchos productos.
• El cliente debe tener paciencia. Hasta llegar a las etapas finales del
proyecto, no estará disponible una versión operativa del programa. Un
error importante no detectado hasta que el programa esté funcionando
puede ser desastroso.
Método Incremental
El modelo incremental es una evolución del modelo de cascada; viene a suplir el
problema de no poder retroceder en las fases de desarrollo del software. Es,
por tanto, un modelo no secuencial. El funcionamiento es sencillo. Comienza con el
análisis de los requisitos, tras el cual se prepara un primer diseño. La novedad
de este modelo respecto del anterior, es la introducción de iteraciones para dividir
diseños.
Evolutivo
Desarrollo evolutivo. Este enfoque entrelaza las actividades de especificación,
desarrollo y validación. Un sistema inicial se desarrolla rápidamente a partir de
especificaciones abstractas. Éste se refina basándose en las peticiones del cliente
para producir un sistema que satisfaga sus necesidades.
Espiral