Ingeniería Del Software - Javier8a

Transcription

Ingeniería del softwareUNENFOQUEPRÁCTICOSÉPTIMA EDICIÓNRoger S. Pressman, Ph.D.University of ConnecticutMÉXICO BOGOTÁ BUENOS AIRES CARACAS GUATEMALA MADRIDNUEVA YORK SAN JUAN SANTIAGO SÃO PAULO AUCKLAND LONDRES MILÁNMONTREAL NUEVA DELHI SAN FRANCISCO SINGAPUR ST. LOUIS SIDNEY TORONTO00Pressman(i-xxx)prelim.indd iii2/2/10 11:40:14

Director Higher Education: Miguel Ángel Toledo CastellanosEditor sponsor: Pablo Roig VázquezCoordinadora editorial: Marcela I. Rocha MartínezEditora de desarrollo: María Teresa Zapata TerrazasSupervisor de producción: Zeferino García GarcíaTraductores: Víctor Campos OlguínJavier Enríquez BritoRevisión técnica: Carlos Villegas QuezadaBárbaro Jorge Ferro CastroINGENIERÍA DEL SOFTWARE. UN ENFOQUE PRÁCTICOSéptima ediciónProhibida la reproducción total o parcial de esta obra,por cualquier medio, sin la autorización escrita del editor.EducaciónDERECHOS RESERVADOS 2010, 2005, 2002 respecto a la tercera edición en español porMcGRAW-HILL INTERAMERICANA EDITORES, S.A. DE C.V.A Subsidiary of The McGraw-Hill Companies, Inc.Prolongación Paseo de la Reforma 1015, Torre APiso 17, Colonia Desarrollo Santa Fe,Delegación Álvaro ObregónC.P. 01376, México, D. F.Miembro de la Cámara Nacional de la Industria Editorial Mexicana, Reg. Núm. 736ISBN: 978-607-15-0314-5(ISBN edición anterior: 970-10-5473-3)Traducido de la séptima edición de SOFTWARE ENGINEERING. A PRACTITIONER’S APPROACH.Published by McGraw-Hill, a business unit of The McGraw-Hill Companies, Inc., 1221 Avenue of theAmericas, New York, NY 10020. Copyright 2010 by The McGraw-Hill Companies, Inc. All 3210Impreso en MéxicoPrinted in Mexico00Pressman(i-xxx)prelim.indd iv2/2/10 11:40:14

A CERCADEL AUTORoger S. Pressman es una autoridad internacionalmente reconocida en el mejoramientoRdel proceso del software y en las tecnologías de la ingeniería del mismo. Durante casicuatro décadas ha trabajado como ingeniero de software, gestor, profesor, escritor yconsultor, especializado en temas de ingeniería del software.Como profesional y gestor industrial, el doctor Pressman trabajó en el desarrollo de sistemasCAD/CAM para aplicaciones de ingeniería y fabricación avanzadas. También ha tenido posiciones de responsabilidad en la programación científica y de sistemas.Después de recibir su doctorado en ingeniería por parte de la Universidad de Connecticut,Pressman se dedicó a la academia, donde se convirtió en profesor asociado de la cátedra Bullarden ingeniería de cómputo de la Universidad de Bridgeport, y en director del Centro de Diseño yFabricación Asistidos por Computadora de dicha universidad.En la actualidad, el doctor Pressman es presidente de R. S. Pressman & Associates, Inc., unaempresa de consultoría especializada en métodos y capacitación en ingeniería del software.Trabaja como consultor principal y diseñó y desarrolló Ingeniería del software esencial, un videocurricular completo acerca de ingeniería del software, y Consultor de procesos, un sistema autodirigido para el mejoramiento del proceso de software. Ambos productos los utilizan miles decompañías en todo el mundo. Más recientemente, trabajó en colaboración con EdistaLearning,en India, para desarrollar capacitación abarcadora basada en internet acerca de ingeniería delsoftware.El doctor Pressman ha escrito muchos artículos técnicos, es colaborador regular en revistasperiódicas industriales y autor de siete libros técnicos. Además de Ingeniería del software: unenfoque práctico, es coautor de Web Engineering (McGraw-Hill), uno de los primeros libros enaplicar un conjunto personalizado de principios y prácticas de la ingeniería del software al desarrollo de sistemas y aplicaciones basados en web. También escribió el premiado A Manager’sGuide to Software Engineering (McGraw-Hill); Making Software Engineering Happen (Prenticehall), el primer libro en abordar los problemas administrativos cruciales asociados con el mejoramiento del proceso de software; y Software Shock (Dorset House), un tratamiento que se enfoca en el software y su impacto en los negocios y la sociedad. Pressman ha formado parte delos consejos editoriales de varias publicaciones industriales y durante muchos años fue editorde la columna “Manager” en IEEE Software.Además, es un orador bien conocido, y ha sido el orador principal en muchas conferenciasindustriales importantes. Es miembro de IEEE, y de Tau Beta Pi, Phi Kappa Phi, Eta Kappa Nu yPi Tau Sigma.En el lado personal, Pressman vive en el sur de Florida con su esposa, Bárbara. Atleta de todala vida, sigue siendo un serio jugador de tenis (4.5 en el programa estadounidense de calificaciónde tenis, NTRP) y un golfista con un handicap de un solo dígito. En su tiempo libre escribió dosnovelas, Aymara Bridge y The Puppeteer, y tiene planes para escribir una más.vii00Pressman(i-xxx)prelim.indd vii2/2/10 11:40:14

00Pressman(i-xxx)prelim.indd viii2/2/10 11:40:15

C ONTENIDOC A P ÍT U L O 1PA R TE U NOPA R TE D OSPA R TE TRE SPA R TE CU ATROEl software y la ingeniería de softwareEL PROCESO DEL SOFTWAREBREVE125C A P ÍT U L O 2Modelos del procesoC A P ÍT U L O 3Desarrollo ágil26MODELADO81C A P ÍT U L O 4Principios que guían la prácticaC A P ÍT U L O 5Comprensión de los requerimientosC A P ÍT U L O 6Modelado de los requerimientos: escenarios, información y clases de análisis126C A P ÍT U L O 7Modelado de los requerimientos: flujo, comportamiento, patrones y webapps158C A P ÍT U L O 8Conceptos de diseñoC A P ÍT U L O 9Diseño de la arquitecturaC A P ÍT U L O 1 0Diseño en el nivel de componentesC A P ÍT U L O 1 1Diseño de la interfaz de usuarioC A P ÍT U L O 1 2Diseño basado en patronesC A P ÍT U L O 1 3Diseño de webapps5582101183206234265295317ADMINISTRACIÓN DE LA CALIDAD337C A P ÍT U L O 1 4Conceptos de calidad338C A P ÍT U L O 1 5Técnicas de revisiónC A P ÍT U L O 1 6Aseguramiento de la calidad del softwareC A P ÍT U L O 1 7Estrategias de prueba de softwareC A P ÍT U L O 1 8Prueba de aplicaciones convencionalesC A P ÍT U L O 1 9Prueba de aplicaciones orientadas a objetosC A P ÍT U L O 2 0Prueba de aplicaciones webC A P ÍT U L O 2 1Modelado y verificación formalC A P ÍT U L O 2 2Administración de la configuración del softwareC A P ÍT U L O 2 3Métricas de producto354368383411437453478501526ADMINISTRACIÓN DE PROYECTOS DE SOFTWAREC A P ÍT U L O 2 4Conceptos de administración de proyectoC A P ÍT U L O 2 5Métricas de proceso y de proyectoC A P ÍT U L O 2 6Estimación para proyectos de softwareC A P ÍT U L O 2 7Calendarización del proyectoC A P ÍT U L O 2 8Administración del riesgoC A P ÍT U L O 2 9Mantenimiento y xx)prelim.indd ix2/2/10 11:40:15

xC ON T EN I DO B R EVEPA R TE CINCOTEMAS AVANZADOSC A P ÍT U L O 3 0Mejoramiento del proceso de softwareC A P ÍT U L O 3 1Tendencias emergentes en ingeniería del softwareC A P ÍT U L O 3 2Comentarios finales717A P É ND IC E 1Introducción a UML725A P É ND IC E 2Conceptos orientados a objetoRE F E RE NC IA S751ÍND IC E A NA L ÍT IC O00Pressman(i-xxx)prelim.indd x6756766957437672/2/10 11:40:15

C ONTENIDOPrefacioxxvCAPÍ TU L O 1E L SO F T WA R E Y LA IN G E N IE R ÍA D E SO F T WA R ELa naturaleza del software 21.1.1Definición de software 31.1.2Dominios de aplicación del software1.1.3Software heredado 81.2La naturaleza única de las webapps 91.3Ingeniería de software 101.4El proceso del software 121.5La práctica de la ingeniería de software 151.5.1La esencia de la práctica 151.5.2Principios generales 161.6Mitos del software 181.7Cómo comienza todo 201.8Resumen 21PROBLEMAS Y PUNTOS POR EVALUAR 21LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 2211.1PA R TE U NOE L PROCE S O D E L SO F T WA R ECAPÍ TU L O 2625M O D E LO S D E L P R O C E SO262.1Un modelo general de proceso 272.1.1Definición de actividad estructural 292.1.2Identificación de un conjunto de tareas 292.1.3Patrones del proceso 292.2Evaluación y mejora del proceso 312.3Modelos de proceso prescriptivo 332.3.1Modelo de la cascada 332.3.2Modelos de proceso incremental 352.3.3Modelos de proceso evolutivo 362.3.4Modelos concurrentes 402.3.5Una última palabra acerca de los procesos evolutivos2.4Modelos de proceso especializado 432.4.1Desarrollo basado en componentes 432.4.2El modelo de métodos formales 442.4.3Desarrollo de software orientado a aspectos 442.5El proceso unificado 452.5.1Breve historia 462.5.2Fases del proceso unificado 462.6Modelos del proceso personal y del equipo 482.6.1Proceso personal del software (PPS) 482.6.2Proceso del equipo de software (PES) 492.7Tecnología del proceso 502.8Producto y proceso 512.9Resumen 52PROBLEMAS Y PUNTOS POR EVALUAR 53LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 5442xi00Pressman(i-xxx)prelim.indd xi2/2/10 11:40:15

xiiC ON T EN I DOCAPÍ TU L O 3D E SA R R O LLO Á G IL553.13.23.3¿Qué es la agilidad? 56La agilidad y el costo del cambio 57¿Qué es un proceso ágil? 583.3.1Principios de agilidad 583.3.2La política del desarrollo ágil 593.3.3Factores humanos 603.4Programación extrema (XP) 613.4.1Valores XP 613.4.2El proceso XP 623.4.3XP industrial 653.4.4El debate XP 663.5Otros modelos ágiles de proceso 673.5.1Desarrollo adaptativo de software (DAS) 683.5.2Scrum 693.5.3Método de desarrollo de sistemas dinámicos (MDSD) 713.5.4Cristal 723.5.5Desarrollo impulsado por las características (DIC) 723.5.6Desarrollo esbelto de software (DES) 733.5.7Modelado ágil (MA) 743.5.8El proceso unificado ágil (PUA) 753.6Conjunto de herramientas para el proceso ágil 763.7Resumen 77PROBLEMAS Y PUNTOS POR EVALUAR 78LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 79PA R TE DO SMOD E L AD OCAPÍ TU L O 481PR IN C IP IO S Q UE G UÍA N LA P R Á C T IC A824.14.2Conocimiento de la ingeniería de software 83Principios fundamentales 834.2.1Principios que guían el proceso 844.2.2Principios que guían la práctica 844.3Principios que guían toda actividad estructural 864.3.1Principios de comunicación 864.3.2Principios de planeación 884.3.3Principios de modelado 904.3.4Principios de construcción 944.3.5Principios de despliegue 964.4Resumen 97PROBLEMAS Y PUNTOS POR EVALUAR 98LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 99CAPÍ TU L O 55.15.25.300Pressman(i-xxx)prelim.indd xiiCO M P R E N SIÓ N D E LO S R E Q UE R IM IE N T O SIngeniería de requerimientos 102Establecer las bases 1065.2.1Identificación de los participantes 1065.2.2Reconocer los múltiples puntos de vista 1075.2.3Trabajar hacia la colaboración 1075.2.4Hacer las primeras preguntas 108Indagación de los requerimientos 1085.3.1Recabación de los requerimientos en forma colaborativa5.3.2Despliegue de la función de calidad 1115.3.3Escenarios de uso 1125.3.4Indagación de los productos del trabajo 1121011092/2/10 11:40:15

xiiiC ON T EN I DO5.45.5Desarrollo de casos de uso 113Elaboración del modelo de los requerimientos 1175.5.1Elementos del modelo de requerimientos 1185.5.2Patrones de análisis 1205.6Requerimientos de las negociaciones 1215.7Validación de los requerimientos 1225.8Resumen 123PROBLEMAS Y PUNTOS POR EVALUAR 123LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 124CAPÍ TU L O 6M O D E LA D O D E LO S R E Q UE R IM IE N T O S: E SC E N A R IO S ,IN F O R M A C IÓ N Y C LA SE S D E A N Á LISIS 1 2 66.1Análisis de los requerimientos 1276.1.1Objetivos y filosofía general 1286.1.2Reglas prácticas del análisis 1286.1.3Análisis del dominio 1296.1.4Enfoques del modelado de requerimientos 1306.2Modelado basado en escenarios 1316.2.1Creación de un caso preliminar de uso 1326.2.2Mejora de un caso de uso preliminar 1346.2.3Escritura de un caso de uso formal 1356.3Modelos UML que proporcionan el caso de uso 1376.3.1Desarrollo de un diagrama de actividades 1376.3.2Diagramas de canal (swimlane) 1386.4Conceptos de modelado de datos 1396.4.1Objetos de datos 1396.4.2Atributos de los datos 1406.4.3Relaciones 1416.5Modelado basado en clases 1426.5.1Identificación de las clases de análisis 1436.5.2Especificación de atributos 1456.5.3Definición de las operaciones 1466.5.4Modelado clase-responsabilidad-colaborador (CRC)6.5.5Asociaciones y dependencias 1526.5.6Paquetes de análisis 1546.6Resumen 155PROBLEMAS Y PUNTOS POR EVALUAR 156LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 157CAPÍ TU L O 77.17.27.37.47.500Pressman(i-xxx)prelim.indd xiii148M O D E LA D O D E LO S R E Q UE R IM IE N T O S: F LUJ O ,C O M P O R TA M IE N T O , PAT R O N E S Y WE B A P P S 1 5 8Requerimientos que modelan las estrategias 158Modelado orientado al flujo 1597.2.1Creación de un modelo de flujo de datos 1597.2.2Creación de un modelo de flujo de control 1627.2.3La especificación de control 1627.2.4La especificación del proceso 163Creación de un modelo de comportamiento 1657.3.1Identificar los eventos con el caso de uso 1667.3.2Representaciones de estado 166Patrones para el modelado de requerimientos 1697.4.1Descubrimiento de patrones de análisis 1697.4.2Ejemplo de patrón de requerimientos: Actuador-Sensor 170Modelado de requerimientos para webapps 1747.5.1¿Cuánto análisis es suficiente? 1747.5.2Entrada del modelado de los requerimientos 1742/2/10 11:40:15

xivC ON T EN I DO7.5.37.5.47.5.57.5.67.5.77.5.8ResumenSalida del modelado de los requerimientos 175Modelo del contenido de las webapps 176Modelo de la interacción para webapps 177Modelo funcional para las webapps 178Modelos de configuración para las webapps 179Modelado de la navegación 1807.6180PROBLEMAS Y PUNTOS POR EVALUAR 181LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 182CAPÍ TU L O 8CO N C E P T O S D E D ISE Ñ O1838.18.2Diseño en el contexto de la ingeniería de software 184El proceso de diseño 1868.2.1Lineamientos y atributos de la calidad del software 1868.2.2La evolución del diseño del software 1888.3Conceptos de diseño 1898.3.1Abstracción 1898.3.2Arquitectura 1908.3.3Patrones 1918.3.4División de problemas 1918.3.5Modularidad 1918.3.6Ocultamiento de información 1928.3.7Independencia funcional 1938.3.8Refinamiento 1948.3.9Aspectos 1948.3.10 Rediseño 1958.3.11 Conceptos de diseño orientados a objeto 1958.3.12 Clases de diseño 1968.4El modelo del diseño 1978.4.1Elementos del diseño de datos 1998.4.2Elementos del diseño arquitectónico 1998.4.3Elementos de diseño de la interfaz 1998.4.4Elementos del diseño en el nivel de los componentes 2018.4.5Elementos del diseño del despliegue 2028.5Resumen203PROBLEMAS Y PUNTOS POR EVALUAR 203LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 204CAPÍ TU L O 99.19.29.39.400Pressman(i-xxx)prelim.indd xivD ISE Ñ O D E LA A R Q UIT E C T UR A206Arquitectura del software 2079.1.1¿Qué es la arquitectura? 2079.1.2¿Por qué es importante la arquitectura? 2089.1.3Descripciones arquitectónicas 2089.1.4Decisiones arquitectónicas 209Géneros arquitectónicos 209Estilos arquitectónicos 2119.3.1Breve taxonomía de estilos de arquitectura 2139.3.2Patrones arquitectónicos 2159.3.3Organización y refinamiento 216Diseño arquitectónico 2179.4.1Representación del sistema en contexto 2179.4.2Definición de arquetipos 2189.4.3Refinamiento de la arquitectura hacia los componentes9.4.4Descripción de las instancias del sistema 2202192/2/10 11:40:16

xvC ON T EN I DO9.5Evaluación de los diseños alternativos para la arquitectura 2219.5.1Método de la negociación para analizar la arquitectura9.5.2Complejidad arquitectónica 2249.5.3Lenguajes de descripción arquitectónica 2249.6Mapeo de la arquitectura con el uso del flujo de datos 2259.6.1Mapeo de transformación 2259.6.2Refinamiento del diseño arquitectónico 2319.7Resumen 232PROBLEMAS Y PUNTOS POR EVALUAR 232LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 233CAPÍ TU L O 1 0222D ISE Ñ O E N E L N IV E L D E C O M P O N E N T E S23410.1¿Qué es un componente? 23510.1.1 Una visión orientada a objetos 23510.1.2 La visión tradicional 23610.1.3 Visión relacionada con el proceso 23910.2Diseño de componentes basados en clase 23910.2.1 Principios básicos del diseño 23910.2.2 Lineamientos de diseño en el nivel de componentes 24210.2.3 Cohesión 24310.2.4 Acoplamiento 24410.3Realización del diseño en el nivel de componentes 24610.4Diseño en el nivel de componentes para webapps 25110.4.1 Diseño del contenido en el nivel de componente 25110.4.2 Diseño de las funciones en el nivel de componentes 25210.5Diseño de componentes tradicionales 25210.5.1 Notación gráfica de diseño 25310.5.2 Notación del diseño tabular 25410.5.3 Lenguaje de diseño del programa 25510.6Desarrollo basado en componentes 25610.6.1 Ingeniería del dominio 25710.6.2 Calificación, adaptación y combinación de los componentes10.6.3 Análisis y diseño para la reutilización 25910.6.4 Clasificación y recuperación de componentes 26010.7Resumen 262PROBLEMAS Y PUNTOS POR EVALUAR 263LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 263CAPÍ TU L O 1 111.111.211.311.400Pressman(i-xxx)prelim.indd xvD ISE Ñ O D E LA IN T E R FA Z D E USUA R IO257265Las reglas doradas 26611.1.1 Dejar el control al usuario 26611.1.2 Reducir la necesidad de que el usuario memorice 26711.1.3 Hacer consistente la interfaz 268Análisis y diseño de la interfaz de usuario 26911.2.1 Análisis y modelos del diseño de la interfaz 26911.2.2 El proceso 271Análisis de la interfaz 27211.3.1 Análisis del usuario 27211.3.2 Análisis y modelado de la tarea 27311.3.3 Análisis del contenido de la pantalla 27711.3.4 Análisis del ambiente de trabajo 278Etapas del diseño de la interfaz 27811.4.1 Aplicación de las etapas de diseño de la interfaz 27911.4.2 Patrones de diseño de la interfaz de usuario 28011.4.3 Aspectos del diseño 2812/2/10 11:40:16

xviC ON T EN I DO11.5Diseño de una interfaz para webapps 28411.5.1 Principios y lineamientos del diseño de la interfaz 28511.5.2 Flujo de trabajos para el diseño de la interfaz de webapp11.6Evaluación del diseño 29011.7Resumen 292PROBLEMAS Y PUNTOS POR EVALUAR 293LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 293CAPÍ TU L O 1 2D ISE Ñ O B A SA D O E N PAT R O N E S28929512.1Patrones de diseño 29612.1.1 Clases de patrones 29712.1.2 Estructuras 29912.1.3 Descripción de un patrón 29912.1.4 Lenguajes y repositorios de patrones 30012.2Diseño de software basado en patrones 30112.2.1 El diseño basado en patrones, en contexto 30112.2.2 Pensar en patrones 30212.2.3 Tareas de diseño 30312.2.4 Construcción de una tabla para organizar el patrón12.2.5 Errores comunes en el diseño 30512.3Patrones arquitectónicos 30612.4Patrones de diseño en el nivel de componentes 30812.5Patrones de diseño de la interfaz de usuario 31012.6Patrones de diseño de webapp 31312.6.1 Centrarse en el diseño 31312.6.2 Granularidad del diseño 31412.7Resumen 315PROBLEMAS Y PUNTOS POR EVALUAR 315LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 316CAPÍ TU L O 1 3D ISE Ñ O D E WE B A P P S30531713.113.213.313.413.5Calidad del diseño de webapps 318Metas del diseño 320Pirámide del diseño de webapps 321Diseño de la interfaz de la webapp 321Diseño de la estética 32313.5.1 Aspectos de la distribución 32313.5.2 Aspectos del diseño gráfico 32413.6Diseño del contenido 32413.6.1 Objetos de contenido 32413.6.2 Aspectos de diseño del contenido 32513.7Diseño arquitectónico 32613.7.1 Arquitectura del contenido 32613.7.2 Arquitectura de las webapps 32813.8Diseño de la navegación 32913.8.1 Semántica de la navegación 32913.8.2 Sintaxis de navegación 33013.9Diseño en el nivel de componentes 33113.10 Método de diseño de hipermedios orientado a objetos (MDHOO) 33213.10.1 Diseño conceptual del MDHOO 33213.10.2 Diseño de la navegación para el MDHOO 33313.10.3 Diseño abstracto de la interfaz y su implementación 33313.11 Resumen 334PROBLEMAS Y PUNTOS POR EVALUAR 335LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 33500Pressman(i-xxx)prelim.indd xvi2/2/10 11:40:16

xviiC ON T EN I DOPA R TE T RE SAD MI NI S TRA C IÓ N D E LA C A LID A DCAPÍ TU L O 1 4337C O N C E P T O S D E C A LID A D33814.114.2¿Qué es calidad? 339Calidad del software 34014.2.1 Dimensiones de la calidad de Garvin 34114.2.2 Factores de la calidad de McCall 34214.2.3 Factores de la calidad ISO 9126 34314.2.4 Factores de calidad que se persiguen 34314.2.5 Transición a un punto de vista cuantitativo 34414.3El dilema de la calidad del software 34514.3.1 Software “suficientemente bueno” 34514.3.2 El costo de la calidad 34614.3.3 Riesgos 34814.3.4 Negligencia y responsabilidad 34814.3.5 Calidad y seguridad 34914.3.6 El efecto de las acciones de la administración 34914.4Lograr la calidad del software 35014.4.1 Métodos de la ingeniería de software 35014.4.2 Técnicas de administración de proyectos 35014.4.3 Control de calidad 35114.4.4 Aseguramiento de la calidad 35114.5Resumen 351PROBLEMAS Y PUNTOS POR EVALUAR 352LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 352CAPÍ TU L O 1 5T É C N IC A S D E R E V ISIÓ N35415.115.215.3Efecto de los defectos del software en el costo 355Amplificación y eliminación del defecto 356Métricas de revisión y su empleo 35715.3.1 Análisis de las métricas 35815.3.2 Eficacia del costo de las revisiones 35815.4Revisiones: espectro de formalidad 35915.5Revisiones informales 36115.6Revisiones técnicas formales 36215.6.1 La reunión de revisión 36315.6.2 Reporte y registro de la revisión 36315.6.3 Lineamientos para la revisión 36415.6.4 Revisiones orientadas al muestreo 36515.7Resumen 366PROBLEMAS Y PUNTOS POR EVALUAR 367LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 367CAPÍ TU L O 1 ndd xviiA SE G UR A M IE N T O D E LA C A LID A D D E L SO F T WA R E368Antecedentes 369Elementos de aseguramiento de la calidad del software 370Tareas, metas y métricas del ACS 37116.3.1 Tareas del ACS 37116.3.2 Metas, atributos y métricas 372Enfoques formales al ACS 373Aseguramiento estadístico de la calidad del software 37416.5.1 Ejemplo general 37416.5.2 Seis Sigma para la ingeniería de software 375Confiabilidad del software 37616.6.1 Mediciones de la confiabilidad y disponibilidad 37716.6.2 Seguridad del software 3782/2/10 11:40:16

xviiiC ON T EN I DO16.716.816.9Las normas de calidad ISO 9000El plan de ACS 379Resumen 380PROBLEMAS Y PUNTOS POR EVALUAR 381378LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES381CAPÍ TU L O 1 7E ST R AT E G IA S D E P R UE B A D E SO F T WA R E38317.1Un enfoque estratégico para la prueba de software 38417.1.1 Verificación y validación 38417.1.2 Organización de las pruebas del software 38517.1.3 Estrategia de prueba del software. Visión general 38617.1.4 Criterios para completar las pruebas 38817.2Aspectos estratégicos 38817.3Estrategias de prueba para software convencional 38917.3.1 Prueba de unidad 38917.3.2 Pruebas de integración 39117.4Estrategias de prueba para software orientado a objeto 39717.4.1 Prueba de unidad en el contexto OO 39717.4.2 Prueba de integración en el contexto OO 39817.5Estrategias de prueba para webapps 39817.6Pruebas de validación 39917.6.1 Criterios de pruebas de validación 39917.6.2 Revisión de la configuración 40017.6.3 Pruebas alfa y beta 40017.7Pruebas del sistema 40117.7.1 Pruebas de recuperación 40117.7.2 Pruebas de seguridad 40217.7.3 Pruebas de esfuerzo 40217.7.4 Pruebas de rendimiento 40317.7.5 Pruebas de despliegue 40317.8El arte de la depuración 40417.8.1 El proceso de depuración 40417.8.2 Consideraciones psicológicas 40517.8.3 Estrategias de depuración 40617.8.4 Corrección del error 40817.9Resumen 408PROBLEMAS Y PUNTOS POR EVALUAR 409LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 409CAPÍ TU L O 1 ndd xviiiPR UE B A D E A P LIC A C IO N E S C O N V E N C IO N A LE S411Fundamentos de las pruebas del software 412Visiones interna y externa de las pruebas 413Prueba de caja blanca 414Prueba de ruta básica 41418.4.1 Notación de gráfico o grafo de flujo 41518.4.2 Rutas de programa independientes 41618.4.3 Derivación de casos de prueba 41818.4.4 Matrices de grafo 420Prueba de la estructura de control 42018.5.1 Prueba de condición 42118.5.2 Prueba de flujo de datos 42118.5.3 Prueba de bucle 421Pruebas de caja negra 42318.6.1 Métodos de prueba basados en gráficos 42318.6.2 Partición de equivalencia 4252/2/10 11:40:16

xixC ON T EN I DO18.6.3 Análisis de valor de frontera 42518.6.4 Prueba de arreglo ortogonal 42618.7Prueba basada en modelo 42918.8Prueba para entornos, arquitecturas y aplicaciones especializados18.8.1 Pruebas de interfaces gráficas de usuario 43018.8.2 Prueba de arquitecturas cliente-servidor 43018.8.3 Documentación de prueba y centros de ayuda 43118.8.4 Prueba para sistemas de tiempo real 43218.9Patrones para pruebas de software 43318.10 Resumen 434PROBLEMAS Y PUNTOS POR EVALUAR 435LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 436CAPÍ TU L O 1 9429P R UE B A D E A P LIC A C IO N E S O R IE N TA D A S A O B J E T O SAmpliación de la definición de las pruebas 438Modelos de prueba AOO y DOO 43919.2.1 Exactitud de los modelos AOO y DOO 43919.2.2 Consistencia de los modelos orientados a objetos 43919.3Estrategias de pruebas orientadas a objetos 44119.3.1 Prueba de unidad en el contexto OO 44119.3.2 Prueba de integración en el contexto OO 44219.3.3 Prueba de validación en un contexto OO 44219.4Métodos de prueba orientada a objetos 44219.4.1 Implicaciones del diseño de casos de prueba de los conceptos OO 44319.4.2 Aplicabilidad de los métodos convencionales de diseño de casos de prueba19.4.3 Prueba basada en fallo 44419.4.4 Casos de prueba y jerarquía de clase 44419.4.5 Diseño de pruebas basadas en escenario 44519.4.6 Pruebas de las estructuras superficial y profunda 44619.5Métodos de prueba aplicables en el nivel clase 44719.5.1 Prueba aleatoria para clases OO 44719.5.2 Prueba de partición en el nivel de clase 44819.6Diseño de casos de prueba interclase 44819.6.1 Prueba de clase múltiple 44919.6.2 Pruebas derivadas a partir de modelos de comportamiento 45019.7Resumen 451PROBLEMAS Y PUNTOS POR EVALUAR 451LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 45243719.119.2CAPÍ TU L O 2 020.120.220.320.420.500Pressman(i-xxx)prelim.indd xixP R UE B A D E A P LIC A C IO N E S WE B443453Conceptos de pruebas para aplicaciones web 45320.1.1 Dimensiones de calidad 45420.1.2 Errores dentro de un entorno de webapp 45520.1.3 Estrategia de las pruebas 45520.1.4 Planificación de pruebas 456Un panorama del proceso de prueba 456Prueba de contenido 45720.3.1 Objetivos de la prueba de contenido 45720.3.2 Prueba de base de datos 458Prueba de interfaz de usuario 46020.4.1 Estrategia de prueba de interfaz 46020.4.2 Prueba de mecanismos de interfaz 46120.4.3 Prueba de la semántica de la interfaz 46320.4.4 Pruebas de usabilidad 46320.4.5 Pruebas de compatibilidad 465Prueba en el nivel de componente 4662/2/10 11:40:16

xxC ON T EN I DO20.6Prueba de navegación 46720.6.1 Prueba de sintaxis de navegación 46720.6.2 Prueba de la semántica de navegación 46820.7Prueba de configuración 46920.7.1 Conflictos en el lado servidor 46920.7.2 Conflictos en el lado cliente 47020.8Prueba de seguridad 47020.9Prueba de rendimiento 47120.9.1 Objetivos de la prueba de rendimiento 47220.9.2 Prueba de carga 47220.9.3 Prueba de esfuerzo 47320.10 Resumen 475PROBLEMAS Y PUNTOS POR EVALUAR 475LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 476CAPÍ TU L O 2 1M O D E LA D O Y V E R IF IC A C IÓ N F O R M A LEstrategia de cuarto limpio 479Especificación funcional 48021.2.1 Especificación de caja negra 48221.2.2 Especificación de caja de estado 48221.2.3 Especificación de caja clara 48321.3Diseño de cuarto limpio 48321.3.1 Refinamiento de diseño 48321.3.2 Verificación de diseño 48421.4Pruebas de cuarto limpio 48521.4.1 Pruebas de uso estadístico 48621.4.2 Certificación 48721.5Conceptos de métodos formales 48721.6Aplicación de notación matemática para especificación formal21.7Lenguajes de especificación formal 49221.7.1 Lenguaje de restricción de objeto (OCL) 49221.7.2 El lenguaje de especificación Z 49521.8Resumen 498PROBLEMAS Y PUNTOS POR EVALUAR 499LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 50047821.121.2CAPÍ TU L O 2 222.122.222.322.400Pressman(i-xxx)prelim.indd xx490A D M IN IST R A C IÓ N D E LA C O N F IG UR A C IÓ N D E L SO F T WA RE501Administración de la configuración del software 50222.1.1 Un escenario ACS 50222.1.2 Elementos de un sistema de administración de la configuración 50322.1.3 Líneas de referencia 50422.1.4 Ítems de configuración del software 505El repositorio ACS 50622.2.1 El papel del repositorio 50622.2.2 Características y contenido generales 50722.2.3 Características ACS 507El proceso ACS 50822.3.1 Identificación de objetos en la configuración del software 50922.3.2 Control de versión 51022.3.3 Control de cambio 51122.3.4 Auditoría de configuración 51422.3.5 Reporte de estado 515Administración de la configuración para webapps 51522.4.1 Conflictos dominantes 51622.4.2 Objetos de configuración de webapps 51722.4.3 Administración de contenido 5172/2/10 11:40:17

xxiC ON T EN I DO22.4.4 Administración del cambio 52022.4.5 Control de versión 52222.4.6 Auditoría y reporte 52222.5Resumen 523PROBLEMAS Y PUNTOS POR EVALUAR 524LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 525CAPÍ TU L O 2 3M É T R IC A S D E P R O D UC T O52623.1Marco conceptual para las métricas de producto 52723.1.1 Medidas, métricas e indicadores 52723.1.2 El reto de la métrica de producto 52723.1.3 Principios de medición 52823.1.4 Medición de software orientado a meta 52923.1.5 Atributos de las métricas de software efectivas 53023.2Métricas para el modelo de requerimientos 53123.2.1 Métrica basada en funciones 53123.2.2 Métricas para calidad de la especificación 53423.3Métricas para el modelo de diseño 53523.3.1 Métricas del diseño arquitectónico 53523.3.2 Métricas para diseño orientado a objetos 53723.3.3 Métricas orientadas a clase: la suite de métricas CK 53923.3.4 Métricas orientadas a clase: La suite de métricas MOOD 54123.3.5 Métricas OO propuestas por Lorenz y Kidd 54223.3.6 Métricas de diseño en el nivel de componente 54223.3.7 Métricas orientadas a operación 54423.3.8 Métricas de diseño de interfaz de usuario 54523.4Métricas de diseño para webapps 54523.5Métricas para código fuente 54723.6Métricas para pruebas 54823.6.1 Métricas de Halstead aplicadas para probar 54923.6.2 Métricas p

1.1.1 Definición de software 3 1.1.2 Dominios de aplicación del software 6 1.1.3 Software heredado 8 1.2 La naturaleza única de las webapps 9 1.3 Ingeniería de software 10 1.4 El proceso del software 12 1.5 La práctica de la ingeniería de software 15 1.5.1 La esencia de la práctica 15 1.5.2 Principios generales 16