Este documento introduce conceptos básicos de ingeniería de software. Brevemente describe la historia del software, características del software como producto, y la crisis del software que llevó al desarrollo de la ingeniería de software. También define la ingeniería de software como la aplicación sistemática de principios, prácticas y herramientas para producir software de alta calidad de manera eficiente.
Este documento discute la complejidad inherente al software. Señala que la complejidad del software es una propiedad esencial y no accidental, y que es importante controlarla pero no eliminarla. Identifica varios factores que contribuyen a la complejidad, como la complejidad del dominio del problema, la dificultad de gestionar el proceso de desarrollo, y los retos de modelar el comportamiento de sistemas discretos. Explica cómo la complejidad puede conducir a proyectos de software que se retrasan, exceden el presupuesto o
El documento presenta una descripción general de diferentes modelos de ciclo de vida de desarrollo de software, incluyendo el modelo en cascada, modelos iterativos e incrementales, el modelo en espiral y el enfoque de ingeniería de software. Se discuten los principios, ventajas y desventajas de cada modelo.
Este documento describe varios modelos del proceso de desarrollo de software, incluyendo el modelo en cascada, el modelo evolutivo y los prototipos desechables. El modelo en cascada implica pasar por fases secuenciales como el análisis de requerimientos, diseño, implementación, prueba e integración. El modelo evolutivo es más flexible y permite iteraciones para refinar el sistema basado en comentarios de usuarios. Los prototipos desechables se usan para comprender mejor los requerimientos antes del desarrollo del sistema final.
Unidad 1 Introducción a la Ingeniería de SoftwareMary Carmen
Este documento presenta conceptos clave de ingeniería de software e información, incluyendo mitos, paradigmas, calidad, procesos, métodos, herramientas y gestión de proyectos de software. También describe la importancia de la ingeniería de software, su historia y evolución, y conceptos de sistemas de información como características, estructuras, clasificaciones, ERP, CRM y SCM.
El documento discute varios conceptos clave de la programación orientada a objetos como la abstracción, el polimorfismo y la persistencia. Luego describe varios factores de calidad del software como la corrección, robustez, extensibilidad, reutilización, compatibilidad, eficiencia y facilidad de uso. Finalmente, explica cómo la metodología orientada a objetos puede mejorar estos factores de calidad del software.
El documento define software y describe sus principales componentes. Software se refiere a los componentes lógicos de un sistema informático, como aplicaciones y sistemas operativos, en contraposición al hardware. El documento también discute los modelos de proceso de desarrollo de software, incluido el modelo en cascada donde cada fase se basa en la anterior de manera secuencial.
Este documento introduce los conceptos básicos de hardware, software, estándares y modelos, y ciclo de vida del software. Explica que el hardware son los componentes físicos de una computadora, mientras que el software son las aplicaciones y sistemas operativos intangibles. Además, señala que los estándares y modelos establecen normas para el desarrollo de software de alta calidad de manera continua entre organizaciones. Por último, define el ciclo de vida del software como el período desde la concepción hasta la retirada de un sistema.
Este documento describe los conceptos básicos de la ingeniería de sistemas. Explica que surgió en respuesta al crecimiento en tamaño y complejidad de los programas en los años 60. También describe la evolución de los lenguajes de programación procedurales a lenguajes más modulares y cómo esto llevó al desarrollo de sistemas por equipos interdisciplinarios. Finalmente, explica que la ingeniería de sistemas busca producir software de manera sistemática y mantenerlo para cumplir con los tiempos y costos estimados.
Este documento discute la complejidad inherente al software. Señala que la complejidad del software es una propiedad esencial y no accidental, y que es importante controlarla pero no eliminarla. Identifica varios factores que contribuyen a la complejidad, como la complejidad del dominio del problema, la dificultad de gestionar el proceso de desarrollo, y los retos de modelar el comportamiento de sistemas discretos. Explica cómo la complejidad puede conducir a proyectos de software que se retrasan, exceden el presupuesto o
El documento presenta una descripción general de diferentes modelos de ciclo de vida de desarrollo de software, incluyendo el modelo en cascada, modelos iterativos e incrementales, el modelo en espiral y el enfoque de ingeniería de software. Se discuten los principios, ventajas y desventajas de cada modelo.
Este documento describe varios modelos del proceso de desarrollo de software, incluyendo el modelo en cascada, el modelo evolutivo y los prototipos desechables. El modelo en cascada implica pasar por fases secuenciales como el análisis de requerimientos, diseño, implementación, prueba e integración. El modelo evolutivo es más flexible y permite iteraciones para refinar el sistema basado en comentarios de usuarios. Los prototipos desechables se usan para comprender mejor los requerimientos antes del desarrollo del sistema final.
Unidad 1 Introducción a la Ingeniería de SoftwareMary Carmen
Este documento presenta conceptos clave de ingeniería de software e información, incluyendo mitos, paradigmas, calidad, procesos, métodos, herramientas y gestión de proyectos de software. También describe la importancia de la ingeniería de software, su historia y evolución, y conceptos de sistemas de información como características, estructuras, clasificaciones, ERP, CRM y SCM.
El documento discute varios conceptos clave de la programación orientada a objetos como la abstracción, el polimorfismo y la persistencia. Luego describe varios factores de calidad del software como la corrección, robustez, extensibilidad, reutilización, compatibilidad, eficiencia y facilidad de uso. Finalmente, explica cómo la metodología orientada a objetos puede mejorar estos factores de calidad del software.
El documento define software y describe sus principales componentes. Software se refiere a los componentes lógicos de un sistema informático, como aplicaciones y sistemas operativos, en contraposición al hardware. El documento también discute los modelos de proceso de desarrollo de software, incluido el modelo en cascada donde cada fase se basa en la anterior de manera secuencial.
Este documento introduce los conceptos básicos de hardware, software, estándares y modelos, y ciclo de vida del software. Explica que el hardware son los componentes físicos de una computadora, mientras que el software son las aplicaciones y sistemas operativos intangibles. Además, señala que los estándares y modelos establecen normas para el desarrollo de software de alta calidad de manera continua entre organizaciones. Por último, define el ciclo de vida del software como el período desde la concepción hasta la retirada de un sistema.
Este documento describe los conceptos básicos de la ingeniería de sistemas. Explica que surgió en respuesta al crecimiento en tamaño y complejidad de los programas en los años 60. También describe la evolución de los lenguajes de programación procedurales a lenguajes más modulares y cómo esto llevó al desarrollo de sistemas por equipos interdisciplinarios. Finalmente, explica que la ingeniería de sistemas busca producir software de manera sistemática y mantenerlo para cumplir con los tiempos y costos estimados.
El documento describe los diferentes niveles de diseño de software, incluyendo el diseño de arquitectura, el diseño de alto nivel y el diseño detallado. También explica el diseño estructurado de sistemas y cómo se utilizan los diagramas de estructura para modelar la estructura de control de un programa a través de un árbol de invocación de módulos.
El documento describe tres tipos principales de software: software de sistema, que permite la interacción con el hardware como los sistemas operativos; software de programación, que permite a los programadores desarrollar programas; y software de aplicación, que permite a los usuarios realizar tareas específicas. También discute los procesos de desarrollo de software y modelos como la cascada y los iterativos incrementales.
El documento describe diferentes tipos y clasificaciones de software, así como los procesos de desarrollo de software. Se mencionan tres tipos principales de software: sistema, programación y aplicación. También se describen varios modelos de procesos de desarrollo de software como el modelo cascada, evolutivo, iterativo incremental y espiral.
Este documento describe los sistemas distribuidos, incluyendo sus características como la transparencia, eficiencia, flexibilidad, escalabilidad y fiabilidad. También discute los modelos de núcleo monolítico y micro núcleo, el modelo cliente-servidor, y las características de hardware de los sistemas distribuidos como la taxonomía de Flynn y las diferentes formas de interconectar CPUs.
Conceptos Básicos de Ingeniería del Software y Control de Proyectosedwinlemmon
Este documento presenta conceptos básicos sobre ingeniería de software y gestión de proyectos. Introduce conceptos clave como software, sistemas de información, proyectos e ingeniería de software. Explica que la ingeniería de software aplica principios de ingeniería al desarrollo de software de manera sistemática y disciplinada. También describe elementos básicos de gestión de proyectos como planificación, coordinación, organización y supervisión.
Este documento describe los sistemas distribuidos y sus desafíos principales, incluyendo la heterogeneidad, extensibilidad, seguridad, escalabilidad y tolerancia a fallos. También discute los modelos arquitectónicos como las capas de software y las relaciones entre componentes en una arquitectura distribuida.
Metodologías de Ingeniería de Requisitos Beto Vega
Este documento describe las metodologías de ingeniería de requisitos para sistemas ubicuos. Explica que la fase de ingeniería de requisitos es crucial para descubrir y analizar los servicios y restricciones del sistema. También presenta los desafíos particulares de los sistemas ubicuos como la adaptación al entorno cambiante y la comunicación entre dispositivos. Finalmente, propone una clasificación de requisitos y modelos para representarlos que consideren aspectos como la identificación de elementos, la heterogeneidad y la interacción entre sist
El documento describe diferentes tipos de software, incluyendo software de sistema, software de programación, y software de trabajo. También describe las etapas clave en el desarrollo de software, como la elicitación de requisitos, el diseño, la codificación, y el mantenimiento. Señala que el desarrollo de software es un proceso evolutivo en el que los sistemas deben cambiar continuamente para mantenerse útiles.
Unidad 1. caracterizacion de los sistemas distribuidosEManuel Torres
Este documento presenta los conceptos fundamentales de los sistemas distribuidos. Se define un sistema distribuido como un conjunto de computadoras independientes que parecen un solo sistema coherente para el usuario. Se describen los desafíos clave como la seguridad, la transparencia en la distribución, el grado de apertura y la escalabilidad. El contenido se divide en cinco unidades que cubren la caracterización, arquitecturas, comunicación, computación en la nube y aplicaciones multimedia.
Este documento presenta una introducción general sobre el software, incluyendo definiciones, características, clasificaciones y mitos comunes. Explica que el software se refiere a programas de computadora, procedimientos y documentación asociada, y puede clasificarse en software de sistemas, de aplicaciones, científico, empotrado y web. También introduce conceptos clave de ingeniería de software como procesos, métodos, herramientas y factores de calidad.
Este documento define el software como la parte lógica e intangible de una computadora que incluye programas, datos, documentación e instrucciones. Explica que el software se clasifica en aplicaciones, programación y sistemas. También describe el proceso de desarrollo de software, el cual involucra etapas como requisitos, diseño, codificación, pruebas e instalación.
El documento define el software y sus diferentes tipos. Explica que el software incluye aplicaciones, sistemas operativos y otros componentes lógicos necesarios para que un sistema funcione. También describe los procesos de desarrollo de software, incluyendo modelos como el modelo en cascada y modelos iterativos.
Este documento introduce los fundamentos de la ingeniería de software. Explica que el software son programas desarrollados para resolver tareas en las computadoras y que el proceso de ingeniería de software incluye actividades como entender el problema, planear la solución, ejecutar el plan y examinar los resultados. Además, identifica diferentes tipos de aplicaciones de software y describe el proceso de desarrollo del software.
Este documento describe los fundamentos básicos para el diseño de software, incluyendo la abstracción, refinamiento, modularidad, arquitectura de software, jerarquía de control, estructuras de datos, procedimientos de software y ocultamiento de información. También cubre temas como el diseño orientado a objetos, métodos de prueba de software y mantenimiento.
Este documento resume los conceptos clave de la ingeniería de software. Explica que la ingeniería de software busca dar un enfoque sistemático y cuantificable al desarrollo de software. También describe brevemente la historia de la disciplina y algunos de los modelos de ciclo de vida del software más importantes como el ciclo de vida en cascada. Finalmente, discute algunos de los retos actuales y futuros de la ingeniería de software como la calidad del software, los servicios y modelos de negocio, y la integración de sistemas
El documento define los conceptos de ingeniería de software, programador e ingeniero de software. Explica que la ingeniería de software se refiere al desarrollo de software desde la especificación hasta el mantenimiento, mientras que un programador se enfoca en el código y un ingeniero en los requisitos del cliente. También describe los procesos de software, modelos de software y paradigmas tradicionales, orientados a objetos y ágiles.
El software de sistema incluye programas como el sistema operativo, controladores de dispositivos y programas utilitarios que controlan el hardware y dan soporte a otros programas de aplicación. El software de sistema se clasifica en sistema operativo, controladores de dispositivos y programas utilitarios. El proceso de creación de software puede ser complejo y requiere metodologías como COCOMO para estimar los costos según el tamaño del proyecto.
El software de sistema incluye programas como el sistema operativo, controladores de dispositivos y programas utilitarios que controlan el hardware y dan soporte a otros programas de aplicación. El software de sistema se clasifica en sistema operativo, controladores de dispositivos y programas utilitarios. El proceso de creación de software puede ser complejo y requiere metodologías como COCOMO para estimar los costos según el tamaño del proyecto.
El documento habla sobre ingeniería de software. Explica que la ingeniería de software es una disciplina que utiliza métodos, herramientas y técnicas para el desarrollo de programas de manera organizada y cumpliendo con especificaciones. También describe la importancia de la ingeniería de software para crear software de calidad, y los inicios de esta disciplina en la década de 1960 para resolver problemas en el desarrollo de software.
Un buen programa debe ser rápido, estable, usable e intuitivo. También debe actualizarse silenciosamente, ser inteligente, confiable, advertir errores comunes, estar bien estructurado y documentado.
Caracteristicas de un buen programa de computadoraalexmoon1408
Un buen programa de computadora tiene una interfaz amigable y fácil de usar para el usuario, permite la portabilidad de datos a nuevas versiones, incluye depuración, puesta en marcha y mantenimiento. También cumple su función principal de manera estable, tiene una interfaz acorde al entorno donde se usa y puede modificarse fácilmente cuando cambien las reglas de negocio.
El documento describe un sistema de software para una papelería que registrará productos, proveedores y clientes. El sistema se desarrollará en PHP y tendrá una base de datos. Incluirá funciones como registrar productos y proveedores, listarlos y consultarlos. El sistema solo podrá ser usado por el personal autorizado.
El documento describe los diferentes niveles de diseño de software, incluyendo el diseño de arquitectura, el diseño de alto nivel y el diseño detallado. También explica el diseño estructurado de sistemas y cómo se utilizan los diagramas de estructura para modelar la estructura de control de un programa a través de un árbol de invocación de módulos.
El documento describe tres tipos principales de software: software de sistema, que permite la interacción con el hardware como los sistemas operativos; software de programación, que permite a los programadores desarrollar programas; y software de aplicación, que permite a los usuarios realizar tareas específicas. También discute los procesos de desarrollo de software y modelos como la cascada y los iterativos incrementales.
El documento describe diferentes tipos y clasificaciones de software, así como los procesos de desarrollo de software. Se mencionan tres tipos principales de software: sistema, programación y aplicación. También se describen varios modelos de procesos de desarrollo de software como el modelo cascada, evolutivo, iterativo incremental y espiral.
Este documento describe los sistemas distribuidos, incluyendo sus características como la transparencia, eficiencia, flexibilidad, escalabilidad y fiabilidad. También discute los modelos de núcleo monolítico y micro núcleo, el modelo cliente-servidor, y las características de hardware de los sistemas distribuidos como la taxonomía de Flynn y las diferentes formas de interconectar CPUs.
Conceptos Básicos de Ingeniería del Software y Control de Proyectosedwinlemmon
Este documento presenta conceptos básicos sobre ingeniería de software y gestión de proyectos. Introduce conceptos clave como software, sistemas de información, proyectos e ingeniería de software. Explica que la ingeniería de software aplica principios de ingeniería al desarrollo de software de manera sistemática y disciplinada. También describe elementos básicos de gestión de proyectos como planificación, coordinación, organización y supervisión.
Este documento describe los sistemas distribuidos y sus desafíos principales, incluyendo la heterogeneidad, extensibilidad, seguridad, escalabilidad y tolerancia a fallos. También discute los modelos arquitectónicos como las capas de software y las relaciones entre componentes en una arquitectura distribuida.
Metodologías de Ingeniería de Requisitos Beto Vega
Este documento describe las metodologías de ingeniería de requisitos para sistemas ubicuos. Explica que la fase de ingeniería de requisitos es crucial para descubrir y analizar los servicios y restricciones del sistema. También presenta los desafíos particulares de los sistemas ubicuos como la adaptación al entorno cambiante y la comunicación entre dispositivos. Finalmente, propone una clasificación de requisitos y modelos para representarlos que consideren aspectos como la identificación de elementos, la heterogeneidad y la interacción entre sist
El documento describe diferentes tipos de software, incluyendo software de sistema, software de programación, y software de trabajo. También describe las etapas clave en el desarrollo de software, como la elicitación de requisitos, el diseño, la codificación, y el mantenimiento. Señala que el desarrollo de software es un proceso evolutivo en el que los sistemas deben cambiar continuamente para mantenerse útiles.
Unidad 1. caracterizacion de los sistemas distribuidosEManuel Torres
Este documento presenta los conceptos fundamentales de los sistemas distribuidos. Se define un sistema distribuido como un conjunto de computadoras independientes que parecen un solo sistema coherente para el usuario. Se describen los desafíos clave como la seguridad, la transparencia en la distribución, el grado de apertura y la escalabilidad. El contenido se divide en cinco unidades que cubren la caracterización, arquitecturas, comunicación, computación en la nube y aplicaciones multimedia.
Este documento presenta una introducción general sobre el software, incluyendo definiciones, características, clasificaciones y mitos comunes. Explica que el software se refiere a programas de computadora, procedimientos y documentación asociada, y puede clasificarse en software de sistemas, de aplicaciones, científico, empotrado y web. También introduce conceptos clave de ingeniería de software como procesos, métodos, herramientas y factores de calidad.
Este documento define el software como la parte lógica e intangible de una computadora que incluye programas, datos, documentación e instrucciones. Explica que el software se clasifica en aplicaciones, programación y sistemas. También describe el proceso de desarrollo de software, el cual involucra etapas como requisitos, diseño, codificación, pruebas e instalación.
El documento define el software y sus diferentes tipos. Explica que el software incluye aplicaciones, sistemas operativos y otros componentes lógicos necesarios para que un sistema funcione. También describe los procesos de desarrollo de software, incluyendo modelos como el modelo en cascada y modelos iterativos.
Este documento introduce los fundamentos de la ingeniería de software. Explica que el software son programas desarrollados para resolver tareas en las computadoras y que el proceso de ingeniería de software incluye actividades como entender el problema, planear la solución, ejecutar el plan y examinar los resultados. Además, identifica diferentes tipos de aplicaciones de software y describe el proceso de desarrollo del software.
Este documento describe los fundamentos básicos para el diseño de software, incluyendo la abstracción, refinamiento, modularidad, arquitectura de software, jerarquía de control, estructuras de datos, procedimientos de software y ocultamiento de información. También cubre temas como el diseño orientado a objetos, métodos de prueba de software y mantenimiento.
Este documento resume los conceptos clave de la ingeniería de software. Explica que la ingeniería de software busca dar un enfoque sistemático y cuantificable al desarrollo de software. También describe brevemente la historia de la disciplina y algunos de los modelos de ciclo de vida del software más importantes como el ciclo de vida en cascada. Finalmente, discute algunos de los retos actuales y futuros de la ingeniería de software como la calidad del software, los servicios y modelos de negocio, y la integración de sistemas
El documento define los conceptos de ingeniería de software, programador e ingeniero de software. Explica que la ingeniería de software se refiere al desarrollo de software desde la especificación hasta el mantenimiento, mientras que un programador se enfoca en el código y un ingeniero en los requisitos del cliente. También describe los procesos de software, modelos de software y paradigmas tradicionales, orientados a objetos y ágiles.
El software de sistema incluye programas como el sistema operativo, controladores de dispositivos y programas utilitarios que controlan el hardware y dan soporte a otros programas de aplicación. El software de sistema se clasifica en sistema operativo, controladores de dispositivos y programas utilitarios. El proceso de creación de software puede ser complejo y requiere metodologías como COCOMO para estimar los costos según el tamaño del proyecto.
El software de sistema incluye programas como el sistema operativo, controladores de dispositivos y programas utilitarios que controlan el hardware y dan soporte a otros programas de aplicación. El software de sistema se clasifica en sistema operativo, controladores de dispositivos y programas utilitarios. El proceso de creación de software puede ser complejo y requiere metodologías como COCOMO para estimar los costos según el tamaño del proyecto.
El documento habla sobre ingeniería de software. Explica que la ingeniería de software es una disciplina que utiliza métodos, herramientas y técnicas para el desarrollo de programas de manera organizada y cumpliendo con especificaciones. También describe la importancia de la ingeniería de software para crear software de calidad, y los inicios de esta disciplina en la década de 1960 para resolver problemas en el desarrollo de software.
Un buen programa debe ser rápido, estable, usable e intuitivo. También debe actualizarse silenciosamente, ser inteligente, confiable, advertir errores comunes, estar bien estructurado y documentado.
Caracteristicas de un buen programa de computadoraalexmoon1408
Un buen programa de computadora tiene una interfaz amigable y fácil de usar para el usuario, permite la portabilidad de datos a nuevas versiones, incluye depuración, puesta en marcha y mantenimiento. También cumple su función principal de manera estable, tiene una interfaz acorde al entorno donde se usa y puede modificarse fácilmente cuando cambien las reglas de negocio.
El documento describe un sistema de software para una papelería que registrará productos, proveedores y clientes. El sistema se desarrollará en PHP y tendrá una base de datos. Incluirá funciones como registrar productos y proveedores, listarlos y consultarlos. El sistema solo podrá ser usado por el personal autorizado.
Este documento describe el proceso de estimación de puntos de función para un sistema de ventas de productos. Identifica tres archivos lógicos externos principales (registro de productos, registro de usuarios y ventas), así como cuatro funciones transaccionales (entrada de ventas, lista de productos, lista de ventas y consulta de producto). Calcula los puntos de función para cada componente y aplica factores de ajuste para determinar que el total estimado de puntos de función para el sistema es de 37.31.
Un buen software contable debe tener flexibilidad, compatibilidad y ser fácil de manejar. Debe permitir la adaptación a los requerimientos de la empresa, intercambiar información con otros programas, e indicar la mayor información en una sola vista sin necesidad de personal especializado. Además, debe proporcionar seguridad mediante claves de acceso y definir usuarios con diferentes niveles de acceso.
El documento describe el software empotrado, que reside en memoria de sólo lectura y se utiliza para controlar productos y sistemas industriales y de consumo dotándolos de inteligencia. Incluye ejemplos de sistemas empotrados como cámaras digitales, electrodomésticos como lavadoras y microondas, sistemas de frenado de automóviles, controladores de plantas industriales, impresoras e instrumentos de comunicación como faxes y teléfonos.
El documento describe los diferentes tipos de software y sus características. Estos incluyen software de sistemas, tiempo real, gestión, ingeniería y científico, empotrado, computadoras personales, basado en web e inteligencia artificial. Cada tipo se distingue por su complejidad, interacción con el hardware, objetivo y forma de manejar la información de entrada y salida.
El documento habla sobre la gestión de riesgos en procesos de ingeniería de software. Explica que la gestión de riesgos tiene como objetivos identificar, controlar y eliminar fuentes de riesgo antes de que afecten los objetivos del proyecto. Describe las etapas de la gestión de riesgos como identificación, análisis, planeación y supervisión de riesgos para mitigarlos. También menciona algunos riesgos genéricos como cambios en requerimientos, subestimación del tamaño del proyecto y rotación del
El documento discute la importancia del software y la ingeniería de software. Explica que el principal desafío actual es mejorar la calidad y reducir el costo de las soluciones basadas en software. También describe brevemente la historia de la ingeniería de software, los tipos de procesos, productos, costos y elementos involucrados.
Que es IIngenieria del Software?, Que es IIngenieria del Software?, Que es IIngenieria del Software?, Que es IIngenieria del Software?, Que es IIngenieria del Software?, Que es IIngenieria del Software?, Que es IIngenieria del Software?, Que es IIngenieria del Software?, Que es IIngenieria del Software?, Que es IIngenieria del Software?,
Guia unidad ii fundamentacion de ingenieria del softwaresullinsan
Este documento presenta los fundamentos de la ingeniería de software. Define el software, sus cualidades y factores de calidad. Explica que la ingeniería de software usa métodos para garantizar que el software se desarrolle a tiempo y cumpla las expectativas. También describe metodologías como Scrum, modelos de sistemas usando UML, y técnicas y herramientas para el desarrollo de software.
1. El documento introduce conceptos clave de la ingeniería de software como procesos de software, modelos de procesos, y métodos. 2. Explica las diferencias entre ingeniería de software, ciencias de la computación e ingeniería de sistemas. 3. Discuten factores que contribuyen a la calidad del software como complejidad, cambios y deficiencias en el desarrollo.
Introducción a la ingeniería del software - cuestionarioSamuelSanchez136
El documento define conceptos clave de la ingeniería de software, como el análisis, diseño, programación, pruebas y mantenimiento de sistemas informáticos para resolver problemas de usuarios. Explica que un ingeniero de software debe dominar técnicas de descripción, trabajar en distintos niveles de abstracción y describir modelos mediante lenguajes formales. También cubre los métodos formales, lenguajes de especificación formal y sus ventajas para la ingeniería de software.
Este documento introduce conceptos básicos de ingeniería de software. Brevemente describe la historia del software, características especiales como la complejidad, y la crisis del software que llevó al desarrollo de la ingeniería de software. Explica que la ingeniería de software aplica un método sistemático y estructurado al desarrollo, operación y mantenimiento de software.
Este documento presenta una introducción a la ingeniería de software. Explica brevemente la historia y definiciones de la ingeniería de software, sus objetivos, características, ventajas y desventajas. También describe los recursos, implicaciones socioeconómicas, etapas del proceso, y el papel fundamental de la programación como base para el desarrollo de software. El documento provee una visión general de los conceptos clave de la ingeniería de software.
Este documento presenta una introducción a la ingeniería de software. Explica que la ingeniería de software comprende todos los aspectos de la producción de software y se diferencia de la ciencia de la computación en que se enfoca en los problemas prácticos de desarrollar software útil. También describe los conceptos clave de proceso de software, modelo de procesos de software, costos asociados con la ingeniería de software y métodos comúnmente utilizados. Finalmente, resume los atributos deseables de un buen software.
Se publica una presentación acerca de los conceptos básicos iniciales y generales de la Ingeniería del Software, una vez que los lea, revise, podría realizar sus preguntas ante inquietudes que pudieran presentarse y sobre todo realizar aportes, es decir, incrementar archivos de material a fin o sus estudios realizados la respecto a fin de poder enriquecer el conociemiento de todos en esta asignatura
Bienvenidos.....
Este documento presenta una introducción a la ingeniería de software, discutiendo conceptos como productos de software, procesos de software, modelos de desarrollo como la espiral de Boehm, y la importancia de la visibilidad de los procesos. También aborda la demanda creciente de ingenieros de software y la necesidad de una mayor responsabilidad profesional en el desarrollo de software.
Este documento presenta una introducción a la ingeniería de software, discutiendo conceptos como productos de software, procesos de software, modelos de desarrollo como la espiral de Boehm, y la importancia de la visibilidad de los procesos. También aborda la demanda creciente de ingenieros de software y la necesidad de una mayor responsabilidad profesional en el desarrollo de software.
Este documento presenta una introducción a conceptos clave de ingeniería de software e información como mitos, paradigmas, calidad, procesos, métodos, herramientas y sistemas de información. Explica brevemente cada tema y ofrece definiciones e ideas fundamentales sobre cada uno.
Este documento trata sobre la ingeniería de software. Explica que la ingeniería de software se ocupa del desarrollo y mantenimiento de aplicaciones de software mediante el uso de ciencias de la computación, gestión de proyectos e ingeniería. También describe los objetivos generales de la ingeniería de software como mejorar la calidad del software y aumentar la productividad. Además, señala que la ingeniería de software se aplica en una variedad de campos como software en tiempo real, empotrado e inteligencia artificial.
La ingeniería de software es la aplicación sistemática y disciplinada del desarrollo, operación y mantenimiento de software. Integra matemáticas, computación y prácticas de ingeniería. Los objetivos de la ingeniería de software incluyen mejorar el diseño de aplicaciones, promover la calidad, brindar exactitud de costos y tiempo, y mejorar la organización y detección de mejoras en el software. La historia de la ingeniería de software comenzó en la década de 1950 y ha evolucionado con cada nueva tecnología.
El documento describe la ingeniería de software, incluyendo su surgimiento, definiciones, relación con otras disciplinas, calidad del software, participantes en el desarrollo e influencia en la sociedad. También discute cambios y tendencias como el uso de prototipos, arquitectura, procesos y mediciones para mejorar la calidad y productividad.
1. La ingeniería de software se define como la disciplina que se enfoca en los aspectos prácticos de producir software a través de todo su ciclo de vida, incluyendo la especificación, desarrollo, validación y evolución. 2. Existen diferentes tipos de sistemas de software como aplicaciones independientes, sistemas embebidos, sistemas interactivos y de procesamiento por lotes. 3. El proceso de ingeniería de software incluye actividades como la especificación de requerimientos, desarrollo, pruebas y evolución para
El documento presenta una serie de preguntas y respuestas sobre ingeniería de software. Define ingeniería de software según diferentes autores como un enfoque sistemático y disciplinado para el desarrollo de software. Explica que los ingenieros de software analizan, diseñan, crean y prueban sistemas informáticos, generalmente trabajando en equipo. También cubre conceptos como los requisitos de los usuarios, el diseño de la estructura del programa, y la importancia de los métodos formales en la especificación y verificación de software
Este documento presenta una introducción a la ingeniería de software. Define la ingeniería de software como una disciplina que ofrece métodos y técnicas para desarrollar software de calidad. Explica que la ingeniería de software trata con áreas como sistemas operativos e Internet y se aplica a muchas industrias. También describe los fundamentos teóricos, el proceso de desarrollo de sistemas informáticos, y concluye explicando cómo la ingeniería de software puede mejorar la eficiencia y calidad de sistemas críticos.
El documento describe los continuos avances en informática y telecomunicaciones que han generado un aumento en el uso de sistemas abiertos y distribuidos. También habla sobre la ingeniería de software, incluyendo su definición, objetivos, procesos de desarrollo, metodologías, y factores que afectan la calidad del diseño. Finalmente, discute brevemente algunos modelos de desarrollo de software como el modelo en cascada y el desarrollo iterativo e incremental.
1. Departamento de Informática e Ingeniería en Sistemas
INTRODUCCIÓN A LA
INGENIERÍA DEL SOFTWARE
F.Javier Zarazaga Soria
Javier Nogueras Iso
Ingeniería del Software I
febrero 2.008
3. Departamento de Informática e Ingeniería en Sistemas
INTRODUCCIÓN A LA
INGENIERÍA DEL SOFTWARE
Introducción y Conceptos Básicos
F.Javier Zarazaga Soria
Javier Nogueras Iso
Ingeniería del Software I
4. 4
Intr. y conceptos básicos. Índice
Historia del software
Características especiales del software
Crisis del software e Ingeniería del software
Mitos del software
La industria del software
Sistemas de información
El analista de sistemas
Estandarización del desarrollo del software
Introducción a Métrica 2
5. 5
Breve sinopsis de la historia del SW (I)
1ª generación del
software
???? - 1965
Hardware de propósito
general
Software como algo
añadido
Desarrollo a medida
Ninguna planificación
Orientación por lotes
2ª generación del
software
1965 - 1975
Sistemas multiusuario
Interactividad (Tiempo
Real)
Almacenamiento y
bases de datos
La industria del
software
Software de gran
volumen
Mantenimiento
6. 6
Breve sinopsis de la historia del SW (II)
3ª generación del
software
1975 - 1990
Microprocesadores, PCs
y sistemas distribuidos
Hardware de bajo coste
Industria planetaria
4ª generación del
software
1990 - ????
Tecnologías Orientadas
a Objeto
Interfaces gráficas de
usuario
Sistemas expertos
Proceso paralelo
Tecnologías de
componentes
COTS (Commercial Off-
The-Shelf )
Internet y Servicios
Web
7. 7
Terminología habitual en el software
Bug:
Chinche, bicho, microbio
Fastidiar, molestar
Patch:
Parche, remiendo, zurcido
Desfase de presupuesto
Costes por encima de lo previsto
Retrasos en entregas
No cumplimiento de plazos
Mantenimiento
Rehacer la aplicación añadiendo nuevas
posibilidades y mejorando las existentes
8. 8
Críticas a las aplicaciones Software
Retrasos no previstos
Desbordamiento de costes
Software no acorde con los requisitos
Errores en los programas
Sensibilidad a los errores humanos y a las
averías físicas
Dificultad de puesta en marcha
Dificultad de evolución
Mantenimiento ruinoso
9. 9
Coste de Mantenimiento del Software
1970
Desarrollo
35-40%
Mantenimiento
1980
Desarrollo
40-60%
Mantenimiento
1990
Desarrollo
40-60%
Mantenimiento
10. 10
La complejidad del Software (I)
“La complejidad del software es una
propiedad esencial, no una propiedad
accidental”
11. 11
La complejidad del Software (II)
Motivos que llevan a que el software sea complejo
Complejidad del dominio del problema
Imagen que del dominio del problema tiene el cliente
Imagen que del dominio del problema tiene el
desarrollador
El dominio del problema en si
La dificultad de la gestión del proceso de desarrollo
La flexibilidad del desarrollo software
Necesidad de grandes labores de abstracción
Falta de estándares
Problemas en la caracterización del comportamiento de
sistemas discretos
Gran volumen de variables
Interacciones entre las mismas
12. 12
Peculiaridades del Software
El producto software es enteramente conceptual.
No tiene propiedades físicas como peso, color o
voltaje, y, en consecuencia no está sujeto a leyes
físicas o eléctricas.
Su naturaleza conceptual crea una distancia
intelectual entre el software y el problema que el
software resuelve.
Difícil para una persona que entiende el problema
entender el sistema software que lo resuelve.
Para probar es necesario disponer de un sistema
físico.
El mantenimiento no es sólo una substitución de
componentes.
13. 13
Fallos en Hardware vs fallos en Software
nº de fallos
edad
nº de fallos
edad
nº de fallos
edad
cambios
Software
(real)
Hardware
Software
(teórico)
El software se degrada
con el tiempo
14. 14
Características de un buen software
Corrección.
Completitud.
Concisión.
Robustez
Fiabilidad.
Eficiencia.
Integridad.
Facilidad de uso.
Facilidad de
mantenimiento.
Facilidad de traza.
Generalidad.
Modularidad.
Flexibilidad.
Facilidad de prueba.
Portabilidad.
Facilidad de reuso.
Interoperabilidad.
Facilidad de auditoría.
Exactitud y precisión de
cálculos.
Consistencia.
Estandarización de los
datos.
Independencia del
Hardware.
Legibilidad.
15. 15
Origen de la Ingeniería del Software
Aunque no hay consenso, el origen del
término se atribuye a dos conferencias
organizadas por la OTAN en 1967 y 1968.
Ambas conferencias fueron convocadas para
tratar la llamada crisis del software.
La llamada crisis del software es todavía hoy
un problema no resuelto.
16. 16
Crisis del software (I)
Primera Fase. Los albores (1945-1955)
Programar no es una tarea diferenciada del diseño
de una máquina.
Uso de lenguaje máquina y ensamblador.
Segunda Fase. El florecimiento (1955-1965)
Aparecen multitud de lenguajes.
Era posible hacer de todo.
Tercera Fase. La crisis (1965-1970).
Desarrollo inacabable de grandes programas.
Ineficiencia, errores, coste impredecible.
Nada es posible.
17. 17
Crisis del software (II)
Cuarta Fase. Innovación conceptual (1970-
1980)
Fundamentos de programación.
Verificación de programas.
Metodologías de diseño.
Quinta Fase. El diseño es el problema (1980-
????)
Entornos de programación.
Especificación formal.
Programación automática.
18. 18
¿Qué es la Ingeniería del Software?
El IEEE define:
Ingeniería es la aplicación de un método sistemático,
estructurado y cuantificable a estructuras, máquinas,
productos, sistemas o procesos.
Ingeniería del software es la aplicación de un método
sistemático, estructurado y cuantificable al desarrollo,
operación y mantenimiento de software.
Bauer, 1972
La IS es el establecimiento y uso de sólidos principios
de ingeniería y buenas prácticas de gestión, así como la
evolución de herramientas y métodos aplicables y su
uso cuando sea apropiado para obtener, dentro de las
limitaciones de recursos existentes, software que sea
de alta calidad en un sentido explícitamente definido.
F.L.Bauer. “Software Engineering”, Information Processing, 71, North Holland Publishing Co.,
Amsterdam 1972.
19. 19
Comparación con otras ingenierías
Ingeniería mecánica como buscar un gato
negro en una habitación iluminada.
Ingeniería química como buscar un gato
negro en una habitación oscura.
Ingeniería software como buscar un gato
negro en una habitación oscura donde no
hay ningún gato.
Ingeniería de sistemas como buscar un gato
negro en una habitación oscura donde no
hay gato y alguien dice !!!lo encontré!!!.
20. 20
Desarrollo de Software sin Ingeniería
Existencia de un vacío de información entre la
especificación del producto software y su entrega.
El producto surge espontáneamente después de un
largo periodo de oscuridad
¿Qué pasa si alguien se va a mitad de un proyecto? ¿y
si se va todo un equipo?
Especificación de
Requerimientos
Producto
Software
?
21. 21
Ingeniería del SW - Análisis de problemas
Actividad dirigida a la solución de problemas
Análisis:
Comprender la naturaleza del problema
(descomponerlo)
Problema
Subproblemas
22. 22
Ingeniería del SW - Síntesis de problemas
Síntesis:
Unir las soluciones parciales componiendo una
estructura de mayor tamaño
Solución
Soluciones
parciales
23. 23
Objetivos de la Ingeniería del Software
La ingeniería del software persigue la producción de
sistemas de calidad a bajo coste y a tiempo
Sistemas de calidad
La calidad de un sistema viene definida
por el cumplimiento de los objetivos
establecidos para el sistema
Bajo coste
El coste de un sistema debe
incluir tanto el coste de desarrollo
como el de mantenimiento
A tiempo
En unos plazos preestablecidos y que vienen
garantizados por el establecimiento de una
secuencia de actividades a llevar a cabo
24. 24
Definición de Ingeniería del Software
que ayudan a la producción de un software de alta calidad, con un
determinado presupuesto y antes de una determinada fecha
Técnicas, Metodologías y Herramientas
25. 25
Ingeniería del Software vs Informática
Computer Scientist
Proves theorems about algorithms, designs
languages, defines knowledge representation
schemes
Has infinite time…
Engineer
Develops a solution for an application-specific
problem for a client
Uses computers & languages, tools, techniques
and methods
Software Engineer
Works in multiple application domains
Has only 3 months...
…while changes occurs in requirements and
available technology
26. 26
Ingeniería del Software - Terminología
Técnica (Método):
Procedimiento formal para obtener resultados
utilizando alguna notación bien especificada
Metodología:
Colección de métodos aplicados a lo largo del
ciclo de vida del software y unificados mediante
alguna aproximación filosófica genérica
Herramienta
Instrumento, o sistema automatizado, utilizado
para poner en práctica un método
27. 27
Métodos o Técnicas
Diagramas de
Flujo de Datos
Modelado de datos mediante el uso
del modelo Entidad-Relación
(o Entidad Asociación)
Entrevistas
Modelado del comportamiento
haciendo uso de los diagramas de estado
Técnicas matriciales
Modelado de sistemas
mediante los diagramas
de clases propuestos
por BOOCH
28. 28
Metodologías (I)
SSADM
Metodología pública británica
MERISE
Metodología pública francesa
SUMMIT-D
Metodología de
Coopers & Lybrand
METHOD 1
Metodología de
Andersen Consulting
MÉTRICA 2
Metodología pública española
29. 29
Metodologías (II)
Metodologías estructuradas
Basadas en técnicas estructuradas
Algunos ejemplos:
Gane-Sarson
Yourdon/DeMarco
Métrica 2
Metodologías Orientadas a Objeto
Basadas en técnicas orientadas a objeto
Algunos ejemplos:
OMT
Booch
Métrica 3
31. 31
Mitos del SW. El gestor
Ya hay estándares y procedimientos. ¿No
tiene ya bastante el equipo?
Tenemos las herramientas de desarrollo más
avanzadas porque compramos los
ordenadores más modernos.
Si fallamos en la planificación, añadimos
más gente y sanseacabó.
32. 32
Mitos del SW. El cliente
Una declaración inicial de objetivos es
suficiente para empezar a escribir
programas. Ya detallaremos más adelante.
Los requisitos del proyecto cambian
continuamente, pero los cambios pueden
acomodarse fácilmente porque el software
es flexible.
La labor del desarrollador consiste
ÚNICAMENTE en escribir líneas de código
fuente.
33. 33
Mitos del SW. El desarrollador
Una vez que escribimos el programa y
hacemos que funcione, se acabó el trabajo.
No podemos comprobar la calidad hasta que
se ejecute el programa.
Lo que se entrega al terminar el proyecto es
el programa funcionando
34. 34
La industria del Software
El software es una industria,...
... no es un arte.
35. 35
Importancia de la Ingeniería del Software
La economía de todos los países
desarrollados depende del software,
representando cada vez un mayor porcentaje
de su PIB.
Cada vez son más los sistemas controlados
por software.
Los costes del software llegan, en
ocasiones, a dominar los costes de todo el
sistema.
36. 36
Tipos de productos software
Genéricos. Sistemas autónomos desarrollados por
una organización y puestos en el mercado para
cualquier cliente.
Software a medida (especializado). Sistemas
pensados para un cliente específico y desarrollados
específicamente por alguna organización contratada
a tal efecto.
Sistemas genéricos adaptados a clientes específicos.
La mayor parte del volumen de facturación es de
software genérico (Microsoft), sin embargo el mayor
número de ingenieros se encuentran trabajando en
software a medida o adaptando software genérico
(SAP R3, Meta4).
37. 37
Sistemas de Información (I)
Sistema
Conjunto de componentes que interaccionan entre sí
para lograr un objetivo común. Ejemplos: el sistema
nervioso, el sistema económico.
Un sistema puede estar compuesto por varios niveles de
sistemas, también denominados subsistemas.
Sistemas de Información
Es un sistema cuyo objetivo principal es el
procesamiento de información.
La finalidad de los sistemas de información es procesar
entradas, mantener archivos de datos relacionados con
la organización en la que están enmarcados, y producir
información.
Los principales componentes de un sistema de
información son las personas, los equipos y los
procedimientos.
38. 38
Sistemas de Información (II)
Análisis
Descomposición de un sistema para conocer su
naturaleza, funciones, relaciones y requerimientos.
Análisis de Sistemas
Proceso de clasificación e interpretación de
hechos, diagnóstico de problemas y empleo de la
información para recomendar mejoras al sistema.
Diseño de Sistemas
Proceso de planificar, reemplazar o complementar
un sistema organizacional existente.
El Análisis especifica lo QUÉ el sistema debe
hacer.
El Diseño establece CÓMO alcanzar el objetivo.
39. 39
Cambios generados por los SI (I)
Trabajo inteligente
El ordenador se ocupa de las labores repetitivas y
rutinarias.
Fusión global de empresas
La transformación de información, no de bienes, permite a
la empresa diversificar su área de negocio.
Idea e Información
Antes la base del negocio era el uso del dinero y los
recursos tangibles.
Ahora son las ideas y la información.
Usuarios: trabajadores de la información
La industria de la manufactura representa el 28% de los
sueldos, el resto se alojan en empresas de servicios y
manejo de información.
40. 40
Cambios generados por los SI (II)
Soporte tecnológico al crecimiento de la empresa
Hace 20 años una empresa de distribución generaba 500
facturas año utilizando máquinas de escribir. Actualmente
genera 50.000 con ayuda de ordenadores.
Dependencia legal de los SI
Una caida en la red de comunicaciones forzo la
publicación en BOE de una extensión de plazo para
presentación decñaración de impuestos
41. 41
Los participantes en el juego de los SI (I)
El usuario
heterogéneos
visión muy sesgada de las problemáticas
El administrador
de usuarios - supervisor de los usuarios
de informática - gestor de proyectos
general - de la organización, financieros.
Planificación estratégica.
El cliente
El personal de operaciones
instalaciones
copias de seguridad
mantenimiento de infraestructura
42. 42
Los participantes en el juego de los SI (II)
El auditor
control de calidad y consultor de proceso
El analista de sistemas
es la persona cuyo trabajo consiste en centralizar el
desarrollo del sistema en su conjunto
El diseñador
es la persona que partiendo del análisis de un problema y el
planteamiento de una solución al mismo libre de trabas
tecnológicas, construye el diseño de dicha solución
enmarcandolo dentro de un contexto tecnológico particular
El programador
es la persona encargada de codificar el diseño de la
solución
Analogía con el mundo de la construcción
Analista - Arquitecto, Diseñador - Aparejador, Programador -
Albañil
43. 43
El analista de sistemas
Labores del analista de sistemas
es arqueólogo y escribano
es innovador
es mediador
Separación de papeles
Analista, Analista/Diseñador,
Analista/Diseñador/Programador
Evolución: Programador ... Analista
44. 44
Más terminología (I)
Especificación de requerimientos
Es el proceso de recopilación de las características con
las que deberá contar el software a desarrollar.
Términos relacionados:
Especificación del sistema.
Requisitos de usuario.
Codificación / Implementación
Traducción de las especificaciones de diseño a un
lenguaje de programación determinado.
Prueba / Test
Verificación del funcionamiento requerido del software
Riesgo
Problema que puede surgir en un proyecto afectando a
su correcto desarrollo.
Los riesgos deberían estar identificados y se debería
determinar estrategias que permitan mitigarlos.
45. 45
Ejemplos de riesgos
Tecnología desconocida (ejemplos: lenguaje
de programación no conocido, nuevo
hardware, etc.).
Poca experiencia del equipo de desarrollo.
Problema mal descrito y/o modificaciones en
la descripción del problema.
Retraso en algún determinado proveedor.
Problemas en módulos que sean cuellos de
botella en el desarrollo.
46. 46
Más terminología (II)
Integración
Unión de los diferentes componentes del software
Mantenimiento
Modificaciones que se realizan sobre el software una vez
que este se ha entregado al cliente. El motivo de estas
modificaciones puede ser la corrección de defectos
detectados en su funcionamiento, o la ampliación o
modificación de la funcionalidad a petición del cliente.
Contrato o acuerdo del proyecto
Acuerdo entre desarrollador y cliente en el que se especifica
QUÉ es lo que se va a entregar como resultado del proyecto,
CUÁNTO dinero se va a pagar por ello y CUÁNDO se realizara
esta entrega. Debe estar firmado por las dos partes.
Transferencia al cliente
Proceso por el cual se entrega al cliente el resultado del
proyecto y éste comprueba que el resultado es el que se
había acordado.
47. 47
Más terminología (III)
Acoplamiento
Medio de evaluar la relación entre elementos de un
sistema.
Es la medida del grado de interdependencia entre
los elementos de un sistema.
Cohesión
Indica el grado de conexión funcional entre
elementos.
Es una medida de la fuerza de la relación funcional
entre elementos de un sistema.
48. 48
Estandarización del desarrollo del SW
ESA
Agencia Espacial
Europea
IEEE
The Institute of
Electrical and
Electronics Engineers, Inc
MIL
Departamento de defensa
USA
Objetivo: Garantizar la calidad,
presupuesto y plazos de
los proyectos software
Estándares de
Ingeniería del Software
49. 49
IEEE - Estándares para Ingeniería del SW
IEEE 1058 - Standard for Software Project Management
Plans
IEEE 828 - Standard for Software Configuration
Management Plans
Otros estándares de interés:
IEEE 610 - Glossary of Software Engineering Terminology
IEEE 830 - Guide for Software Requirements Specification
IEEE 1002 - Standard Taxonomy for Software Engineering
Standards
IEEE 1074 - Standard for Developing Software Life Cycle
Processes
IEEE 1028- Standard for Software Reviews and Audits
Los estándares son revisados y actualizados cada 5 años
Reconocidos y aceptados por gran número de
organismos y empresas
50. 50
MIL DOD - STD - 2167A
Establece los requerimientos del
Departamento de Defensa USA para el ciclo
de vida del software
Actividades de desarrollo del software
Análisis y Diseño de requerimientos del sistema
Análisis de los requerimientos software
Diseño preliminar
Diseño detallado
Codificación y testeo de unidades
Integración y tests de CSC (Computer Software
Component, se compone de CSC’s y unidades)
Test de CSCI (Computer Software Configuration
Item)
Integración del sistema y tests
51. 51
Estándares de la ESA
Conjunto de estándares definidos por la Agencia Espacial Europea
para la especificación , desarrollo y mantenimiento del software
Software Engineering Standards
Definen las obligaciones y recomendaciones
prácticas para la especificación, desarrollo y
mantenimiento del software
Software Engineering Guides
Discuten su aplicación práctica en mayor
nivel de detalle, y describen los métodos y
herramientas para llevarlos a cabo. También
contienen información para la redacción de los
documentos requeridos por los estándares
52. 52
Estructura de los estándares y guías ESA
Operations and
Maintenance Phase Guide
Software Project
Management Guide
Software
Engineering
Standards
Software Configuration
Management Guide
Software Verification
and Validation Guide
Software Quality
Assurance Guide
User Requirements
Definition Phase Guide
Software Requirements
Definition Phase Guide
Architectural Design
Phase Guide
Detail Design and
Production Phase Guide
Transfer Phase
Guide
Product Standards Procedure Standards
53. 53
Otros estándares
ISO (International Organization for Standardization)
OSI (Open System Interconnection)
EDI (Electronic Data Interchange)
ISO 9001 (Estandard para el desarrollo de software)
CCITT (International Consultative Committee on
Telephony and Telegraphy)
Compuesto por compañías telefónicas de todo el mundo
X.25 estd. de comunicaciones para servicios del nivel de red
ANSI (American National Standard Institute)
Representante oficial de USA en ISO y CCITT
ASCII
OMG (Object Management Group): Comité que busca la
armonización de los fabricantes en dos líneas, la
terminología en la orientación a objeto, y la
estandarización de interfaces
CORBA (Common Object Request Broker Architecture)
54. 54
Introducción Métrica 2.1 (I)
Metodología de Planificación y Desarrollo de
Sistemas Informáticos
Promovida por el Consejo Superior de Informática
(órgano encargado de elaborar y desarrollar la
política informática del Gobierno)
Objetivos:
Crear un entorno que permita al equipo de trabajo construir
Sistemas, que:
- Den SOLUCIONES a los objetivos considerados prioritarios en la Administración.
- Se desarrollen CUANDO EL USUARIO LOS NECESITE y
DE ACUERDO A LOS PRESUPUESTOS Y DURACIÓN ESTIMADOS
- Se MANTENGAN FÁCILMENTE para soportar los cambios futuros en la
organización
55. 55
Introducción Métrica 2.1 (II)
Métrica versión 2 ofrece un marco de trabajo en el
que se define:
Una estructura de proyecto que sirva de guía al equipo
de trabajo e involucre a los usuarios en su desarrollo y
en sus puntos decisivos.
Un conjunto de productos finales a desarrollar.
Un conjunto de técnicas para obtener los productos
finales.
Las diferentes responsabilidades y funciones de los
miembros del equipo de proyecto y de los usuarios.
Métrica versión 3
Basada en técnicas Orientadas a Objetos
Ya está operativa
57. Departamento de Informática e Ingeniería en Sistemas
INTRODUCCIÓN A LA
INGENIERÍA DEL SOFTWARE
El Ciclo de Vida
F.Javier Zarazaga Soria
Javier Nogueras Iso
Ingeniería del Software I
58. 58
Ciclo de vida del software. Índice
Introducción
Fases, Tareas y Actividades
Ciclo de Vida de un producto Software
Ciclo de Vida en Cascada Clásico
Ciclo de Vida en V
Ciclo de Vida en Cascada Mejorado
Ciclo de Vida con Prototipado
Modelo Incremental
Ciclo de Vida en Espiral
Estándares para el desarrollo de Ciclos de
Vida
59. 59
Infancia
Introducción al ciclo de vida
Madurez
El desarrollo del software atraviesa una sucesión de estados
(actividades de desarrollo del software)
Ciclo de
Desarrollo del Software
Fase deRetirada o Sustitución
Fase Operativa del
producto Software
Jubilación
60. 60
Sucesión de pasos a través de los cuales el producto software va progresando.
Estos pasos abarcan desde el planteamiento del problema a resolver mediante el
producto software, hasta la retirada de dicho producto una vez que ha finalizado
su vida operativa
Ciclo de vida. Terminología I
Ciclo de Vida de un Producto Software
61. 61
Ciclo de vida. Terminología II
Proyecto
Fase Fase Fase
Tarea Tarea Tarea
Función
Función
Actividades del Producto
Actividades del
Proceso o de
Gestión
62. 62
Ciclo de vida. Terminología III
Fase
Mayor unidad de trabajo
Finalizan con los hitos más
importantes del proyecto
Ejemplos:
Definición de los Requerimientos de
usuario
Diseño Arquitectural
Tarea
Menor unidad de trabajo sujeta a gestión
Suficientemente pequeña para una
adecuada planificación y seguimiento
Suficientemente grande para permitir
micro gestión
Ejemplos:
Escribir el manual de usuario
Test de subsistemas
Función
Actividad o conjunto de actividades que abarcan la duración del proyecto
Ejemplos:
Gestión de Configuraciones
Gestión del Proyecto
En IEEE-1074 -> Procesos Integrales
63. 63
Requerimientos
Ciclo de Vida en Cascada Clásico (I)
Especificación
Diseño
Implementación
Tests de
Unidades
Integración y
Tests del Sistema
Cambio de
Requerimientos
Modo Operacional
Retirada
Desarrollo
Mantenimiento
64. 64
Ciclo de Vida en Cascada Clásico (II)
Ventajas:
Fuerza a una aproximación disciplinada fruto de su
surgimiento a partir del ciclo convencional de una
ingeniería
Sencillo de implantar y gestionar (es el preferido por los
gestores de proyectos)
Problemática:
Es linear y el desarrollo del software no lo es
El cliente debe tener paciencia (no ve resultados hasta el
final)
Diferencias en la interpretación de los requerimientos
entre cliente y desarrollador
Los proyectos raramente siguen el flujo secuencial que
propone el modelo (imposibilidad de actividades en
paralelo)
Es difícil para el cliente establecer al principio todos los
requisitos de forma explícita
65. 65
especif.
arquitect.
módul.1
pru. integ.
pru. acep.
oferta manten.
Ciclo de Vida en V
Ventajas:
Supone una mejora respecto al modelo en
cascada, eliminando parte de la secuencialidad
Problemas:
Prácticamente los mismos que los del modelo en
cascada
66. 66
Ciclo de Vida en Cascada Mejorado (I)
Requerimientos
Verificación
Especificación
Verificación
Planificación
Verificación
Diseño
Verificación
Implementación
Test
Integración
Test
Cambio de
Requerimientos
Verificación
Modo Operacional
Retirada
Desarrollo
Mantenimiento
67. 67
Ciclo de Vida en Cascada Mejorado (II)
Mejoras:
Estipula la documentación que debe acompañar cada fase
y los requerimientos que todos los productos de cada una
de las fases deben cumplir
En los hitos que finalizan cada fase se realiza la
aprobación de todos los productos de esa fase, incluyendo
los documentos
El testing es inherente a cada una de las fases del modelo
y no se trata como una fase más del mismo a ser realizada
una vez que se ha construido el producto
Todos los cambios que se produzcan en las operaciones de
mantenimiento deben ser reflejados en los documentos de
las fases a las que afecten
Problemática:
Modelo guiado por la documentación (los documentos son
los hilos conductores del modelo). Esto puede producir
diferencias en la interpretación de los mismos entre
cliente y desarrollador
68. 68
Ciclo de Vida con Prototipado (I)
Recolección y
refinamiento de
requisitos
Diseño
rápido
Construcción
del prototipo
Evaluación del
prototipo por el
cliente
Refinamiento
del prototipo
Producto de
ingeniería
Comienzo
Parada
Objetivo:
Obtener rápidamente un prototipo
de la aplicación que permitan al
cliente interactuar con ella con
el fin de detectar deficiencias en
las especificaciones
Construimos un rápido boceto de
la aplicación
69. 69
Ciclo de Vida con Prototipado (II)
Ventajas
Mejora la comunicación analista - cliente
Mejor identificación de los requerimientos del
cliente
Satisface la curiosidad del cliente (en seguida
puede ver cosas)
Problemas:
Identificación del prototipo con el producto final
Prototipo no reaprovechable
Posibles asumpciones técnicas inapropiadas con
el fin de prototipar más rápidamente
70. 70
Diseño Arquitectural
Verificación
Modelo Incremental (I)
Requerimientos
Verificación
Especificación
Verificación
Planificación
Verificación
Para cada módulo:
Realizar el diseño detallado,
implementación, integración
y test. Transferir al cliente
Modo Operacional
Retirada
Desarrollo
Mantenimiento
“Software is built, not written” [Schach 96]
Propone la construcción del software paso
a paso: realización de software igual a una
ingeniería incremental
71. 71
Modelo Incremental (II)
Ventajas:
Satisface la curiosidad del cliente
El cliente puede ir “viendo” la aplicación real, no un
prototipo
Muy ligado al proceso de sustitución de un sistema por
otro
Posibilidad de detener el proyecto sin perder todo lo
realizado
Mayor flexibilidad ante cambios en los requerimientos
durante el desarrollo
Problemática:
Cada nuevo módulo se debe integrar en el sistema sin
afectar a lo que ya está funcionando (datos, interfaces,...)
El diseño y desarrollo de los diferentes módulos debe ser
coherente entre sí
Gran tendencia a la degeneración del control del proyecto
ante la imposibilidad de verlo como un todo
72. 72
El Ciclo de Vida en Espiral (I)
Determinación de
objetivos, alternativas y
restricciones
Evaluación de las
alternativas identificadas,
solucionando riesgos
Análisis
de
riesgos
Análisis de
riesgos
Análisis de
riesgos
Análisis de
riesgos
Proto-
tipo 1
Prototipo 2 Prototipo 3
Prototipo
operacional
Simulaciones, modelos, medidas
REVISIÓN
Plan de requerimientos
Plan del ciclo de vida
Plan de desarrollo
Plan de integración y test
Siguiente fase del plan
Desarrollo y verificación
del siguiente nivel del producto
Concepto de
operación
Requerimientos
SW
Validación de
requerimientos
Diseño del
producto
Diseño de la
verificación y
validación
Diseño
detallado
Codifi-
cación
Test de
unidades
Test de
integración
Puesta en
servicio
Test de
aceptación
Propuesto por Boehm, 1988
73. 73
El Ciclo de Vida en Espiral (II)
Identificación de Riesgos
Asignar prioridades a los riesgos
Desarrollar una serie de prototipos para los
riesgos identificados comenzando con el
más prioritario
Hacer uso del modelo en cascada para cada
fase de desarrollo
Si los riesgos han sido resueltos
satisfactoriamente, evaluar los resultados
de la fase y planificar la siguiente
Si alguno de los riesgos no puede ser
resuelto, abandonar el proyecto
inmediatamente
74. 74
El Ciclo de Vida en Espiral (III)
Ventajas:
Inclusión de de análisis de riesgos a lo largo del
proceso
Desarrollo de software = proceso evolutivo
Uso de prototipos, uso de simulaciones
El cliente ve evolucionar el proyecto
Tratamiento del mantenimiento al mismo nivel que
el desarrollo (se trata de otra espiral más)
Problemas:
Difícil de convencer al cliente de su utilidad (hay
que realizar muchos tests y esto cuesta dinero)
Implantación muy compleja
Necesita gran habilidad en la valoración de riesgos
Método muy nuevo
75. 75
IEEE - Std 1074 - 1991
Std 1074-1991
Standard for Developing Software Life Cycle Processes
Alcance
Indica un conjunto de actividades que constituyen los
procesos que son obligatorios para el desarrollo y
mantenimiento del software, tanto por si sólo, como
formando parte de un sistema
No incluye actividades para el desarrollo del hardware,
realización de compras, ...
No recomienda un ciclo de vida específico
Aplicabilidad
Proyectos de desarrollo y mantenimiento de software
Descomponer proyectos grandes en subproyectos,
aplicar el estándar a cada uno de ellos y al conjunto
78. Departamento de Informática e Ingeniería en Sistemas
INTRODUCCIÓN A LA
INGENIERÍA DEL SOFTWARE
Herramientas y Tecnología CASE
F.Javier Zarazaga Soria
Javier Nogueras Iso
Ingeniería del Software I
80. 80
Introducción a las herramientas CASE
CASE: Computer Assisted Software
Engineering
Herramienta CASE
Herramienta de software que automatiza tareas
particulares del ciclo de vida del software.
Dibujado de diagramas.
Prototipado de la interfaz de usuario.
Utilidades para almacenar y obtener informes,
así como consultar toda la información de
desarrollo con la que se cuenta.
Verificación y corrección de especificaciones.
Generación de código.
81. 81
Historia de las herramientas CASE
A principios de los 80
dibujado de diagramas
elaboración de documentación
A mediados de los 80
comprobación automática de errores basada en
especificación de reglas y lenguajes formales
repositorios o diccionarios para almacenar la
información del sistema
Finales 80, principios 90
generación automática de código partiendo de la
especificación del diseño
Actualmente
ingeniería inversa o reingeniería
reutilización
82. 82
Tipos de herramientas CASE
Herramientas de
Ingeniería de la Información.
Manejan datos de negocio, sus relaciones y la forma
en que fluyen entre distintas áreas de la
organización.
planificación y administración de proyectos.
estimación de esfuerzos y coste de desarrollo del
software.
planificación de proyectos.
análisis de riesgos.
control de calidad.
análisis y diseño.
prototipado y simulación.
diseño y desarrollo de interfaces de usuario.
programación.
ingeniería inversa.
Entornos integrados.