conceptos de ingenieria de software

21
Que es producto Es un conjunto de características y atributos tangibles (forma, tamaño, color) e intangibles (marca, imágenes de empresas, servicio) que el comprador acepte en principio, como algo que va a satisfacer sus necesidades. Un producto no existe hasta que no corresponda a una necesidad o un deseo.

Transcript of conceptos de ingenieria de software

Page 1: conceptos de ingenieria de software

Que es productoEs un conjunto de características y atributos

tangibles (forma, tamaño, color) e intangibles (marca, imágenes de empresas, servicio) que el

comprador acepte en principio, como algo que va a satisfacer sus necesidades. Un producto no

existe hasta que no corresponda a una necesidad o un deseo.

Page 2: conceptos de ingenieria de software

Que es proceso

Es un conjunto de etapas parcialmente ordenadas con la intención de lograr un objetivo, en este caso, la obtención de un producto de software de calidad. El fundamento de la ingeniería de software es la capa proceso. El proceso define un marco de trabajo para un conjunto de áreas clave, las cuales forman la base del control de gestión de proyectos de software y establecen el contexto en el cual: se aplican los métodos técnicos, se producen resultados de trabajo, se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente.

Page 3: conceptos de ingenieria de software

• Las herramientas de la ingeniería del software proporcionan un soporte automático o semi-automático para el proceso y los métodos, a estas herramientas se les llama herramientas CASE (Computer-Aided Software Engineering) Las actividades de protección, tales como garantía de calidad del software, gestión de configuración del software y medición, abarcan el modelo del proceso.

Page 4: conceptos de ingenieria de software

Relación entre Elementos del proceso de software

En la Figura se muestran los elementos de un proceso de desarrollo de software y sus relaciones. Así las interrogantes se responden de la siguiente forma:

Page 5: conceptos de ingenieria de software

• Quién: Las Personas participantes en el proyecto de desarrollo desempeñando uno o más Roles específicos.

• Qué: Un Artefacto es producido por un Rol en una de sus Actividades. Los Artefactos se especifican utilizando Notaciones específicas.

• Cómo y Cuándo: Las Actividades son una serie de pasos que lleva a cabo un Rol durante el proceso de desarrollo.

Page 6: conceptos de ingenieria de software

Modelos del proceso de software

Sommerville define modelo de proceso de software como “Una representación simplificada de un proceso de software, representada desde una perspectiva específica. Por su naturaleza los modelos son simplificados, por lo tanto un modelo de procesos del software es una abstracción de un proceso real.”

• Los modelos genéricos no son descripciones definitivas de procesos de software; sin embargo, son abstracciones útiles que pueden ser utilizadas para explicar diferentes enfoques del desarrollo de software.

Page 7: conceptos de ingenieria de software

Tipos de modelos

• Modelo en cascada o clásico• Modelo en espiral • Desarrollo por etapas• Desarrollo iterativo y creciente• RAD (rapid application devolopment)• Desarrollo concurrente• RUP ( Modelo racional)• Proceso Unificado

Page 8: conceptos de ingenieria de software

Modelo en cascada• El primer modelo de desarrollo de software que se publicó se

derivó de otros procesos de ingeniería. Éste toma las actividades fundamentales del proceso de especificación, desarrollo, validación y evolución y las representa como fases separadas del proceso.

El modelo en cascada consta de las siguientes fases:• Definición de los requisitos: Los servicios, restricciones y

objetivos son establecidos con los usuarios del sistema. Se busca hacer esta definición en detalle.

Page 9: conceptos de ingenieria de software

• Diseño de software: Se particiona el sistema en sistemas de software o hardware. Se establece la arquitectura total del sistema. Se identifican y describen las abstracciones y relaciones de los componentes del sistema.

• Implementación y pruebas unitarias: Construcción de los módulos y unidades de software. Se realizan pruebas de cada unidad.

• Integración y pruebas del sistema: Se integran todas las unidades. Se prueban en conjunto. Se entrega el conjunto probado al cliente.

Page 10: conceptos de ingenieria de software

Modelo en espiral El modelo de desarrollo en espiral es actualmente uno

de los más conocidos y fue propuesto por Boehm. El ciclo de desarrollo se representa como una espiral, en lugar de una serie de actividades sucesivas con retrospectiva de una actividad a otra.

Cada ciclo de desarrollo se divide en cuatro fases:• Definición de objetivos: Se definen los objetivos. Se

definen las restricciones del proceso y del producto. Se realiza un diseño detallado del plan administrativo. Se identifican los riesgos y se elaboran estrategias alternativas dependiendo de estos.

Page 11: conceptos de ingenieria de software

• Evaluación y reducción de riesgos: Se realiza un análisis detallado de cada riesgo identificado. Pueden desarrollarse prototipos para disminuir el riesgo de requisitos dudosos. Se llevan a cabo los pasos para reducir los riesgos.

• Desarrollo y validación: Se escoge el modelo de desarrollo después de la evaluación del riesgo. El modelo que se utilizará (cascada, sistemas formales, evolutivo, etc.) depende del riesgo identificado para esa fase.

• Planificación: Se determina si continuar con otro ciclo. Se planea la siguiente fase del proyecto.

Page 12: conceptos de ingenieria de software

Modelo en espiral

Page 13: conceptos de ingenieria de software

Desarrollo por etapasEl modelo de desarrollo de software por etapas es similar al

Modelo de prototipos ya que se muestra al cliente el software en diferentes estados sucesivos de desarrollo, se diferencia en que las especificaciones no son conocidas en detalle al inicio del proyecto y por tanto se van desarrollando simultáneamente con las diferentes versiones del código. Pueden distinguirse las siguientes fases:

• Especificación conceptual• Análisis de requerimientos• Diseño inicial• Diseño detallado, codificación, depuración y liberaciónEstas diferentes fases se van repitiendo en cada etapa del

diseño.

Page 14: conceptos de ingenieria de software

Desarrollo por etapas

Page 15: conceptos de ingenieria de software

Desarrollo iterativo y creciente• Desarrollo iterativo y creciente es un proceso de desarrollo

de software, creado en respuesta a las debilidades del modelo tradicional de cascada. El aprendizaje viene de dos vertientes: el desarrollo del sistema, y su uso (mientras sea posible). Los pasos claves en el proceso son comenzar con una implementación simple de los requerimientos del sistema, e iterativamente mejorar la secuencia evolutiva de versiones hasta que el sistema completo esté implementado.

Page 16: conceptos de ingenieria de software

RAD (rapid application devolopment

• Es un MLS pero que enfatiza en un ciclo extremadamente corto el desarrollo de software, convirtiéndose en una versión suya de "alta velocidad". Esta versión logra un desarrollo rápido utilizando un enfoque de construcción de componentes lo cual permite crear un "sistema completamente funcional" en un periodo de tiempo muy corto (60-90 días). El RAD comprende las siguientes etapas:

Modelado de Gestión: aquí se modela el flujo de información �entre las funciones de gestión.

Page 17: conceptos de ingenieria de software

Modelado de datos: se definen las características de cada objeto, formado a partir del flujo de información, y las relaciones entre ellos.

• Modelado del proceso: las descripciones del proceso se crean para añadir, modificar, suprimir o recuperar un objeto de datos.

• Generación de aplicaciones: en lugar de crear software, el RAD reutiliza componentes de programas ya existentes o crea componentes reutilizables.

Page 18: conceptos de ingenieria de software

Modelo desarrollo concurrente

El modelo de proceso concurrente se puede representar en forma de esquema como una serie de actividades técnicas importantes, tareas y estados asociados a ellas.

Representa un estado de una actividad de ingeniería del software.

Al principio la actividad de comunicación con el cliente (no mostrada en la figura) ha finalizado su primera iteración y está en el estado de cambios en espera.

Page 19: conceptos de ingenieria de software

La actividad de análisis ahora hace una transición al estado bajo desarrollo. Si el cliente indica que se deben hacer cambios en los requisitos, la actividad análisis cambia del estado bajo desarrollo al estado cambios en espera.

El modelo de proceso concurrente define una serie de acontecimientos que dispararán transiciones de estado a estado para cada una de las actividades.

Page 20: conceptos de ingenieria de software

Modelo rupEs un proceso de desarrollo de software y junto con el Lenguaje Unificado de

Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos.

Page 21: conceptos de ingenieria de software

PROCESO UNIFICADO El Proceso Unificado no es simplemente un proceso, sino un

marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. De la misma forma, el Proceso Unificado de Rational, también es un marco de trabajo extensible, por lo que muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido derivado del Proceso Unificado o del RUP.