Está en la página 1de 5

1.

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

La metodología de desarrollo en espiral es una evolución de método clásico en


cascada (Waterfall, top-down) y se considera un método de desarrollo incremental.
Este tipo de metodología equivale al de cascada, pero en él se permite el
solapamiento de varias etapas con el objetivo de flexibilizar y compensar el tiempo
de desarrollo total y alcanzar resultados funcionales en etapas tempranas. Está
considerada como un método de desarrollo rápido y eficiente.
Prototipos
Este modelo consiste en un procedimiento que permite al equipo de desarrollo
diseñar y analizar una aplicación que representa el sistema que sería implementado
(McCracken y Jackson, 1982). Dicha aplicación, llamada prototipo, está compuesta
por los componentes que se desean evaluar (i.e. las funciones principales).
1.3.2 Metodologías Agiles
Las metodologías ágiles son métodos de desarrollo de software en los que las
necesidades y soluciones evolucionan a través de una colaboración estrecha entre
equipos multidisciplinarios. Se caracterizan por enfatizar la comunicación frente a la
documentación, por el desarrollo evolutivo y por su flexibilidad.
El desarrollo ágil de software son métodos de ingeniería del software basados en el
desarrollo iterativo e incremental, donde los requerimientos y soluciones
evolucionan mediante la colaboración de grupos auto organizados y
multidisciplinarios. Existen muchos métodos de desarrollo ágil; la mayoría minimiza
riesgos desarrollando software en lapsos cortos. El software desarrollado en una
unidad de tiempo es llamado una iteración, la cual debe durar de una a cuatro
semanas.

1.3.3 Metodologías Otras Filosofías


La "Programación estructurada" o la "Programación Orientada a Objetos"
son paradigmas o modelos de programación. Indican pautas de comportamiento en
los sistemas de programación... no tienen nada que ver con el ciclo de vida del
software ni la manera en la que debe realizarse cada tarea para un proyecto
concreto... así pues... NO SON METODOLOGÍAS.
1.4. Importancia de las herramientas CASE en la Ingeniería de software.
La tecnología CASE supone la automatización del desarrollo del software,
contribuyendo a mejorar la calidad y la productividad en el desarrollo de sistemas
de información a la hora de construir software.
Componentes
• Repositorio: donde se almacenan los elementos definidos o creados por la
herramienta, y cuya gestión se realiza mediante el apoyo de un Sistema de
Gestión de Base de Datos (SGBD) o de un sistema de gestión de ficheros.
• Metamodelo: que constituye el marco para la definición de las técnicas y
metodologías soportadas por la herramienta.
• Carga o descarga de datos: son facilidades que permiten cargar el
repertorio de la herramienta CASE con datos provenientes de otros sistemas,
o bien generar a partir de la propia herramienta esquemas de base de datos,
programas, etc. que pueden, a su vez, alimentar otros sistemas. Este
elemento proporciona así un medio de comunicación con otras herramientas.
• Comprobación de errores: facilidades que permiten llevar a cabo un
análisis de la exactitud, integridad y consistencia de los esquemas generados
por la herramienta.
• Interfaz de usuario: que constará de editores de texto y herramientas de
diseño gráfico que permitan, mediante la utilización de un sistema de
ventanas, iconos y menús, con la ayuda del ratón, definir los diagramas,
matrices, etc. que incluyen las distintas metodologías.
Tipos de CASE
• CASE de alto nivel son aquellas herramientas que automatizan o apoyan
las fases finales o superiores del ciclo de vida del desarrollo de sistemas
como la planificación de sistemas, el análisis de sistemas y el diseño de
sistemas.
• CASE de bajo nivel son aquellas herramientas que automatizan o apoyan
las fases finales o inferiores del ciclo de vida como el diseño detallado de
sistemas, la implantación de sistemas y el soporte de sistemas.
• CASE cruzado de ciclo de vida se aplica a aquellas herramientas que
apoyan actividades que tienen lugar a lo largo de todo el ciclo de vida, se
incluyen actividades como la gestión de proyectos y la estimación.
Importancia de uso de herramientas CASE
Las herramientas CASE proporcionan una gran credibilidad, exactitud y fiabilidad
que se nota en el reconocimiento universal, siendo usadas por cualquier analista,
programador, ingeniero de software y cualquier otro especialista en tecnologías de
la información que busca un resultado óptimo, eficaz y presentable, para cada uno
de sus procesos.
Además, las herramientas CASE brindan información necesaria para decisiones
importantes acerca de los costos y gastos que conlleva la realización de un proyecto
de software o la modificación del mismo

También podría gustarte