You are on page 1of 39

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

You might also like