Sei sulla pagina 1di 691
Ingenieria del software Ingenieria del software Séptima edicién IAN SOMMERVILLE Traducci6n Marfa Isabel Alfonso Galipienso Antonio Botia Martinez Francisco Mora Lizén José Pascual Trigueros Jover Departamento Ciencia de ta Compucaciin e ineligencia Arica Universidad de Aicame PEARSON TTIOTT AYO Madrid + México + Santafé de Bogoté « Buenos Aires * Caracas * Lima * Montevideo ‘San Juan + San José + Santiago + Sdo Paulo + Reading, Massachusetts + Harlow, England Datos de eatlogacion bibliog INGENTERIA DEL SOFTWARE. Séptima edicion Ian Sommervive PEARSON EDUCACION, S.A. Maid 2005, ISBN; 847m9.074.5, MATERIA: Informatica 681.3 Format: 195 % 250 mn Paginas: 12 ‘Todos los derechos reservados. (Queda prohibida, salvo excepcién prevista en la Ley, cualquier forma de reproduccién, distribuei6n, comunicacién publica y transformaciGn de esta obra sin contar con autorizacién de tos titulares de propiedad intelectual. La infraccién de los derechos mencionados puede ser cconstitutiva de delito contra la propiedad intelectual (arts. 270 y sgts. Cédigo Penal) DERECHOS RESERVADOS © 2005 por PEARSON EDUCACION, S.A. Ribera del Loira, 28 28042 Madrid (Espafa) INGENIER{A DEL SOFTWARE. Séptima edicién Jan Sommerville ISBN: 84-7829.074-5 Depésito Legal: M-31.467-2005 PEARSON ADDISON WESLEY es un sello editorial autorizado de PEARSON EDUCACION, S.A. © Addison-Wesley Publishers Limited 1982, 1984, Pearson Education Limited 1989. 2001, 2004 ‘This translation of SOFTWARE ENGINEERING 07 Edition is published by arrangement with Pearson Education Limited, United Kingdom Equipo editorial: Editor: Miguel Martin-Romo ‘Técnico editorial: Marta Caicoya Equipo de produccién: Director: José Antonio Clares. ‘Técnico: José Antonio Henin Diseito de eubierta: Equipo de disefio de Pearson Educacién, S.A, ‘Composicién: COPIBOOK, $.L. Impreso por: TOP PRINTER PLUS, S. L. L. IMPRESO EN ESPANA - PRINTED IN SPAIN Ete libro ha sido impreso con pape! y tintas ecogicos, Protoco Parte I. VISION GENERAL . Introduccion .. Ma. Sistemas socio-téenicos .... 21 2.2 Preguntas frecuentes sobre la ingenierfa del software ...-......... 02 LAL 1.12, 113. LL Ly La La 1d LL 1.1.10. Lt 1.2, Responsabilidad profesional y 6tica ........ 0... cceveeeeeeee Propiedades emergentes de los sistemas ..... 00... 00ecc0eeeeee Ingenieria de sistemas . ... 221. 2.2.2 2.23, 2.24. 2.2.5, 2.2.6, 2.2.7. SeRoaRaE Qué es software? Qué ¢s la ingenierfa del software? Cul es Ia diferencia entre ingenierfa del software y ciencia de la computacién? ..... : {Cudl es la diferencia entre ingenierfa del software ¢ ingenieria de sistemas? . {Qué es un proceso del software? ... bettteeeeee {Qué es un modelo de procesos del software? - : {Cuales son los costos de la ingenieria del software? ......... {Qué son Jos métodos de la ingenieria del software? . éQué es CASE? ....... {2Cuales son los atributos de un buen software? . : {Cuales son los retos fundamentales que afronta Ia ingenieria del software? Definicién de requerimientos del sistema Diseiio del sistema . Modelado de sistemas Desarrollo de los subsistemas Integracién del sistema. Evolucién del sistema . . . . . Desmantelamiento del sistema... 22. eee ec ceeee vce eee vi indice de contenidos 2.3. Organizaciones, personas y sistemas informiticos .........- a 2.3.1, Procesos organizacionales 32 2.4. Sistemas heredados .... 35 3. Sistemas criticos ......6060seeeeeeeeeees 39 3.1. Unssistema de seguridad critico sencillo 2.22... 0sceceveseeeeeeeeeseeeesee al 3.2. Confiabilidad de un sistema ........226.5 bee ecevcteesseseeeeeeeees 43 3.3. Disponibilidad y fiabilidad 46 34, Seguridad .......00--+ 50 3.5. Proteccién .. woe 53 4, Procesos del software «4... +045 59 4.1, Modelos del proceso del software. ......+- 60 4.1.1. El modelo en cascada .. 62 4.1.2, Desarrollo evolutivo .. 63 4.1.3, Ingenieria del software basada en componentes. w 4.2. Meracién de procesos .......ssceeeeee eens 66 4.2.1. Entrega incremental .......0062.62000 66 42.2. Desarrollo en espiral ceeeeeees 68 4.3. Actividades del proceso ....... 05.20.0008 69 43.1, Especificaci6n del software... se cesee 69 43.2. Disefire implementacion del software. n 4.3.3. Validaci6n del software ..... 14 43.4, Evolucién del software 15 4.4. El Proceso Unificado de Rational 6 445, Ingenieria del Software Asistida por computadora 9 45.1. Clasificacién de CASE ceeeccnees 9 5. Gestion de proyectos 88 Sil. Actividades de gestion... . 0.0 0cccccce eee eeeteeseneeerereeeeeeeesseeses 87 5.2. Planificacién del proyecto. 2 88 5.2.1. El plan del proyecto ve 89 5.2.2. Hitos y entregas : 90 5.3. Calendarizaci6n del proyeclo ...... _ . ot 5.21. Graficos de baras y redes de actividades. 2 5.4. Gestidn de riesgos bebe eeeeeceeeete 95 5.4.1. Tdentficacién de tiesgos «2... 5.4.2. Andlisis de riesgos : 5.4.3. Planificacién de riesgos 5.4.4, Supervisién de riesgos : : 100 Parte I]. REQUERIMIENTOS 6. Requerimientos del software .....00..ssss0eeereee 61. Requerimientos funcionales y no funcionales. ......2+.--+.0 0+ ++ 109 6.1.1, Requerimientos funcionales ......-.-+ 0-55 cee HO 6.1.2. Requerimientos no funcionales . eM 6.1.3. Los requerimientos del dominio. . us Indice de contenidos vii 6.2, Requerimientos del usuario feet eetet tetas 116 6.3. Requerimientos del sistema . . cite eeeeeee 118 6.3.1. _Especificaciones en lenguaje estructurado oe 120 6.4. Especificacién de la interfaz sevees 122 65. El documento de requerimientos del software 123 7. Procesos de la ingenieria de requerimientos ............ssssesceeeeeseceeeeees 129 7.1. Estudios de viabilidad 131 7.2. Obtencién y andlisis de requerimientos - 132 7.2.1. Descubrimiento de requerimientos 135 7.2.2. Etmografia 2.2... cece see 142 7.3. Validacién de requerimientos - 144 7.3.1, Revisiones de requerimientos . - 145 7.4, Gestién de requerimientos . wee 146 7.4.1. Requerimientos duraderos y volitiles 147 7.4.2. Planificacidn de ta gesti6n de requerimientos eee eeee 147 7.4.3, Gestion del cambio de los requerimientos. .............. beeceeeeeees 150 8. Modelos del sistema ........ 0000000022. 00 153 8.1. Modelos de contexto cette sees 155; 8.2. Modelos de comportamiento ... - 156 8.2.1. Modelos de flujo de datos : 157 8.2.2, Modelos de maquina de estados .. 159 8.3. Modelos de datos . -- 161 8.4. Modelos de objetos . feteteteeeees + 164 8.4.1. Modelos de herencia . 165 8.4.2, Agregacién de objetos 8.4.3. Modelado de comportamiento de objetos : 169 85. Métodos estructurados .. . - 170 9. Especificacién de sistemas criticos .. seteeeeeeceeeeeseeesees ITS 9.1, Especificacién dirigida por riesgos 7 9.1.1, Identificacién de riesgos ...... 178 9.1.2. Andlisis y clasificacion de riesgos 178 9.1.3. Descomposicién de riesgos . 181 9.1.4. Valoracién de la reduccién de riesgos 182 9.2. Especificacion de la seguridad 183 9.3, Especificacién de la proteccién 186 9.4. Especificacién de la fiabilidad del software 188 9.4.1, Métricas de fiabilidad . . + 189 9.4.2. Requerimientos de fiabitidad no funcionales 191 10. Especificacién formal ... ce beesseeeeeeeeeeeeeseeees 197 10.1. Especificacién formal en el proceso del software 10.2. Especificacién de interfaces de subsistemas 10.3. Especificacién del comportamiento ... villi Indice de contenidos Parte III. DISENO «1... ue 2. 13. 15. seeeeseeees UD 222 224 225 226 227 ss 229 - 230 231 232 233 234 Diseno arquitectOnico ........2--04seeeseeeeeeeeeeee IIA. Decisiones de disefio arquitectOnico .........00sececeeeeeeeenes 11.2. Organizacién del sistema .......-. 11.2.1, El modelo de repositorio . 11.2.2. El modelo cliente-servidor 11.2.3, El modelo de capa ....... 11.3. Estilos de descomposicién modular .....-.-. 11.3.1. Descomposicién orientada a objetos - 11.3.2. Descomposicién orientada a flujos de funciones 11.4. Estilos de control... . . . 11.4.1. Control centralizado 1142. Sistemas dirgidos por eventos... 11.5. Arquitecturas de referencia. . » 236 Arquitecturas de sistemas distribuidos ........++.++ 241 12.1, Arquitecturas multiprocesador . . 244 12.2. Arquitecturas cliente-servider «245 12.3, Arquitecturas de objetos distibuidos . - 249 12.3.1. CORBA ....e...e. » 252 124. Computaci6n distribuida interorganizacional wo 256 12.4.1. Arquitecturas peer-to-peer .......- : » 256 12.42, Arguitectura de sistemas orientados a servicios... = 258 Arquitecturas de aplicaciones .........seeeseeveer eee 265 13.1, Sistemas de procesamiento de datos = 268 13.2. Sistemas de procesamiento de transacciones +. 270 13.2.1, Sistemas de informacién y de gestién de recursos - 272 276 . 279 285 288 13.3. Sistemas de procesamiento de eventos 13.4. Sistemas de procesamiento de lenguajes 14,1, Objetos y clases . 14.1.1, Objetos concurrentes : =. 290 142. Un proceso de diseio orientado a objeios . = 292 V4.2. Contexto del sistema y modelos de utilizacion seve 294 14.2.2. Disefio de la arquitectura see coves 296 14.2.3. Identificacién de objetos seseeeeees 297 14.2.4, Modelos de disefio 14.25. Especificacion de Ia interfaz de los objetos 14.3. Evolucién del disefo ...... 0.02.0 e eres ees 299 303 Diseno de software de tiempo real ........++ veeeeeesesees BIZ a4 315 316 15.1. Disefio del sistema ....... 15.1.1. Modelado de sistemas de tiempo real 15.2, Sistemas operativos de tiempo real cesteeee 15.2.1. Gestion de procesos ......0.0veeeeeees teseeeeeees indice de contenidos ix 16. Parte IV. DESARROLLO ......-.60.006 7. 18, 19. 20. 15.3, Sistemas de monitorizaci6n y control ........ +. 318 15.4, Sistemas de adquisicién de datos ...... - 323 Disefio de interfaces de usuario ............. + 331 16.1. Asuntos de disefio ... . - 335 16.1.1. Interaccién del usuario. 335 16.1.2. Presentaci6n de la informacion ....... cesses 338 16.2. El proceso de disefio de la interfaz de usuario . ceeeeees 344 16.3. Andlisis del usuario ....... . 345 16.3.1. Técnicas de andlisis : - 346 16.4, Prototipado de la interfaz de usuario. cee 348 16.5. Evaluacién de la interfaz sess 350 Desarrollo ........2.0e4 387 17.1. Métodos dgiles .... - 361 17.2. Programacisn extrema 364 17.2.1, Pruebasen XP... 0.0.2.2. 366 17.2.2. Programacién en parejas . + 369 17.3. Desarrollo répido de aplicaciones. - 370 17.4, Prototipado del software... 373 Reutilizacion del software 4.400.060.0000 379 18.1. Elcampo de la reutilizacién ... cerns . 382 18.2. Patrones de disefio 2.2... cece cece = 384 18.3, Reutilizacién basada en generadores 0.2... . 387 18.4. Marcos de trabajo de aplicaciones : 389 18.5. Reutilizaci6n de sistemas de aplicaciones. 391 18.5.1. Reutilizaci6n de productos COTS 18.5.2. Lineas de productos software... - 391 Ingenieria del software basada en componentes ... 401 19.1. Componentes y modelos de componentes . 19.1.1, Modelos de componentes 19.1.2. Desarrollo de componentes para reutilizacién 19.2. El proceso CBSE 19.3. Composicién de componentes Desarrollo de sistemas criticos ......2..-.00eee080 20.1. Procesos confiables . 20.2. Programacién confiable .. . 20.2.1. Informacién protegida 20.2.2. Programacién segura 20.2.3, Manejo de excepciones . 20.3. Tolerancia a defectos : 20.3.1. Deteccién de defectos y evaluacién de dafios 20.3.2. Recuperacién y reparacién de defectos ... 20.4. Arquitecturas tolerantes a defectos .......... X Indice de contenidos 21, Evolucién del software .. 447 21,1. Dinémica de evolucién de los programas... 449 21.2, Mantenimiento del software vee 451 21.2.1, Prediccién del manteni vee 454 21.3. Procesos de evolucién . . 456 +. 459 21.4, Evolucién de sistemas heredados . » 461 Parte V. _ VERIFICACION ¥ VALIDACION . - 22. Verificacion y validacién an 22.1. Planificacién de la verificacién y validacién . 475 22.2, Inspecciones de software 477 22.2.1. El proceso de inspeccign de programas 478 22.3. Analisis estético automatizado 482 22.4, Verificacién y métodos formales . 485 224.1. Desarrollo de software de Sala Limpia + 486 23. Pruebas del software . 491 23.1. Pruebas del sistema ... . 494 23.t.1. Pruebas de integracién 495 23.1.2, Pruebas de entregas . ve 497 23.1.3. Pruebas de rendimiento . + 500 23,2, Pruebas de componentes. . se SO 23.2.1. Pruebas de interfaces + 502 23.3. Disefio de casos de prueba .. 504 23.3.1. Pruebas basadas en requerimientos . » 505 23.3.2, Pruebas de particiones + 506 23.3.3. Pruebas estructurales + 509 23.3.4. Pruebas de caminos .. .. SH 23.4. Automatizacién de las pruebas » S13 24. Validacién de sistemas criticos . S19 24.1. Validacién de la fiabilidad . » 521 24.1.1, Perfiles operacionales. . + $22 24.1.2. Predicci6n de la fiabilidad = 523 24.2. Garantia de la seguridad . 526 24.2.1, Argumentos de seguridad + 527 24.2.2. Garantia del proceso... + $30 2423. Comprobaciones de seguridad en tempo de eicucn «. - 531 24,3, Valoracién de la proteccién ..... + 532 24.4. Argumentos de confiabilidad y de seguridad. . 534 Parte VI. GESTION DE PERSONAL . SA 28, Gestién de personal .. 543 25.1. Seleccién de personal . 54d 25.2. Motivacién 547 25.3. Gestionando grupos 550 indice de contenidos Xi 25.3.1, 28.3.2. 25.3.3. Las comunicaciones del grupo 25.3.4, La organizacién del grupo 25.3.5, Entomos de trabajo . 25.4, El Modelo de Madurez de la Capacidad del Personal 26. Estimacién de costes del software .. 551 552 554 555 556 558 Productividad - 563 ‘Técnicas de estimacién : +. 567 Modelado algoritmico de costes - 570 26.3.1. El modelo de COCOMO . : ce 572 26.3.2. Modelos algoritmicos de costes en la planificacién vee 580 26.4, Duracién y personal del proyecto 27. Gestion de calidad .......2.... 00008 582 587 389 - 591 27.1. Calidad de proceso y producto 27.2. Garantfa de ta calidad y estindares 27.21. 180.9000 .... seveeeees +. 593 27.2.2. Estindares de documentacién ....... . 594 27.3. Planificacién de la calidad .....,., =. 596 274. Control de lacalidad ..... : . 597 27.4.1, Revisiones de la calidad 597 27.5, Medici6n y métricas del software 598 275.1. El proceso de medicién 27.5.2. Métricas de producto 27.5.3, Anélisis de las mediciones 28, Mejora de procesos . 28.1, Calidad de producto y de proceso. . 28.2. Clasificacién de los procesos beste eee 28.3. Medicién del proceso . wee . 28.4. Analisis y modelado de procesos. wee 28.4.1, Excepciones del proceso .............. 28.5. Cambio en los procesos 28.6. El marco de trabajo para la mejora de procesos CMMI... 28.6.1. El modelo CMMI en etapas . . wees eee 28.6.2. El modelo CMMI continuo . . 29. Gestion de configuraciones .......6...00cecsseecreeeeeeeeeees 29.1. Planificacién de la gestién de configuraciones . 29.1.1. Identificacién de los elementos de configuraci6n 29.1.2. La base de datos de configuraciones ........ 29.2, Gestion del cambio. . eee tee 29.3. Gestién de versiones y entregas .. . 29.3.1. Identificacién de versiones 29.3.2. Gestién de entregas . 29.4. Construecién del sistema. Xli indice de contenidos 29.5, Herramientas CASE para gestién de configuraciones cece eeceeeeees ees MZ 29.5.1. Apoyo ala gestién de cambios cette ce AB 29.5.2. Soporte para gestién de versiones 643, 29.5.3, Apoyo a la construccién del sistema - 648 Glosario 2... eceeeeeceeee ee eneeeeeeeeseueuee nnn seres serene O49 Bibliografia .........ccceeeeeeneeees seceeeeees 661 indice alfabético ...........-- seeeeeeee OTT La primera edicién de este libro de ingenieria del software fue publicada hace mis de veinte afios. Aquella edicién fue escrita utilizando un terminal de tex- to conectado a una minicomputadora (un PDP-11) que posiblemente costaba cerca de 50.000 S. Yo he escrito esta edicién desde un portatil con conexién inalémbrica que cuesta menos de 2.000 $ y mucho més potente que aquel PDP-11. El software més comtin era el software para mainframes, pero las computadoras personales estaban a punto de aparecer. Ninguno de nosotros imagin6 el nivel de difusién que éstas iban a tener ni el cambio que este he- ccho iba a producir en el mundo. Los cambios en el hardware en los tiltimos veinte afios han sido notables, Y podria parecer que los cambios en el software han sido igual de significati- vos. Ciertamente, nuestra capacidad para construir sistemas grandes y com- plejos ha mejorado drdsticamente. Nuestros servicios ¢ infraestructuras na- cionales —energia, comunicaciones y transporte— dependen de sistemas informaticos muy grandes, complejos y fiables. En la construccién de siste- ‘mas software se mezclan muchas tecnologias —J2BE, .NET, EJB, SAP. BPELAWS, SOAP, CBSE— que permiten que aplicaciones grandes basadas en Web sean desarrolladas mucho més répido que en el pasado. Sin embargo, a pesar de los cambios que ha habido en tas dos dltimas déca- das, cuando nosottos miramos més alld de las tecnologias, hacia los procesos fundamentales de la ingenierfa del software, éstos se han mantenido igual. Nos- otros reconocimos hace veinte afios que el modelo en cascada tenfa problemas serios, pero un examen publicado en diciembre de 2003 por /EEE mostraba que ‘mas de un 40% de las compaiiias siguen utilizando esta aproximacién, El tes- teo sigue siendo la técnica de validaci6n dominante, a pesar de que otras técni- cas, como las inspecciones, han sido utilizadas de una forma més efectiva des- de mediados de los atios 70, Las herramientas CASE, a pesar de estar basadas ahora en UML, siguen siendo basicamente editores gréficos con alguna fun- cionalidad para chequear y generar cédigo. xiv Prologo Nuestros actuales métodos y técnicas de ingenieria del software han hecho que la cons- truccién de sistemas grandes y complejos sea mejor. A pesar de ello, sigue siendo habitual en- contrar proyectos que se retrasan, que sobrepasan el presupuesto 0 que se entregan sin sati facer las necesidades de los clientes. Mientras estaba escribiendo este libro, se divulgé una investigacién del gobierno en Reino Unido, sobre un proyecto para prover a los juzgados de un sistema software para casos de delincuencia menor. El coste del sistema fue estimado en 156 millones de libras y fue planificado para ser entregado en el aio 2001. En 2004, el coste habfa subido a 390 millones de libras y no estaba totalmente operativo. Hay, por lo tanto, una necesidad imperiosa de educacién en ingenieria del software. En los iltimos afios, el desarrollo mds significativo en ingenierfa del software ha sido la aparicién de UML como esténdar para la descripci6n de sistemas orientados a objetos, y el desarrollo de métodos giles como la programacién extrema. Los métodos giles estén per- mitiendo el desarrollo répido de sistemas, explicitamente implican al usuario en el equipo de trabajo y reducen el papeleo y 1a burocracia en el proceso software. A pesar de lo que algunos criticos sostienen, pienso que estas aproximaciones encarnan buenas pricticas de ingenieria del software. Ellas tienen unos procesos bien definidos, prestan atenci6n a la es- pecificacién del sistema y a los requerimientos del usuario, y tienen esténdares de alta ca- lidad. No obstante, esta revisién no pretende ser un texto sobre métodos giles. Prefiero centrar- ‘me en los procesos bisicos de ingenierfa del software —especificacién, diseito, implementa- ign, verificacion, y validacién y gestién—. Es necesario entender estos procesos y las técni- ‘cas asociadas para decidir si los métodos giles son la estrategia de desarrollo més adecuada y cémo adaptar los métodos a una situacién particular. Un tema dominante en el libro son tos sistemas criticos —sistemas en los que los fallos de funcionamiento tienen consecuencias ne- fastas y donde la seguridad del sistema es critica, En cada parte del libro, estudiaremas las t&c- nicas especificas de ingenieria de! software que son relevantes para la construccién sistemas criticos. Inevitablemente, los libros reflejan las opiniones y prejuicios de sus autores. Algunos lec- tores estardn en desacuerdo con mis opiniones y con mi eleccién del material. Este desacuer- do es un refiejo de la diversidad de disciplinas y es esencial para su evolucién. No obstante, yo espero que a todos los ingenieros de software y estudiantes de ingenieria del software les result interesante, Estructura del libro _—$$— Lacstructura del libro esté basada en los procesos fundamentales de ta ingenieria del software. Esta organizado en seis partes, con varios capftulos en cada parte: Parte |: Introduce la ingenierfa del software, situaindota en un amplio contexto de sistemas y presentando las nociones de procesos y gestién de ingenierfa del software. arte 2: Trata los procesos. técnicas y documentacién asociados con los requerimientos de Ingenieria. Incluye un estudio sobre los requerimientos software, modelado de sistemas, especificacién formal y técnicas para especificar la fiabilidad. Parte 3: Esta parte esté dedicada al disefto de software y a los procesos de disefio. Tres de Jos seis capitulos se centran en el importante tema de las arquitecturas software. Otros te- ‘mas incluyen disefo orientado a abjetos, disefio de sistemas en tiempo real y disefio de in- terfaces de usuario. Prélogo xv Pate 4: Describe una serie de aproximaciones a la implementacién, incluyendo métodos giles, reutilizaci6n, CBSE y desarrollo de sistemas criticos. Como los cambios son una parte importante de la implementacién, he integrado temas de evolucién y mantenimiento enesta parte, Parte 5: Se centra en temas de verificacién y validacion, Incluye capitulos de validacién y verificacién estatica, testeo y validacién de sistemas criticos. Parte 6: La parte final abarca una serie de temas de gestiGn: gestién de personal, estima- ccién de costes, gestién de calidad, procesas de mejora y gestién de cambios. En la introduceién de cada parte, expondré la estructura y organizacién con mayor detalle. Cambios en la 6.* edicién TABLA 1. Revision de los capitulos Hay cambios importantes, relativos a la organizacién y contenido, respecto a la edicién pre- via. He incluido cuatro capitulos nuevos y he hecho una importante revisién en otros once ca- pitulos. Todos los otros capitulos han sido actualizados, incorporando convenientemente nue- vo material ‘Mas y més sistemas tienen altos requerimientos de disponibilidad y fiabilidad, y espero que nosotros tomemos la fiabilidad como un conductor basico en la ingenieria del software. Por esta raz6n, los capitulos de sistemas eriticos han sido integrados en otras secciones. Para evi- tar que et volumen de! libro sea excesivo, he reducido la cantidad de material sobre manteni- miento del software y he integrado los temas de mantenimienio y evoluci6n del software en ‘otros capitulos. Hay dos casox de estudio —uno sobre ta gestién de documentos de una bi- blioteca y otro de un sistema médico—, los cuales presento en diferentes capitulos, EI material referente a los casos de estudio esté sefialado con iconos en los margenes. La Tabla 1 resume los cambios, indicando con el ntimero entre paréntesis el capitulo correspon- diente en la 6. edicién, En el sitio Web del libro se puede encontrar més informacién sobre estos cambios, Capitulo 13: Arquitectura de las aplicaciones. Capitulo 17: Desarrotlo rapido de aplicaciones. Capitulo 19: Ingenieria del software basada en componentes. Capitulo 21: Evolucién del software Capitulo 2: Sistemas socio-téenicos (2) Capitulo 4: Procesos sofware (3) Capitulo 7: Procesos de ingenierla de requerimientos (6) Capitulo 9: Especiticacién de sistemas critics (17) Capitulo 12: Arquitecturas de sistemas distibuidos (11) Capitulo 16: Disefto de interface de usuario (15) Capitulo 18: Reutilizacion de cédigo (14) Capitulo 25: Pruebas dei software (20) Capltulo 25: Gestién de personal (22) Capitulo 24; Validaci6n de sistemas crticos (21) Capitulo 28: Mejora de procesos (25) xvi Préiogo Capitulo 1: Introduccién (1) Capitulo 3: Sistemas erticos (16) Capitulo 5: Gestién de proyectos (4) Capitulo 6: Requerimientos software (5) Capitulo 8: Modelos de sistemas (7) Capitulo 10: Especficacion formal (9) Capitulo 11: Disefo arquitect6nico (10) Capitulo 14: Disefio orientado a objetos (12) Capitulo 15: Disefio de sistemas en tiempo real (13) Capitulo 20: Implementacién de sistemas crticos (18) Capitulo 22: Verificacién y validacion (19) Capitulo 26: Estimacién de costes del software (23) Capitulo 27: Gestion de calidad (24) Capitulo 29: Gestion de configuraciones (29) ‘Construcci6n de prototipos software (8) Sistemas heredados (26) Cambios en el software (27) Reingenieria del software (28) Guia para el lector Este libro esté enfocado a estudiantes, graduados e ingenieros de la industria del software. Puede ser utilizado en cursos generales de ingenieria del software o en cursos especificos, ‘como programacién avanzada, especificacién, diseiio y gestién software. A los ingenieros de software que trabajan en la industria, este libro puede resultarles stil como lectura general y ‘como actualizacién de sus conocimientos en temas panticulares como ingenierfa de requent- mientos, disefio de la arquitectura, desarrollo de sistemas formales y mejora de procesos. Los ejemplos en el texto han sido utilizados como una vfa prictica para reflejar el tipo de aplica- ciones que los ingenicros deben desarrollar. Usando el bro para ensefiar He disefiado e! libro para que pueda ser utilizado en tres tipos de cursos de ingenieria. 1. Cursos de introduccién a la ingenier(a del software para estudiantes que no tienen experiencia en ingenierfa del software. Se puede empezar con la seccién introducto- ria y luego seleccionar capitulos de otras secciones del libro. Esto dard a los estu- diantes una visi6n general de la materia con la oportunidad de hacer un estudio més detallado por parte de los alumnos interesados. Si el curso esta basado en proyectos, los primeros capitulos proporcionardn suficiente material para comenzar el proyec- to, y capitulos posteriores servirdn para referenciar y dar més informacién del avan- ce de su trabajo. Prologo —_xvil Paginas Web 2. Cursos de introduccién 0 nivel medio sobre temas especificos de ingenieria del soft- ware. El libro es vilido para cursos de especificacién de requerimientos, diseiio de software, gestién de proyectos software, desarrollo de sistemas fiables y evolucién del software, Cada parte puede servir tanto para cursos de introduccién como intermedios en los diferentes temas. Asi como cada capitulo tiene lecturas asociadas, he incluido en el sitio web informacién sobre otros articulos y libros relevantes. 3. Cursos avanzados en ingenieria del software. Los capitulos pueden servir como base para cursos especificos, pero deben ampliarse con lecturas complementarias que tra- ten con mayor detalle los temas, Por ejemplo, yo imparto un médulo en Master en in- genieria de sistemas el cual se apoya en este material. He incluido detalles de este cur- 80 y de un curso en ingenieria de sistemas criticos en el sitio web. La utilidad de un libro general como éste est en que puede utilizarse en diferentes cursos, En Lancaster, nosotros empleamos el texto en un curso de introduccién a la ingenieria del soft- ware y en cursos de especificacién, diseio y sistemas criticos. Cursos de ingenieria del soft- ware basada en componentes e ingenieria de sistemas utilizan el libro a lo largo de su impar- ticién, junto con articulos complementarios que se distribuyen entre los alumnos. Tener un solo libro de texto da a los alumnos una visién coherente de la materia, y éstos no tienen que comprar varios libros. Para reforzar la experiencia de aprendizaje de los estudiantes, he incluido un glosario de términos, con definiciones adicionales en el sitio web. Ademés, cada capitulo tiene: + Unos objetivos claros presentados en la primera pagina. * Una lista de los puntos clave tratados en el capitulo. + Lecturas adicionales recomendadas —otros libros que estén actualmente en impresién o articulos fécilmente accesibles (en mi sitio Web puede encontrar un listado de otras lec- turas y enlaces recomendados). + Ejercicios, que incluyen ejercicios de disefio. El proyecto denominado «Software Engineering Body of Knowledge» (hitp://swebok.org) fue establecido para definir las areas clave de conocimiento técnico relevantes para los pro- fesionales del software. Estin organizadas bajo 10 epigrafes: requerimientos, discfio, cons- truccién, prueba, mantenimiento, gestién de configuraciones, gestién, procesos, herramien- tas y métodos, y calidad. Mientras serfa imposible incluir en un solo libro de texto todas las reas de conocimiento propuestas por el proyecto SWEBOK, en este libro se tratan todas las areas de alto nivel SS El sitio web asociado a este libro e: Intp://www.software-engin.com Este sitio ofrece una amplia gama de material complementario de ingenieria del software. Desde aqui, usted puede acceder a las paginas web de soporte de este libro y de ediciones an- teriores. Esta ha sido mi politica, en versiones anteriores y en ésta, para mantener el nimero de en- laces web en el libro en un minimo absoluto. La razén es que los enlaces web sufren muchos cambios y, una vez impreso el libro, son imposibles de actualizar, En consecuencia, la pégi- xvili Prélogo: ‘na web del libro incluye un gran nimero de enlaces a recursos y material relacionado con la Ingenieria del software. Si usted los utiliza y encuentra problemas, por favor hégamelo saber y actualizaré esos enlaces. Para dar soporte en el uso de este libro en cursos de ingenierfa del software, he incluido una amplia variedad de material en el sitio web. En los enlaces al material para el docente, podrd encontrar: + Presentaciones (PowerPoint y PDE) para todos los capitulos del libro. ‘+ Cuestiones para cada capitulo. + Casos de estudi + Sugerencias sobre proyectos. + Descripciones sobre estructuras de cursos. + Sugerencias sobre lecturas complementarias y enlaces a los recursos web de cada capi- tulo. + Soluciones para los ejercicios asociados a cada capitulo y para las cuestiones (sélo pro- fesor). ‘Sus sugerencias y comentarios sobre el libro y el sitio web serdn bienvenidos. Puede con- tactar conmigo a través de ian@software-engin.com. Recomiendo que incluya [SE7] en el asunto del mensaje para evitar que los filtros antispam rechacen su mensaje. Siento no tener tiempo para ayudar a los estudiantes en su trabajo; por lo tanto, no me pregunten como re- solver ningiin problema de! libro. Reconocimientos A lo largo de los afios muchas personas han contribuido al desarrollo de este libro, y me gus- taria dar las gracias a todos los que han comentado las ediciones anteriores y han hecho su- gerencias constructivas (revisores, estudiantes, lectores que me han escrito). Al personal de laeditorial y produccién de Pearson Educacién en Inglaterra y en Estados Unidos por su apo- yo y ayuda, y producir el libro en un tiempo récord. Por lo tanto, gracias a Keith Mansfield, Patty Mahtani, Daniel Rausch, Carol Noble y Sharon Burkhardt por su ayuda y apoyo. Finalmente, me gustarfa dar las gracias a mi familia, que ha tolerado mi ausencia cuando mi frustracién cuando las palabras no surgfan. Yen. especial a mi esposa, Anne, y a mis hijas, Ali'y Jane, por su ayuda y apoyo. Tan Sommerville, febrero 2004 Capitulo 1 Capitulo 2 Capitulo 3 Capitulo 4 Capitulo 5 GENERAL Introduccién Sistemas socio-técnicos Sistemas criticos Procesos del software Gestion de proyectos La estructura basica de este libro sigue los procesos esenciales del software de especifi- cacién, disefio, desarrollo, verficacién y validacion, y gestion. Sin embargo, més que caer inmediatamente en estos temas, he incluido esta seccién de visién general para que pueda tener una idea amplia de la disciplina. Esta parte comprende los cinco primeros capitulos: El Capitulo 1 es una introduccién general a a ingenieria del software. Para hacerlo ac- cesible y facil de entender, lo he organizado usando una estructura de pregunta/res- puesta donde planteo y respondo preguntas tales como «Qué es la ingeniera del soft- wares. También introduzco el profesionalismo y la ética en este capitulo. El Capitulo 2 presenta los sistemas socio-técnicos, un tema que creo es absoluta- mente esencial para los ingenieros de software. El software nunca es usado por sf solo, pero siempre es parte de un sistema mayor que incluye el hardware, el elemento hu- mano y, a menudo, las organizaciones. Estos componentes influyen profundamente en los requerimientos y funcionamiento del software. En este capitulo se estudian las pro- piedades emergentes de los sistemas, los procesos de la ingenieria de sistemas y algu- nas de las formas en las que los asuntos organizacionales y humanos afectan a los sis- temas de software. £1 Capitulo 3 trata los «sistemas criticos». Los sistemas criticos son sistemas en los que un fallo de funcionamiento del software tiene graves consecuencias ténicas, econémi- cas 0 humanas, y en los que la seguridad de! sistema, la proteccién y la disponibilidad son requerimientos clave. Se incluyen capitulos sobre aspectos de sistemas criticos en cada parte del libro. En este capitulo, ademés, presento el primero de los casos de es- tudio del libro: el software para una bomba de insulina usado en el tratamiento de pa- cientes diabéticos. Los tres primeros capitulos establecen el escenario de la ingenieria del software y el Capitulo 4 continda con este propésito introduciendo el proceso del software y los mo- delos de procesos del software. Intraduzco procesos bésicos de Ia ingenieria del soft- ware, la materia del libro, en este capitulo, También trato brevemente el Proceso Unifi- cado de Rational, el cual esté enfocado al desarrollo de sistemas orientados a objetos. La tiltima seccién del capitulo explica cémo los procesos del software pueden ser apo- yados con herramientas software automatizadas. El Capitulo 5 aborda la gestién de proyectos. La gestién de proyectos es parte de to- dos los desarrollos profesionales de proyectos, y aqui describo la planificacién det pro- yecto, la confeccion de agendas y la estimacién de riesgos. Los estudiantes de un curso de ingenierfa del software implicados en un proyecto estudiantil deberian encontrar aqui la informacién que necesitan para trazar graficos de barras para un programa del pro- yecto y para la asignacién de recursos. Introducci6n Objetivos Los objetivos de este capitulo son introducir la ingenierfa del software y proporcionar un marco para entender el resto del libro. ‘Cuando haya leido este capitulo: m comprenderd qué es la ingenieria del software y por qué es importante; m conoceré las respuestas a las preguntas clave que proporcionan una introduccién a ta ingenieria del softwa m comprenderé algunos aspectos profesionales y de ética que son importantes para los ingenieros de software. Contenidos 1.1 Preguntas frecuentes sobre la inger 1.2 Responsabilidad profesional y ética ria del software 4 CAPITULO 1m Introduccion a las computadoras Actualmente casi todos los paises dependen de complejos sistemas informéticos. Infraes- tructuras nacionales y utilidades dependen de sistemas informéticos, y la mayor parte de los. productos eléctricos incluyen una computadora y software de control. La fabricacién indus- trial y distribucién est4 completamente informatizada, como el sistema financiero. Por lo tan- to, producir software costeable es esencial para el funcionamiento de la economfa nacional e internacional. La ingenieria del software es una disciplina de la ingenieria cuya meta es el desarrollo cos- teable de sistemas de software. Este es abstracto e intangible. No est restringido por mate- riales, 0 gobemado por leyes fisicas o por procesos de manufactura. De alguna forma, esto simplifica la ingenieria del software ya que no existen limitaciones fisicas del potencial del software. Sin embargo, esta falta de restricciones naturales significa que el software puede tle- gar a ser extremadamente complejo y, por lo tanto, muy dificil de entender. Lanocign de ingenieria det software fue propuesta inicialmente en 1968 en una conferen- cia para discutir lo que en ese entonces se llam6 la «crisis del software». Esta crisis del soft- ware fue el resultado de la introduccién de las nuevas computadoras hardware basadas en cir- cuitos integrados. Su poder hizo que las aplicaciones hasta ese entonces irrealizables fueran ‘una propuesta factible. El software resultante fue de érdenes de magnitud mas grande y mas complejo que los sistemas de software previos. ‘La experiencia previa en la construccidn de estos sistemas mostré que un enfoque informal para.el desarrollo del software no era muy bueno. Los grandes proyectos a menudo tenfan afios de retraso. Costaban mucho més de lo presupuestado, eran irrealizables, diffciles de mante- ner y con un desempeiio pobre. El desarrollo de software estaba en crisis. Los costos del hard- ware se tambaleaban mientras que los del software se incrementaban con rapidez. Se necesi- taban nuevas técnicas y métodos para controlar la complejidad inherente a los sistemas ‘grandes. Estas técnicas han Ilegado a ser parte de la ingenieria del software y son ampliamente uti- Jizadas. Sin embargo, cuanto més crezca nuestra capacidad para producir software, también Jo haré la complejidad de los sistemas de software solicitados. Las nuevas tecnologias resul- tantes de la convergencia de tas computadoras y de los sistemas de comunicacién y comple- jas interfaces grdficas de usuario impusieron nuevas demandas a los ingenieros de software. Debido a que muchas compafifas no aplican de forma efectiva las técnicas de la ingenieria del software, demasiados proyectos todavia producen sofiware que es irrealizable, entregado tar- de y sobrepresupuestado. ‘Se puede afirmar que hemos hecho enormes progresos desde 1968 y que el desarrotlo de esta ingenieria ha mejorado considerablemente nuestro software. Comprendemos mucho me- jor de las actividades involucradas en el desarrollo de software. Hemos desarrollado métodos efectivos de especificacién, disefio e implementacién del software. Las nuevas notaciones y herramientas reducen el esfuerzo requerido para producir sistemas grandes y complejos. ‘Ahora sabemos que no hay una enfoque «ideal» a la ingenierfa del software. La amplia di- versidad de diferentes tipos de sistemas y organizaciones que usan estos sistemas significa que necesitamos una diversidad de enfoques al desarrollo de software. Sin embargo, las nociones. fundamentales de procesos y Ia organizacién del sistema son la base de todas estas técnicas, y éstas son la esencia de la ingenieria del software. Los ingenieros de software pueden estar orgullosos de sus logros. Sin software complejo no habrfamos explorado el espacio, no tendriamos Intemet y telecomunicaciones modemas, ¥ todas las formas de viajar serfan més peligrosas y caras. Dicha ingenierfa ha hecho enormes contribuciones, y no cabe dudad de que, en cuanto la disciplina madure, su contribucién en el siglo xx1 sera aiin mas grande. 1.1. Preguntas frecuentes sobre la ingeniaia del software 5 11 144 Preguntas frecuentes sobre la ingenieria del software Esta seccién se ha disefiado para resolver algunas preguntas fundamentales sobre la ingenie- ria det software y para proporcionar algunos de mis puntos de vista sobre la disciplina. El for- ‘mato que he utilizado es el de «lista de preguntas frecuentes». Este enfoque se emplea co- minmente en los grupos de noticias de Internet para prover a los recién legados de las espuestas a las preguntas frecuentes. Creo que es una manera muy efectiva de dar una intro- duccién sucinta al tema de la ingenierfa del software, Las preguntas que se contestan en esta seccién se muestran en la Figura 1.1. aQué es software? Muchas personas asocian el término software con los programas de computadora. Sin em- bargo, yo prefiero una definicién més amplia donde el software no son s6lo programas, sino todos los documentos asociados y la configuracién de datos que se necesitan para hacer que estos programas operen de manera correcta. Por io general, un sistema de software consiste en diversos programas independientes, archivos de configuracién que se utilizan para ejecu- ‘Qué es software? Programas de ordenador y la documentacién asociada. Los productos de software se pueden desarrollar para algin cliente en particular 0 para un mercado general. ‘Qué es la ingenierta del software? La ingenieria del software es una disciplina de ingenierla que comprende todos los aspectos de la produccién de software. {Cul es la diferencia entre ingenieria del soft- ‘ware y Gencia dela computacién? La ciencia de la computacién comprende la teorla Y los fundamentos; ia ingeniria del sofware comprende las formas précticas para -desarrollar y enitregar un software Gtil. {Cudl es la diferencia entre ingeniera del soft- ‘ware e ingenierla de sistemas? La ingenieria de sistemas se refiere a todos los as- Pectos del desarralio de sistemas informéticos, incluyendo hardware, software e in- [genieria de process La ingenieria del software es parte de este proceso. Qué es un proceso del software? Un conjunto de actividades cuya meta es el desarrollo o evolucién del software. ‘Que es un modelo de procesos ‘Una representacion simpliicada de un proceso del software, presentada desde una va espectica. del software? Perspective ‘Cusles son los costos de la ingenierfa A grandes rasgos, el 60 % de fos costes son de desarrollo, el 40 % restante son de del software? pruebas. En el caso del software personalizado, los costes de evolucion a menudo ‘exceden los de desarrollo, Qué son los métodos de la ingenieria—_Enfoques estructurados para el desarrollo de software que indhuyen modelos de sis- del software? ‘temas, notaciones, reglas, sugerencias de disefo y gulas de procesos. Qué es CASE (Ingenieria de! Software Sistemas de software que intentan propordionar ayuda automatizada a las activida- ‘Asistida por Ordenadar)? des del proceso del software. Los sistemas CASE 8 menudo se utiizan como apoyo al método, ‘Cusles son los atributos de un buen —_El software debe tener la funcionalidad y el rendimiento requeridos por el usuario, software? ademés de ser mantenible, confiable y fécil de utilizar.

Potrebbero piacerti anche