Red de conocimiento informático - Consumibles informáticos - Directorio de libros de ingeniería de software orientado a objetos

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

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

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

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

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>

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

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

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

……