Directorio de libros de ingeniería de software orientado a objetos
Mensaje del editor
Prefacio del traductor
Prólogo
Parte 1 Introducción a la ingeniería de software orientada a objetos
Capítulo Capítulo 1 Alcance de la Ingeniería de Software Orientada a Objetos 3
1.1 Aspectos Históricos 4
1.2 Aspectos Económicos 6
1.3 Aspectos de Mantenimiento 6
1.3 .1 Perspectiva del mantenimiento del software moderno 8
1.3.2 La importancia del mantenimiento post-entrega 9
1.4 Requisitos, análisis y aspectos de diseño 10
1.5 Equipo desarrollo 11
1.6 Razones para no planificar la fase 12
1.7 Razones para no realizar pruebas 12
1.8 Razones para no documentar la fase 13
1.9 Paradigma orientado a objetos 13
1.10 Terminología 15
1.11 Cuestiones éticas 17
Revisión del capítulo 18
Materiales de lectura adicionales 18
p>Ejercicio 19
Referencia 20
Capítulo 2 Modelo de ciclo de vida del software 23
2.1 Desarrollo de software ideal 23
2.2Estudio de caso pequeño de Winburg 23
2.3Experiencia del estudio de caso pequeño de Winburg 25
2.4Estudio de caso pequeño de TealTractors 25
2.5 Iteración e incremento 26
p>2.6 Estudio de caso pequeño de Winburg revisado 28
2.7 Riesgos y otros de la iteración y el incremento 29
2.8 Gestión de la iteración y el incremento 31
2.9 Otros modelos de ciclo de vida 31
2.9.1 Modificar el modelo de ciclo de vida mientras se escribe 32
2.9.2 Modelo de ciclo de vida en cascada 32
2.9.3 Creación rápida de prototipos modelo de ciclo de vida 33
2.9.4 Modelo de ciclo de vida de código abierto 34
2.9.5 Proceso ágil 35
2.9.6 Modelo de ciclo de vida estable sincrónico 37
2.9.7 Modelo de ciclo de vida en espiral 38
2.10 Comparación de modelos de ciclo de vida 40
Revisión de este capítulo 41
Materiales de lectura ampliados 41
Ejercicio 42
Referencia 43
Capítulo 3 Proceso de software 46
3.1 Proceso unificado 47
3.2 Iteración e incremento 48
3.3 Flujo de trabajo de requisitos 49
3.4 Flujo de trabajo de análisis 50
3.5 Flujo de trabajo de diseño 51
3.6 Implementación del flujo de trabajo 52 p>
3.7 Flujo de trabajo de prueba 52
3.7.1 Artefactos de requisitos 53
3.7.2 Artefactos de análisis 53
3.7 .3 Artefactos de diseño 53 p>
3.7.4 Implementar artefactos 53
3.8 Mantenimiento posterior a la entrega 54
3.9 Desmantelamiento 55
3.10 Etapa del proceso unificado 55
3.10.1 Etapa inicial 56
3.10.2 Etapa de refinamiento 57
3.10.3 Etapa de construcción 58
3.10.4 Etapa de entrega 58 p>
3.11 Comparación de modelos de ciclo de vida unidimensionales y bidimensionales 59
3.12 Mejora del proceso de software 60
3.13 Modelo de madurez de capacidad 60
3.14 Otros aspectos de la mejora de procesos de software 62
3.15 Costos y beneficios de la mejora de procesos de software 62
Revisión de este capítulo 64
Materiales de lectura ampliados 64
Ejercicio 65
Referencias 65
Capítulo 4 Equipo de software 68
4.1 Organización del equipo 68
4.2 Método del equipo democrático 69
4.
3 El enfoque del equipo principal de programadores 70
4.3.1 El proyecto del New York Times 71
4.3.2 La impracticabilidad del enfoque del equipo principal de programadores 72
4.4 Más allá del programador maestro y los equipos democráticos 72
4.5 Equipos de sincronización estable 73
4.6 Equipos de procesos ágiles 74
4.7 Equipos de programación de código abierto 74
4.8 Modelo de madurez de la capacidad de recursos humanos 75
4.9 Elección de una organización de equipo adecuada 75
Revisión de este capítulo 76
Materiales de lectura ampliados 76
Ejercicio 77
Referencias 77
Capítulo 5 Herramientas de ingeniería de software 79
5.1 Refinamiento paso a paso 79
5.2 Método de análisis costo-beneficio 82
5.3 Métricas de software 83
5.4CASE84
5.5Clasificación CASE 85
5.6Alcance CASE 86
5.7 Versión de software 88
5.7.1 Revisión 89
5.7.2 Variante 89
5.8 Control de configuración 89
p >5.8.1 Control de configuración durante el mantenimiento posterior a la entrega 91
5.8.2 Línea base 91
5.8.3 Control de configuración durante el desarrollo del producto 91
5.9 Herramientas de construcción 92
5.10 Uso de la tecnología CASE para mejorar la productividad 93
Revisión del capítulo 93
Materiales de lectura ampliados 93
Ejercicios 94
Referencias 95
Capítulo 6 Pruebas 97
6.1 Problemas de calidad 97
6.1.1 Garantía de calidad del software 98
p>6.1.2 Independencia de la gestión 98
6.2 Pruebas no basadas en la ejecución 99
6.2.1 Tutorial 99
6.2.2 Tutorial de la gestión 100
6.2.3 Revisión 100
6.2.4 Comparación entre recorrido y revisión 102
6.2.5 Ventajas y desventajas de la revisión 102
6.2.6 Revisar los métodos de medición 102
6.3 Pruebas basadas en la ejecución 103
6.4 Qué se debe probar 103
6.4.1 Practicidad 104
6.4.2 Fiabilidad 104
6.4.3 Robustez 104
6.4.4 Rendimiento 105
6.4.5 Corrección 105
6.5 Pruebas y prueba de corrección 106
6.5.1 Ejemplos de prueba de corrección 106
6.5.2 Estudio de caso pequeño de prueba de corrección 108 p>
6.5 .3 Prueba de corrección e ingeniería de software 109
6.6 Quién completa las pruebas basadas en ejecución 111
6.7 Cuándo finalizan las pruebas 112
Revisión del capítulo 112
Materiales de lectura extendidos 112
Ejercicios 113
Referencias 114
Capítulo 7 De módulos a objetos 117
7.1 ¿Qué es un módulo? 117
7.2 Cohesión 119
7.2.1 Cohesión accidental 119
7.2.2 Cohesión lógica Reunión 120
7.2.3 Cohesión temporal 120
7.2.4 Cohesión de procesos 121
7.2.5 Cohesión de comunicación 121
7.2.6 Cohesión funcional 121
7.2.7 Cohesión informativa 121
7.2.8 Ejemplo de cohesión 122
7.3 Acoplamiento 122
7.3.1 Acoplamiento de contenidos 122
7.3.2 Público acoplamiento 123
7.3.3 Acoplamiento de control 12
4
7.3.4 Acoplamiento de impresión 125
7.3.5 Acoplamiento de datos 125
7.3.6 Ejemplo de acoplamiento 126
7.3.7 La importancia del acoplamiento 126
7.4 Encapsulación de datos 127
7.4.1 Encapsulación y desarrollo de datos 128
7.4.2 Encapsulación y mantenimiento de datos 129
7.5 Tipos de datos abstractos 133
7.6 Ocultación de información 134
7.7 Objetos 135
7.8 Herencia, polimorfismo y vinculación dinámica 137
7.9 Paradigma orientado a objetos 139
Revisión del capítulo 140
Materiales de lectura extendidos 141
Ejercicios 141
Referencias 142
Capítulo 8 Reutilizabilidad y portabilidad 144
8.1 El concepto de reutilización 145
8.2 Obstáculos para la reutilización 146
8.3 Estudio de caso de reutilización 147
8.3.1 División de Sistemas de Misiles Raytheon 147
8.3.2 Agencia Espacial Europea 148
8.4 Objetos y Reutilización 149
8.5 Reutilización en el diseño y proceso de implementación 149
8.5.1 Reutilización del diseño 149
8.5.2 Arquitectura de aplicaciones 150
8.5.3 Patrones de diseño 151
8.5 .4 Arquitectura de software 152
8.5.5 Ingeniería de software basada en componentes 153
8.6 Acerca de los patrones de diseño Más de 153
8.6.1 Estudio de caso pequeño de FLIC 153
8.6.2 Patrón de diseño de adaptador 154
8.6.3 Patrón de diseño de puente 154
8.6.4 Patrón de diseño de iterador 155
8.6 .5 Patrón de diseño abstracto de fábrica 156
8.7 Categoría de patrón de diseño 159
8.8 Ventajas y desventajas del patrón de diseño 159
8.9 Reutilización y mantenimiento posterior a la entrega 160
8.10 Portabilidad 161
8.10.1 Incompatibilidad de hardware 161
8.10.2 Incompatibilidad de sistemas operativos 162
8.10.3 Incompatibilidad de sistemas numéricos software de cálculo 162
8.10.4 Incompatibilidad de compiladores 163
8.11 Por qué es necesaria la portabilidad 165
8.12 Tecnología para lograr la portabilidad 166
8.12.1 Software de sistema portátil 166
8.12.2 Software de aplicación portátil 166
8.12.3 Datos portátiles 167
8.12.4 Aplicaciones basadas en web 167
Repaso de este capítulo 168
Lectura ampliada 168
Ejercicios 169
Referencias 170
Capítulo 9 Planificación y estimación 174
9.1 Planificación de actividades y proceso de software 174
9.2 Estimación del ciclo y costo del proyecto 175
9.2.1 Medición de la escala del producto 176
9.2.2 Tecnología de estimación de costos 178
9.2.3 COCOMO180 intermedio
9.2.4 COCOMOII182
9.2.5 Ciclo de seguimiento y estimación de costos 183
9.3 Discusión sobre la estimación 183
9.4 Componentes del plan de gestión de proyectos de software 184
9.5 Marco del plan de gestión de proyectos de software 185
9.6 Gestión de proyectos de software IEEE Plan 186
9.7 Pruebas de planificación 188
9.8 Requisitos de capacitación 188
9.9 Estándares de documentación 189
9.
10 herramientas CASE para planificación y estimación 189
9.11 Plan de gestión de proyectos de software de prueba 190
Revisión de este capítulo 190
Materiales de lectura ampliados 190
Ejercicios 191
Referencias 192
Parte 2 Flujo de trabajo del ciclo de vida del software
Capítulo 10 Flujo de trabajo de requisitos 196
10.1 Determinación de lo que se requiere por clientes196
10.2 Descripción general del flujo de trabajo de requisitos 197
10.3 Comprensión del dominio 197
10.4 Modelo de negocio 198
10.4 .1 Entrevista 198
10.4.2 Otras tecnologías 198
10.4.3 Casos de uso 199
10.5 Requisitos iniciales 200
10.6 Aplicaciones Comprensión inicial del dominio: Estudio de caso de MSG Foundation 200
10.7 Modelo de negocio inicial: Estudio de caso de MSG Foundation 202
10.8 Requisitos iniciales: Estudio de caso de MSG Foundation 204
10.9 Flujo de trabajo de requisitos Continuación: Estudio de caso 205 de MSG Foundation
10.10 Requisitos revisados: Estudio de caso 206 de MSG Foundation
10.11 Flujo de trabajo de prueba: Estudio de caso 211 de MSG Foundation
10.12 ¿Qué son los objetos? requisitos orientados 217
10.13 Creación rápida de prototipos 218
10.14 Factores humanos 218
10.15 Reutilización de prototipos rápidos 219
10.16 Herramientas CASE para requisitos Flujo de trabajo 220
10.17 Flujo de trabajo de medición de requisitos 220
10.18 Flujo de trabajo de desafíos 220
Revisión del capítulo 221
Materiales de lectura ampliados 222
Ejercicios 222
Referencias 223
Capítulo 11 Flujo de trabajo de análisis 224
11.1 Documento de especificación 224
11.2 Especificación informal 225
11.3 Revisión de la prueba de corrección del estudio de caso pequeño 226
11.4 Flujo de trabajo del análisis 227
11.5 Extracción de clases de entidad 228
11.6 Problema del ascensor 228
11.7 Modelado funcional: estudio de caso del problema del ascensor 229
11.8 Modelado de clase de entidad: estudio de caso del problema del ascensor 230
11.8.1 Sustantivo Extracción 230
11.8.2 Tarjeta CRC 232
11.9 Modelado dinámico: Estudio de caso de problema de ascensor 233
11.10 Flujo de trabajo de prueba: Estudio de caso de problema de ascensor 235
11.11 Extracción de clases de límites y control 237
11.12 Modelado funcional inicial: Estudio de caso de reunión del Fondo MSG 238
11.13 Diagrama de clases inicial: Estudio de caso de Fundación MSG 239
11.14 Modelado dinámico inicial: Estudio de caso de MSG Foundation 240
11.15 Clase de entidad de revisión: Estudio de caso de MSG Foundation 242
11.16 Clase de límite de extracto: Estudio de caso de MSG Foundation 243
11.17 Clase de control de extracción: estudio de caso de MSG Foundation 243
11.18 Implementación de caso de uso: estudio de caso de MSG Foundation 243
11.18.1Caso de uso EstimateFundsAvailableforWeek 244
11.18.2Caso de uso Administrar un activo 248
11.18.3Caso de uso Actualizar gastos operativos anuales estimados 251
p>11.18.4Caso de uso Producir un informe 252<
/p>
11.19 Incremento del diagrama de clases: estudio de caso de MSG Foundation 256
11.20 Plan de gestión de proyectos de software: estudio de caso de MSG Foundation 257
11.21 Flujo de trabajo de prueba: estudios de caso de MSG Foundation 257
11.22 Documentación de especificación en el proceso de unificación 257
11.23 Más sobre actores y casos de uso 258
11.24 Esfuerzos de análisis de soporte Transmisión de herramientas CASE 259
11.25 Desafíos al analizar flujos de trabajo 259
Revisión del capítulo 259
Materiales de lectura extendidos 260
Ejercicios 260
Referencias 262
Capítulo 12 Flujo de trabajo de diseño 264
12.1 Diseño orientado a objetos 264
12.2 Diseño orientado a objetos: Caso de problema de ascensor Investigación 268
12.3 Diseño orientado: Estudio de caso de MSG Foundation 270
12.4 Flujo de trabajo de diseño 272
12.5 Flujo de trabajo de prueba: Diseño 273
12.6 Flujo de trabajo de prueba: Caso de MSG Foundation 273
12.7 Tecnología formal para diseño detallado 273
12.8 Tecnología de diseño en tiempo real 274
12.9 Para herramientas CASE para diseño 274
12.10 Métricas de diseño 275
12.11 Desafíos que enfrenta el flujo de trabajo de diseño 276
Revisión de este capítulo 277
Materiales de lectura de extensión 277
Ejercicios 277
Referencias 278
Capítulo 13 Implementación del flujo de trabajo 280
13.1 Selección de un lenguaje de programación 280
p>13.2 Buenas prácticas de programación 282
13.2.1 Usar nombres de variables coherentes y significativos 282
13.2.2 Problemas con el código autodocumentado 283
13.2.3 Usar parámetros 284
13.2. 4 Diseño del código para facilitar la lectura 284
13.2.5 Declaraciones if anidadas 285
13.3 Estándares de codificación 286
13.4 Reutilización de código 286
13.5 Integración 286
13.5.1 Integración de arriba hacia abajo 287
13.5.2 Integración de abajo hacia arriba 288
13.5.3 Integración sándwich 288
13.5.4 Tecnología de integración 289
13.5.5 Gestión de integración 290
13.6 Implementación del flujo de trabajo 290
13.7 Implementación del flujo de trabajo: estudio de caso de MSG Foundation 290
13.8 Flujo de trabajo de pruebas: implementación 290
13.9 Selección de casos de prueba 290
13.9.1 Pruebas de especificaciones y pruebas de código 291
13.9. 2 Viabilidad de las pruebas de especificación 291
13.9. 3 Viabilidad de las pruebas de código 291
13.10 Tecnología de pruebas unitarias de caja negra 293
13.10.1 Pruebas de equivalencia y valor límite análisis 293
13.10.2 Pruebas de función 294
13.11 Casos de prueba de caja negra: estudio de caso de MSG Foundation 294
13.12 Tecnología de prueba de unidad de caja de vidrio 296
13.12.1 Pruebas estructurales: declaraciones, cobertura de ramas y rutas 296
13.12.2 Medición de la complejidad 297
13.13 Recorrido y revisión del código 298
13.14 Comparación de técnicas de pruebas unitarias 298
13.15 Sala limpia 298
13.16 Problemas en las pruebas 299
13.17 Aspectos de gestión de las pruebas unitarias 301
>
13.18 Cuándo reescribir en lugar de depurar artefactos de código 301
13.19 Pruebas de integración 302
13.20 Pruebas de producto 303
13.21 Pruebas de aceptación 303
p>13.22 Flujo de prueba: estudio de caso de MSG Foundation 304
13.23 Herramientas CASE para la implementación 304
13.23.1 Herramientas CASE para todo el proceso de desarrollo de software 304 p> p>
13.23.2 Entorno de desarrollo integrado 304
13.23.3 Entorno de aplicaciones comerciales 305
13.23.4 Infraestructura de herramientas públicas 305
13.23 .5 Problemas potenciales en el entorno 306
13.24 Herramientas CASE para probar el flujo de trabajo 306
13.25 Medición del flujo de trabajo de implementación 306
13.26 Caras que enfrentan los desafíos del flujo de trabajo de implementación 307
Revisión del capítulo 307
Materiales de lectura ampliados 308
Ejercicios 309
Referencias 310
Capítulo 14 Post- mantenimiento de entrega 313
14.1 Desarrollo y mantenimiento 313
14.2 Por qué es necesario el mantenimiento posterior a la entrega 314
14.3 Requisitos del programador de mantenimiento posterior a la entrega Qué 314
14.4 Pequeño estudio de caso de mantenimiento posterior a la entrega 316
14.5 Gestión del mantenimiento posterior a la entrega 317
14.5.1 Informe de defectos 317
14.5. 2 Autorizar modificaciones a los productos 318
14.5.3 Garantizar la mantenibilidad 318
14.5.4 Problemas de mantenimiento repetidos 319
14.6 Problemas de mantenimiento 319
14.7 Habilidades de mantenimiento post-entrega y habilidades de desarrollo 321
14.8 Ingeniería inversa 321
14.9 Pruebas durante el mantenimiento post-entrega 322
14.10 Herramientas CASE para post-entrega mantenimiento de entrega 323
14.11 Medición del mantenimiento posterior a la entrega 323
14.12 Mantenimiento posterior a la entrega: estudio de caso de la Fundación MSG 323
14.13 Desafíos del mantenimiento posterior a la entrega 323
Revisión del capítulo 323
Lecturas adicionales 324
Ejercicios 324
Referencias 325
Capítulo 15 Discusión adicional de UML 327
15.1 UML no es una metodología 327
15.2 Diagrama de clases 327
15.2.1 Agregación 328
p>15.2. 2 Multiplicidad 329
15.2.3 Combinación 329
15.2.4 Generalización 330
15.2.5 Correlación 330 p>
15.3 Anotaciones 330
15.4 Diagramas de casos de uso 330
15.5 Estereotipos 331
15.6 Diagramas de interacción 331
15.7 Figura de estados 333
15.8 Diagrama de actividades 335
15.9 Paquete 335
15.10 Diagrama de componentes 336
15.11 Diagrama de implementación 336
15.12Revisión del diagrama UML 336 p>
15.13UML e iteración 336
Revisión del capítulo 337
Materiales de lectura extendidos 337
Ejercicios 337
Referencias 337
Apéndice 338
Apéndice A Proyecto semestral: Proyecto de empresa de decoración y suministros de oficina Osric 338
Apéndice B Recursos de ingeniería de software 340
Apéndice C Flujo de trabajo de requisitos: Estudio de caso de MSG Foundation 341
Apéndice D Flujo de trabajo de análisis: Estudio de caso de MSG Foundation 341<
/p>
Apéndice E Plan de gestión de ingeniería de software: Estudio de caso de MSG Foundation 341
Apéndice F Flujo de trabajo de diseño: Estudio de caso de MSG Foundation 345
Apéndice G Flujo de trabajo de implementación: Caso de MSG Foundation Estudio (versión C) 349
Apéndice H Flujo de trabajo de implementación: Estudio de caso de MSG Foundation (Versión Java) 349
Apéndice I Flujo de trabajo de prueba: Estudio de caso de MSG Foundation 350
……