Está en la página 1de 33

Grado en Ing.

Telemática (GIT)
Grado en Ing. de Sistemas de Telecomunicación (GST)
Grado en Ing. de Sonido e Imagen (GSO)

Ingeniería y Desarrollo del Software

CAPÍTULO 1: INTRODUCCIÓN A LA
INGENIERÍA DEL SOFTWARE

1
Contenidos.

1. Concepto de Software.
2. Ingeniería del Software.
3. Modelos de proceso del Software
Concepto de software.

Un sistema software consiste en un conjunto de programas o


aplicaciones junto con la correspondiente documentación y
todo lo necesario para su funcionamiento y operación.
1. Archivos de configuración.
2. Plataforma de soporte.
3. Sistema de actualizaciones.

Podemos distinguir entre:


• SW genérico: Especificados por el fabricante de las
aplicaciones.
• SW a medida: Especificado por un cliente y
desarrollado por un proveedor.
• Sistemas híbridos (tendencia): Un producto genérico se
adapta a las particularidades de un cliente específico.
Atributos del software.

Todo sistema SW debiera poseer los siguientes atributos:


1. Confiabilidad: Correcto funcionamiento.

2. Mantenibilidad: Capacidad de adaptación a futuros


requerimientos.

3. Eficiencia: Consumo proporcional de recursos.

4. Usabilidad: Elementos adecuados y documentados de


comunicación (Interfaz) con los usuarios.
Ingeniería del software.

Disciplina de la Ingeniería que comprende todos los aspectos


de la elaboración de SW. Se caracteriza por:

1. Aplicar métodos de ingeniería: Resolución de


problemas con restricciones económicas y
organizativas.

2. Proceso integral: No se ocupa sólo del desarrollo


técnico sino también de la gestión, verificación, control
de calidad, etc.
Procesos del software.

Conjunto de actividades que se realizan para la producción de


elementos SW.
No existe un proceso ideal sino que distintas aplicaciones
pueden requerir distintos enfoques:

1. Sistemas críticos: Procesos altamente estructurados.

2. Sistemas de negocio: Agilidad (Llegar primero) y


flexibilidad (adaptación a requisitos cambiantes).
Procesos del software.

Suelen incluir:

1. Especificación: Definición de requisitos.

2. Diseño y desarrollo: Planteamiento e implementación


de una solución.

3. Validación: Comprobación del SW realizado.

4. Mantenimiento y Evolución: Adaptación a nuevas


necesidades y corrección de problemas de
funcionamiento no previstos.
Modelos de proceso del software.

Descripción de un proceso del software desde una perspectiva


concreta. Ejemplos:
1. Modelo de flujo de actividades: workflow
2. Modelo de flujo de datos: Trasformación de los datos a
través de un conjunto de actividades.
3. Rol/acción: Personas involucradas y sus
responsabilidades.
Modelos de proceso del software.
Modelo en Cascada.

Propuesto en 1970 por W. Royce.


Modelos de proceso del software.
Modelo en Cascada.

Ventajas:
1. Modelo de interés para proyectos con requisitos no
cambiantes.
2. Normalmente más idóneo para proyectos pequeños.
3. Proyecto organizado sin solapes en las fases.
4. Fases sencillas de gestionar.
Inconvenientes:
1. No-linealidad de los proyectos reales.
2. Requisitos iniciales incompletos.
3. Producto final sin retro-alimentación parcial del cliente.
4. Costes muy elevados para cambios de requisitos.
5. Bloqueos en la línea de trabajo por espera entre las
fases.
Modelos de proceso del software.
Modelo en Cascada.
Ventajas:
1. Modelo de interés para proyectos con requisitos no
cambiantes.
2. Normalmente más idóneo para proyectos pequeños.
3. Proyecto organizado sin solapes en las fases.
4. Fases sencillas de gestionar.
Inconvenientes:
1. Rigidez. Los proyectos reales no son lineales por requisitos
volátiles y errores.
2. Requisitos iniciales incompletos.
3. El producto sólo está disponible al final del proceso sin
retro-alimentación parcial del cliente.
4. Costes muy elevados para cambios de requisitos.
5. Bloqueos en la línea de trabajo por espera entre las fases.
Modelos de proceso del software.
Modelo en V.

Persigue establecer las pruebas necesarias para verificar y


validar cada fase al tiempo que esta se desarrolla.
Modelos de proceso del software.
Modelos evolutivos

Tratan de gestionar la naturaleza evolutiva del SW.


Son iterativos: Las distintas fases del proceso del SW se
repiten en distintas iteraciones para ir construyendo versiones
del producto cada vez más completas.
Resultan adecuados:
• Para los cambios en la especificación de requisitos.
• Para especificaciones de requisitos incompletas.
Utilizan:
• Prototipos: Se utilizan para representar y comprender
mejor los requisitos del cliente.
• Desarrollo exploratorio: Se desarrolla lo que mejor se
comprende. Se cuenta con la opinión del cliente para la
siguiente fase.
Modelos de proceso del software.
Modelos evolutivos
Modelos de proceso del software.
Prototipos
Modelos de proceso del software.
Prototipos

Ventajas:
• Permiten que el cliente interaccione de forma temprana
con el resultado del proceso.
• Permite determinar rápidamente nuevo requisitos o
cambios en los mismos.
Inconvenientes:
• Elaboración de prototipos desechables para
comunicación con herramientas distintas de las
utilizadas para el desarrollo real: Coste.
• Cliente: Rechazo del que puede percibir el producto
“casi terminado”.
• Desarrollador: Adición de elementos a un prototipo
poco robusto por rapidez en detrimento de la calidad.
Modelos de proceso del software.
Modelo iterativo
Modelos de proceso del software.
Modelo iterativo

• Repetición de ciclos de vida en cascada


• Cada versión es más completa que la anterior y añade
nuevas mejoras y funcionalidades.
• El cliente evalúa cada versión y proporciona
retroalimentación.
• Las primeras versiones pueden consistir en prototipos.
Modelos de proceso del software.
Modelo incremental

Versión 1 Versión 2 Versión 3


+ + +
Funcionalidad 1 Funcionalidad 2 Funcionalidad 3
Modelos de proceso del software.
Modelo incremental

• Repetición de ciclos de vida en cascada


• Se establece un conjunto de incrementos que irán
añadiendo funcionalidad al sistema.
• Se desarrollan primero los incrementos más
prioritarios.
• Se cuenta con la retroalimentación del cliente al final
de cada incremento.
• Exige organización y experiencia en la división en
incrementos.
• Es útil cuando no se dispone del personal para el
proyecto completo.
• Cada incremento permite gestionar el riesgo de su
elaboración de forma más precisa.
Modelos de proceso del software.
Modelo iterativo vs. incremental
Modelos de proceso del software.
Modelo iterativo + incremental
Modelos de proceso del software.
Modelo iterativo + incremental

• Repetición de ciclos de vida en cascada


• Establece tres fases:
o Inicialización: Se desarrollo un sistema base para
que el cliente pueda interactuar con él.
o Iteración: Cada iteración va añadiendo una nueva
funcionalidad de la lista inicial.
o Lista de Control: Se establece un conjunto de
funcionalidades a desarrollar que guía las distintas
iteraciones.
• Las iteraciones pueden solaparse en el tiempo.
• Se cuenta con la retroalimentación del cliente al final
de cada iteración.
Modelos de proceso del software.
Modelo iterativo + incremental
Modelos de proceso del software.
Modelo en espiral (Boehm, 1988)
Modelos de proceso del software.
Modelo en espiral

• Adecuado para la gestión de riesgos.


• Se basa en:
o Definir objetivos: incluye identificación de riesgos y
alternativas.
o Gestionar y reducir cada riesgo identificado.
o Desarrollo y validación de la solución planteada.
o Planificación de la siguiente fase.
Ventajas.
• Reducción de riesgos.
• Incorpora objetivos de calidad.
• Integra el desarrollo con el mantenimiento.
Modelos de proceso del software.
Modelo basado en componentes

• En inglés COTS (Commercial Off-the-Shell).


• Componentes con interfaces bien definidas se integran
en el software a construir.
• Se suele utilizar un enfoque iterativo a partir de
fragmentos de código prefabricados.
• Etapas:
o Investigar, identificar y evaluar componentes
disponibles.
o Evaluar la integración de los componentes.
o Se diseña una arquitectura que admita a los
componentes.
o Integración de componentes en la arquitectura
(puede requerir capas de sw intermedias.
o Pruebas exhaustivas de funcionalidad.
Modelos de proceso del software.
Modelo basado en componentes

Ventajas
• Reutilización del SW
• Reducción del tiempo de desarrollo
• Reducción del coste de desarrollo
Modelos de proceso del software.
Métodos formales (Clean room SE)

Se caracterizan por:
• Emplear una especificación matemática formal para la
especificación, desarrollo y verificación.
• Suelen ser de interés en sistemas críticos (medicina,
aviación)
Ventajas
• Garantiza un SW libre de defectos.
Incovenientes
• Requieren mucho tiempo
• Personal con formación matemática.
• Dificulta la comunicación con el cliente.
Modelos de proceso del software.
Programación orientada a aspectos

Se caracteriza por:
• Definir, especificar y construir aspectos del SW que
impactan en varias partes del sistema: Seguridad, IU,
gestión de archivos, etc.
• Generan código de utilidad para múltiples situaciones:
patrones.
Ventajas
• Reutilización de código.
• Inversión a medio-largo plazo.
Incovenientes
• Cambios en las especificaciones pueden afectar a
varios aspectos y a todos sus “clientes”
Modelos de proceso del software.
El proceso unificado
(J. Rumbaugh, G. Booch, I. Jacobson)

Se caracteriza por:
• Ser iterativo e incremental: El proceso queda dividio en
sucesivas iteraciones. La diferencia entre cada dos
iteraciones es un incremento.
• Dirigido por casos de uso permiten capturar requisitos
y actuar de herramienta de comunicación con el
cliente.
• Centrado en una arquitectura de calidad, que
establece los componentes resultantes y como se
organizan.
• Se apoya en UML (Unifed Modeling Language) creado
por los mismos autores.
Modelos de proceso del software.
El proceso unificado
(J. Rumbaugh, G. Booch, I. Jacobson)
El ciclo de vida se divide en cuatro fases que terminan con sus
respectivos hitos (milestones):
• Inicio: Objetivos del proyecto.
• Elaboración: Diseño de la arquitectura del sistema.
• Construcción: Desarrollo y verificación.
• Transición: Entrega y validación.
En cada fase puede haber una o más iteraciones. En cada
iteración se realizan cinco flujos de trabajo:
• Requisitos.
• Análisis
• Diseño
• Implementación
• Pruebas
Modelos de proceso del software.
El proceso unificado

También podría gustarte