ld-Ingenieria.de.software.enfoque.practico.7ed.Pressman (1).pdf
Document Details
Uploaded by AvidExtraterrestrial
Tags
Full Transcript
www.FreeLibros.me Ingeniería del software UN ENFOQUE PRÁCTICO SÉPTIMA EDICIÓN...
www.FreeLibros.me Ingeniería del software UN ENFOQUE PRÁCTICO SÉPTIMA EDICIÓN Roger S. Pressman, Ph.D. University of Connecticut MÉXICO BOGOTÁ BUENOS AIRES CARACAS GUATEMALA MADRID NUEVA YORK SAN JUAN SANTIAGO SÃO PAULO AUCKLAND LONDRES MILÁN MONTREAL NUEVA DELHI SAN FRANCISCO SINGAPUR ST. LOUIS SIDNEY TORONTO www.FreeLibros.me 00Pressman(i-xxx)prelim.indd iii 2/2/10 11:40:14 Director Higher Education: Miguel Ángel Toledo Castellanos Editor sponsor: Pablo Roig Vázquez Coordinadora editorial: Marcela I. Rocha Martínez Editora de desarrollo: María Teresa Zapata Terrazas Supervisor de producción: Zeferino García García Traductores: Víctor Campos Olguín Javier Enríquez Brito Revisión técnica: Carlos Villegas Quezada Bárbaro Jorge Ferro Castro INGENIERÍA DEL SOFTWARE. UN ENFOQUE PRÁCTICO Séptima edición Prohibida la reproducción total o parcial de esta obra, por cualquier medio, sin la autorización escrita del editor. Educación DERECHOS RESERVADOS © 2010, 2005, 2002 respecto a la tercera edición en español por McGRAW-HILL INTERAMERICANA EDITORES, S.A. DE C.V. A Subsidiary of The McGraw-Hill Companies, Inc. Prolongación Paseo de la Reforma 1015, Torre A Piso 17, Colonia Desarrollo Santa Fe, Delegación Álvaro Obregón C.P. 01376, México, D. F. Miembro de la Cámara Nacional de la Industria Editorial Mexicana, Reg. Núm. 736 ISBN: 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 the Americas, New York, NY 10020. Copyright © 2010 by The McGraw-Hill Companies, Inc. All rights reserved. 978-0-07-337597-7 1234567890 109876543210 Impreso en México Printed in Mexico www.FreeLibros.me 00Pressman(i-xxx)prelim.indd iv 2/2/10 11:40:14 A CERCA DEL AUTOR oger S. Pressman es una autoridad internacionalmente reconocida en el mejoramiento R del proceso del software y en las tecnologías de la ingeniería del mismo. Durante casi cuatro décadas ha trabajado como ingeniero de software, gestor, profesor, escritor y consultor, especializado en temas de ingeniería del software. Como profesional y gestor industrial, el doctor Pressman trabajó en el desarrollo de sistemas CAD/CAM para aplicaciones de ingeniería y fabricación avanzadas. También ha tenido posicio- nes 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 Bullard en ingeniería de cómputo de la Universidad de Bridgeport, y en director del Centro de Diseño y Fabricación Asistidos por Computadora de dicha universidad. En la actualidad, el doctor Pressman es presidente de R. S. Pressman & Associates, Inc., una empresa 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 video curricular completo acerca de ingeniería del software, y Consultor de procesos, un sistema auto- dirigido para el mejoramiento del proceso de software. Ambos productos los utilizan miles de compañí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 del software. El doctor Pressman ha escrito muchos artículos técnicos, es colaborador regular en revistas periódicas industriales y autor de siete libros técnicos. Además de Ingeniería del software: un enfoque práctico, es coautor de Web Engineering (McGraw-Hill), uno de los primeros libros en aplicar un conjunto personalizado de principios y prácticas de la ingeniería del software al de- sarrollo de sistemas y aplicaciones basados en web. También escribió el premiado A Manager’s Guide to Software Engineering (McGraw-Hill); Making Software Engineering Happen (Prentice hall), el primer libro en abordar los problemas administrativos cruciales asociados con el mejo- ramiento del proceso de software; y Software Shock (Dorset House), un tratamiento que se en- foca en el software y su impacto en los negocios y la sociedad. Pressman ha formado parte de los consejos editoriales de varias publicaciones industriales y durante muchos años fue editor de la columna “Manager” en IEEE Software. Además, es un orador bien conocido, y ha sido el orador principal en muchas conferencias industriales importantes. Es miembro de IEEE, y de Tau Beta Pi, Phi Kappa Phi, Eta Kappa Nu y Pi Tau Sigma. En el lado personal, Pressman vive en el sur de Florida con su esposa, Bárbara. Atleta de toda la vida, sigue siendo un serio jugador de tenis (4.5 en el programa estadounidense de calificación de tenis, NTRP) y un golfista con un handicap de un solo dígito. En su tiempo libre escribió dos novelas, Aymara Bridge y The Puppeteer, y tiene planes para escribir una más. vii www.FreeLibros.me 00Pressman(i-xxx)prelim.indd vii 2/2/10 11:40:14 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd viii 2/2/10 11:40:15 C ONTENIDO BREVE C A P ÍT U L O 1 El software y la ingeniería de software 1 PA R TE U NO EL PROCESO DEL SOFTWARE 25 C A P ÍT U L O 2 Modelos del proceso 26 C A P ÍT U L O 3 Desarrollo ágil 55 PA R TE D OS MODELADO 81 C A P ÍT U L O 4 Principios que guían la práctica 82 C A P ÍT U L O 5 Comprensión de los requerimientos 101 C A P ÍT U L O 6 Modelado de los requerimientos: escenarios, información y clases de análisis 126 C A P ÍT U L O 7 Modelado de los requerimientos: flujo, comportamiento, patrones y webapps 158 C A P ÍT U L O 8 Conceptos de diseño 183 C A P ÍT U L O 9 Diseño de la arquitectura 206 C A P ÍT U L O 1 0 Diseño en el nivel de componentes 234 C A P ÍT U L O 1 1 Diseño de la interfaz de usuario 265 C A P ÍT U L O 1 2 Diseño basado en patrones 295 C A P ÍT U L O 1 3 Diseño de webapps 317 PA R TE TRE S ADMINISTRACIÓN DE LA CALIDAD 337 C A P ÍT U L O 1 4 Conceptos de calidad 338 C A P ÍT U L O 1 5 Técnicas de revisión 354 C A P ÍT U L O 1 6 Aseguramiento de la calidad del software 368 C A P ÍT U L O 1 7 Estrategias de prueba de software 383 C A P ÍT U L O 1 8 Prueba de aplicaciones convencionales 411 C A P ÍT U L O 1 9 Prueba de aplicaciones orientadas a objetos 437 C A P ÍT U L O 2 0 Prueba de aplicaciones web 453 C A P ÍT U L O 2 1 Modelado y verificación formal 478 C A P ÍT U L O 2 2 Administración de la configuración del software 501 C A P ÍT U L O 2 3 Métricas de producto 526 PA R TE CU ATRO ADMINISTRACIÓN DE PROYECTOS DE SOFTWARE 553 C A P ÍT U L O 2 4 Conceptos de administración de proyecto 554 C A P ÍT U L O 2 5 Métricas de proceso y de proyecto 571 C A P ÍT U L O 2 6 Estimación para proyectos de software 593 C A P ÍT U L O 2 7 Calendarización del proyecto 620 C A P ÍT U L O 2 8 Administración del riesgo 640 C A P ÍT U L O 2 9 Mantenimiento y reingeniería 655 ix www.FreeLibros.me 00Pressman(i-xxx)prelim.indd ix 2/2/10 11:40:15 x C ON T EN I DO B R EVE PA R TE CINCO TEMAS AVANZADOS 675 C A P ÍT U L O 3 0 Mejoramiento del proceso de software 676 C A P ÍT U L O 3 1 Tendencias emergentes en ingeniería del software 695 C A P ÍT U L O 3 2 Comentarios finales 717 A P É ND IC E 1 Introducción a UML 725 A P É ND IC E 2 Conceptos orientados a objeto 743 RE F E RE NC IA S 751 ÍND IC E A NA L ÍT IC O 767 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd x 2/2/10 11:40:15 C ONTENIDO Prefacio xxv CAPÍ TU L O 1 E L SO F T WA R E Y LA IN G E N IE R ÍA D E SO F T WA R E 1 1.1 La naturaleza del software 2 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 1.6 Mitos del software 18 1.7 Cómo comienza todo 20 1.8 Resumen 21 PROBLEMAS Y PUNTOS POR EVALUAR 21 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 22 PA R TE U NO E L PROCE S O D E L SO F T WA R E 25 CAPÍ TU L O 2 M O D E LO S D E L P R O C E SO 26 2.1 Un modelo general de proceso 27 2.1.1 Definición de actividad estructural 29 2.1.2 Identificación de un conjunto de tareas 29 2.1.3 Patrones del proceso 29 2.2 Evaluación y mejora del proceso 31 2.3 Modelos de proceso prescriptivo 33 2.3.1 Modelo de la cascada 33 2.3.2 Modelos de proceso incremental 35 2.3.3 Modelos de proceso evolutivo 36 2.3.4 Modelos concurrentes 40 2.3.5 Una última palabra acerca de los procesos evolutivos 42 2.4 Modelos de proceso especializado 43 2.4.1 Desarrollo basado en componentes 43 2.4.2 El modelo de métodos formales 44 2.4.3 Desarrollo de software orientado a aspectos 44 2.5 El proceso unificado 45 2.5.1 Breve historia 46 2.5.2 Fases del proceso unificado 46 2.6 Modelos del proceso personal y del equipo 48 2.6.1 Proceso personal del software (PPS) 48 2.6.2 Proceso del equipo de software (PES) 49 2.7 Tecnología del proceso 50 2.8 Producto y proceso 51 2.9 Resumen 52 PROBLEMAS Y PUNTOS POR EVALUAR 53 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 54 xi www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xi 2/2/10 11:40:15 xii C ON T EN I DO CAPÍ TU L O 3 D E SA R R O LLO Á G IL 55 3.1 ¿Qué es la agilidad? 56 3.2 La agilidad y el costo del cambio 57 3.3 ¿Qué es un proceso ágil? 58 3.3.1 Principios de agilidad 58 3.3.2 La política del desarrollo ágil 59 3.3.3 Factores humanos 60 3.4 Programación extrema (XP) 61 3.4.1 Valores XP 61 3.4.2 El proceso XP 62 3.4.3 XP industrial 65 3.4.4 El debate XP 66 3.5 Otros modelos ágiles de proceso 67 3.5.1 Desarrollo adaptativo de software (DAS) 68 3.5.2 Scrum 69 3.5.3 Método de desarrollo de sistemas dinámicos (MDSD) 71 3.5.4 Cristal 72 3.5.5 Desarrollo impulsado por las características (DIC) 72 3.5.6 Desarrollo esbelto de software (DES) 73 3.5.7 Modelado ágil (MA) 74 3.5.8 El proceso unificado ágil (PUA) 75 3.6 Conjunto de herramientas para el proceso ágil 76 3.7 Resumen 77 PROBLEMAS Y PUNTOS POR EVALUAR 78 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 79 PA R TE DO S MOD E L AD O 81 CAPÍ TU L O 4 PR IN C IP IO S Q UE G UÍA N LA P R Á C T IC A 82 4.1 Conocimiento de la ingeniería de software 83 4.2 Principios fundamentales 83 4.2.1 Principios que guían el proceso 84 4.2.2 Principios que guían la práctica 84 4.3 Principios que guían toda actividad estructural 86 4.3.1 Principios de comunicación 86 4.3.2 Principios de planeación 88 4.3.3 Principios de modelado 90 4.3.4 Principios de construcción 94 4.3.5 Principios de despliegue 96 4.4 Resumen 97 PROBLEMAS Y PUNTOS POR EVALUAR 98 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 99 CAPÍ TU L O 5 CO M P R E N SIÓ N D E LO S R E Q UE R IM IE N T O S 101 5.1 Ingeniería de requerimientos 102 5.2 Establecer las bases 106 5.2.1 Identificación de los participantes 106 5.2.2 Reconocer los múltiples puntos de vista 107 5.2.3 Trabajar hacia la colaboración 107 5.2.4 Hacer las primeras preguntas 108 5.3 Indagación de los requerimientos 108 5.3.1 Recabación de los requerimientos en forma colaborativa 109 5.3.2 Despliegue de la función de calidad 111 5.3.3 Escenarios de uso 112 5.3.4 Indagación de los productos del trabajo 112 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xii 2/2/10 11:40:15 C ON T EN I DO xiii 5.4 Desarrollo de casos de uso 113 5.5 Elaboración del modelo de los requerimientos 117 5.5.1 Elementos del modelo de requerimientos 118 5.5.2 Patrones de análisis 120 5.6 Requerimientos de las negociaciones 121 5.7 Validación de los requerimientos 122 5.8 Resumen 123 PROBLEMAS Y PUNTOS POR EVALUAR 123 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 124 CAPÍ TU L O 6 M 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 6 6.1 Análisis de los requerimientos 127 6.1.1 Objetivos y filosofía general 128 6.1.2 Reglas prácticas del análisis 128 6.1.3 Análisis del dominio 129 6.1.4 Enfoques del modelado de requerimientos 130 6.2 Modelado basado en escenarios 131 6.2.1 Creación de un caso preliminar de uso 132 6.2.2 Mejora de un caso de uso preliminar 134 6.2.3 Escritura de un caso de uso formal 135 6.3 Modelos UML que proporcionan el caso de uso 137 6.3.1 Desarrollo de un diagrama de actividades 137 6.3.2 Diagramas de canal (swimlane) 138 6.4 Conceptos de modelado de datos 139 6.4.1 Objetos de datos 139 6.4.2 Atributos de los datos 140 6.4.3 Relaciones 141 6.5 Modelado basado en clases 142 6.5.1 Identificación de las clases de análisis 143 6.5.2 Especificación de atributos 145 6.5.3 Definición de las operaciones 146 6.5.4 Modelado clase-responsabilidad-colaborador (CRC) 148 6.5.5 Asociaciones y dependencias 152 6.5.6 Paquetes de análisis 154 6.6 Resumen 155 PROBLEMAS Y PUNTOS POR EVALUAR 156 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 157 CAPÍ TU L O 7 M 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 8 7.1 Requerimientos que modelan las estrategias 158 7.2 Modelado orientado al flujo 159 7.2.1 Creación de un modelo de flujo de datos 159 7.2.2 Creación de un modelo de flujo de control 162 7.2.3 La especificación de control 162 7.2.4 La especificación del proceso 163 7.3 Creación de un modelo de comportamiento 165 7.3.1 Identificar los eventos con el caso de uso 166 7.3.2 Representaciones de estado 166 7.4 Patrones para el modelado de requerimientos 169 7.4.1 Descubrimiento de patrones de análisis 169 7.4.2 Ejemplo de patrón de requerimientos: Actuador-Sensor 170 7.5 Modelado de requerimientos para webapps 174 7.5.1 ¿Cuánto análisis es suficiente? 174 7.5.2 Entrada del modelado de los requerimientos 174 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xiii 2/2/10 11:40:15 xiv C ON T EN I DO 7.5.3 Salida del modelado de los requerimientos 175 7.5.4 Modelo del contenido de las webapps 176 7.5.5 Modelo de la interacción para webapps 177 7.5.6 Modelo funcional para las webapps 178 7.5.7 Modelos de configuración para las webapps 179 7.5.8 Modelado de la navegación 180 7.6 Resumen 180 PROBLEMAS Y PUNTOS POR EVALUAR 181 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 182 CAPÍ TU L O 8 CO N C E P T O S D E D ISE Ñ O 183 8.1 Diseño en el contexto de la ingeniería de software 184 8.2 El proceso de diseño 186 8.2.1 Lineamientos y atributos de la calidad del software 186 8.2.2 La evolución del diseño del software 188 8.3 Conceptos de diseño 189 8.3.1 Abstracción 189 8.3.2 Arquitectura 190 8.3.3 Patrones 191 8.3.4 División de problemas 191 8.3.5 Modularidad 191 8.3.6 Ocultamiento de información 192 8.3.7 Independencia funcional 193 8.3.8 Refinamiento 194 8.3.9 Aspectos 194 8.3.10 Rediseño 195 8.3.11 Conceptos de diseño orientados a objeto 195 8.3.12 Clases de diseño 196 8.4 El modelo del diseño 197 8.4.1 Elementos del diseño de datos 199 8.4.2 Elementos del diseño arquitectónico 199 8.4.3 Elementos de diseño de la interfaz 199 8.4.4 Elementos del diseño en el nivel de los componentes 201 8.4.5 Elementos del diseño del despliegue 202 8.5 Resumen 203 PROBLEMAS Y PUNTOS POR EVALUAR 203 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 204 CAPÍ TU L O 9 D ISE Ñ O D E LA A R Q UIT E C T UR A 206 9.1 Arquitectura del software 207 9.1.1 ¿Qué es la arquitectura? 207 9.1.2 ¿Por qué es importante la arquitectura? 208 9.1.3 Descripciones arquitectónicas 208 9.1.4 Decisiones arquitectónicas 209 9.2 Géneros arquitectónicos 209 9.3 Estilos arquitectónicos 211 9.3.1 Breve taxonomía de estilos de arquitectura 213 9.3.2 Patrones arquitectónicos 215 9.3.3 Organización y refinamiento 216 9.4 Diseño arquitectónico 217 9.4.1 Representación del sistema en contexto 217 9.4.2 Definición de arquetipos 218 9.4.3 Refinamiento de la arquitectura hacia los componentes 219 9.4.4 Descripción de las instancias del sistema 220 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xiv 2/2/10 11:40:16 C ON T EN I DO xv 9.5 Evaluación de los diseños alternativos para la arquitectura 221 9.5.1 Método de la negociación para analizar la arquitectura 222 9.5.2 Complejidad arquitectónica 224 9.5.3 Lenguajes de descripción arquitectónica 224 9.6 Mapeo de la arquitectura con el uso del flujo de datos 225 9.6.1 Mapeo de transformación 225 9.6.2 Refinamiento del diseño arquitectónico 231 9.7 Resumen 232 PROBLEMAS Y PUNTOS POR EVALUAR 232 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 233 CAPÍ TU L O 1 0 D ISE Ñ O E N E L N IV E L D E C O M P O N E N T E S 234 10.1 ¿Qué es un componente? 235 10.1.1 Una visión orientada a objetos 235 10.1.2 La visión tradicional 236 10.1.3 Visión relacionada con el proceso 239 10.2 Diseño de componentes basados en clase 239 10.2.1 Principios básicos del diseño 239 10.2.2 Lineamientos de diseño en el nivel de componentes 242 10.2.3 Cohesión 243 10.2.4 Acoplamiento 244 10.3 Realización del diseño en el nivel de componentes 246 10.4 Diseño en el nivel de componentes para webapps 251 10.4.1 Diseño del contenido en el nivel de componente 251 10.4.2 Diseño de las funciones en el nivel de componentes 252 10.5 Diseño de componentes tradicionales 252 10.5.1 Notación gráfica de diseño 253 10.5.2 Notación del diseño tabular 254 10.5.3 Lenguaje de diseño del programa 255 10.6 Desarrollo basado en componentes 256 10.6.1 Ingeniería del dominio 257 10.6.2 Calificación, adaptación y combinación de los componentes 257 10.6.3 Análisis y diseño para la reutilización 259 10.6.4 Clasificación y recuperación de componentes 260 10.7 Resumen 262 PROBLEMAS Y PUNTOS POR EVALUAR 263 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 263 CAPÍ TU L O 1 1 D ISE Ñ O D E LA IN T E R FA Z D E USUA R IO 265 11.1 Las reglas doradas 266 11.1.1 Dejar el control al usuario 266 11.1.2 Reducir la necesidad de que el usuario memorice 267 11.1.3 Hacer consistente la interfaz 268 11.2 Análisis y diseño de la interfaz de usuario 269 11.2.1 Análisis y modelos del diseño de la interfaz 269 11.2.2 El proceso 271 11.3 Análisis de la interfaz 272 11.3.1 Análisis del usuario 272 11.3.2 Análisis y modelado de la tarea 273 11.3.3 Análisis del contenido de la pantalla 277 11.3.4 Análisis del ambiente de trabajo 278 11.4 Etapas del diseño de la interfaz 278 11.4.1 Aplicación de las etapas de diseño de la interfaz 279 11.4.2 Patrones de diseño de la interfaz de usuario 280 11.4.3 Aspectos del diseño 281 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xv 2/2/10 11:40:16 xvi C ON T EN I DO 11.5 Diseño de una interfaz para webapps 284 11.5.1 Principios y lineamientos del diseño de la interfaz 285 11.5.2 Flujo de trabajos para el diseño de la interfaz de webapp 289 11.6 Evaluación del diseño 290 11.7 Resumen 292 PROBLEMAS Y PUNTOS POR EVALUAR 293 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 293 CAPÍ TU L O 1 2 D ISE Ñ O B A SA D O E N PAT R O N E S 295 12.1 Patrones de diseño 296 12.1.1 Clases de patrones 297 12.1.2 Estructuras 299 12.1.3 Descripción de un patrón 299 12.1.4 Lenguajes y repositorios de patrones 300 12.2 Diseño de software basado en patrones 301 12.2.1 El diseño basado en patrones, en contexto 301 12.2.2 Pensar en patrones 302 12.2.3 Tareas de diseño 303 12.2.4 Construcción de una tabla para organizar el patrón 305 12.2.5 Errores comunes en el diseño 305 12.3 Patrones arquitectónicos 306 12.4 Patrones de diseño en el nivel de componentes 308 12.5 Patrones de diseño de la interfaz de usuario 310 12.6 Patrones de diseño de webapp 313 12.6.1 Centrarse en el diseño 313 12.6.2 Granularidad del diseño 314 12.7 Resumen 315 PROBLEMAS Y PUNTOS POR EVALUAR 315 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 316 CAPÍ TU L O 1 3 D ISE Ñ O D E WE B A P P S 317 13.1 Calidad del diseño de webapps 318 13.2 Metas del diseño 320 13.3 Pirámide del diseño de webapps 321 13.4 Diseño de la interfaz de la webapp 321 13.5 Diseño de la estética 323 13.5.1 Aspectos de la distribución 323 13.5.2 Aspectos del diseño gráfico 324 13.6 Diseño del contenido 324 13.6.1 Objetos de contenido 324 13.6.2 Aspectos de diseño del contenido 325 13.7 Diseño arquitectónico 326 13.7.1 Arquitectura del contenido 326 13.7.2 Arquitectura de las webapps 328 13.8 Diseño de la navegación 329 13.8.1 Semántica de la navegación 329 13.8.2 Sintaxis de navegación 330 13.9 Diseño en el nivel de componentes 331 13.10 Método de diseño de hipermedios orientado a objetos (MDHOO) 332 13.10.1 Diseño conceptual del MDHOO 332 13.10.2 Diseño de la navegación para el MDHOO 333 13.10.3 Diseño abstracto de la interfaz y su implementación 333 13.11 Resumen 334 PROBLEMAS Y PUNTOS POR EVALUAR 335 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 335 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xvi 2/2/10 11:40:16 C ON T EN I DO xvii PA R TE T RE S AD MI NI S TRA C IÓ N D E LA C A LID A D 337 CAPÍ TU L O 1 4 C O N C E P T O S D E C A LID A D 338 14.1 ¿Qué es calidad? 339 14.2 Calidad del software 340 14.2.1 Dimensiones de la calidad de Garvin 341 14.2.2 Factores de la calidad de McCall 342 14.2.3 Factores de la calidad ISO 9126 343 14.2.4 Factores de calidad que se persiguen 343 14.2.5 Transición a un punto de vista cuantitativo 344 14.3 El dilema de la calidad del software 345 14.3.1 Software “suficientemente bueno” 345 14.3.2 El costo de la calidad 346 14.3.3 Riesgos 348 14.3.4 Negligencia y responsabilidad 348 14.3.5 Calidad y seguridad 349 14.3.6 El efecto de las acciones de la administración 349 14.4 Lograr la calidad del software 350 14.4.1 Métodos de la ingeniería de software 350 14.4.2 Técnicas de administración de proyectos 350 14.4.3 Control de calidad 351 14.4.4 Aseguramiento de la calidad 351 14.5 Resumen 351 PROBLEMAS Y PUNTOS POR EVALUAR 352 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 352 CAPÍ TU L O 1 5 T É C N IC A S D E R E V ISIÓ N 354 15.1 Efecto de los defectos del software en el costo 355 15.2 Amplificación y eliminación del defecto 356 15.3 Métricas de revisión y su empleo 357 15.3.1 Análisis de las métricas 358 15.3.2 Eficacia del costo de las revisiones 358 15.4 Revisiones: espectro de formalidad 359 15.5 Revisiones informales 361 15.6 Revisiones técnicas formales 362 15.6.1 La reunión de revisión 363 15.6.2 Reporte y registro de la revisión 363 15.6.3 Lineamientos para la revisión 364 15.6.4 Revisiones orientadas al muestreo 365 15.7 Resumen 366 PROBLEMAS Y PUNTOS POR EVALUAR 367 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 367 CAPÍ TU L O 1 6 A 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 E 368 16.1 Antecedentes 369 16.2 Elementos de aseguramiento de la calidad del software 370 16.3 Tareas, metas y métricas del ACS 371 16.3.1 Tareas del ACS 371 16.3.2 Metas, atributos y métricas 372 16.4 Enfoques formales al ACS 373 16.5 Aseguramiento estadístico de la calidad del software 374 16.5.1 Ejemplo general 374 16.5.2 Seis Sigma para la ingeniería de software 375 16.6 Confiabilidad del software 376 16.6.1 Mediciones de la confiabilidad y disponibilidad 377 16.6.2 Seguridad del software 378 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xvii 2/2/10 11:40:16 xviii C ON T EN I DO 16.7 Las normas de calidad ISO 9000 378 16.8 El plan de ACS 379 16.9 Resumen 380 PROBLEMAS Y PUNTOS POR EVALUAR 381 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 381 CAPÍ TU L O 1 7 E ST R AT E G IA S D E P R UE B A D E SO F T WA R E 383 17.1 Un enfoque estratégico para la prueba de software 384 17.1.1 Verificación y validación 384 17.1.2 Organización de las pruebas del software 385 17.1.3 Estrategia de prueba del software. Visión general 386 17.1.4 Criterios para completar las pruebas 388 17.2 Aspectos estratégicos 388 17.3 Estrategias de prueba para software convencional 389 17.3.1 Prueba de unidad 389 17.3.2 Pruebas de integración 391 17.4 Estrategias de prueba para software orientado a objeto 397 17.4.1 Prueba de unidad en el contexto OO 397 17.4.2 Prueba de integración en el contexto OO 398 17.5 Estrategias de prueba para webapps 398 17.6 Pruebas de validación 399 17.6.1 Criterios de pruebas de validación 399 17.6.2 Revisión de la configuración 400 17.6.3 Pruebas alfa y beta 400 17.7 Pruebas del sistema 401 17.7.1 Pruebas de recuperación 401 17.7.2 Pruebas de seguridad 402 17.7.3 Pruebas de esfuerzo 402 17.7.4 Pruebas de rendimiento 403 17.7.5 Pruebas de despliegue 403 17.8 El arte de la depuración 404 17.8.1 El proceso de depuración 404 17.8.2 Consideraciones psicológicas 405 17.8.3 Estrategias de depuración 406 17.8.4 Corrección del error 408 17.9 Resumen 408 PROBLEMAS Y PUNTOS POR EVALUAR 409 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 409 CAPÍ TU L O 1 8 PR 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 S 411 18.1 Fundamentos de las pruebas del software 412 18.2 Visiones interna y externa de las pruebas 413 18.3 Prueba de caja blanca 414 18.4 Prueba de ruta básica 414 18.4.1 Notación de gráfico o grafo de flujo 415 18.4.2 Rutas de programa independientes 416 18.4.3 Derivación de casos de prueba 418 18.4.4 Matrices de grafo 420 18.5 Prueba de la estructura de control 420 18.5.1 Prueba de condición 421 18.5.2 Prueba de flujo de datos 421 18.5.3 Prueba de bucle 421 18.6 Pruebas de caja negra 423 18.6.1 Métodos de prueba basados en gráficos 423 18.6.2 Partición de equivalencia 425 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xviii 2/2/10 11:40:16 C ON T EN I DO xix 18.6.3 Análisis de valor de frontera 425 18.6.4 Prueba de arreglo ortogonal 426 18.7 Prueba basada en modelo 429 18.8 Prueba para entornos, arquitecturas y aplicaciones especializados 429 18.8.1 Pruebas de interfaces gráficas de usuario 430 18.8.2 Prueba de arquitecturas cliente-servidor 430 18.8.3 Documentación de prueba y centros de ayuda 431 18.8.4 Prueba para sistemas de tiempo real 432 18.9 Patrones para pruebas de software 433 18.10 Resumen 434 PROBLEMAS Y PUNTOS POR EVALUAR 435 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 436 CAPÍ TU L O 1 9 P 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 S 437 19.1 Ampliación de la definición de las pruebas 438 19.2 Modelos de prueba AOO y DOO 439 19.2.1 Exactitud de los modelos AOO y DOO 439 19.2.2 Consistencia de los modelos orientados a objetos 439 19.3 Estrategias de pruebas orientadas a objetos 441 19.3.1 Prueba de unidad en el contexto OO 441 19.3.2 Prueba de integración en el contexto OO 442 19.3.3 Prueba de validación en un contexto OO 442 19.4 Métodos de prueba orientada a objetos 442 19.4.1 Implicaciones del diseño de casos de prueba de los conceptos OO 443 19.4.2 Aplicabilidad de los métodos convencionales de diseño de casos de prueba 443 19.4.3 Prueba basada en fallo 444 19.4.4 Casos de prueba y jerarquía de clase 444 19.4.5 Diseño de pruebas basadas en escenario 445 19.4.6 Pruebas de las estructuras superficial y profunda 446 19.5 Métodos de prueba aplicables en el nivel clase 447 19.5.1 Prueba aleatoria para clases OO 447 19.5.2 Prueba de partición en el nivel de clase 448 19.6 Diseño de casos de prueba interclase 448 19.6.1 Prueba de clase múltiple 449 19.6.2 Pruebas derivadas a partir de modelos de comportamiento 450 19.7 Resumen 451 PROBLEMAS Y PUNTOS POR EVALUAR 451 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 452 CAPÍ TU L O 2 0 P R UE B A D E A P LIC A C IO N E S WE B 453 20.1 Conceptos de pruebas para aplicaciones web 453 20.1.1 Dimensiones de calidad 454 20.1.2 Errores dentro de un entorno de webapp 455 20.1.3 Estrategia de las pruebas 455 20.1.4 Planificación de pruebas 456 20.2 Un panorama del proceso de prueba 456 20.3 Prueba de contenido 457 20.3.1 Objetivos de la prueba de contenido 457 20.3.2 Prueba de base de datos 458 20.4 Prueba de interfaz de usuario 460 20.4.1 Estrategia de prueba de interfaz 460 20.4.2 Prueba de mecanismos de interfaz 461 20.4.3 Prueba de la semántica de la interfaz 463 20.4.4 Pruebas de usabilidad 463 20.4.5 Pruebas de compatibilidad 465 20.5 Prueba en el nivel de componente 466 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xix 2/2/10 11:40:16 xx C ON T EN I DO 20.6 Prueba de navegación 467 20.6.1 Prueba de sintaxis de navegación 467 20.6.2 Prueba de la semántica de navegación 468 20.7 Prueba de configuración 469 20.7.1 Conflictos en el lado servidor 469 20.7.2 Conflictos en el lado cliente 470 20.8 Prueba de seguridad 470 20.9 Prueba de rendimiento 471 20.9.1 Objetivos de la prueba de rendimiento 472 20.9.2 Prueba de carga 472 20.9.3 Prueba de esfuerzo 473 20.10 Resumen 475 PROBLEMAS Y PUNTOS POR EVALUAR 475 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 476 CAPÍ TU L O 2 1 M O D E LA D O Y V E R IF IC A C IÓ N F O R M A L 478 21.1 Estrategia de cuarto limpio 479 21.2 Especificación funcional 480 21.2.1 Especificación de caja negra 482 21.2.2 Especificación de caja de estado 482 21.2.3 Especificación de caja clara 483 21.3 Diseño de cuarto limpio 483 21.3.1 Refinamiento de diseño 483 21.3.2 Verificación de diseño 484 21.4 Pruebas de cuarto limpio 485 21.4.1 Pruebas de uso estadístico 486 21.4.2 Certificación 487 21.5 Conceptos de métodos formales 487 21.6 Aplicación de notación matemática para especificación formal 490 21.7 Lenguajes de especificación formal 492 21.7.1 Lenguaje de restricción de objeto (OCL) 492 21.7.2 El lenguaje de especificación Z 495 21.8 Resumen 498 PROBLEMAS Y PUNTOS POR EVALUAR 499 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 500 CAPÍ TU L O 2 2 A 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 RE 501 22.1 Administración de la configuración del software 502 22.1.1 Un escenario ACS 502 22.1.2 Elementos de un sistema de administración de la configuración 503 22.1.3 Líneas de referencia 504 22.1.4 Ítems de configuración del software 505 22.2 El repositorio ACS 506 22.2.1 El papel del repositorio 506 22.2.2 Características y contenido generales 507 22.2.3 Características ACS 507 22.3 El proceso ACS 508 22.3.1 Identificación de objetos en la configuración del software 509 22.3.2 Control de versión 510 22.3.3 Control de cambio 511 22.3.4 Auditoría de configuración 514 22.3.5 Reporte de estado 515 22.4 Administración de la configuración para webapps 515 22.4.1 Conflictos dominantes 516 22.4.2 Objetos de configuración de webapps 517 22.4.3 Administración de contenido 517 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xx 2/2/10 11:40:17 C ON T EN I DO xxi 22.4.4 Administración del cambio 520 22.4.5 Control de versión 522 22.4.6 Auditoría y reporte 522 22.5 Resumen 523 PROBLEMAS Y PUNTOS POR EVALUAR 524 LECTURAS ADICIONALES Y FUENTES DE INFORMACIÓN 525 CAPÍ TU L O 2 3 M É T R IC A S D E P R O D UC T O 526 23.1 Marco conceptual para las métricas de producto 527 23.1.1 Medidas, métricas e indicadores 527 23.1.2 El reto de la métrica de producto 527 23.1.3 Principios de medición 528 23.1.4 Medición de software orientado a meta 529 23.1.5 Atributos de las métricas de software efectivas 530 23.2 Métricas para el modelo de requerimientos 531 23.2.1 Métrica basada en funciones 531 23.2.2 Métricas para calidad de la especificación 534 23.3 Métricas para el modelo de diseño 535 23.3.1 Métricas del diseño arquitectónico 535 23.3.2 Métricas para diseño orientado a objetos 537 23.3.3 Métricas orientadas a clase: la suite de métricas CK 539 23.3.4 Métricas orientadas a clase: La suite de métricas MOOD 541 23.3.5 Métricas OO propuestas por Lorenz y Kidd 542 23.3.6 Métricas de diseño en el nivel de componente 542 23.3.7 Métricas orientadas a operación 544 23.3.8 Métricas de diseño de interfaz de usuario 545 23.4 Métricas de diseño para webapps 545 23.5 Métricas para código fuente 547 23.6 Métricas para pruebas 548 23.6.1 Métricas de Halstead aplicadas para probar 549 23.6.2 Métricas para pruebas orientadas a objetos 549 23.7 Métricas para mantenimiento 550 23.8 Resumen 551 PROBLEMAS Y PUNTOS POR EVALUAR 551 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 552 PA R TE CU ATRO AD MI NI S TRA C IÓ N D E P R O Y E C T O S D E SO F T WA R E 553 CAPÍ TU L O 2 4 C O N C E P T O S D E A D M IN IST R A C IÓ N D E P R O Y E C T O 554 24.1 El espectro administrativo 555 24.1.1 El personal 555 24.1.2 El producto 555 24.1.3 El proceso 556 24.1.4 El proyecto 556 24.2 El personal 556 24.2.1 Los participantes 557 24.2.2 Líderes de equipo 557 24.2.3 El equipo de software 558 24.2.4 Equipos ágiles 561 24.2.5 Conflictos de coordinación y comunicación 561 24.3 El producto 562 24.3.1 Ámbito del software 562 24.3.2 Descomposición del problema 563 24.4 El proceso 563 24.4.1 Fusión de producto y proceso 564 24.4.2 Descomposición del proceso 564 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxi 2/2/10 11:40:17 xxii C ON T EN I DO 24.5 El proyecto 566 24.6 El principio W5HH 567 24.7 Prácticas cruciales 567 24.8 Resumen 568 PROBLEMAS Y PUNTOS POR EVALUAR 569 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 569 CAPÍ TU L O 2 5 M É T R IC A S D E P R O C E SO Y D E P R O Y E C T O 571 25.1 Métricas en los dominios de proceso y proyecto 572 25.1.1 Las métricas del proceso y la mejora del proceso de software 572 25.1.2 Métricas de proyecto 574 25.2 Medición del software 575 25.2.1 Métricas orientadas a tamaño 576 25.2.2 Métricas orientadas a función 577 25.2.3 Reconciliación de métricas LOC y PF 577 25.2.4 Métricas orientadas a objeto 579 25.2.5 Métricas orientadas a caso de uso 580 25.2.6 Métricas de proyecto webapp 580 25.3 Métricas para calidad de software 582 25.3.1 Medición de la calidad 583 25.3.2 Eficiencia en la remoción del defecto 584 25.4 Integración de métricas dentro del proceso de software 585 25.4.1 Argumentos para métricas de software 585 25.4.2 Establecimiento de una línea de referencia 586 25.4.3 Recolección, cálculo y evaluación de métricas 586 25.5 Métricas para organizaciones pequeñas 587 25.6 Establecimiento de un programa de métricas del software 588 25.7 Resumen 590 PROBLEMAS Y PUNTOS POR EVALUAR 590 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 591 CAPÍ TU L O 2 6 E ST IM A C IÓ N PA R A P R O Y E C T O S D E SO F T WA R E 593 26.1 Observaciones acerca de las estimaciones 594 26.2 El proceso de planificación del proyecto 595 26.3 Ámbito y factibilidad del software 595 26.4 Recursos 596 26.4.1 Recursos humanos 596 26.4.2 Recursos de software reutilizables 597 26.4.3 Recursos ambientales 598 26.5 Estimación de proyectos de software 598 26.6 Técnicas de descomposición 599 26.6.1 Dimensionamiento del software 599 26.6.2 Estimación basada en problema 600 26.6.3 Un ejemplo de estimación basada en LOC 601 26.6.4 Un ejemplo de estimación basada en PF 602 26.6.5 Estimación basada en proceso 604 26.6.6 Un ejemplo de estimación basada en proceso 605 26.6.7 Estimación con casos de uso 605 26.6.8 Un ejemplo de estimación basada en caso de uso 606 26.6.9 Reconciliación de estimaciones 607 26.7 Modelos de estimación empíricos 608 26.7.1 La estructura de los modelos de estimación 608 26.7.2 El modelo COCOMO II 609 26.7.3 La ecuación del software 610 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxii 2/2/10 11:40:17 C ON T EN I DO xxiii 26.8 Estimación para proyectos orientados a objetos 611 26.9 Técnicas de estimación especializadas 612 26.9.1 Estimación para desarrollo ágil 612 26.9.2 Estimación para webapp 613 26.10 La decisión hacer/comprar 614 26.10.1 Creación de un árbol de decisión 615 26.10.2 Outsourcing 616 26.11 Resumen 617 PROBLEMAS Y PUNTOS POR EVALUAR 617 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 618 CAPÍ TU L O 2 7 C A LE N D A R IZA C IÓ N D E L P R O Y E C T O 620 27.1 Conceptos básicos 621 27.2 Calendarización del proyecto 622 27.2.1 Principios básicos 623 27.2.2 Relación entre personal y esfuerzo 624 27.2.3 Distribución de esfuerzo 625 27.3 Definición de un conjunto de tareas para el proyecto de software 626 27.3.1 Un ejemplo de conjunto de tareas 627 27.3.2 Refinamiento de acciones de ingeniería del software 627 27.4 Definición de una red de tareas 628 27.5 Calendarización 629 27.5.1 Cronogramas 629 27.5.2 Seguimiento del calendario 631 27.5.3 Seguimiento del progreso para un proyecto OO 632 27.5.4 Calendarización para proyectos webapp 633 27.6 Análisis de valor ganado 635 27.7 Resumen 637 PROBLEMAS Y PUNTOS POR EVALUAR 637 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 638 CAPÍ TU L O 2 8 A D M IN IST R A C IÓ N D E L R IE SG O 640 28.1 Estrategias reactivas de riesgo frente a estrategias proactivas de riesgo 641 28.2 Riesgos de software 641 28.3 Identificación de riesgos 642 28.3.1 Valoración del riesgo de proyecto global 643 28.3.2 Componentes y promotores de riesgo 644 28.4 Proyección del riesgo 644 28.4.1 Elaboración de una lista de riesgos 645 28.4.2 Valoración de impacto de riesgo 647 28.5 Refinamiento del riesgo 649 28.6 Mitigación, monitoreo y manejo de riesgo 649 28.7 El plan MMMR 651 28.8 Resumen 652 PROBLEMAS Y PUNTOS POR EVALUAR 653 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 653 CAPÍ TU L O 2 9 M A N T E N IM IE N T O Y R E IN G E N IE R ÍA 655 29.1 Mantenimiento de software 656 29.2 Soportabilidad del software 657 29.3 Reingenería 658 29.4 Reingeniería de procesos de empresa 658 29.4.1 Procesos empresariales 659 29.4.2 Un modelo RPE 659 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxiii 2/2/10 11:40:17 xxiv C ON T EN I DO 29.5 Reingeniería de software 661 29.5.1 Un modelo de proceso de reingeniería de software 661 29.5.2 Actividades de reingeniería de software 662 29.6 Ingeniería inversa 664 29.6.1 Ingeniería inversa para comprender datos 665 29.6.2 Ingeniería inversa para entender el procesamiento 666 29.6.3 Ingeniería inversa de interfaces de usuario 667 29.7 Reestructuración 668 29.7.1 Reestructuración de código 668 29.7.2 Reestructuración de datos 668 29.8 Ingeniería hacia adelante 669 29.8.1 Ingeniería hacia adelante para arquitecturas cliente-servidor 670 29.8.2 Ingeniería hacia adelante para arquitecturas orientadas a objetos 671 29.9 Economía de la reingeniería 671 29.10 Resumen 672 PROBLEMAS Y PUNTOS POR EVALUAR 673 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 674 PA R TE CINCO TE MAS AVANZ AD O S 675 CAPÍ TU L O 3 0 M E J O R A M IE N T O D E L P R O C E SO D E SO F T WA R E 676 30.1 ¿Qué es mps? 677 30.1.1 Enfoques del MPS 677 30.1.2 Modelos de madurez 679 30.1.3 ¿El MPS es para todos? 680 30.2 El proceso MPS 680 30.2.1 Valoración y análisis de la desviación 681 30.2.2 Educación y capacitación 682 30.2.3 Selección y justificación 682 30.2.4 Instalación/migración 683 30.2.5 Evaluación 683 30.2.6 Gestión del riesgo para MPS 684 30.2.7 Factores de éxito cruciales 685 30.3 El CMMI 685 30.4 El CMM de personal 688 30.5 Otros marcos conceptuales MPS 689 30.6 Rendimiento sobre inversión de MPS 691 30.7 Tendencias MPS 692 30.8 Resumen 693 PROBLEMAS Y PUNTOS POR EVALUAR 693 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 694 CAPÍ TU L O 3 1 TE N D E N C IA S E M E R G E N T E S E N IN G E N IE R ÍA D E L SO F T WA RE 695 31.1 Evolución tecnológica 696 31.2 Observación de las tendencias en ingeniería del software 697 31.3 Identificación de “tendencias blandas” 699 31.3.1 Administración de la complejidad 700 31.3.2 Software de mundo abierto 701 31.3.3 Requerimientos emergentes 701 31.3.4 La mezcla de talento 702 31.3.5 Bloques constructores de software 703 31.3.6 Cambio de percepciones de “valor” 703 31.3.7 Fuente abierta 703 31.4 Direcciones de la tecnología 704 31.4.1 Tendencias de proceso 705 31.4.2 El gran desafío 706 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxiv 2/2/10 11:40:17 C ON T EN I DO xxv 31.4.3 Desarrollo colaborativo 707 31.4.4 Ingeniería de requerimientos 708 31.4.5 Desarrollo de software impulsado por modelo 709 31.4.6 Diseño posmoderno 710 31.4.7 Desarrollo impulsado por pruebas 710 31.5 Tendencias relacionadas con herramientas 711 31.5.1 Herramientas que responden a tendencias blandas 712 31.5.2 Herramientas que abordan tendencias tecnológicas 714 31.6 Resumen 714 PROBLEMAS Y PUNTOS POR EVALUAR 715 LECTURAS Y FUENTES DE INFORMACIÓN ADICIONALES 715 CAPÍ TU L O 3 2 C O M E N TA R IO S F IN A LE S 717 32.1 La importancia del software-revisión 718 32.2 Las personas y la forma en la que construyen sistemas 718 32.3 Nuevos modos para representar la información 719 32.4 La vista larga 720 32.5 La responsabilidad del ingeniero de software 721 32.6 Un comentario final 722 APÉNDICE 1 Introducción a UML 7 2 5 APÉNDICE 2 Conceptos orientados a objeto 743 REFERENCIAS 7 5 1 ÍNDICE ANALÍTICO 7 6 7 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxv 2/2/10 11:40:17 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxvi 2/2/10 11:40:18 P REFACIO uando el software de computadora triunfa (al satisfacer las necesidades de las personas C que lo usan, trabajar sin fallos durante largos periodos, será fácil de modificar e incluso más fácil de usar) puede y debe cambiar las cosas a fin de mejorar. Pero cuando el soft- ware fracasa (cuando sus usuarios no están satisfechos, es proclive al error, es difícil de cambiar e incluso más difícil de usar) pueden ocurrir, y ocurren, cosas malas. Todo mundo quiere cons- truir software que haga mejor las cosas y que evite las malas que acechan en la sombra de los esfuerzos fallidos. Para triunfar, se necesita disciplina al momento de diseñar y construir el software. Es necesario un enfoque de ingeniería. Han pasado casi tres décadas desde que se escribió la primera edición de este libro. Durante ese tiempo, la ingeniería del software evolucionó desde una oscura idea practicada por un nú- mero relativamente pequeño de fanáticos hasta una legítima disciplina de la ingeniería. En la actualidad, se le reconoce como una materia merecedora de investigación seria, estudio con- cienzudo y debate turbulento. A lo largo de toda la industria, el ingeniero de software sustituyó al programador como el título laboral de preferencia. Los modelos de proceso de software, los métodos de ingeniería de software y las herramientas del software se adoptaron exitosamente a través de un amplio espectro de segmentos industriales. Aunque los gestores y profesionales reconocen por igual la necesidad de un enfoque del software más disciplinado, continúan debatiendo la forma en la que la disciplina debe aplicarse. Muchos individuos y compañías todavía desarrollan el software de manera fortuita, incluso cuando construyen sistemas para atender las tecnologías más avanzadas de la actualidad. Mu- chos profesionales y estudiantes no están conscientes de los métodos modernos. Como resul- tado, la calidad del software que producen es deficiente y ocurren cosas malas. Además, conti- núa el debate y la controversia en torno de la verdadera naturaleza del enfoque de la ingeniería del software. El estatus de la ingeniería del software es un estudio en contrastes. Las actitudes han cambiado, se ha progresado, pero todavía falta mucho por hacer antes de que la disciplina alcance madurez plena. La séptima edición de Ingeniería del software: un enfoque práctico tiene la intención de funcio- nar como guía hacia una disciplina de ingeniería que madura. Como las seis ediciones que la precedieron, la séptima se dirige a estudiantes y profesionales, y conserva su atractivo como guía para el profesional industrial y como introducción abarcadora para el estudiante en los niveles superiores de pregrado o en el primer año de graduado. La séptima edición es considerablemente más que una simple actualización. El libro se revisó y reestructuró para mejorar el flujo pedagógico y enfatizar nuevos e importantes procesos y prácticas de la ingeniería del software. Además, este texto cuenta con un paquete de comple- mentos, los cuales están disponibles para los profesores que lo adopten. Consulte con el repre- sentante de McGraw-Hill local. La séptima edición. Los 32 capítulos de la séptima edición se reorganizaron en cinco partes. Esta organización, que difiere considerablemente de la sexta edición, se realizó para dividir mejor los temas y ayudar a los profesores que tal vez no tengan tiempo para completar todo el libro en un semestre. La parte 1, El proceso, presenta varias visiones diferentes del proceso de software, considera todos los modelos de proceso importantes y aborda el debate entre las filosofías de proceso xxvii www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxvii 2/2/10 11:40:18 xxviii P R EFAC I O prescriptivo y ágil. La parte 2, Modelado, presenta los métodos de análisis y diseño con énfasis en las técnicas orientadas a objeto y al modelado UML. También se considera el diseño basa- do en patrón y el diseño para aplicaciones web. La parte 3, Gestión de la calidad, presenta los conceptos, procedimientos, técnicas y métodos que permiten a un equipo de software valorar la calidad del software, revisar los productos de trabajo de la ingeniería del software, realizar procedimientos SQA y aplicar una estrategia y tácticas de prueba efectivas. Además, también se considera el modelado formal y los métodos de verificación. La parte 4, Gestión de proyectos de software, presenta temas que son relevantes a quienes planean, gestionan y controlan un pro- yecto de desarrollo de software. La parte 5, Temas avanzados, considera el mejoramiento del proceso de software y las tendencias en la ingeniería del software. Al continuar con la tradición de las ediciones pasadas, a lo largo del libro se usa una serie de recuadros para presentar las experiencias y tribulaciones de un equipo de software (ficticio) y para proporcionar materiales complementarios acerca de los métodos y herramientas que son relevantes para los temas del capítulo. Dos nuevos apéndices proporcionan breves tutoriales acerca del UML y del pensa- miento orientado a objeto para quienes no estén familiarizados con estos importantes temas. La organización en cinco partes de la séptima edición permite al profesor “englobar” los te- mas con base en el tiempo disponible y las necesidades del estudiante. Un curso de todo un semestre podría construirse en torno de uno o más de las cinco partes. Uno de evaluación de ingeniería del software seleccionaría capítulos de las cinco. Uno de ingeniería del software que enfatice el análisis y el diseño elegiría temas de las partes 1 y 2. Un curso de ingeniería del soft- ware orientado a pruebas seleccionaría temas de las partes 1 y 3, con una breve incursión en la parte 2. Un “curso administrativo” subrayaría las partes 1 y 4. Reconocimientos. Mi trabajo en las siete ediciones de Ingeniería del software: un enfoque prác- tico ha sido el proyecto técnico continuo más largo de mi vida. Aun cuando la escritura cesó, la información extraída de la literatura técnica continúa asimilándose y organizándose, y las críti- cas y sugerencias de los lectores en todo el mundo se evalúan y catalogan. Por esta razón, agradezco a los muchos autores de libros, ponencias y artículos (tanto en copia dura como en medios electrónicos) que me han proporcionado comprensión, ideas y comentarios adicionales durante casi 30 años. Agradezco especialmente a Tim Lethbridge, de la Universidad de Ottawa, quien me auxilió en el desarrollo de los ejemplos UML y OCL, y quien desarrolló el estudio de caso que acompaña a este libro, y a Dale Skrien, de Colby College, quien desarrolló el tutorial UML en el apéndice 1. Su asistencia y sus comentarios fueron invaluables. Un agradecimiento especial también para Bruce Maxim, de la Universidad de Michigan-Dearborn, quien me auxilió en el desarrollo de gran parte del contenido pedagógico en el sitio web que acompaña a este libro. Finalmente, quiero agradecer a los revisores de la séptima edición: sus comentarios a profundidad y críticas bien pensadas han sido invaluables. Osman Balci, SK Jain, Virginia Tech University National Institute of Technology Hamirpur Max Fomitchev, Saeed Monemi, Penn State University Cal Poly Pomona Jerry (Zeyu) Gao, Ahmed Salem, San Jose State University California State University Guillermo Garcia, Vasudeva Varma, Universidad Alfonso X Madrid IIIT Hyderabad Pablo Gervas, Universidad Complutense de Madrid El contenido de la séptima edición de Ingeniería del software: un enfoque práctico fue confor- mado por profesionales de la industria, profesores universitarios y estudiantes, quienes usaron ediciones anteriores del libro y tomaron tiempo para comunicar sus sugerencias, críticas e ideas. www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxviii 2/2/10 11:40:18 P R EFAC I O xxix Mi agradecimiento a cada uno de ustedes. Además, mi reconocimiento personal a nuestros muchos clientes industriales en todo el mundo, quienes, ciertamente, me enseñaron tanto o más de lo que yo podría haberles enseñado en algún momento. Conforme las ediciones de este libro evolucionaban, mis hijos, Mathew y Michael, crecieron de niños a hombres. Su madurez, carácter y éxito en el mundo real han sido una inspiración para mí. Nada me ha llenado más de orgullo. Y finalmente, a Bárbara, mi amor y agradecimiento por tolerar las muchísimas horas en la oficina y por alentar todavía otra edición de “el libro”. Roger S. Pressman www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxix 2/2/10 11:40:18 www.FreeLibros.me 00Pressman(i-xxx)prelim.indd xxx 2/2/10 11:40:18 CAPÍTULO EL SOFTWARE Y LA INGENIERÍA DE SOFTWARE 1 CONCEPTOS enía la apariencia clásica de un alto ejecutivo de una compañía importante de software T CLAVE actividades estructurales.... 12 —a la mitad de los 40, con las sienes comenzando a encanecer, esbelto y atlético, con actividades sombrilla....... 12 ojos que penetraban al observador mientras hablaba—. Pero lo que dijo me dejó anona- características del software... 3 dado. “El software ha muerto”. dominios de aplicación....... 6 Pestañeé con sorpresa y sonreí. “Bromeas, ¿verdad? El mundo es dirigido con software y tu ingeniería de software..... 10 empresa se ha beneficiado mucho de ello. ¡No ha muerto! Está vivo y en desarrollo.” mitos del software........ 18 Movió su cabeza de manera enfática. “No, está muerto… al menos como lo conocimos.” práctica................ 15 Me apoyé en el escritorio. “Continúa.” principios............... 16 Habló al tiempo que golpeaba en la mesa con énfasis. “El concepto antiguo del software —lo proceso del software....... 12 compras, lo posees y tu trabajo consiste en administrarlo— está llegando a su fin. Hoy día, con software heredado......... 8 Web 2.0 y la computación ubicua cada vez más fuerte, vamos a ver una generación de software webapps................ 9 por completo diferente. Se distribuirá por internet y se verá exactamente como si estuviera ins- talado en el equipo de cómputo de cada usuario… pero se encontrará en un servidor remoto.” Tuve que estar de acuerdo. “Entonces, tu vida será mucho más sencilla. Tus muchachos no tendrán que preocuparse por las cinco diferentes versiones de la misma App que utilizan dece- nas de miles de usuarios.” Sonrió. “Absolutamente. Sólo la versión más reciente estará en nuestros servidores. Cuando hagamos un cambio o corrección, actualizaremos funcionalidad y contenido a cada usuario. Todos lo tendrán en forma instantánea…” Hice una mueca. “Pero si cometes un error, todos lo tendrán también instantáneamente”. Él se rió entre dientes. “Es verdad, por eso estamos redoblando nuestros esfuerzos para hacer