Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Lic. Cesar Espinoza JiménezLic. Cesar Espinoza Jiménez Objetivo de la Materia �� Introducir al estudiante a las metodologías existentes Introducir al estudiante a las metodologías existentes en la Industria del Software para asegurar la calidad de en la Industria del Software para asegurar la calidad de los proyectos.los proyectos. �� Desarrollar las habilidades del estudiante para medir Desarrollar las habilidades del estudiante para medir �� Desarrollar las habilidades del estudiante para medir Desarrollar las habilidades del estudiante para medir sus procesos personales de Softwaresus procesos personales de Software Bibliografía Básica � Ingeniería del Software : Un enfoque práctico. Roger S. Pressman. Mc Graw Hill 6ta Edición � Ingeniería del Software: orientado a objetos. Erick Braude. Alfa-Omega 1era EdiciónBraude. Alfa-Omega 1era Edición � Ingeniería del Software. Ian Sommerville Preston Education 8ta Edición ¿ Podemos iniciar? Autodiagnóstico � De manera individual defina los siguientes conceptos: � Calidad � MetodologíaCalidad � Software � Desarrollo � Proceso � Paradigma � Metodología � UML � Madurez � Capacidad � Modelo Retroalimentación � En grupos de 4 personas discuta sus personas discuta sus definiciones y lleguen a un consenso. Contenido Temático 1. Ingeniería de Software y Calidad 1.1 Conceptos básicos de Calidad 1.2 Factores que determinan la calidad del Software 1.3 Características del Software1.3 Características del Software 1.4 Modelos de desarrollo de Software 1.5 Importancia de las diferentes etapas en el Desarrollo de Software Contenido Temático 2. Métricas y Procesos (PSP) 2.1 Introducción al Personal Software Process (PSP) 2.2 Estructura del PSP 2.3 Métricas del PSP2.3 Métricas del PSP Contenido Temático 3. CMM-I Capability Maturity Model - Integration 3.1 Inmadurez y madurez en los procesos de Creación de Software 3.2 Los cinco niveles de madurez en los Procesos de 3.2 Los cinco niveles de madurez en los Procesos de Creación de Software 3.3 Definición operacional del modelo CMM 3.4 ¿ Porqué usar el modelo CMM – I? Ingeniería de Software y CalidadIngeniería de Software y Calidad Objetivo de la Unidad � Introducir al alumno en el análisis de los diferentes modelos de desarrollo de Software, así como su relación con los conceptos básicos de calidad en el desarrollo de sistemas.desarrollo de sistemas. 1.1 Conceptos Básicos de Calidad1.1 Conceptos Básicos de Calidad 1. 1 Conceptos básicos de calidad � Clasifique las siguientes marcas en base a su calidad: 1. 1 Conceptos básicos de calidad � Calidad “Conjunto de propiedades y de características de un producto o servicio, que le confieren aptitud para satisfacer unas necesidades explícitas o implícitas”. (Norma ISO 9000:8402)(Norma ISO 9000:8402) � “Característica o atributo de algo”( American Heritage Dictionary). 1. 1 Conceptos básicos de calidad � Calidad � Características � Características mensurables: cosas que se pueden comparar con estándares conocidos como: longitud , color, maleabilidad. 1. 1 Conceptos básicos de calidad � Control de Calidad “Conjunto de técnicas y actividades de carácter “Conjunto de técnicas y actividades de carácter operativo, utilizadas para verificar los operativo, utilizadas para verificar los requerimientos relativos a la calidad del producto requerimientos relativos a la calidad del producto requerimientos relativos a la calidad del producto requerimientos relativos a la calidad del producto o servicio”o servicio” 1. 1 Conceptos básicos de calidad � ¿ Qué control de calidad aplicarías, por calidad aplicarías, por ejemplo, para comprar un par de zapatos deportivos (tennis)? 1. 1 Conceptos básicos de calidad � Garantía de calidad “Conjunto de acciones planificadas y sistemáticas necesarias para proporcionar la confianza adecuada de que un producto o servicio satisface adecuada de que un producto o servicio satisface los requerimientos dados sobre calidad.” 1. 1 Conceptos básicos de calidad � Garantía de calidad En software es un diseño de acciones planificado y sistemático, que se requiere para asegurar la calidad del software.calidad del software. 1. 1 Conceptos básicos de calidad � Calidad del Software “Es el grado con el que un sistema, componente o proceso cumple con los requerimientos y las necesidades o expectativas del cliente o usuario”necesidades o expectativas del cliente o usuario” (IEEE 610/1990) 1. 1 Conceptos básicos de calidad � Calidad del Software “Concordancia del software producido con los requerimientos explícitamente establecidos, con los estándares de desarrollo prefijados y con los estándares de desarrollo prefijados y con los requerimientos implícitos no establecidos formalmente que desea el usuario”.( Pressman, 2006). 1.2 Factores que determinan la calidad del SW 1. 2 Factores que determinan la calidad del software a) Factores que se pueden medir directamente (objetivo: cualitativo) b) Factores que se pueden medir indirectamente b) Factores que se pueden medir indirectamente (subjetivo) 1. 2 Factores que determinan la calidad del software Factores de Calidad de McCall � Características Operativas � Capacidad de soportar cambios Adaptabilidad a nuevos entornos� Adaptabilidad a nuevos entornos Características Operativas � Corrección ¿ HACE LO QUE QUIERO? Hasta donde satisface un programa una especificación Hasta donde satisface un programa una especificación y logra los objetivos del cliente. Características Operativas � Fiabilidad ¿ Lo hace de forma fiable todo el tiempo?todo el tiempo? Hasta donde se puede esperar que un programa lleve a cabo su función pretendida con la exactitud requerida Características Operativas � Eficiencia ¿ Se ejecutará en mi HW lo mejor que se pueda?mejor que se pueda? La cantidad de recursos informáticos y código necesaria para que un programa realice su función. Características Operativas � Seguridad ¿ Es seguro? Hasta donde se puede controlar el acceso al software o Hasta donde se puede controlar el acceso al software o a los datos por personas no autorizadas. Características Operativas � Usabilidad ¿ Es fácil de manejar? El esfuerzo necesario para aprender, operar , preparar El esfuerzo necesario para aprender, operar , preparar datos de entrada e interpretar salidas (resultados) de un programa. Capacidad de soportar cambios � Facilidad de mantenimiento ¿Puedo corregirlo? El esfuerzo necesario para localizar y arreglar un error El esfuerzo necesario para localizar y arreglar un error en un programa. Capacidad de soportar cambios � Flexibilidad ¿Puedo cambiarlo? El esfuerzo necesario para modificar un programa El esfuerzo necesario para modificar un programa operativo. Capacidad de soportar cambios � Facilidad de prueba ¿Puedo probarlo? El esfuerzo necesario para probar un programa y El esfuerzo necesario para probar un programa y asegurarse de que realiza la función pretendida. Adaptabilidad a nuevos entornos � Portabilidad ¿Podré usarlo en otra máquina?máquina? El esfuerzo necesario para transferir el programa de un entorno de sistema de HW y/o SW a otro. Adaptabilidad a nuevos entornos � Reusabilidad ¿Podré reutilizar alguna parte ¿Podré reutilizar alguna parte del software? Hasta donde se puede volver a emplear un programa (o partes de un programa) en otras aplicaciones, en relación con el empaquetamiento y alcance de las funciones que realiza el programa. Adaptabilidad a nuevos entornos � Interoperabilidad ¿Podré hacerlo interactuar con otro sistema?con otro sistema? El esfuerzo necesario para acoplar un sistema con otro. 1.3 Características del SW1.3 Características del SW 1.3 Características del Software � Crisis del SW � Software � Características del SW La industria del software no ha podido satisfacer la demanda. La industria del software no ha podido satisfacer la demanda. Crisisdel Software La complejidad del software producido y demandado se incrementa constantemente. La complejidad del software producido y demandado se incrementa constantemente. demanda.demanda. Crisis del Software SíntomasSíntomasSíntomasSíntomasSíntomasSíntomasSíntomasSíntomas 1. Baja Calidad del Software. 2. Tiempo y Presupuesto Excedido. 3. Confiabilidad Cuestionable. 4. Altos Requerimientos de Personal para desarrollo y mantenimiento. 1. Baja Calidad del Software. 2. Tiempo y Presupuesto Excedido. 3. Confiabilidad Cuestionable. 4. Altos Requerimientos de Personal para desarrollo y mantenimiento. Crisis del Software Factores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influencia 1. Aumento del poder computacional. 2. Reducción del costo del hardware. 3. Rápida obsolescencia de hardware y software. 1. Aumento del poder computacional. 2. Reducción del costo del hardware. 3. Rápida obsolescencia de hardware y software. Crisis del Software Factores de influenciaFactores de influencia 4. Aceptación de la computarización en las empresas. 5. Incremento en el número de usuarios de los sistemas de software. 6. Tipo de usuario no homogéneo aun en sistemas hechos a la medida. 4. Aceptación de la computarización en las empresas. 5. Incremento en el número de usuarios de los sistemas de software. 6. Tipo de usuario no homogéneo aun en sistemas hechos a la medida. Crisis del Software Factores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influencia 7. Personal de desarrollado y mantenimiento diferente. 8. La magnitud del proyecto impacta en: a. Tiempo costo y número de desarrolladores, b. Control administrativo y detalles técnicos 9. Aumento en el conocimiento del problema. 7. Personal de desarrollado y mantenimiento diferente. 8. La magnitud del proyecto impacta en: a. Tiempo costo y número de desarrolladores, b. Control administrativo y detalles técnicos 9. Aumento en el conocimiento del problema. Crisis del Software Factores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influenciaFactores de influencia 10. Cambios en el entorno: a. Tecnológicos (Internet,redes,ERP,CRM,SCM..) b. Económicos (crisis económicas, globalización,..) c. Sociales (nuevas necesidades, costumbres nuevas,..) d. Ambientales (...) e. ... 10. Cambios en el entorno: a. Tecnológicos (Internet,redes,ERP,CRM,SCM..) b. Económicos (crisis económicas, globalización,..) c. Sociales (nuevas necesidades, costumbres nuevas,..) d. Ambientales (...) e. ... Preguntas 1. ¿Cómo desarrollar software? 2. ¿Cómo dar mantenimiento al creciente volumen de software? 3. ¿Cómo poder mantenerse al corriente a la creciente 1. ¿Cómo desarrollar software? 2. ¿Cómo dar mantenimiento al creciente volumen de software? 3. ¿Cómo poder mantenerse al corriente a la creciente 3. ¿Cómo poder mantenerse al corriente a la creciente demanda de software? 4. ¿Porqué lleva tanto tiempo terminar los programas? 5. ¿Porqué tan caro? 6. ¿Porqué no podemos encontrar todos los errores? 7. ¿Porqué es tan difícil evaluar el avance? 3. ¿Cómo poder mantenerse al corriente a la creciente demanda de software? 4. ¿Porqué lleva tanto tiempo terminar los programas? 5. ¿Porqué tan caro? 6. ¿Porqué no podemos encontrar todos los errores? 7. ¿Porqué es tan difícil evaluar el avance? Preguntas por equipo: 1. ¿Cómo desarrollan el software en las organizaciones? 1. ¿Cómo desarrollan el software en las organizaciones?organizaciones? 2. ¿Los desarrolladores de hoy en día están concientes del problema del ciclo de software? organizaciones? 2. ¿Los desarrolladores de hoy en día están concientes del problema del ciclo de software? Producto de software Conjunto de elementos de software (programas, tablas, reportes, documentación, etc.) que tienen un propósito Producto de software Conjunto de elementos de software (programas, tablas, reportes, documentación, etc.) que tienen un propósito Programas Estructura de datos + algoritmos Programas Estructura de datos + algoritmos 1.3.1 Software específico y completo desde el punto de vista del usuario, de tal manera que la sustracción de cualquiera de los elementos del conjunto daría como resultado que el propósito no se cumpliera. específico y completo desde el punto de vista del usuario, de tal manera que la sustracción de cualquiera de los elementos del conjunto daría como resultado que el propósito no se cumpliera. a) Instrucciones (programas de computadora) que cuando se ejecutan proporcionan la función y el rendimiento deseados b) Estructuras de datos que permiten a los programas manipular adecuadamente la información c) Documentos que describen la operación y uso de los a) Instrucciones (programas de computadora) que cuando se ejecutan proporcionan la función y el rendimiento deseados b) Estructuras de datos que permiten a los programas manipular adecuadamente la información c) Documentos que describen la operación y uso de los 1.3.1 Software c) Documentos que describen la operación y uso de los programas. c) Documentos que describen la operación y uso de los programas. Productos de Software � Productos genéricos (sw de mostrador)(sw de mostrador) � Desarrollados por una organización para ser vendidos al mercado. Productos de Software � Productos hechos a medida � Desarrollados bajo pedido a una empresa desarrolladora de software. Productos de Software � La mayor parte del gasto del software es en productos genéricos, pero hay más esfuerzo en el desarrollo de los sistemas hechos a medida. 1.3.2 Características del SW � Como Como Como Como ProductoProductoProductoProducto � Como Como Como Como ProductoProductoProductoProductoProductoProductoProductoProducto � Como ProcesoComo ProcesoComo ProcesoComo Proceso � Como Como Como Como ProyectoProyectoProyectoProyecto ProductoProductoProductoProducto � Como ProcesoComo ProcesoComo ProcesoComo Proceso � Como Como Como Como ProyectoProyectoProyectoProyecto PRODUCTO � Tiene definidas una fecha � Tiene definidas una fecha � Tiene definidas una fecha de inicio de desarrollo y una fecha esperada o estimada de terminación. � Apoya alguna función del usuario hacia el cual está dirigido. � Tiene definidas una fecha de inicio de desarrollo y una fecha esperada o estimada de terminación. � Apoya alguna función del usuario hacia el cual está dirigido. Diferencias como producto � Se desarrolla y no se � Se desarrolla y no se � Se desarrolla y no se fabrica como otros productos. � No se estropea. � No se “desgasta”. � Hecho por humanos. � Se desarrolla y no se fabrica como otros productos. � No se estropea. � No se “desgasta”. � Hecho por humanos. Atributos de los productos de SW � Facilidad de mantenimiento � Debe ser posible que el software evolucione y que siga cumpliendo con sus especificaciones. � Confiabilidad � El software no debe causar daños físicos o económicos en el caso de fallas.fallas. � Eficiencia � El software no debe desperdiciar los recursos del sistema. � Utilización adecuada � El software debe contar tanto con una interfaz de usuario adecuada como con una documentación clara y precisa. Importancia de los Atributos del Producto de Software � La importancia relativa de las características depende del tipo de producto y en el ambiente en el que será utilizado. � En algunos casos, algunos atributos pueden dominar. � En sistemas de seguridad críticos de tiempo real, los atributos clave pueden ser la confiabilidad y la eficiencia.pueden ser la confiabilidad y la eficiencia. � Los costos tienden a crecer exponencialmente si se requieren altos niveles de alguna característica. CostosCostos de eficiencia Eficiencia • Mantenibilidad• Mantenibilidad Productividad Metas de un producto • Mantenibilidad • Usabilidad • Confiabilidad • Reusabilidad • Portabilidad • Mantenibilidad • Usabilidad • Confiabilidad • Reusabilidad • Portabilidad Calidad Costos Tiempo Clasificación del Software � Externas� Externas� Externas � Internas � Del producto � Del proceso � Externas � Internas � Del producto � Del proceso Propiedades del Software � Correctividad, Confiabilidad, Robustez. � Desempeño (performance) � Amigabilidad (Uso amigable) � Verificabilidad (Facilidad de verificar) � Mantenibilidad. Facilidad de mantenimiento: � Correctividad, Confiabilidad, Robustez. � Desempeño (performance) � Amigabilidad (Uso amigable) � Verificabilidad (Facilidad de verificar) � Mantenibilidad. Facilidad de mantenimiento:� Mantenibilidad. Facilidad de mantenimiento: � Para su reparación → REPARABILIDAD � Para su evolución → VIGENCIA � Reusabilidad � Portabilidad � Comprensibilidad (Comprehensibility): Facilidad de entenderse � Interoperabilidad � Mantenibilidad. Facilidad de mantenimiento: � Para su reparación → REPARABILIDAD � Para su evolución → VIGENCIA � Reusabilidad � Portabilidad � Comprensibilidad (Comprehensibility): Facilidad de entenderse � Interoperabilidad Formas de categorizar el software: � Por tipo de Aplicación o Disciplina. Por tipo de Arquitectura � Por tipo de Aplicación o Disciplina. Por tipo de Arquitectura� Por tipo de Arquitectura � Por área Funcional � Por nivel Jerárquico � Por tipo de Estructura Organizacional � Por Tiempo de Respuesta � Por tipo de Arquitectura � Por área Funcional � Por nivel Jerárquico � Por tipo de Estructura Organizacional � Por Tiempo de Respuesta Aplicación o disciplina � Para sistemas � Sistemas tiempo real � Para sistemas � Sistemas tiempo real� Sistemas tiempo real � Negocios � Ingeniería/científico � Empotrado (Embebido) � PC´s � Inteligencia artificial � Aplicaciones Web. � Sistemas tiempo real � Negocios � Ingeniería/científico � Empotrado (Embebido) � PC´s � Inteligencia artificial � Aplicaciones Web. Tipo de arquitectura � Stand Alone� Stand Alone� Stand Alone � Main Frame � Red: LAN, WAN � Internet � Intranet � Extranet � Stand Alone � Main Frame � Red: LAN, WAN � Internet � Intranet � Extranet Niveles o áreas funcionales Directivo Administración Conocimiento OperacionalOperacional Contabilidad Finanzas Ventas Mercadotecnia Recursos Humanos Manufactura Niveles o áreas funcionales Directivo Sistema Soporte Ejecutivo (SSE) Administración Sistema Soporte de Decisiones (SSD) Sistema Información Admo. (SIA) Conocimiento Sistema de Automatización de Oficinas. (SAO) / Apoyo Trabajadores del Conocimiento (SATC) Operacional Sistema de Transacción de Operaciones (STO) Nivel Jerárquico � Sistema de Transacción de Operaciones � Sistema de Apoyo a Trabajadores del Conocimiento � Sistema de Transacción de Operaciones � Sistema de Apoyo a Trabajadores del Conocimiento� Sistema de Apoyo a Trabajadores del Conocimiento � Sistema para la Automatización de Oficinas � Sistema de Información Administrativo � Sistema para Soporte de Decisiones � Sistema de Soporte Ejecutivo � Sistema de Soporte de Grupo � Sistema de Soporte Inteligente � Sistema de Apoyo a Trabajadores del Conocimiento � Sistema para la Automatización de Oficinas � Sistema de Información Administrativo � Sistema para Soporte de Decisiones � Sistema de Soporte Ejecutivo � Sistema de Soporte de Grupo � Sistema de Soporte Inteligente Actividad Soportada � Sistemas OperacionalesSistemas OperacionalesSistemas OperacionalesSistemas Operacionales � Orientado hacia transacciones diarias. � Sistemas OperacionalesSistemas OperacionalesSistemas OperacionalesSistemas Operacionales � Orientado hacia transacciones diarias.diarias. � Sistemas TácticosSistemas TácticosSistemas TácticosSistemas Tácticos � Orientados a apoyar actividades de mandos intermedios: Estadísticas/ Reportes de excepción/Reportes Periódicos/Análisis Comparativos/Proyecciones/Detecci ón Temprana de Problemas/Decisiones Rutinarias. � Sistemas estratégicosSistemas estratégicosSistemas estratégicosSistemas estratégicos diarias. � Sistemas TácticosSistemas TácticosSistemas TácticosSistemas Tácticos � Orientados a apoyar actividades de mandos intermedios: Estadísticas/ Reportes de excepción/Reportes Periódicos/Análisis Comparativos/Proyecciones/Detecci ón Temprana de Problemas/Decisiones Rutinarias. � Sistemas estratégicosSistemas estratégicosSistemas estratégicosSistemas estratégicos Estructura organizacional � Sistemas de Información Departamentales � Sistemas de � Sistemas de Información Departamentales � Sistemas de � Sistemas de Información Empresariales � Sistemas de Información Interorganizacionale s � Sistemas de Información Empresariales � Sistemas de Información Interorganizacionale s Tiempo de Respuesta �Tiempo �Tiempo �Tiempo Real �En línea �Batch �Tiempo Real �En línea �Batch Actividad � Proporcione ejemplos de sistemas: � operacionales, � Proporcione ejemplos de sistemas: � operacionales, � operacionales, � soporte a trabajadores del conocimiento, � administrativos, � directivos. � ¿Qué utilidad tendrá el clasificar los productos de software? � ¿Cuál es el orden de importancia de las propiedades de un sistema de información? � operacionales, � soporte a trabajadores del conocimiento, � administrativos, � directivos. � ¿Qué utilidad tendrá el clasificar los productos de software? � ¿Cuál es el orden de importancia de las propiedades de un sistema de información? PROCESO � Características importantes: � Características importantes: Características importantes: � Productividad � Calendarización � Visibilidad Características importantes: � Productividad � Calendarización � Visibilidad PROYECTO DE SOFTWARE Un proyecto está integrado por un conjunto de actividades para lograr uno o más productos de software. Puede dividirse en uno o más subproyectos conformados por subconjuntos de actividades. Un proyecto está integrado por un conjunto de actividades para lograr uno o más productos de software. Puede dividirse en uno o más subproyectos conformados por subconjuntos de actividades. Proyecto de Software � Características: � Tiene una fecha de inicio definida y una � Características: � Tiene una fecha de inicio definida y una � Tiene una fecha de inicio definida y una fecha de terminación. Sin embargo en la práctica, la fecha de terminación se puede alargar. � Se calendarizan entregas de “productos” concretos y específicos. � Número de personas variable en el tiempo. � Su propósito es proporcionar un conjunto de facilidades que apoyen a un conjunto de actividades del usuario que lógicamente están relacionadas entre sí. � Tiene una fecha de inicio definida y una fecha de terminación. Sin embargo en la práctica, la fecha de terminación se puede alargar. � Se calendarizan entregas de “productos” concretos y específicos. � Número de personas variable en el tiempo. � Su propósito es proporcionar un conjunto de facilidades que apoyen a un conjunto de actividades del usuario que lógicamente están relacionadas entre sí. Mitos del Software 3 puntos de vista 3 puntos de vistavista 3 expectativas 3 intenciones 1. El Gestor 2. El Cliente o Usuario 3. El Desarrollador vista 3 expectativas 3 intenciones 1. El Gestor 2. El Cliente o Usuario 3. El Desarrollador Mitos del Software � Gestor� Gestor� Gestor � Se tienen libros llenos de estándares y procedimientos para desarrollar software � Tienen lo mas avanzado en cómputo; tienen super computadoras. � Si se falla en la planeación, se incluye mas personal. � Gestor � Se tienen libros llenos de estándares y procedimientos para desarrollar software � Tienen lo mas avanzado en cómputo; tienen super computadoras. � Si se falla en la planeación, se incluye mas personal.Mitos del Software � Cliente� Cliente� Cliente � Una declaración general de objetivos es suficiente para empezar la programación del sistema. � Los requisitos cambian, pero se pueden acomodar con facilidad. � Cliente � Una declaración general de objetivos es suficiente para empezar la programación del sistema. � Los requisitos cambian, pero se pueden acomodar con facilidad. Mitos del Software Desarrollador � Escrito y funcionando el Desarrollador � Escrito y funcionando el funcionando el programa ya terminó el proyecto � Solo funcionando el programa se puede evaluar la calidad del sistema. � Lo único que se entrega es el código funcionando. funcionando el programa ya terminó el proyecto � Solo funcionando el programa se puede evaluar la calidad del sistema. � Lo único que se entrega es el código funcionando. Impacto del cambio “Cuando se puede medir y cuantificar aquello sobre lo que uno habla y expresarlo en números, se sabe algo “Cuando se puede medir y cuantificar aquello sobre lo que uno habla y expresarlo en números, se sabe algo números, se sabe algo acerca de eso; cuando no puede ser expresado en números el conocimiento es escaso e insatisfactorio...” Lord Kelvin números, se sabe algo acerca de eso; cuando no puede ser expresado en números el conocimiento es escaso e insatisfactorio...” Lord Kelvin Actividad � Describir un proyecto de desarrollo de software y catalogarlo de � Describir un proyecto de desarrollo de software y catalogarlo de de software y catalogarlo de acuerdo a la clasificación vista. � Ordene los mitos vistos de acuerdo con la creencia popular de las organizaciones � ¿Qué acciones se deben realizar en su organización para eliminar y/o atenuar los mitos del software? de software y catalogarlo de acuerdo a la clasificación vista. � Ordene los mitos vistos de acuerdo con la creencia popular de las organizaciones � ¿Qué acciones se deben realizar en su organización para eliminar y/o atenuar los mitos del software? Ingeniería del Software � Definición � Importancia � Definición � Importancia� Importancia � Sistemas de Calidad � Ciclo de vida � Documentos asociados � Modelos de Desarrollo � Aseguramiento de Calidad. Pruebas. Verificación y Validación � Importancia � Sistemas de Calidad � Ciclo de vida � Documentos asociados � Modelos de Desarrollo � Aseguramiento de Calidad. Pruebas. Verificación y Validación Propuesta de soluciónPropuesta de soluciónPropuesta de soluciónPropuesta de solución Establecer y usar principios robustos de ingeniería con el fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre máquinas reales Propuesta de soluciónPropuesta de soluciónPropuesta de soluciónPropuesta de solución Establecer y usar principios robustos de ingeniería con el fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre máquinas reales Definición sobre máquinas realessobre máquinas reales Ingeniería en Software (ISW)Ingeniería en Software (ISW)Ingeniería en Software (ISW)Ingeniería en Software (ISW) Aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software, esto es, la aplicación de la ingeniería al software Ingeniería en Software (ISW)Ingeniería en Software (ISW)Ingeniería en Software (ISW)Ingeniería en Software (ISW) Aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software, esto es, la aplicación de la ingeniería al software Ingeniería del Software La La La La Ingeniería Ingeniería Ingeniería Ingeniería de de de de La La La La Ingeniería Ingeniería Ingeniería Ingeniería de de de de Analizar, diseñar, construir y dar mantenimiento a grandes y complejos sistemas de software. Analizar, diseñar, construir y dar mantenimiento a grandes y complejos sistemas de software. de de de de Software Software Software Software pretende:pretende:pretende:pretende: de de de de Software Software Software Software pretende:pretende:pretende:pretende: Importancia de la Ingeniería de Software ��LA INDUSTRIA DEL SOFTWARE, LA INDUSTRIA DEL SOFTWARE, LA INDUSTRIA DEL SOFTWARE, LA INDUSTRIA DEL SOFTWARE, UNA NUEVAS AREA DE UNA NUEVAS AREA DE OPORTUNIDAD (PARA MEXICO)OPORTUNIDAD (PARA MEXICO) Mercado Mundial $541 mmusd. Entorno Internacional Principales Mercados: NORTEAMÉRICA 48 % EUROPA 26 % JAPÓN 12 % OTROS 14 % Principales Segmentos: �Administración de Negocios �Servicios de Administración Entorno Internacional �India �USA �Irlanda �Israel Principales Proveedores: �Servicios de Administración �Servicios de Integración y Desarrollo de Sistemas �Servicios de Consultoría �Servicios de Mantenimiento y Soporte �China �Rusia �Pakistán �Filipinas �Otros Crecimiento cercano al 15 % anual en los próximos 5 años. Entorno Internacional próximos 5 años. Severa escasez de personal capacitado en Tecnologías de la Información. �770,000 en USA1 �1,000,000 en Europa1 �1,000,000 en Japón1 1 Puestos vacantes Intensa competencia entre los países de mayor oferta por los mercados mas importantes. Entorno Internacional Fuerte tendencia hacia servicios E-Commerce: �Integración de aplicaciones en Internet �Conversión a modelos basados en Internet �Desarrollo y mantenimiento de sitios WEB Tendencia hacia la demanda de servicios integrales. Mercado total $1,584.2 musd Sectores Principales: �Financiero �Gubernamental Industrial Principales Servicios: �Industrial �Educación �Otros �Desarrollo de aplicaciones �Mantenimiento de sistemas. �Servicios de consultoría. �Integración de sistemas. �Aplicaciones de Internet. �Soluciones e-business. �Aplicaciones empaquetadas. No. DE EMPRESAS 257 TIPO DE EMPRESA � Nivel Internacional 15 � Con estructura formal 75 CERTIFICACIONES ☺ Certificación ISO 5 ☺ Certificación CMM 5 � Con estructura formal 75 � Sin estructura formal 167 MICRO 90% GRANDES 2.8% MEDIANAS 3.2% PEQUEÑAS 4.0% • Mercado viable en Norteamérica de $20,000 mdd. Oportunidades mdd. • Potencial para atraer entre 500 y 1,000 nuevas empresas. • Creación de nuevos polos de desarrollo. • Creación de un flujo neto de divisas positivo. Sistema de Calidad del Software � Estándares � Revisiones Pruebas � Estándares � Revisiones Pruebas� Pruebas � Análisis de defectos � Administración de la configuración � Seguridad � Educación � Administración de contrataciones � Pruebas � Análisis de defectos � Administración de la configuración � Seguridad � Educación � Administración de contrataciones P r o c e s o s M é t o d o s H e r r a m ie n t a s Ingeniería de Software: Elementos P r o c e s o s M é t o d o s H e r r a m ie n t a s ELEMENTOS Métodos � Los métodos indican cómo construir técnicamente el software. � Tareas que componen los métodos. � Planificación; Estimación de proyectos.Planificación; Estimación de proyectos. � Análisis de requerimientos del software y hardware. � Diseño de estructuras de datos, Arquitectura de los programas. � Procedimientos algorítmicos. � Codificación , prueba y mantenimiento. Herramientas y procesos � Las herramientas son un soporte automático o semiautomático para el proceso y los métodos. � Microsoft Project ( Planificación). � UML ( Modelado). � RationalRose, visio (Modelado soportan UML). Designer 2000. � Designer 2000. � Erwin (Bases de datos). � MAGERI (Seguridad). � Los procesos son los encargados de integrar los métodos y herramientas, además de definir la secuencia en la que se aplican los métodos, las entregas que requieren, los controles de calidad y las guías para el desarrollo. Fases Genéricas de la ISW E n f o q u e E n f o q u e E n f o q u e E n f o q u e d e c a l id a d d e c a l id a d d e c a l id a d d e c a l id a d E n f o q u e E n f o q u e E nf o q u e E n f o q u e d e c a l id a d d e c a l id a d d e c a l id a d d e c a l id a d 1. La totalidad de características de un producto que surgen de su habilidad de satisfacer necesidades dadas � cumplir con las especificaciones. 1. La totalidad de características de un producto que surgen de su habilidad de satisfacer necesidades dadas � cumplir con las especificaciones. 2. Grado en que el software posee una combinación deseada de atributos. 2. Grado en que el software posee una combinación deseada de atributos. 3. Grado en que un cliente o 3. Grado en que un cliente o ANSI/IEEE Std 729-1983 “IEEE Standard Glossary of Software Engineering Terminology E n f o q u e E n f o q u e E n f o q u e E n f o q u e d e c a l id a d d e c a l id a d d e c a l id a d d e c a l id a d E n f o q u e E n f o q u e E n f o q u e E n f o q u e d e c a l id a d d e c a l id a d d e c a l id a d d e c a l id a d 3. Grado en que un cliente o usuario percibe que el software alcanza sus expectativas compuestas. 3. Grado en que un cliente o usuario percibe que el software alcanza sus expectativas compuestas. 4. Las características compuestas del software que determinan el grado en que el software en uso cumple con las expectativas del cliente. 4. Las características compuestas del software que determinan el grado en que el software en uso cumple con las expectativas del cliente. 1.4 Modelos de Desarrollo de Software1.4 Modelos de Desarrollo de Software Conjunto estructurado de actividades requeridas para desarrollar un sistema de Conjunto estructurado de actividades requeridas para desarrollar un sistema de El Proceso de Software desarrollar un sistema de software. Especificación. Diseño. Validación. Evolución. desarrollar un sistema de software. Especificación. Diseño. Validación. Evolución. Debe estar explícitamente modelado para ser bien administrado. Debe estar explícitamente modelado para ser bien administrado. EspecificaciónEspecificaciónEspecificaciónEspecificaciónEspecificaciónEspecificaciónEspecificaciónEspecificación: Establecer los requerimientos y restricciones del sistema. DiseñoDiseñoDiseñoDiseñoDiseñoDiseñoDiseñoDiseño: Producir un modelo en papel del sistema. ManufacturaManufacturaManufacturaManufacturaManufacturaManufacturaManufacturaManufactura: Construir el sistema. EspecificaciónEspecificaciónEspecificaciónEspecificaciónEspecificaciónEspecificaciónEspecificaciónEspecificación: Establecer los requerimientos y restricciones del sistema. DiseñoDiseñoDiseñoDiseñoDiseñoDiseñoDiseñoDiseño: Producir un modelo en papel del sistema. ManufacturaManufacturaManufacturaManufacturaManufacturaManufacturaManufacturaManufactura: Construir el sistema. Modelo de Ingeniería del Proceso ManufacturaManufacturaManufacturaManufacturaManufacturaManufacturaManufacturaManufactura: Construir el sistema. PruebaPruebaPruebaPruebaPruebaPruebaPruebaPrueba: Verificar que el sistema cumpla con las especificaciones requeridas. InstalaciónInstalaciónInstalaciónInstalaciónInstalaciónInstalaciónInstalaciónInstalación: Entregar el sistema al usuario y asegurar su operacionalidad. MantenimientoMantenimientoMantenimientoMantenimientoMantenimientoMantenimientoMantenimientoMantenimiento: Reparar fallos en el sistema cuando sean descubiertos; mejorar el sistema; adaptar el sistema. ManufacturaManufacturaManufacturaManufacturaManufacturaManufacturaManufacturaManufactura: Construir el sistema. PruebaPruebaPruebaPruebaPruebaPruebaPruebaPrueba: Verificar que el sistema cumpla con las especificaciones requeridas. InstalaciónInstalaciónInstalaciónInstalaciónInstalaciónInstalaciónInstalaciónInstalación: Entregar el sistema al usuario y asegurar su operacionalidad. MantenimientoMantenimientoMantenimientoMantenimientoMantenimientoMantenimientoMantenimientoMantenimiento: Reparar fallos en el sistema cuando sean descubiertos; mejorar el sistema; adaptar el sistema. DefiniciónDefinición Proceso de Desarrollo DesarrolloDesarrollo MantenimientoMantenimiento Definición � Ingeniería del sistema � Definición de Objetivos � Análisis � Especificación de Requerimientos � Ingeniería del sistema � Definición de Objetivos � Análisis � Especificación de Requerimientos Desarrollo �Diseño: � Preliminar Detallado �Diseño: � Preliminar Detallado � Preliminar � Detallado � Externo � Interfaz � Interno �Codificación �Pruebas: � Modulares � Integración � Preliminar � Detallado � Externo � Interfaz � Interno �Codificación �Pruebas: � Modulares � Integración Mantenimiento � Pruebas de Validación � Pruebas de ValidaciónValidación � Manual de Operación � Manual de Usuario � Código fuente, objeto y ejecutable Validación � Manual de Operación � Manual de Usuario � Código fuente, objeto y ejecutable Documentación asociada a cada etapa del ciclo de vida Tipos de Tipos de Tipos de Tipos de DocumentosDocumentosDocumentosDocumentos Tipos de Tipos de Tipos de Tipos de DocumentosDocumentosDocumentosDocumentos � Previos al desarrollo � Enmarcando al desarrollo � Para cada una de las fases o etapas del desarrollo. � Previos al desarrollo � Enmarcando al desarrollo � Para cada una de las fases o etapas del desarrollo. DocumentosDocumentosDocumentosDocumentosDocumentosDocumentosDocumentosDocumentos DefiniciónDefinición DesarrolloDesarrollo MantenimientoMantenimiento Documentos para la etapa de DEFINICIÓN � Definición de objetivos � Análisis del sistema: Factibilidad � Especificación de requerimientos � Definición de objetivos � Análisis del sistema: Factibilidad � Especificación de requerimientos DefiniciónDefinición DesarrolloDesarrollo MantenimientoMantenimiento Documentos fase de DESARROLLO �Diseño: � Preliminar � Detallado �Diseño: � Preliminar � Detallado� Detallado � Interfaz � Externo � Interno �Codificación �Pruebas: � Modulares � Integración � Detallado � Interfaz � Externo � Interno �Codificación �Pruebas: � Modulares � Integración DefiniciónDefinición DesarrolloDesarrollo MantenimientoMantenimiento Documentos para la etapa de MANTENIMIENTO � Pruebas de Validación � Pruebas de ValidaciónValidación � Manual de Operación � Manual de Usuario � Código fuente, objeto y ejecutable Validación � Manual de Operación � Manual de Usuario � Código fuente, objeto y ejecutable Modelos de Desarrollo � Tipos de modelosTipos de modelosTipos de modelosTipos de modelos � Lineal o secuencial � Construcción de � Tipos de modelosTipos de modelosTipos de modelosTipos de modelos � Lineal o secuencial � Construcción de � Construcción de Prototipos � Desarrollo Rápido de Aplicaciones (DRA ó RAD) � Procesos Evolutivos � Métodos Formales � Técnicas de 4ª Generación � Modelos que incluyen a un 3ero � Construcción de Prototipos � Desarrollo Rápido de Aplicaciones (DRA ó RAD) � Procesos Evolutivos � Métodos Formales � Técnicas de 4ª Generación � Modelos que incluyen a un 3ero Modelo Lineal Secuencial o Cascada Ingeniería de Análisis Diseño Código Prueba Ingeniería de Sistemas/Información Modelo lineal secuencial (ciclo de vida básico, cascada) � Sugiere un enfoque sistemático, secuencial � Sugiere un enfoque sistemático, secuencialsistemático, secuencial de desarrollo de software que comienza en un nivel de sistemas y progresa con el análisis, diseño, codificación, pruebas y mantenimiento sistemático, secuencial de desarrollo de software que comienza en un nivel de sistemas y progresa con el análisis, diseño, codificación, pruebas y mantenimiento Etapa de análisis � Análisis de los requerimientos del software: es la fase en la cual se reúnen todos los requisitos que debe cumplir el software. Etapa de diseño: � Es una etapa dirigida hacia la estructura de datos, la arquitectura del software, las representaciones de la interfaz y el detalle procedimental (algoritmo). Etapa de código: �Es la etapa en la cual se traduce el diseño para que sea comprensible por la máquina. Esta etapa va a depender estrechamente de lo detallado del diseño. Etapa de Prueba � El proceso de pruebas se centra en los procesos lógicos internos del software, asegurando que todas las sentencias se han comprobado, y en los procesos externos funcionales; es decir realizar las procesos externos funcionales; es decir realizar las pruebas para la detección de errores y asegurar que la entrada definida produce resultados requeridos. Etapa de mantenimiento � Se producirán cambios porque se han encontrado errores, porque el software debe adaptarse para acoplarse a los cambios de su entorno externo (por ejemplo se requiere un cambio debido a un sistema ejemplo se requiere un cambio debido a un sistema operativo o dispositivo periférico nuevo), el cliente requiere mejoras funcionales o de rendimiento. Ingeniería y Análisis del Sistema Análisis de los Requisitos Evolución 1 Diseño Codificación Prueba Mantenimiento ANALISIS DE REQUERIMIENTOS PRUEBA DE ACEPTACION OPERACION Y MANTENIMIENTO VALIDAD REQUERIMIENTOS Plan de Pruebas de Aceptación Los planes de prueba son el nexo entre el desarrollo y la verificación Evolución 2 DISEÑO DEL SISTEMA DISEÑO DETALLADO IMPLEMENTACION DE PROGRAMAS Y PRUEBA UNITARIA PRUEBA DEL SISTEMA PRUEBA DE INTEGRACION Plan de Pruebas de Integración VERIFICAR DISEÑO Plan de Pruebas del Sistema Documentación Producto Entrada Proceso Producto Salida Requerimientos Comunicados Ingenieria de Requerimientos Especificación de requerimientos (documentos) Especificación de requerimientos (documentos) Diseño Especificación de Diseño ( documento) Especificación de Diseño ( documento) Programación Modulos ejecutables de Software Modulos ejecutables de Software Integración Producto de Software Integrado Producto de Software Integrado Entrega Producto de Software Entregado Producto de Software Entregado Mantenimiento Requerimientos para cambio ¿POR QUÉ FALLA ALGUNAS VECES EL MODELO LINEAL? 1.- Como resultado, los cambios pueden causar confusión cuando el equipo del proyecto comienza.equipo del proyecto comienza. 2.-El modelo lineal secuencial requiere dificultades a la hora de afrontar la incertidumbre natural al comienzo de muchos proyectos. 3.-Un grave error puede ser desastroso si no se detecta hasta que se revisa el programa. Cada uno de estos errores es real. Tiene un lugar definido e importante en el trabajo de la ingeniería del software proporciona una plantilla en la que se encuentran métodos para análisis, diseño, codificación, y mantenimiento. EscucharEscuchar Construir/Construir/ Modelo de construcción de prototipos Escuchar al cliente Escuchar al cliente Construir/ revisar maqueta Construir/ revisar maqueta El cliente prueba la maqueta El cliente prueba la maqueta Modelo de construcción de prototipos � Problemas de su construcción: � El cliente ve lo que parece ser una versión de trabajo � Problemas de su construcción: � El cliente ve lo que parece ser una versión de trabajo El cliente ve lo que parece ser una versión de trabajo del software. � Con la prisa de hacer que funcione no se ha tenido en cuenta la calidad del software global o la factibilidad de mantenimiento a largo plazo. � El desarrollador a menudo hace compromisos de implementación para hacer que el prototipo funcione rápidamente. El cliente ve lo que parece ser una versión de trabajo del software. � Con la prisa de hacer que funcione no se ha tenido en cuenta la calidad del software global o la factibilidad de mantenimiento a largo plazo. � El desarrollador a menudo hace compromisos de implementación para hacer que el prototipo funcione rápidamente. Modelo de construcción de prototipos ¿ Por qué se usar este modelo? � El cliente no puede especificar todos los requerimientos al principio. � Existen dudas de alguna parte del sistema. � Facilita un modelo al programador � Facilita un modelo al programador Tipos de prototipos � Totales � Parciales � Interfases Modelos� Modelos � Estructuras de datos Problemas del modelo � El cliente lo quiere , aunque no es un producto de SW. � Módulos ineficientes se convierten en parte del sistema. � El modelo RAD es una adaptación de “alta velocidad” de modelo lineal secuencial en el que se logra el desarrollo rápido utilizando un enfoque de construcción basado en � El modelo RAD es una adaptación de “alta velocidad” de modelo lineal secuencial en el que se logra el desarrollo rápido utilizando un enfoque de construcción basado en Modelo RAD (Rapid Modelo RAD (Rapid Modelo RAD (Rapid Modelo RAD (Rapid ApplicationApplicationApplicationApplication DevelopmentDevelopmentDevelopmentDevelopment)))) Modelo RAD (Rapid Modelo RAD (Rapid Modelo RAD (Rapid Modelo RAD (Rapid ApplicationApplicationApplicationApplication DevelopmentDevelopmentDevelopmentDevelopment)))) construcción basado en componentes. � Modelado de la aplicación � Modelado de datos � Modelado de proceso � Generación de aplicaciones � Pruebas y entrega construcción basado en componentes. � Modelado de la aplicación � Modelado de datos � Modelado de proceso � Generación de aplicaciones � Pruebas y entrega Modelado de gestión Modelado de Modelado de gestión Modelado de datos Modelado de gestión Modelado de datos Equipo # 1 Equipo # 2 Equipo # 3 Modelado de datos Modelado de procesos Generación de aplicaciones Pruebas y volumen datos Modelado de procesos Generación de aplicaciones Pruebas y volumen datos Generación de aplicaciones Modelado de procesos Modelado de gestión De 60 a 90 días Modelado de gestión: � El flujo de información entre las funciones de gestión se modela de forma que responda a las siguientes preguntas: � ¿Qué información conduce el proceso de gestión? � ¿Qué información conduce el proceso de gestión? ¿Qué información se genera? ¿Quién la genera? ¿A dónde va la información? ¿Quién la proceso? Modelado de datos: � El flujo de información definido como parte de la fase de modelado de gestión se refina como un conjunto de objetos de datos necesarios para apoyar la empresa. � Se definen las características (llamadas atributos) de � Se definen las características (llamadas atributos) de cada uno de los objetos y las relaciones entre estos objetos. Modelado de proceso: � Los objetos de datos definidos en la fase de modelado de datos quedan transformados para lograr el flujo de información necesario para implementar una función de gestión. implementar una función de gestión. � Las descripciones del proceso se crean para añadir, modificar, suprimir, o recuperar un objeto de datos. Es la comunicación entre los objetos. Generación de Aplicaciones � El DRA asume la utilización de técnicas de cuarta generación. En lugar de crear software con lenguajes de programación de tercera generación, el proceso DRA trabaja para volver a utilizar componentes de programas ya existentes (cuando es posible) o a crear componentes existentes (cuando es posible) o a crear componentes reutilizables (cuando sea necesario). En todos los casos se utilizan herramientas automáticas para facilitar la construcción del software. Pruebas de entrega � Como el proceso DRA enfatiza la reutilización, ya se han comprobado muchos de los componentes de los programas. Esto reduce tiempo de pruebas. Sin embargo, se debenEsto reduce tiempo de pruebas. Sin embargo, se deben probar todos los componentes nuevos y se deben ejercitar todas las interfases a fondo. Obviamente la limitación de tiempo impuestas en un proyecto DRA demanda "ámbito en escalas". Si una aplicación de gestión puede modularse se forma que permita completarse cada una de las funciones principales en menos de tres meses (utilizando el enfoque descrito anteriormente), es un candidato del DRA. Cada una de las funciones pueden ser afrontadas por un equipo DRA diferentey ser integradas en un solo conjunto. Desventajas � Al igual que todos los modelos de proceso, el enfoque DRA tiene inconvenientes: � Para proyectos grandes aunque por escalas, el DRA requiere recursos humanos suficientes como para crear el numero correcto de equipos DRA. correcto de equipos DRA. � DRA requiere clientes y desarrolladores comprometidos en las rápidas actividades necesarias para completar un sistema en un marco de tiempo abreviado. � Si no hay compromiso, por ninguna de las partes constituyentes, los proyectos DRA fracasarán. Desventajas � No todos los tipos de aplicaciones son apropiados para DRA. Si un sistema no se puede modularizar adecuadamente , la construcción de los riesgos técnicos son altos. � DRA no es adecuado cuando los riesgos técnicos son altos.� DRA no es adecuado cuando los riesgos técnicos son altos. � Esto ocurre cuando una nueva aplicación hace uso de tecnologías, nuevas ,o cuando el software nuevo requiere un alto de interoperatividad con un programa de computadora ya existente. � Se reconoce que el software al igual que todos los sistemas complejos, evoluciona con el tiempo. � Los requisitos del sistema a menudo cambian conforme a que el desarrollo proceda haciendo que el camino que lleva al producto final no sea real. � Las estrictas fechas tope del mercado hacen que sea imposible � Se reconoce que el software al igual que todos los sistemas complejos, evoluciona con el tiempo. � Los requisitos del sistema a menudo cambian conforme a que el desarrollo proceda haciendo que el camino que lleva al producto final no sea real. � Las estrictas fechas tope del mercado hacen que sea imposible Modelos de procesos Modelos de procesos Modelos de procesos Modelos de procesos evolutivos de softwareevolutivos de softwareevolutivos de softwareevolutivos de software Modelos de procesos Modelos de procesos Modelos de procesos Modelos de procesos evolutivos de softwareevolutivos de softwareevolutivos de softwareevolutivos de software Las estrictas fechas tope del mercado hacen que sea imposible finalizar un sistema completo, por lo que se debe introducir una versión limitada para cumplir la presión competitiva. � Se comprende perfectamente el conjunto de requisitos de productos centrales o del sistema, pero todavía se tienen que definir los detalles de extensiones del sistema. Las estrictas fechas tope del mercado hacen que sea imposible finalizar un sistema completo, por lo que se debe introducir una versión limitada para cumplir la presión competitiva. � Se comprende perfectamente el conjunto de requisitos de productos centrales o del sistema, pero todavía se tienen que definir los detalles de extensiones del sistema. Modelo Incremental � Combina elementos del modelo lineal con la filosofía de creación de prototipos � El primer incremento a menudo � Combina elementos del modelo lineal con la filosofía de creación de prototipos � El primer incremento a menudo� El primer incremento a menudo es un producto esencial que el cliente utiliza o evalúa � A partir de la evaluación se planea el siguiente incremento y así sucesivamente � Es interactivo por naturaleza � Es útil cuando el personal no es suficiente para la implementación completa. � El primer incremento a menudo es un producto esencial que el cliente utiliza o evalúa � A partir de la evaluación se planea el siguiente incremento y así sucesivamente � Es interactivo por naturaleza � Es útil cuando el personal no es suficiente para la implementación completa. Análisis Diseño Código Pruebas Incremento 1 Entrega de 1.er incremento Modelo Incremental Análisis Diseño Código Pruebas Análisis Diseño Código Pruebas Análisis Diseño Código Pruebas Tiempo de calendario Entrega de 2.o incremento Entrega de 3.er incremento Entrega de 4.o incremento Incremento 2 Incremento 3 Incremento 4 Modelo Incremental Modelo en Espiral � Es un modelo de proceso de software evolutivo que acompaña la naturaleza interactiva de construcción de prototipos con los aspectos controlados y � Es un modelo de proceso de software evolutivo que acompaña la naturaleza interactiva de construcción de prototipos con los aspectos controlados y construcción de prototipos con los aspectos controlados y sistemáticos del modelo lineal secuencial. � Durante las primeras iteraciones, la versión incremental podría ser un modelo en papel o un prototipo. � Durante las últimas iteraciones, se producen versiones cada vez más completas de ingeniería de sistemas. construcción de prototipos con los aspectos controlados y sistemáticos del modelo lineal secuencial. � Durante las primeras iteraciones, la versión incremental podría ser un modelo en papel o un prototipo. � Durante las últimas iteraciones, se producen versiones cada vez más completas de ingeniería de sistemas. Determine objetivos alternativas y restricciones Evalúe alternativas, identifique y resuelva riesgos Análisis de Riesgos Análisis de Análisis de Riesgos Análisis de Riesgos Análisis de Riesgos Planea la siguiente fase Desarrolla y verifica el siguiente nivel del producto Prototipo OperacionalPrototipo 3Prototipo 2Proto tipo 1 Plan de requerimientos Plan del ciclo de vida REVISIÓN Plan de Desarrollo Plan de Integración y Prueba Concepto de Operación Simulaciones, modelos y benchmarks Requeri- mientos de SW Validación de Requerimientos Diseño V &V Servicio Prueba de Aceptación Prueba de Integración Prueba de Unidades Codificación Diseño Detallado Diseño del Producto � ComunicaciónComunicaciónComunicaciónComunicación conconconcon elelelel clienteclienteclientecliente:::: Para establecer comunicación entre el desarrollador y el cliente. � PlanificaciónPlanificaciónPlanificaciónPlanificación:::: Para definir los recursos, el � ComunicaciónComunicaciónComunicaciónComunicación conconconcon elelelel clienteclienteclientecliente:::: Para establecer comunicación entre el desarrollador y el cliente. � PlanificaciónPlanificaciónPlanificaciónPlanificación:::: Para definir los recursos, el Las tareas requeridasLas tareas requeridas � PlanificaciónPlanificaciónPlanificaciónPlanificación:::: Para definir los recursos, el tiempo y otras informaciones relacionadas con el proyecto. � AnálisisAnálisisAnálisisAnálisis dededede riesgosriesgosriesgosriesgos:::: Para evaluar riegos técnicos y operativos. � IngenieríaIngenieríaIngenieríaIngeniería:::: Para construir una o más representaciones de la aplicación. � ConstrucciónConstrucciónConstrucciónConstrucción yyyy adaptaciónadaptaciónadaptaciónadaptación:::: Para construir, probar, instalar y proporcionar soporte al usuario (documentación y práctica). � EvaluaciónEvaluaciónEvaluaciónEvaluación deldeldeldel clienteclienteclientecliente:::: Para obtener la reacción del cliente según la evaluación de las representaciones del software creadas durante la etapa de ingeniería e implementada durante la etapa de instalación. � PlanificaciónPlanificaciónPlanificaciónPlanificación:::: Para definir los recursos, el tiempo y otras informaciones relacionadas con el proyecto. � AnálisisAnálisisAnálisisAnálisis dededede riesgosriesgosriesgosriesgos:::: Para evaluar riegos técnicos y operativos. � IngenieríaIngenieríaIngenieríaIngeniería:::: Para construir una o más representaciones de la aplicación. � ConstrucciónConstrucciónConstrucciónConstrucción yyyy adaptaciónadaptaciónadaptaciónadaptación:::: Para construir, probar, instalar y proporcionar soporte al usuario (documentación y práctica). � EvaluaciónEvaluaciónEvaluaciónEvaluación deldeldeldel clienteclienteclientecliente:::: Para obtener la reacción del cliente según la evaluación de las representaciones del software creadas durante la etapa de ingeniería e implementada durante la etapa de instalación. Espiral avanzado �Etapas �PLANIFICACIÓN ANÁLISIS DE RIESGO�ANÁLISIS DE RIESGO �INGENIERÍA �EVALUACIÓN DEL CLIENTE Planificación � Recolección de requisitos y planificación del proyectoinicial inicial � Planificación basada en los comentarios del cliente � Evaluación del cliente � EVALUACION DEL CLIENTE Análisis de Riesgo � Análisis de riesgo basado en los requisitos iniciales � Análisis de riesgo basado en la reacción del cliente� Análisis de riesgo basado en la reacción del cliente � Decisión de seguir o no � Hacia el sistema final � Prototipo inicial del software � Prototipo del siguiente nivel � Sistema de ingeniería � INGENIERIA Ventajas � Si es necesario repetir algún proceso, sólo se pierde el esfuerzo de una iteración y no el valor del producto completo. � Reduce el riesgo de no tener el producto en el mercado en la fecha de entrega pactada al comienzo del proyecto. Mediante la planificación de los riesgos más altos en las primeras fases del desarrollo, el tiempolos riesgos más altos en las primeras fases del desarrollo, el tiempo consumido en resolverlos se invierte al principio del proceso cuando el equipo está menos apresurado. � Acelera el ritmo del desarrollo global ya que los desarrolladores trabajan de forma más eficiente cuando ven objetivos a corto plazo. � Acepta el hecho de que las necesidades de los usuarios y por tanto los requisitos, no se pueden definir completamente desde el principio, sino que son refinados en iteraciones sucesivas. Modelo de ensamble de componentes � El modelo utiliza el marco de trabajo técnico del paradigma orientado a objetos � El modelo utiliza el marco de trabajo técnico del paradigma orientado a objetosorientado a objetos � Incorpora muchas características del modelo en espiral � La actividad de ingeniería comienza con la identificación de clases candidatas � Según estudios realizados este modelo: ✔ reduce el tiempo de desarrollo en un 70% ✔ reduce el costo del proyecto en un 84% orientado a objetos � Incorpora muchas características del modelo en espiral � La actividad de ingeniería comienza con la identificación de clases candidatas � Según estudios realizados este modelo: ✔ reduce el tiempo de desarrollo en un 70% ✔ reduce el costo del proyecto en un 84% Identificar componentes candidatos BuscarConstruir n Modelo de ensamble de componentes Buscar componentes en biblioteca Extraer componentes si están disponibles Construir componentes si no están disponibles Poner componentes nuevos en la biblioteca Construir n interacciones del sistema Bajo desarrollo Modelo de desarrollo concurrente Cambios en espera Bajo revisión Cambios en espera En línea base Hecho Representa un estado de una actividad en ingeniería del software Actividades de análisis Customer Communication i Planeaciónn Análisis de riesgo Buscando clases en librerías Extrayendo clases Construyendo n- esima versión del sistema Agregar Identificando clases candidatas Comunicación con el cliente Modelo del proceso orientado a objetos Customer Evaluation Ingeniería Construcción y rediseño Extrayendo clases si están disponibles Ingeniería si las clases no disponibles Agregar clase a las librerías Análisis OO Diseño OO CodificaciónOO Pruebas OO Evaluación del cliente 1.5 Importancia de las diferentes etapas del SW. Ingeniería de SW VS Programación � La ingeniería de software es el proceso de construir aplicaciones de tamaño o alcance prácticos, en las que predomina el esfuerzo del software y que satisfacen los requerimientos de funcionalidad y desempeño. La programación es una de las actividades de la ingeniería de programación es una de las actividades de la ingeniería de software. La diferencia entre la programación y la ingeniería de software se parece a la diferencia entre crear una mesa de jardín y crear un puente. Estos difieren mucho en el orden de magnitud y el conocimiento profesional requerido. Actividades comunes para un proyecto de Ingeniería de SW 1.- Primero, es necesario entender la naturaleza del proyecto. Esto parece obvio, pero casi siempre lleva tiempo entender que desean los clientes, en especial cuando ellos mismo no saben por especial cuando ellos mismo no saben por completo que quieren. Debe entenderse la magnitud general del tiempo, los fondos y el personal disponible. Esto ayuda a aclarar el alcance del proyecto. Actividades comunes para un proyecto de Ingeniería de SW 2.- Los proyectos requieren documentación desde el principio; es muy probable que esta documentación sufra muchos cambios. Por esta razón, desde el principio debe identificarse en un medio para mantener el control de los cambios tanto en los documentos como en el código. Este proceso, es conocido como administración de la cambios tanto en los documentos como en el código. Este proceso, es conocido como administración de la configuración. En seguida hay que desarrollar el plan global para el proyecto incluyendo la programación del calendario, este plan se va refinando durante la vida del proyecto conforme se conoce más de los requerimientos y el diseño. Actividades comunes para un proyecto de Ingeniería de SW 3.- El siguiente paso es reunir los requerimientos para la aplicación. Gran parte de esta actividad consiste en conversar con los interesados, quienes tienen un interés en su resultado.interés en su resultado. Actividades comunes para un proyecto de Ingeniería de SW 4.- El paso que sigue es el diseño e implementación del producto. Dependiendo del proceso de desarrollo que se use, es posible que los pasos 3 y 4 se repitan varias veces.veces. Actividades comunes para un proyecto de Ingeniería de SW 5.- El producto inicial y el producto final deben probarse en forma exhaustiva de varias maneras. Actividades comunes para un proyecto de Ingeniería de SW 6.- Una vez entregado el producto, entra el modo de mantenimiento, que incluye reparaciones y mejoras. El mantenimiento llega a consumir hasta el 80% de los recursos de ingeniería de software. recursos de ingeniería de software. 1.5.1. Análisis de Sistemas El análisis de sistemas implica determinar las necesidades del cliente y /o usuario para poder especificar los requerimientos que sirvan como base para el desarrollo de un sistema o software siendo el "que" de un sistema informático. Esto se lleva a cabo teniendo en cuenta ciertos principios: a) Debe presentarse y entenderse el dominio de la información de a) Debe presentarse y entenderse el dominio de la información de un problema. b) Definir las funciones que debe realizar el Software. c) Representar el comportamiento del software a consecuencias de acontecimientos externos. d) Divida en forma jerárquica los modelos que representan la información, funciones y comportamiento. 1.5.1. Análisis de Sistemas Un análisis de sistemas se lleva a cabo teniendo en cuenta los siguientes objetivos en mente: Identificar las necesidades del cliente, evaluar los conceptos que tiene el cliente del sistema para establecer su viabilidad, realice un análisis técnico y económico, asignar funciones al hardware, software, personal, base de datos, y otros elementos del técnico y económico, asignar funciones al hardware, software, personal, base de datos, y otros elementos del sistema, establezca las restricciones de presupuestos y planificación temporal y crear una definición del sistema que forme el fundamento de todo el trabajo de ingeniería. 1.5.2 Diseño de Sistemas � El Diseño del Software es un proceso y un modelado a la vez. El proceso de Diseño es un conjunto de pasos repetitivos que permiten al diseñador describir todos los aspectos del Sistema diseñador describir todos los aspectos del Sistema a construir. A lo largo del diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones técnicas. Etapas del diseño de sistemas � La etapa del Diseño del Sistema consta de cuatro etapas: � El diseño de los datos. Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de información, creado durante el análisis, en las estructurasde datos necesarios para implementar el Software. Etapas del diseño de sistemas � El Diseño Arquitectónico. Define la relación entre cada uno de los elementos estructurales del programa. � El Diseño de la Interfaz. Describe como se comunica � El Diseño de la Interfaz. Describe como se comunica el Software consigo mismo, con los sistemas que operan junto con el y con los operadores y usuarios que lo emplean. Etapas del diseño de sistemas � El Diseño de procedimientos. Transforma elementos estructurales de la arquitectura del programa. La importancia del Diseño del Software se puede definir en una sola palabraSoftware se puede definir en una sola palabra Calidad, dentro del diseño es donde se fomenta la calidad del Proyecto. El Diseño es la única manera de materializar con precisión los requerimientos del cliente. 1.5.2 Diseño de Sistemas � El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de análisis y debe acumular todos los requisitos implícitos que desea el cliente. � Debe ser una guía que puedan leer y entender los que construyan el código y los que prueban y mantienen el construyan el código y los que prueban y mantienen el Software y debe proporcionar una completa idea de lo que es el software, enfocando los dominios de datos, funcional y comportamiento desde el punto de vista de la implementación. 1.5.3 Prueba de sistemas � La prueba es un conjunto de actividades que se puede planificar por adelantado y llevar acabo sistemáticamente. Por esta razón se debe definir en el proceso de la ingeniería de software una plantilla para la prueba de software: un conjunto de pasos en los que podamos situar los métodos de diseño de caso de prueba. � La prueba es un proceso de ejecución de un programa con la � La prueba es un proceso de ejecución de un programa con la intención de descubrir un error. Un buen caso de prueba es aquel que tiene una falta de probabilidad de mostrar un error no descubierto hasta entonces. Una prueba tiene éxito si descubre un error no detectado hasta entonces. 1.5.3 Prueba de sistemas En el proceso de prueba existen dos conceptos que hay que diferenciar: verificación y validación: � VERIFICACIÓN: Se refiere al conjunto de actividades que asegure que el software se implementa correcta mente una función específica. ¿Estamos construyendo el producto función específica. ¿Estamos construyendo el producto correctamente? � VALIDACIÓN: Se refiere a un conjunto diferente de actividades que aseguran que el software construido se ajusta a los requisitos del cliente. ¿Estamos construyendo el producto correcto? 1.5.4 Mantenimiento de Sistemas � Cuando un sistema es instalado en un ambiente que cambia, el ambiente produce cambios en los requerimientos. Los sistemas deben tener mantenimiento si se quiere que sean útiles en el ambiente. � El mantenimiento se puede dar a lo largo de todo el ciclo de vida utilizando una metodología de desarrollo para sistemas evolutivos, esto es debido a que usualmente es mas caro añadir funcionalidad después de que el sistema ha sido desarrollado, en vez de hacerlo cuando el sistema se esta que usualmente es mas caro añadir funcionalidad después de que el sistema ha sido desarrollado, en vez de hacerlo cuando el sistema se esta diseñando; el personal de mantenimiento a menudo no tiene experiencia o no esta familiarizado con el dominio de la aplicación; los programas pueden estar pobremente estructurados y difíciles de entender y porque además los cambios pueden introducir nuevas fallas si el sistema se hace más complejo. También es importante mencionar que el mantenimiento debe darse a lo largo de todo el proceso de desarrollo porque la estructura del software puede degradarse debido a cambios continuos y puede no haber documentación disponible que describa el software. 1.5.4 Mantenimiento de Sistemas � El mantenimiento se debe o se invoca debido a cambios pedidos por los clientes o por los requerimientos del mercado. Los cambios normalmente se atienden en orden de pedido y se implementan en una nueva versión del sistema. Los programas algunas veces necesitan ser sistema. Los programas algunas veces necesitan ser reparados sin que se realice una iteración completa del proceso, lo cual provoca problemas ya que la documentación y los programas se desactualizan. Fin de la Unidad !!! Evaluación � 25 puntos por fin de semana � exposición (15 exponer + 10 presentación digital) � Firmas por actividad
Compartir