Ingeniería de Software
I
Objetivos de la Unidad 2
– Definir qué es la ingeniería de software y explicar su
importancia
– Presentar los diferentes modelos de proceso de
software
– Definir el concepto de requerimientos del software
– Enumerar las actividades de análisis de
requerimientos
– Describir las funciones y componentes de una SRS
– Discutir algunos tipos de métricas de software, tales
como, métricas orientadas al tamaño, métricas
orientadas a función
– Definir las diferentes actividades para llevar a cabo el
análisis de riesgo
Objetivos de la Unidad 2… Continuación
– Discutir el planeamiento y cronograma de un proyecto de
software
– Describir los términos de control de calidad y
aseguramiento de calidad, en el contexto del software
– Presentar los diferentes niveles de prueba
– Explicar los métodos involucrados en el proceso de prueba
unitaria
– Establecer los enfoques involucrados en la prueba de
integración
– Presentar los deferentes componentes de la prueba del
sistema
Unidad 2:
Fundamentos de Ingeniería de Software
Objetivos de Aprendizaje
• Explicar el software como un producto y proceso
• Definir la ingeniería de software y explicar su
importancia
• Discutir las ventajas y desventajas de diversos
modelos de proceso de software
• Discutir acerca de los Modelos Evolutivos y
Secuenciales
Introducción
• La ingeniería de software provee metodologías y
técnicas que ayudan a desarrollar sistemas de
software a tiempo
• La ingeniería de software asegura que el
desarrollador cumpla con las expectativas de
calidad y presupuesto
• Las metodologías de la ingeniería de software
fomentan un enfoque sistemático a lo largo del
ciclo de vida del software
Características del Software
Utilizable
Confiable Portable
Características Evolutivo
Robusto del Software
Reutilizable Mantenible
Eficiente
Tipos de Aplicaciones de Software
Sistema
Tiempo Incorporadas
Real
Tipos de
Aplicaciones
de Software
Negocio Computadoras
Personales e
Individuales
Ingeniería y
Científicas
Proceso de Software
Un proceso se define como:
• Una serie de operaciones usadas en la creación de
un producto
• El conjunto de tareas, que tienen que ser realizadas
para generar un producto de software de alta calidad
• Aquello que se sigue para construir el producto de
software
PROCESO
ACTIVIDAD 1 ••• ACTIVIDAD n
TAREA 1 ••• TAREA X TAREA 1
Características del Proceso de Software
Comprensión
Facilidad de Facilidad de
Soporte Adaptación
Visibilidad
Características Confiabilidad
del Proceso de
Software
Facilidad de
Aceptación Facilidad de
Verificación
Robustez
Rapidez
Facilidad de
Mantenimiento
Fases del Proceso de Desarrollo de Software
• Fase de Definición:
- Ingeniería de información
- Planeamiento del proyecto de Software
- Análisis de requerimientos
• Fase de Desarrollo:
- Diseño de Software
- Codificación
- Prueba
• Fase de Mantenimiento
Categorías de Modelos de Procesos de Software
• Modelo Secuencial Lineal
• Modelo de Creación de un Prototipo
• Modelo Evolutivo
• Modelo de Métodos Formales
• Sistema Ensamblado de Componentes Reutilizables
Modelo de Cascada
Ingeniería de
Sistema
Análisis de
Requerimientos
Diseño
Codificación
Prueba
Mantenimiento
Modelo de Cascada
Ventajas:
– Posibilita un orden máximo en el proceso de implementación
– Proporción una plantilla estructurada para la ingeniería de
software
Desventajas:
– El cliente debe proporcionar todos los requerimientos de una
sola vez
– Es difícil para los usuarios anticipar si el sistema final va a
satisfacer sus requerimientos
– Cualquier cambio que se haga durante la implementación
puede causar confusión.
– La versión de trabajo puede verse sólo en una etapa
posterior.
Modelo de Desarrollo Rápido de Aplicación
Uso de 4GT y
Modelar el componentes
Negocio reutilizables
Especificaciones Diseño Codificación Pruebas Lanzamiento
Equipo 1 Parciales
Equipo 2 Especificaciones Diseño Codificación Pruebas Lanzamiento
Parciales
Equipo 3 Especificaciones
Diseño Codificación Pruebas Lanzamiento
Parciales
Equipo 3
Especificaciones Codificación Lanzamiento
Diseño Pruebas
Parciales
Período Corto de Tiempo
Modelo de Creación de un Prototipo
Obtener
Requerimientos
Diseño
Rápido
Refinar Prototipo
Requerimientos
Evaluar
Prototipo
Lanzamiento e
Ingeniería
Modelo de Creación de un Prototipo
• Ventajas:
– Ocurre un desarrollo rápido sin detalles de la entrada y
salida
– Los clientes pueden ver muy pronto la salida de alguna
forma
– Hay la oportunidad de modificar los requerimientos
tempranamente en el proceso de desarrollo
• Desventajas:
– El cliente puede tomar el prototipo como el producto final.
– Puede resultar que el proceso de desarrollo del producto
tome mucho tiempo
– Los desarrolladores no están seguros de qué hacer con
el prototipo
Modelo Incremental
Estudio del Análisis Diseño Lanzamiento
Codificación Pruebas
Sistema y Parcial Restringido del 1er
Análisis de incremento
Requerimientos Retroalimentación
Análisis Diseño Codificación Lanzamiento
Pruebas
Ingeniería de Incremental Incremental del 2do
Sistemas e incremento
Información
Retroalimentación
Análisis Diseño Codificación Lanzamiento
Pruebas
Incremental Incremental del 3er
incremento
Retroalimen-
tación de
todos los Retroalimentación del Incremento
Usuarios Anterior
Análisis Diseño Codificación Lanzamiento
Pruebas
Incremental Incremental incremento
final
Inicio del Fin del
proyecto lanzamient
o del
producto
Inicio del
mantenimiento
Modelo Espiral
Análisis de
Planificación Riesgo
del Proyecto
Comunicación Ingeniería del
con el Cliente Software
Codificación, Prueba y
Lanzamiento
Evaluación y
Retroalimentació
n del Cliente
Modelo Espiral
Ventajas:
– Las últimas iteraciones tienen más probabilidad de tener
una versión final rápidamente
– Este modelo se puede usar aún después de que el
software es entregado
– Usa el prototipo como un mecanismo de reducción de
riesgo
Desventajas:
– Demanda una experiencia considerable de valoración del
riesgo por parte del cliente
– Los clientes son generalmente aprensivos de si el enfoque
evolutivo puede ser controlado o no.
Modelo de Ensamblado de Componentes
• Considerar el diseño e identificar los componentes que
pueden ser reutilizados
• Seleccionar los componentes requeridos de la librería o
repositorio
• Retocar los componentes seleccionados de ser necesario
• Construir componentes adicionales para ayudar a realizar el
diseño en la etapa de la iteración
• Ensamblar los componentes para ayudar a la entrega del
producto en la etapa de iteración
• Adicionar los nuevos componentes creados en la librería o
repositorio
• Completar la iteración actual del componente ensamblador
Técnicas de Cuarta Generación (4GTs)
• Involucran las características del software en un alto
nivel de abstracción
• Diversas herramientas se utilizan para generar el
código fuente
• Se denominan también 'generadores de aplicaciones’
• Existen varios entornos de desarrollo de software que
soportan 4GT
Resumen
• Se explicó el software como un producto y un proceso
• Se definió qué es la ingeniería de software y explicar su
importancia
• Se discutieron las ventajas y desventajas de los
diversos modelos de procesamiento de software
• Se presentaron los Modelos Evolutivos
• Se discutieron las Técnicas de Cuarta Generación
Especificación de los Requerimientos de
Software
SRS
Objetivos de Aprendizaje
• Discutir la naturaleza y la importancia de los requerimientos
• Definir los requerimientos de software y el término SRS
• Describir las actividades del análisis de requerimientos
• Describir el proceso del análisis de requerimientos
• Describir las funciones y componentes de una SRS
• Discutir los diferentes atributos de una SRS bien redactada
Requerimientos del Software
• Requerimiento es una “condición o capacidad requerida
por un usuario para resolver un problema o para
alcanzar un objetivo”
• La fase de requerimientos inicia cuando:
- Un problema existe y quizás requiere una solución
basada en software
- Hay un alcance para crear un software basado en una
idea
Análisis del Problema y Descripción del Producto
• El análisis del problema busca una comprensión
completa del problema y comprende:
- Tormenta de ideas
- Dirigir entrevistas con los involucrados con el sistema
- Obtener información de las personas familiarizadas con el
entorno del sistema
• La descripción del producto, describe la conducta externa
del software en un documento
Pasos de la Ingeniería de Requerimientos
Administración de Requerimientos
Validación de Requerimientos
Modelado de Sistema
Especificación de Requerimientos
Negociación de Requerimientos
Refinamiento de Requerimientos
Análisis de Requerimientos
Levantamiento de Requerimientos
Levantamiento de Requerimientos
• Proceso de recibir un conjunto de requerimientos
de:
- el cliente
- el usuario
- la gerencia
• Las preguntas a responder en este proceso son:
¿Cuáles son los objetivos del sistema o producto?
¿Qué debe ser alcanzado por el producto o sistema?
¿Cómo ayuda el sistema o producto en las necesidades
del negocio?
¿Cómo se usará el sistema o producto en el día a día?
Problemas en el Levantamiento de Requerimientos
Límites del Sistema Problema de Detalles
Indefinidos Alcance Innecesarios
Mala apreciación
del entorno de Problemas en el
trabajo
Levantamiento de Problema de
Requerimientos Volatilidad
Problema de
Comprensión
Mala Requerimientos
comunicación Volatiles en sí
Mismos
Cambia en el
Clientes Tiempo Número
Inseguros de de
sus Necesidades Requerimientos
Pobre Dominio
del
Conocimiento
Análisis de Requerimientos
• Los requerimientos se analizan para ser categorizados y
organizados.
• Como una guía se tienen preguntas tales como:
1. ¿Cada requerimiento es consistente?
2. ¿Existen suficientes detalles para cada uno de los
requerimientos?
3. ¿Hay un alcance bien definido que proporciona un límite a
cada requerimiento?
4. ¿Está el conjunto de todos los requerimientos completo y
libre de ambigüedad?
Especificación de Requerimientos
Una Especificación de Requerimiento puede involucrar
uno de los siguientes:
• Documento escrito
• Modelo gráfico
• Modelo formal (base matemática)
• Casos de uso
• Prototipos
Modelar el Sistema
• Modelar el sistema es un paso recomendado para lograr
un buen entendimiento del sistema
• Para sistemas que están siendo abordados por primera
vez, se recomienda que sean modelados
• Modelar el sistema es un análisis más profundo del
mismo
Validación de Requerimientos
No-ambigüedad Consistencia
Aspectos que
Aseguran la
Validación de
Requerimientos
Correspondencia a
Completitud ciertos estándares
Administración de Requerimientos
• Trata de un conjunto de actividades conectadas con el
control, identificación y rastreo de requerimientos durante
la implementación
• Se ocupa de los cambios en los requerimientos
• Se estudia también bajo el tópico de Administración de la
Configuración
Aplicaciones del SRS
Una SRS (Especificación de Requerimientos de
Software) es un documento que contiene una descripción
completa de la conducta externa de un producto
La SRS la escribe la organización de desarrollo, su propósito
es:
• Proporcionar medios de comunicación entre clientes,
usuarios, analistas y diseñadores
• Constituir una base para las actividades de prueba y
verificación del sistema
• Controlar la evolución del sistema
Contenido de la SRS
• Una SRS debe incluir una descripción concisa, de la
totalidad de la interfaz externa del sistema con su
ambiente, incluyendo otros software, puertos de
comunicación , hardware y usuarios
• Incluye dos tipos de requerimientos:
• De comportamiento
• De no comportamiento
Atributos de un SRS de Alta Calidad
No Ambigua
Correcta Verificable
Atributos de
Rastreable un SRS de Consistente
Alta Calidad
Integra Comprensible
Comentada
Resumen
• Se discutió la naturaleza e importancia de los
requerimientos
• Se definieron los requerimientos de software y el término
SRS
• Se describieron las actividades para el análisis de los
requerimientos
• Se describió el proceso de análisis de requerimientos
• Se describieron las funciones y componentes de una SRS
• Se explicaron los diferentes atributos de una SRS bien
redactada