Ingeniería de Software
UNIDAD Nº 4
LIC. CONTRERAS PAMELA
Ingeniería de Software
Es una disciplina de Ingeniería de Sistemas: se ocupa de la aplicación
de teorías, métodos, herramientas para hacer que las cosas funcionen:
 Software que sea fiable y trabaje en maquinas reales.
 Teniendo en cuenta restricciones financieras, organizacionales
y técnicas que comprende todos los aspectos de la producción de
software.
 Desde la especificación inicial al mantenimiento del sistema.
 Administración y gestión del proceso de producción
 Principios y metodologías para desarrollo y mantenimiento de
sistemas de software.
La informática como una
ingeniería de software: para la
creación de instrumentos que
sustituyan o imiten al ser
humano.

Calculo matemático

Almacenamiento y manejo de datos

Realización de algoritmos

Almacenamiento y manejo de informacion

Ejecución de tareas consideradas inteligentes
¿Qué es la Ingeniería de Sistemas?
Es el estado actual de la evolución del trabajo de sistemas, desde un clásico concepto
artesanal, hacia el logro de la producción industrial de sistemas.1. Hacer los planos del Sistemas(Análisis)
2. Sobre los planos aprobados por sus usuarios, generar las instrucciones
de fabricación(Diseño)
3. Sobre esas instrucciones aprobadas por los usuarios, proceder a
construir el sistema(Desarrollo e implementación)
4. Entregar el sistema funcionando, a sus usuarios.
5. Prepararse a dar apoyo al sistema durante su vida útil(mantenimiento)
¿Cómo construir un Sistema de Información?



Identificar a los usuarios
Definir la arquitectura del sistema
Definir el software a desarrollar
 Cada vez mas complejo
 Desarrollarlo rápidamente
 Se necesitan métodos mejores de desarrollo
Requerimientos de
Usuarios
Sistema de
Software
Ofrece un marco de trabajo genérico
LOS SISTEMAS INFORMATICOS ESTÁN COMPUESTO DE:
HARDWARE
Componente físico tangible
Es la resolución psíquica
Es el cerebro humano
SOFTWARE
Componente lógico intangible
Es la mente
Es el pensamiento
La capacidad de inferencia
ACTIVIDADES DE LA INGENIERIA DE SOFTWARE
 Analizar el problema hasta su total comprensión
 Diseñar el sistema software que cumpla las expectativas
 Programarlo, probarlo y mantenerlo hasta que se decida su retiro
¿Qué es el Software?
1. Instrucciones(programa de computadora) que cuando se ejecuta proporcionan la función y
el rendimiento deseado
2. Estructura de datos que permiten a los programas manipular adecuadamente la
información.3. Documentos que describen la construcción y uso de programas. Pressman
•
•
Programas de ordenador y documentación asociada
Los productos de software puede ser
• Genéricos: desarrollados para clientes muy diversos
• Hechos a medida: para un cliente particular de acuerdo a su especificación.Sommerville
Ingeniería de Software e Ingeniería de Sistemas
La Ingeniería de Sistemas se refiere a todos los aspectos del desarrollo
de sistemas basados en computadora.
 La Ingeniería de software es solo parte de este proceso.
 Los especialistas de sistemas se encargan de especificar el sistema,
definir su arquitectura, integrar sus partes.
 Al ser el software muchas veces la parte mas importante, las técnicas
de ingeniería de software se aplican en el proceso de ingeniería de
sistemas.-
Principios de la Ingeniería de Software
Principios de la gestión de Proyectos
1.
2.
3.
4.
La calidad debe ser siempre primero, se debe cuantificar
Es posible desarrollar software de alta calidad
Una buena gestión es mas importante que una buena calidad
Las personas y el tiempo no son intercambiables.-
Principios técnicos:
5.
6.
7.
8.
9.
10.
11.
Seleccionar el modelo de ciclo de vida adecuado
Entregar productos al usuario lo antes posible
Determinar el problema antes de escribir los requisitos
Evaluar la alternativa de diseño
Nunca diseñar sin documentación
Minimizar la distancia intelectual entre el problema y el mundo real
Inspeccionar el código antes de probarlo
Principios de actitud y de filosofía profesional:
12.
13.
14.
15.
16.
17.
18.
Usar formalismos distintos para las distintas fases
Las técnicas son anteriores a las herramientas
Primero hazlo correcto, después hazlo rápido
La gente es la clave el éxito
Introduce las mejoras con cuidado
Asunción de responsabilidades de hacerlo bien, o no hacerlo
Las complejidad del software es creciente.
Evolución en la construcción de software
Años 70
• De la programación al ciclo de vida
Salto conceptual del programa al producto
Ciclo de vida es el conjunto de ESTADOS por los que pasa el producto
desde su nacimiento. El programa es un estado mas en el conjunto del
desarrollo de software.Se definieron los demás estados
Descripción del problema: Análisis y especificación
Diseño: de la arquitectura, de funciones, de datos
Codificación e integración
Años 80
• Del ciclo de vida al Proceso de Software
Salto conceptual del producto al proceso.
El proceso de software es el conjunto de tareas que realiza el equipo de
desarrollo.
Definición de la IEEE de un estándar de proceso de proceso de software con la
descripción de tareas, independiente del modelo de ciclo de vida.
Años 90
• Del Proceso de Software a la evaluación de su madurez.
Centro de investigaciones: fiabilidad y calidad del software.
Condición necesaria para un Buen Producto
Proceso de software
Un proceso de software es un conjunto de actividades y resultados
asociados que conducen a la creación de un producto de software
Proceso de resolución de problema:
1.
2.
3.
4.
5.
Decidir que hacer
Decidir como hacerlo
Hacerlo
Probar el resultado
Usar el resultado
Análisis de requerimientos
Diseño de sistema
Codificación
Pruebas
Instalación
El Proceso Software Básico debe estar formado por las siguientes 6
etapas:
1. Obtención de requisitos
2. Diseñar el sistema
3. Programar el código
4. Probar el sistema
5. Instalar el sistema
6. Mantener y ampliar.
Proceso Software
Ciclo de Vida
Conjunto de actividades
interrelacionadas por
diversas estrategias que
transforman el producto
software
Conjunto de estados por los
que pasa el producto. Ciclo
de transformaciones que el
producto sufre a lo largo de
su vida.
Proveen un esquema
necesario para
planificar, organizar,
coordinar, asignar
personal, presupuestar
y dirigir las actividades
de construcción de
software
Ciclo de vida:
Un marco de referencia que contiene los procesos, las actividades y las
tareas involucradas en el desarrollo, la explotación y el mantenimiento de un
producto de software, abarcando la vida del sistema desde la definición de
requisitos hasta la finalización de su uso. ISO 12207-1
• Determina el orden de las fases del proceso
• Establece los criterios de transición de una fase a otra
Actividades del
Proceso
Estados del
Producto
Obtención
de
requisitos
Necesidad
Diseñar
el
sistema
Especific. de
requisitos
Programar
el
código
Diseño
Probar
el
sistema
Programa
Instalar,
mantener
ampliar
Sistema a
Software
Modelos de
ciclos de vida
Tradicional
Cascada
Desarrollo
incremental
Refinamiento
sucesivo
Desarrollo
con
prototipado
Cascada
Espiral
Refinamiento
sucesivo
Alternativos
Modelo de ciclo de vida en cascada
Requisitos
Diseño
Codificación
Prueba
Características:
Operación
• Obliga a especificar lo que el sistema debe hacer antes de construir el sistema
• Obliga a definir como van a interactuar los componentes.
• Permite detectar y resolver desviaciones sobre la planificación inicial
• Requiere que el proceso de desarrollo genere una serie de documentos que posteriormente
pueden utilizarse para la validación y el mantenimiento del sistema
Ventajas:
•Las etapas están organizadas de un modo lógico
•Cada etapa incluye cierto proceso de revisión.
•Esta organizado de modo que se pase el menor numero de
errores de una etapa a la siguiente
•El ciclo es interactivo. El flujo básico es de arriba hacia
abajo, no obstante, reconoce que los problemas de etapas
inferiores afectan a las decisiones de las etapas superiores.-
Requerimiento
sistema global
Requerimiento
sistema software
Diseño
Preliminar
Diseño
detallado
Código
Prueba de
unidad
Integración
software y
hardware
Prueba del
sistema software
Integración
del software
Prueba de
componente
Visión alternativa del ciclo de vida en Cascada
• Los requisitos del sistema global se dividen en requisitos del hw y requisitos del sw
• Modelo alternativo que enfatiza en la validación de los productos.
Requisitos
Pruebas de
aceptación
Valida requisitos
Diseño de
sistema
Verifica
diseño
Diseño
detallada
Pruebas de
integración
Pruebas de
componentes
Implementación /
pruebas unitarias
Modelo en cascada en V
Muestra la relación de las actividades de prueba con el análisis y diseño
A. Requisitos
del sistema
Modelo incremental
A. Requisitos
del software
A. Requisitos
del software
A. Requisitos
del software
Diseño
Diseño
Diseño
Codificación
Codificación
Codificación
Mantenimiento
………
El desarrollo incremental es el proceso de construir una implementación parcial
del sistema global y posteriormente ir aumentando la funcionalidad del sistema.
• Ventaja: Facilita la incorporación de nuevos requisitos, por lo tanto el
software es fácil de mejorar.• Desventaja: El equipo de desarrollo sacrifica la etapa de análisis a favor de
una obtención rápida de la 1º versión, generando un 1º producto alejado de
las necesidades del usuario.-
Comienzo
Modelo de ciclo de vida Prototipo
Parada
Recolección y
refinamiento de
requisitos
Producto
de
ingeniería
Diseño
rápido
Refinamiento
del prototipo
Construcción
del prototipo
Evaluación del
prototipo por el
cliente
Sigue el ciclo de vida tradicional , solo que su tiempo de desarrollo será bastante mas
reducido. El usuario, mediante a utilización del prototipo, descubrirá los aspectos o
requisitos no captados.
Modelo del ciclo de vida en Espiral
• En este modelo el radio representa el costo
• El ángulo representa el progreso obtenido en casa fase del
espiral
• Una distinción importante es que el producto estará
terminado al finalizar el espiral, no al terminal el ciclo
Ventajas:
• Su rango de opciones permite utilizar los modelos de proceso
de construcción de software tradicional, mientras su
orientación al riesgo evita muchas dificultades.
• Se centra en la eliminación de errores y alternativas poco
atractivas.
El Proceso Unificado
Es un proceso configurable aunque un único proceso no es adecuado para
todas las organizaciones de desarrollo de software, el UP es adaptable y
puede configurarse para cubrir las necesidades de proyectos pequeños y
grandes.
Métodos agiles
Tratan de resolver el problema de los tiempos de desarrollo y de l evolución de los
requerimientos
• Livianos : no se detienen en la planificación y documentación.
• Adaptativos: rápida reacción a los cambios.
• Iterativos: ciclos muy cortos, con entregables pequeños.
Principios agilistas:
• Entrega temprana al cliente
• Los requerimientos cambiantes son
parte del desarrollo
• Usuarios y desarrolladores trabajan
juntos
• Motivación de los desarrolladores
• Los ejecutables entregados son la
medida de avance
• La simplicidad es primordial
Limitaciones:
• Difícil de implementar en equipos
de trabajo dispersos físicamente o
demasiado grandes
• Dificultad para desarrollar software
grandes y complejos
• No contemplan la reutilización de
componentes
• Problemas para utilizar
herramientas CASE.
Descargar

Diapositiva 1