TY - BOOK AU - Braude, Eric J. TI - Ingeniería de software: una perspectiva orientada a objetos / SN - 970-15-0851-3 U1 - 005.1 21 PY - 2003/// CY - México, D.F. : PB - Alfaomega, KW - Ingeniería del software KW - Programas para computador KW - Arquitectura de computadores KW - Mantenimiento y reparación N1 - Título original. Software engineering, an object-Oriented perspective; Introducción, 1/ Proceso, 16/ Administración de proyectos, 73/ Análisis de requerimientos I, 135/ Análisis de requerimientos II, 181/ Arquitectura de software, 247/ Diseño detallado, 302/ Implementación de unidades, 335/ Pruebas de unidades, 393/ Integración, verificación y validación del sistema, 432/ Mantenimiento, 479/ acrónimos, 511/ Glosario, 515/ Referencias 519/ Créditos, 523/ Apéndice, 525/ Índice 529/ Contenido, Introducción, 1/ Contexto de la ingeniería de software, 1/ Actividades de la ingeniería de software, 2/ Proceso, 3/ Proyecto, 5/ Personas, 5/ Producto, 6/ Calidad, 7/ Proyecto de equipo, 8/ Comunicación del grupo, 9/ Caso de estudio, panorama, 10/ Introducción al videojuego Encuentro, 11/ Requerimientos para Encuentro, 12/ Diseño de Encuentro, 12/ Pruebas de Encuentro, 13/ Documentación del proyecto Encuentro, 13/ Ejercicios, 14/ Proceso, 16/ Esencial, 17/ Introducción al proceso de ingeniería de software, 17/ Mapa conceptual típico de ingeniería de software, 18/ Perspectiva histórica contemporánea de la ingeniería de software, 19/ La ingeniería de software crece, 19/ Influencia de programación estructurada, y la orientación a objetos, 20/ Reuso y componentes, 21/ Métodos formales, 22/ Posibilidad de uso, 23/ Expectativa para proceso, proyecto, producto y personas, 23/ Artefactos y roles, 24/ Procesos alternativos, 24/ Modelo de proceso en cascada, 24/ Modelo de proceso en espiral, 26/ Modelo de proceso por incrementos, 28/ Proceso de desarrollo de software unificado (USDP), 29/ Trueques del proceso, 31/ Documentación, 33/ Introducción a la documentación, 33/ Estándares de documentación, 34/ Extensión, 38/ Calidad, 38/ Métricas, 39/ Procesamiento de aseguramiento de la calidad, 40/ Técnicas de caja negra y caja blanca, 40/ Introducción a la inspección, 41/ Estándar de IEEE para planes de aseguramiento de la calidad del software, 46/ Verificación y validación, 46/ Estándar de V&V de IEEE 1012-1986, 48/ Administración de documentación, 49/ Introducción a la administración de la documentación, 49/ Consistencia y documentación con una sola fuente, 49/ Administración de la configuración, 51/ Elementos de configuración, 52/ Estándar IEEE 829-1991 para los planes de administración de la configuración del software, 53/ Introducción a la evaluación de capacidades, 54/ Introducción a personal de software process (PSP), 55/ Introducción al proceso de software de equipo (TSP), 56/ Introducción al modelo de madurez de capacidades (CMM), 57/ Resumen, 60/ Ejercicios, 61/ Caso de estudio 1: plan de administración de la configuración del software, 63/ Caso de estudio 2 : plan de aseguramiento de la calidad del software, parte1 de 2, 68/ Administración de proyectos, 73/ Esencial, 74/ Introducción a la administración de proyectos, 74/ Significado de “administración de proyectos” , 74/ Las componentes de la administración de proyectos, 75/ Variables principales: costo, capacidad, calidad y programa, 75/ Mapa conceptual típico de un proceso de administración de un proyecto, 76/ Administración del personal del proyecto, 17/ Profesionalismo, 77/ Importancia de administrar a las personas, 78/ Perspectiva de la empresa, 78/ perspectiva de la administración, 79/ Realización de reuniones, 79/ perspectiva de los ingenieros, 80/ Opciones para la realización de personal, 81/ Administración de la comunicación, 81/ Opciones para la estructura de responsabilidades, 82/ Fuentes de personal para un proyecto, 84/ Identificación y retiro del riesgo, 85/ Definición de “riesgos”, 85/ Panorama de la administración del riesgo, 86/ Identificación de riesgos, 86/ Retiro de riesgos, 87/ Elección de herramientas de desarrollo y soporte, 90/ Métodos del proceso, 90/ Herramientas, 90/ Decisiones de construir o comprar, 90/ Selección del lenguaje, 92/ Documentación, 92/ Servicio de apoyo, 92/ Creación de la calendarización: planeación de alto nivel, 92/ Extensión, 94/ Integración de aplicaciones heredadas, 94/ Estimación de costos: cálculos preliminares, 96/ Introducción, 96/ Estimación de líneas de código sin el proceso de puntos de la función, 98/ Puntos de función y líneas de código, 100/ Conversación de puntos de función en líneas de código, 102/ Otro ejemplo de punto de función, 103/ Referencias de puntos de función, 104/ Estimación del esfuerzo y la duración a partir de las líneas de código, 105/ Proceso de software en equipo, 107/ Plan e administración del proyecto de software, 108/ Calidad en la administración del proyecto, 110/ Métricas del proceso, 110/ Introducción a la métrica del proceso, 110/ Ejemplo de métricas del proceso, 110/ IEEE 739-1989 PAPS: parte 2, 112/ Mejoras al proceso y el modelo de madurez de la capacidad, 114/ Mejora al proceso usado en una organización, 114/ Mejora al proceso para un proyecto en marcha, 114/ Varias herramientas y técnicas para la administración de proyectos, 116/ Equipos remotos e internacionales, 116/ Programación extrema, 116/ Toma de decisiones con prioridades urgentes, 117/ Resumen del proceso de administración de proyectos, 118/ Guía para proyectos: plan de administración de proyectos para el caso de estudio Encuentro, 119/ Preparación para la reunión de planeación del proyecto, 119/ Reunión inicial de planeación del proyecto, 120/ Terminación del plan de administración del proyecto, 120/ Ejercicios, 121/ Caso de estudio 1 : plan de administración del proyecto para el videojuego Encuentro, 123/ Caso de estudio 2: plan de aseguramiento de la calidad del software, parte 2 de 2, 131/ Análisis de requerimientos I, 135/ Introducción al análisis de requerimiento, 136/ Significado de análisis de requerimientos, 136/ Requerimiento C y requerimiento D, 137/ Porque deben escribirse los requerimientos, 137/ Mapa conceptual típico del proceso de análisis de requerimientos, 139/ Retos y beneficios de análisis de requerimientos, 140/ interacción con el cliente, 141/ Fuentes de requerimientos, 141/ Identificación de interesados, 142/ Ejemplos de deseos de los clientes, 142/ Proceso de entrevista y documentación, 144/ Descripción de los requerimientos C (o del cliente), 145/ Concepto de operaciones, 145/ Caos de uso, 145/ Diagrama del flujo de datos para la comunicación con el cliente, 148/ Diagrama de transición de estados para comunicación con el cliente, 149/ Diseño preliminar de interfaces de usuario y otras, 151/ Pass para desarrollar interfaces de usuario, 151/ Ejemplos de requerimientos preliminares para el caso de estudio, 158/ Otras interfaces, 158/ Resumen y guía para expresar los requerimientos C, 159/ Uso de metodologías, herramientas e internet para los requerimientos C, 160/ Prototipos rápidos, estudios de factibilidad y pruebas de concepto, 161/ Prototipos rápidos, 161/ Estudios de factibilidad, 164/ Actualización del proyecto para reflejar análisis de requerimiento C, 165/ Requerimiento C y escalas del proyecto, 165/ Efecto del análisis de requerimiento C en el plan del proyecto, 165/ Tendencias futuras y resumen de requerimiento C, 166/ Tendencias futuras, 166/ Resumen, 166/ Guía para el proyecto: requerimiento C para el caso de estudio Encuentro, 168/ Preparación, 168/ Entrevista con el cliente, 169/ Descripción de la especificación de requerimiento de software, 170/ Seguimiento, 171/ Métricas y posmortem, 171/ Ejercicios, 171/ Caso de estudio: Especificación de requerimiento de software (ERS) para el juego de video Encuentro, parte 1 de 2, 174/ Análisis de requerimientos II, 181/ Esencial, 182/ Introducción a los requerimientos específicos (D), 182/ Significado de los requerimientos específicos (D), 182/ Mapa conceptual típico de análisis de requerimientos D, 183/ Tipos de requerimientos D, 184/ Requerimientos funcionales, 184/ Requerimientos no funcionales: requerimientos de desempeño, 185/ Requerimientos no funcionales: confiabilidad y disponibilidad, 185/ Requerimiento no funcionales: manejo de errores, 185/ Requerimientos no funcionales: requerimientos de interfaz, 186/ Requerimientos no funcionales: restricciones, 186/ Requerimientos inversos, 187/ Correspondencia de tipos de requerimientos con el ERS estándar IEEE 830-1993, 187/ Propiedades deseadas de los requerimientos D, 187/ Rastreabilidad, 187/ Rastreo de requerimientos funcionales, 187/ Rastreo de requerimientos no funcionales, 190/ Comprobación y no ambigüedad, 191/ Prioridad, 191/ Completos, 194/ Condiciones de error, 194/ Consistencia, 195/ Resumen del proceso de escribir un requerimiento detallado, Diagrama de secuencia, 196/ Organización de los requerimientos D, 200/ Porque es importante la organización de los requerimientos detallados, 200/ Métodos para organizar los requerimientos específicos, 201/ Organización de los requerimientos detallados por caso de uso, 203/ Organización de requerimientos por clase, 203/ identificación de clases, 205/ Sección de la clase correcta para un requerimiento dado, 210/ Clasificación de entidades (instancias), 211/ Liga con la documentación de pruebas, 211/ Extensión, 212/ Calidad de los requerimientos específicos, 212/ Intervención de QA en el análisis de requerimientos D, 212/ Métricas para el análisis de requerimiento D, 213/ Inspección del análisis de requerimientos D, 214/ Ejemplos de requerimiento D no inspeccionados, 214/ Ejemplos de resultados de inspección de los requerimientos D, 215/ Uso de herramientas e internet para el análisis de requerimiento, 217/ Métodos formales para especificación de requerimientos, 219/ Introducción a las especificaciones formales, 219/ Notación matemática seleccionada, 219/ Ejemplos de especificaciones formales, 220/ ¿Cuándo debe usarse la especificación formal?, 224/ Precondiciones y poscondiciones, 225/ Efectos del proceso de requerimiento D sobre los proyectos, 226/ Efectos sobre el PAPS, 225/ Efectos de la gran escala sobre los requerimientos D, 225/ Resumen del proceso de requerimiento D, 226/ Guía para el proyecto: requerimiento D para el caso de estudio Encuentro, 227/ Preparación, 227/ Clasificación de los requerimientos D, 228/ Escritura de los requerimientos D, 228/ Seguimiento: métricas y posmortem, 229/ Ejercicios, 229/ Caso de estudios: especificación de requerimientos de software (ERS) para el video juego Encuentro, parte 2 de 2, 231/Arquitectura de software, 247/ Esencial, 248/ Introducción a ingeniería de sistema y arquitectura de software, 248/ Programa global: ingeniería de sistemas, 248/ Significado de “arquitectura de software”, 250/ Metas de la selección de la arquitectura, 250/ Descomposición, 251/ Extensión, 253/ Modelos, marcos de trabajo y patrones de diseño, 254/ Uso de “modelos”, 254/ Lenguaje modelado unificado, 256/ Marcos de trabajo, 257/ Una clasificación de las arquitecturas, 260/ Patrones de diseño I: introducción, 260/ Componentes, 262/ Arquitecturas alternativas de software y sus modelos de clase, 263/ Arquitecturas de flujo de datos, 263/ Componentes independientes, 266/ Arquitectura cliente-servidor y patrones de diseño Apariencia, 266/ Arquitectura de procesadores de comunicación paralelos, 268/ Patrón de diseño del observador, 269/ Arquitecturas de sistemas por eventos y patrón de diseño de estado, 270/ Máquinas virtuales, 272/ Arquitecturas de almacenamiento, 276/ “Visita” a los miembros de un almacenamiento con el patrón de diseño Iterador, 277/ Arquitecturas de capas, Uso de arquitecturas múltiples dentro de una aplicación, 281/ Resumen y procedimientos para seleccionar arquitecturas, 281/ Notación de la arquitectura, estándares y herramientas, 281/ Notación, 281/ Herramientas, 281/ Herramientas a nivel, de arquitectura contra herramientas para diseño detallado e implementación, 281/ Estándares IEEE/ANSI para expresar diseños, 282/ Aseguramiento de la calidad (QA) de la arquitectura elegida, 283/ Calidad en la selección de la arquitectura, 283/Métricas para la selección de la arquitectura, 283/ Elección de una arquitectura entre las alternativas, 285/ Verificación de arquitecturas con caso de uso, 287/ Inspección de la selección de arquitectura, 288/ Efectos de la selección de arquitecturas, 288/ Efectos de la selección de arquitectura sobre el PAPS, 288/ Resumen, 289/ Guía para el proyecto: arquitectura del caso estudio Encuentro, 290/ Preparación, 290/ Selección de arquitecturas, 290/ Junta de equipo (“Revisión del diseño preliminar”), 292/ Refinación de la arquitectura, 292/ Documentación de la arquitectura, 292/ Ejercicios, 293/ Caso de estudio: documento de diseño de software, parte 1 de 2, 294/ Marco de trabajo de la arquitectura del juego de personajes, 294/ Arquitectura del juego de personajes Encuentro parte 1 de 2 del documento de diseño de software, 296/ Diseño detallado, 302/ Esencial, 303/ Introducción al diseño detallado, 303/ Significado de “diseño detallado”, 303/ Relación entre casos de uso, arquitectura y diseño detallado, 303/ Mapa conceptual típico del proceso de “diseño detallado”, 304/ diseño en el proceso de desarrollo unificado, 305/ diseño contra interfaces, 308/ Reuso de componentes, 308/ Diagrama de secuencia y flujo de datos para el diseño detallado, 309/ Diagrama de secuencias detallados, 309/ Diagramas de flujo de datos detallados, 311/ especificación de clases y funciones, 312/ Invariantes de clase, 314/ Invariantes, precondiciones y poscondiciones de funciones, 314/ Especificación de algoritmos, 315/ Diagrama de flujo, 315/ Un ejemplo de diagrama de flujo, 315/ Seudocódigo, 317/ Cuando usar diagrama de flujo u seudocódigo, 318/ Extensión, 319/ Patrones de diseño II,: técnicas del diseño detallado, 319/ Patrones creativos para el diseño detallado, 320/ Solitario, 320/ Fabrica, 320/ Prototipo, 321/ Fabrica y constructor abstracto, 322/ patrones estructurales para diseño detallado, 325/ Compuesto y decorador, 325/ Apariencia, 326/ Adaptador, 326/ Peso mosca, 328/ Proxy, 328/ Patrones de comportamiento para diseño detallado, 329/ Interprete, observador y estado, 329/ Iterador, 329/ Mediador, 330/ Librería de plantillas estándar, 331/ Estándares, notación y herramientas para diseño detallado, 332/ estándar IEEE 890 para el diseño detallado, 332/ Lenguaje de modelo unificado (UML) para modelos de objetos detallados, 333/ Herramientas basadas en el código fuente: Javadoc, 333/ Efectos del diseño detallado en los proyectos, 335/ Estimación de tamaño a partir de diseños detallados, 336/ Calidad en los diseños detallados, 338/ Cualidades y métricas para el diseño detallados, 340/ Inspección del diseño detallado, 340/ Clasificación de efectos, 340/ Ejemplos de inspección de requerimiento detallados, 341/ Resumen, 342/ Ejercicios, 343/ Caso de estudio, 344/ Diseño detallado para el marco de trabajo del juego de personajes (partes restantes del documento de diseño de software), 344/ Diseño detallado de Encuentro (partes restantes del documento de diseño de software), 346/ Implementación de unidades, 355/ Introducción a la implementación, 356/ Definición de “implementación de unidades”, 356/ Metas de la implementación, 356/ Mapa conceptual típico del proceso de implementación de unidades, 356/ Implementación en el proceso de unificado de desarrollo de software, 358/ Lenguaje de programación, 360/ Programación y estilo, 361/ Principios generales de una implementación acertada, 362/ Indicadores y referencia, 363/ Funciones, 363/ Excepciones, 363/ Manejo de errores, 364/ otros puntos de la práctica, 367/ Estándares de programación, 367/ Convenciones de nombres,, ejemplos de Java, 368/ Documentación de atributos, 369/ Constantes, 369/ Inicialización de atributos, 370/ Programas con demostración formal de que son correctos, 370/ Herramientas y entornos para programación, 375/ La calidad en la implementación, 376/ Métricas estándar para el código fuente, 379/ Inspección de código, 379/ Documentación personal de software, 381/ Resumen del proceso de implementación, 382/ Ejercicios, 382/ Caso de estudio, 384/ Actualización de PAQS, 384/ Actualización del apéndice PACS: modelo de implementación, 385/ Documentación personal del software, parte 1 de 2, 385/ Código fuente (sin código prueba): personajes Encuentro, 386/ Pruebas de unidades, 393/ Introducción a las pruebas de unidades, 394/ Metas de las pruebas, 394/ Significado de “pruebas de unidades”, 395/ Mapa conceptual típico de las pruebas de unidades, 396/ Tipos de pruebas, 397/ Pruebas con caja negra, caja blanca y caja gris, 397/ Particiones equivalentes para pruebas de caja negra, 398/ Análisis del valor de la frontera para pruebas de caja negra, 399/ Cobertura de la declaración para pruebas de caja blanca, 400/ Cobertura de decisiones para pruebas de caja blanca, 400/ Pruebas basadas en afirmaciones, 402/ Limite de la verificación de afirmaciones automáticas, 403/ Aleatoriedad en las pruebas, 404/ Planeación de pruebas de unidades, 405/ Lista de verificación y ejemplos para las pruebas de métodos, 407/ Prueba de unidades de métodos, 407/ Ejemplo de prueba de métodos, 408/ Prueba de los métodos completos de una clase, 412/ Lista de verificación y ejemplo para pruebas de clase, 415/ Ejemplo de prueba de combinación de métodos, 415/ Pruebas orientadas a atributos, 416/ Prueba de invariantes de clase, 416/ Pruebas basadas en los estados, 417/ Resumen, 418/ Ejercicios, 419/ Caso de estudio: personajes Encuentro, documentación de personal de software (DPS) en Java, parte 2 de 2, 421/ Integración, verificación y validación del sistema, 432/ Introducción, 433/ Significado de “integración”, 433/ Verificación, validación y pruebas del sistema, 434/ Proceso de integración, 437/ Descripción de “integración”, 437/ Mapa conceptual típico del proceso de integración y pruebas del sistema, 441/ Proceso de integración, 443/ Pruebas de integración, 443/ Pruebas de desarrollo y artefactos, 447/ Prueba de interfaces, 448/ Prueba del sistema, 449/ Prueba de utilidad, 451/ Prueba para los requerimientos de interfaz de usuario, 451/ Medidas de utilidad, 451/ Prueba de regresión, 452/ Prueba de aceptación, 452/ Pruebas de instalación, 452/ Documentación de integración y pruebas, 453/ Estándares para la documentación de pruebas, 453/ Organización de la documentación de integración de pruebas, 454/ Iteración de transición, 455/ Versiones alfa y beta, 456/ Mapa conceptual de las Iteraciones de transición, 457/ Calidad de integración, verificación y validación, 458/ Metas de calidad, 458/ Métricas para integración y pruebas del sistema, 458/ Inspección de integración y pruebas del sistema, 459/ Participación de aseguramiento de calidad (QA) en la interpretación y pruebas del sistema, 460/ Integración del sistema y el modelo de madurez de capacidades, 460/ Herramientas para integración y pruebas del sistema, 461/ Resumen, 464/ Ejercicios, 464/ Caso de estudio, 466/ PACS: apéndice A. Pan para las bases de integración, 466/ Documentación de pruebas de software para Encuentro, 468/ Mantenimiento, 479/ Introducción, 480/ Significado de “mantenimiento de software” 481/ Aspectos de mantenimiento de software, 481/ Mapa conceptual, típico para establecer el proceso de mantenimiento, 483/ Tipos de mantenimiento de software, 484/ Tecn8icas de mantenimiento, 485/ Análisis del impacto, 485/ Ingeniería inversa, 486/ Reingeniería, 487/ Refactorización, 487/ Aplicaciones heredadas, 488/ Actualización de documentación, 489/ Estándar 1219-1992 de IEEE, 490/ Identificación del problema de mantenimiento, 491/ Análisis del problema de mantenimiento, 491/ Ejemplos de análisis del problema de mantenimiento, 491/ Diseño para una solicitud de mantenimiento, 494/ Implementación de una solicitud de mantenimiento, 494/ Administración de mantenimiento, 469/ Cualidades den mantenimiento, 499/ Métricas de mantenimiento, 499/ Aplicaciones de métricas de mantenimiento, 500/ Posibilidad de mantenimiento, 502/ Resumen, 504/ Ejercicios, 504/ Caso de estudio: mantenimiento de Encuentro, 506/ Acrónimos, 511/ Glosario, 515/ Referencias, 519/ Créditos, 523/ Apéndice, 525/ Índice, 529 ER -