Ingeniería Del Software

1y ago
0 Views
0 Downloads
5.93 MB
691 Pages
Last View : 1y ago
Last Download : n/a
Upload by : Roy Essex
Transcription

Ingeniería del software

Ingeniería del softwareSéptima ediciónIAN SOMMERVILLETraducciónMaría Isabel Alfonso GalipiensoAntonio Botía MartínezFrancisco Mora LizánJosé Pascua] Trigueros JoverDepartamento Ciencia de la Computación e Inteligencia ArtificialUniversidad de AlicanteMadrid Mexico Santafé de Bogota Buenos Aires Caracas Lima MontevideoSan Juan San José Santiago Sào Paulo Reading, Massachusetts « Harlow, England

INGENIERÍA DEL SOFTWARE. Séptima ediciónluí SommerviUePEARSON EDUCACIÓN. S.A. Madrid. 2005ISBN: 84-7829-074-5MATERIA: Informática 681.3Formato: 195 X 250 mmPáginas: 712Todos los derechos reservados.Queda prohibida, salvo excepción prevista en la Ley, cualquier forma de reproducción,distribución, comunicación pública y transformación de esta obra sin contar con autorizaciónde los titulares de propiedad intelectual. La infracción de los derechos mencionados puede serconstitutiva de delito contra la propiedad intelectual (arts. 270 y sgts. Código Penal).DERECHOS RESERVADOS 2005 por PEARSON EDUCACIÓN, S.A.Ribera del Loira, 2828042 Madrid (España)I N G E N I E R Í A D E L S O F T W A R E . S é p t i m a ediciónl a n SommerviUeI S B N : 84-7829-074-5Depósito Legal: M-31.467-2005PEARSON ADD [SON WESLEY es un sello editorial autorizado de PEARSON EDUCACIÓN, S.A. Addison-Wesley Publishers Limited 1982, 1984, Pearson Education Limited 1989. 2001, 2004This translation of SOFTWARE ENGINEERING 07 Edition is publishedby arrangement with Pearson Education Limited, United KingdomEquipo editorial:Editor: Miguel Martín-RomoTécnico editorial: Marta CaicoyaEquipo de p r o d u c c i ó n :Director: José Antonio ClaresTécnico: José Antonio HernánD i s e ñ o de cubierta: Equipo de diseño de Pearson Educación, S.A.C o m p o s i c i ó n : COPIBOOK, S.L.Impreso por: TOP PRINTER PLUS, S. L. L.IMPRESO EN ESPAÑA - PRINTED IN SPAINEste libro ha sido impreso con papel y tintas ecológicos

PRÓLOGOP a r t e I.VVISIÓN GENERAL11.3Introducción1.1.Preguntas frecuentes sobre la ingeniería del software51.1.1. ¿Qué es software?51.1.2. ¿Qué ' ingeniería del software?61.1.3. ¿Cuál es la diferencia entre ingeniería del software yciencia de la computación?71.1.4. ¿Cuál es la diferencia entre ingeniería del software e ingeniería de sistemas? .71.1.5. ¿Qué es un proceso del software?71.1.6. ¿Qué es un modelo de procesos del software?81.1.7. ¿Cuáles son los costos de la ingeniería del software?91.1.8. ¿Qué son los métodos de la ingeniería del software?101.1.9. ¿Qué es C A S E ?111.1.10- ¿Cuáles son los atributos de un buen software?111.1.11. ¿Cuáles son los retos fundamentales que afronta la ingeniería del software?12Responsabilidad profesional y ética12es1.2.2.aSistemas s o c i o - t é c n i c o s192.1.2.2.212324262829303031Propiedades emergentes de los sistemasIngeniería de sistemas2.2.1. Definición de requerimientos del sistema2.2.2. Diseño del sistema2.2.3. Modelado de sistemas2.2.4. Desarrollo de los subsistemas2.2.5. Integración del sistema2.2.6. Evolución del sistema2.2.7. Desmantelamiento del sistema

VÍíndice de contenidos2.3.2.4.3.4.5.313235Sistemas c r í t i c o s393.1.3.2.3.3.3.4.3.5.4143465053Un sistema de seguridad crítico sencilloConfiabilidad de un sistemaDisponibilidad y HabilidadSeguridadProtecciónProcesos del s o f t w a r e594.1.Modelos del proceso del software4.1.1. El modelo en cascada4.1.2. Desarrollo evolutivo4.1.3. Ingeniería del software basada en componentes4.2. Iteración de procesos4.2.1. Entrega incrementa!4.2.2. Desarrollo en espiral4.3. Actividades del proceso4.3.1. Especificación del software4.3.2. Diseño e implementación del software4.3.3. Validación del software4.3.4. Evolución del software4.4. El Proceso Unificado de Rational4.5. Ingeniería del Software Asistida por computadora4.5.1. Clasificación de C A S E606263646666686969717475767979G e s t i ó n d e proyectos855.1.5.2.5.3.5.4.P a r t e II.Organizaciones, personas y sistemas informáticos2.3.1. Procesos organizacionalesSistemas heredadosActividades de gestiónPlanificación del proyecto5.2.1. El plan del proyecto5.2.2. Hitos y entregasCalendarización del proyecto5.3.1. Gráficos de barras y redes de actividadesGestión de riesgos5.4.1. Identificación de riesgos5.4.2. Análisis de riesgos5.4.3. Planificación de riesgos5.4.4. Supervisión de878889909192959798100100'riesgosREQUERIMIENTOS1 56.Requerimientos del software1076.1.109Requerimientos funcionales y no funcionales6.1.1.6.1.2.6.1.3.Requerimientos funcionalesRequerimientos no funcionalesLos requerimientos del dominio 110111115

índice de contenidos6.2.6.3.7.6.4.Requerimientos del usuarioRequerimientos del sistema6.3.1. Especificaciones en lenguaje estructuradoEspecificación de la interfaz1161181201226.5.El documento de requerimientos del software123Procesos de la i n g e n i e r í a de r e q u e r i m i e n t o s1297.1.Estudios de viabilidad1317.2.Obtención y análisis de requerimientos7.2.1. Descubrimiento de requerimientos7.2.2. EtnografíaValidación de requerimientos7.3.1. Revisiones de requerimientosGestión de requerimientos7.4.1. Requerimientos duraderos y volátiles7.4.2. Planificación de la gestión de requerimientos7.4.3. Gestión del cambio de los .Modelos del 3.8.4.8.5.9.Modelos de contextoModelos de comportamiento8.2.1. Modelos de flujo de datos8.2.2. Modelos de máquina de estadosModelos de datosModelos de objetos8.4.1. Modelos de herencia8.4.2. Agregación de objetos8.4.3. Modelado de comportamiento de objetosMétodos estructuradosE s p e c i f i c a c i ó n de sistemas c r í t i c o 10.VÜEspecificación dirigida porriesgos9.1.1. Identificación deriesgos9.1.2. Análisis y clasificación deriesgos9.1.3. Descomposición deriesgos9.1.4. Valoración de la reducción deriesgosEspecificación de la seguridadEspecificación de la protecciónEspecificación de la Habilidad del software9.4.1. Métricas de Habilidad9.4.2. Requerimientos de Habilidad no funcionalesEspecificación formal19710.1.10.2.10.3.199202208Especificación formal en el proceso del softwareEspecificación de interfaces de subsistemasEspecificación del comportamiento

viliIndice de contenidosP a r t e III.DISEÑO11.217Diseño arquitectónico11.1.Decisiones de diseño arquitectónico22211.2.Organización del sistema11.2.1. El modelo de repositorio11.2.2. El modelo cliente-servidor11.2.3. Eí modelo de capasEstilos de descomposición modular11.3.1. Descomposición orientada a objetos11.3.2. Descomposición orientada a flujos de funcionesEstilos de control11.4.1. Control centralizado11.4.2. Sistemas dirigidos por eventosArquitecturas de .4.11.5.12.A r q u i t e c t u r a s de sistemas d i s t r i b u i d o istemasSistemasde procesamiento de datosde procesamiento de transaccionesSistemas de información y de gestión de recursosde procesamiento de eventosde procesamiento de lenguajesD i s e ñ o o r i e n t a d o a 3.15.Arquitecturas multiprocesadorArquitecturas cliente-servidorArquitecturas de objetos distribuidos12.3.1. C O R B AComputación distribuida interorganizacional12.4.1. Arquitecturas peer-to-peer12.4.2. Arquitectura de sistemas orientados a serviciosA r q u i t e c t u r a s de a p l i c a c i o n e s13.3.13.4.14.219Objetos y clases14.1.1. Objetos concurrentesUn proceso de diseño orientado a objetos14.2.1. Contexto del sistema y modelos de utilización14.2.2. Diseño de la arquitectura14.2.3. Identificación de objetos14.2.4. Modelos de diseño14.2.5. Especificación de la interfaz de los objetosEvolución del diseñoD i s e ñ o de software de t i e m p o r e a l30915.1.31231431531615.2.Diseño del sistema15.1.1. Modelado de sistemas de tiempo realSistemas operativos de tiempo real15.2.1. Gestión de procesos

índice de contenidos16.15-3.Sistemas de monitorización y control31815.4.Sistemas de adquisición de datos323D i s e ñ o d e interfaces d e u s u a r i o16.1.16.2.16.3.16.4.16.5.P a r t e IV.33516.1.1. Interacción del usuario16.1.2. Presentación de la informaciónEl proceso de diseño de la interfaz de usuarioAnálisis del usuario16.3.1. Técnicas de análisisPrototipado de la interfaz de usuarioEvaluación de la interfaz33533834434534634835019.35717.1.Métodos ágiles36117.2.Programación extrema17.2.1. Pruebas en XP17.2.2. Programación en parejasDesarrollo rápido de aplicacionesPrototipado del software364366369370373R e u t i l i z a c i ó n del s o f t w a r El campo de la reutilizaciónPatrones de diseñoReutilización basada en generadoresMarcos de trabajo de aplicacionesReutilización de sistemas de aplicaciones18.5.1. Reutilización de productos COTS18.5.2. Líneas de productos softwareI n g e n i e r í a d e l software b a s a d a e n Desarrollo17.3.17.4.18.331Asuntos de diseñoDESARROLLO17.¡XComponentes y modelos de componentes19.1.1. Modelos de componentes19.1.2. Desarrollo de componentes para reutilizaciónEl proceso C B S EComposición de componentesD e s a r r o l l o d e sistemas c r í t i c o .Procesos confiablesProgramación confiable20.2.1. Información protegida20.2.2. Programación segura20.2.3. Manejo de excepcionesTolerancia a defectos20.3.1. Detección de defectos y evaluación de daños20.3.2. Recuperación y reparación de defectosArquitecturas tolerantes a defectos

Xíndice de contenidos21.E v o l u c i ó n del software21.1.21.2.21.3.21.4.P a r t e V.449451454456459461VERIFICACIÓN Y VALIDACIÓN46922.Verificación y validación47122.1.Planificación de la verificación y validación47522.2.Inspecciones de software22.2.1. El proceso de inspección de programasAnálisis estático automatizadoVerificación y métodos formales22.4.1. Desarrollo de software de Sala Limpia47747848248548622.3.22.4.23.P r u e b a s del 1323.2.23.3.23.4.24.Pruebas del sistema23.1.1. Pruebas de integración23.1.2. Pruebas de entregas23.1.3. Pruebas de rendimientoPruebas de componentes23.2.1. Pruebas de interfacesDiseño de casos de prueba23.3.1. Pruebas basadas en requerimientos23.3.2. Pruebas de particiones23.3.3. Pruebas estructurales23.3.4. Pruebas de caminosAutomatización de las pruebasV a l i d a c i ó n d e sistemas c r í t i c o .Parte VI.Dinámica de evolución de los programasMantenimiento del software21.2.1. Predicción del mantenimientoProcesos de evolución21.3.1. Reingeniería de sistemasEvolución de sistemas heredados447Validación de lafiabilidad24.1.1. Perfiles operacionales24.1.2. Predicción de lafiabilidadGarantía de la seguridad24.2.1. Argumentos de segundad24.2.2. Garantía del proceso24.2.3. Comprobaciones de seguridad en tiempo de ejecuciónValoración de la protecciónArgumentos de confiabilidad y de seguridadGESTIÓN DE PERSONAL54125.G e s t i ó n de personal54325.1.25.2.25.3.544547550Selección de personalMotivaciónGestionando grupos

Indice de adTécnicas de estimaciónModelado algorítmico de costes26.3.1. El modelo de C O C O M O26.3.2. Modelos algorítmicos de costes en la planificación56356757057258026.4.Duración y personal del proyecto582G e s t i ó n de calidad58727.1.Calidad de proceso y producto58927.2.Garantía de la calidad y estándares27.2.1. ISO 900027.2.2. Estándares de documentaciónPlanificación de la calidadControl de la calidad27.4.1. Revisiones de la calidadMedición y métricas del software27.5.1. El proceso de medición27.5.2. Métricas de producto27.5.3. Análisis de las mediciones59159359459659759759860160260427.5.M e j o r a de 1962362428.5.28.6.29.551552554555556558E s t i m a c i ó n de costes d e l software27.3.27.4.28.25.3.1. La composición del grupo25.3.2. Cohesión25.3.3. Las comunicaciones del grupo25.3.4. La organización del grupo25.3.5. Entornos de trabajoEl Modelo de Madurez de la Capacidad del PersonalX¡Calidad de producto y de procesoClasificación de los procesosMedición del procesoAnálisis y modelado de procesos28.4.1. Excepciones del procesoCambio en los procesosEl marco de trabajo para la mejora de procesos C M M I28.6.1. E l modelo C M M I en etapas28.6.2. El modelo C M M I continuoG e s t i ó n de 2.29.3.29.4.Planificación de la gestión de configuraciones29.1.1. Identificación de los elementos de configuración29.1.2. La base de datos de configuracionesGestión del cambioGestión de versiones y entregas29.3.1. Identificación de versiones29.3.2. Gestión de entregasConstrucción del sistema

XÜíndice de contenidos29.5.Herramientas C A S E para gestión de configuraciones29.5.1. Apoyo a la gestión de cambios29.5.2. Soporte para gestión de versiones29.5.3. Apoyo a la construcción del ice alfabético677

La primera edición de este libro de ingeniería del software fue publicada hacemás de veinte anos. Aquella edición fue escrita utilizando un terminal de texto conectado a una minicomputadora (un PDP-11) que posiblemente costabacerca de 50.000 . Yo he escrito esta edición desde un portátil con conexióninalámbrica que cuesta menos de 2.000 y mucho más potente que aquelPDP-11. El software más común era el software para mainframes, pero lascomputadoras personales estaban a punto de aparecer. Ninguno de nosotrosimaginó el nivel de difusión que éstas iban a tener ni el cambio que este hecho iba a producir en el mundo.Los cambios en el hardware en los últimos veinte años han sido notables,y podría parecer que los cambios en el software han sido igual de significativos. Ciertamente, nuestra capacidad para construir sistemas grandes y complejos ha mejorado drásticamente. Nuestros servicios e infraestructuras nacionales —energía, comunicaciones y transporte— dependen de sistemasinformáticos muy grandes, complejos y fiables. En la construcción de sistemas software se mezclan muchas tecnologías — J 2 E E , .NET, E J B , SAP,B P E L 4 W S , SOAP, C B S E — que permiten que aplicaciones grandes basadasen Web sean desarrolladas mucho más rápido que en el pasado.Sin embargo, a pesar de los cambios que ha habido en las dos últimas décadas, cuando nosotros miramos más allá de las tecnologías, hacia los procesosfundamentales de la ingeniería del software, éstos se han mantenido igual. Nosotros reconocimos hace veinte años que el modelo en cascada tenía problemasserios, pero un examen publicado en diciembre de 2003 por IEEE mostraba quemás de un 40% de las compañías siguen utilizando esta aproximación. El testeo sigue siendo la técnica de validación dominante, a pesar de que otras técnicas, como las inspecciones, han sido utilizadas de una forma más efectiva desde mediados de los años 70. Las herramientas C A S E , a pesar de estar basadasahora en U M L , siguen siendo básicamente editores gráficos con alguna funcionalidad para chequear y generar código.

XÍVPrólogoNuestros actuales métodos y técnicas de ingeniería del software han hecho que la construcción de sistemas grandes y complejos sea mejor. A pesar de ello, sigue siendo habitual encontrar proyectos que se retrasan, que sobrepasan el presupuesto o que se entregan sin satisfacer las necesidades de los clientes. Mientras estaba escribiendo este libro, se divulgó unainvestigación del gobierno en Reino Unido, sobre un proyecto para proveer a los juzgados deun sistema software para casos de delincuencia menor. El coste del sistema fue estimado en156 millones de libras y fue planificado para ser entregado en el año 2001. En 2004, el costehabía subido a 390 millones de libras y no estaba totalmente operativo. Hay, por lo tanto, unanecesidad imperiosa de educación en ingeniería del software.En los últimos años, el desarrollo más significativo en ingeniería del software ha sido laaparición de U M L como estándar para la descripción de sistemas orientados a objetos, y eldesarrollo de métodos ágiles como la programación extrema. Los métodos ágiles están permitiendo el desarrollo rápido de sistemas, explícitamente implican al usuario en el equipode trabajo y reducen el papeleo y la burocracia en el proceso software. A pesar de lo quealgunos críticos sostienen, pienso que estas aproximaciones encarnan buenas prácticas deingeniería del software. Ellas tienen unos procesos bien definidos, prestan atención a la especificación del sistema y a los requerimientos del usuario, y tienen estándares de alta calidad.No obstante, esta revisión no pretende ser un texto sobre métodos ágiles. Prefiero centrarme en los procesos básicos de ingeniería del software —especificación, diseño, implementación, verificación, y validación y gestión—. Es necesario entender estos procesos y las técnicas asociadas para decidir si los métodos ágiles son la estrategia de desarrollo más adecuaday cómo adaptar los métodos a una situación particular. Un tema dominante en el libro son lossistemas críticos —sistemas en los que los fallos de funcionamiento tienen consecuencias nefastas y donde la seguridad del sistema es crítica. En cada parte del libro, estudiaremos las técnicas específicas de ingeniería del software que son relevantes para la construcción sistemascríticos.Inevitablemente, los libros reflejan las opiniones y prejuicios de sus autores. Algunos lectores estarán en desacuerdo con mis opiniones y con mi elección del material. Este desacuerdo es un reflejo 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 ingeniería del software lesresulte interesante.Estructura del libroLa estructura del libro está basada en los procesos fundamentales de la ingeniería del software.Está organizado en seis partes, con varios capítulos en cada parte:Parte 1: Introduce la ingeniería del software, situándola en un amplio contexto de sistemasy presentando las nociones de procesos y gestión de ingeniería del software.Parte 2: Trata los procesos, técnicas y documentación asociados con los requerimientos deingeniería. 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 diseño de software y a los procesos de diseño. Tres delos seis capítulos se centran en el importante tema de las arquitecturas software. Otros temas incluyen diseño orientado a objetos, diseño de sistemas en tiempo real y diseño de interfaces de usuario.

PrólogoxvParte 4: Describe una serie de aproximaciones a la implementación, incluyendo métodoságiles, reutilización, C B S E y desarrollo de sistemas críticos. Como los cambios son unaparte importante de la implementación, he integrado temas de evolución y mantenimientoen esta parte.Parte 5: Se centra en temas de verificación y validación. Incluye capítulos de validación yverificación estática, testeo y validación de sistemas críticos.Parte 6: La parte final abarca una serie de lemas de gestión: gestión de personal, estimación de costes, gestión de calidad, procesos de mejora y gestión de cambios.En la introducción de cada parte, expondré la estructura y organización con mayor detalle.Cambios en la 6. ediciónaHay cambios importantes, relativos a la organización y contenido, respecto a la edición previa. He incluido cuatro capítulos nuevos y he hecho una importante revisión en otros once capítulos. Todos los otros capítulos han sido actualizados, incorporando convenientemente nuevo material.Más y más sistemas tienen altos requerimientos de disponibilidad y fiabilidad, y espero quenosotros tomemos la fiabilidad como un conductor básico en la ingeniería del software. Poresta razón, los capítulos de sistemas críticos han sido integrados en otras secciones. Para evitar que el volumen del libro sea excesivo, he reducido la cantidad de material sobre mantenimiento del software y he integrado los temas de mantenimiento y evolución del software enotros capítulos. Hay dos casos de estudio —uno sobre la gestión de documentos de una biblioteca y otro de un sistema médico—, los cuales presento en diferentes capítulos.El material referente a los casos de estudio está señalado con iconos en los márgenes. LaTabla 1 resume los cambios, indicando con el número entre paréntesis el capítulo correspondiente en la 6r edición. En el sitio Web del libro se puede encontrar más información sobreestos cambios.TABLA 1. R e v i s i ó nde los c a p í t u l o sC a p í t u l o 13: Arquitectura de las aplicaciones.Capftulo 17: Desarrollo r á p i d o de aplicaciones.C a p í t u l o 19: I n g e n i e r í a del software basada en componentes.Capitulo 2 1 : E v o l u c i ó n del softwareC a p í t u l o 2:Sistemas s o c i o - t é c n i c o s (2)C a p í t u l o 4:Procesos software (3)Capftulo 7:Procesos de i n g e n i e r í a de requerimientos (6)Capftulo 9:E s p e c i f i c a c i ó n de sistemas críticos (17)C a p í t u l o 12: Arquitecturas de sistemas distribuidos (11)C a p í t u l o 16: D i s e ñ o de interface de usuario (15)Capftulo 18:R e u t i l i z a c i ó n de c ó d i g o (14)C a p í t u l o 2 3 : Pruebas del software (20)Capitulo 25:G e s t i ó n de personal (22)C a p í t u l o 24:V a l i d a c i ó n de sistemas críticos (21)Capitulo 2 8 :Mejora de procesos (25)

C o n s t r u c c i ó n de prototipos software (8)Sistemas heredados (26)Cambios en el software (27)R e i n g e n i e r í a del software (28)Guía para el lectorEste libro está enfocado a estudiantes, graduados e ingenieros de la industria del software.Puede ser utilizado en cursos generales de ingeniería del software o en cursos específicos,como programación avanzada, especificación, diseño y gestión software. A los ingenieros desoftware que trabajan en la industria, este libro puede resultarles útil como lectura general ycomo actualización de sus conocimientos en temas particulares como ingeniería de requerimientos, diseño de la arquitectura, desarrollo de sistemas formales y mejora de procesos. Losejemplos en el texto han sido utilizados como una vía práctica para reflejar el tipo de aplicaciones que los ingenieros deben desarrollar.Usando el libro para enseñarHe diseñado el libro para que pueda ser utilizado en tres tipos de cursos de ingeniería.I.Cursos de introducción a la ingeniería del software para estudiantes que no tienenexperiencia en ingeniería del software. Se puede empezar con la sección introductoria y luego seleccionar capítulos de otras secciones del libro. Esto dará a los estudiantes una visión general de la materia con la oportunidad de hacer un estudio másdetallado por parte de los alumnos interesados. Si el curso está basado en proyectos,los primeros capítulos proporcionarán suficiente material para comenzar el proyecto, y capítulos posteriores servirán para referenciar y dar más información del avance de su trabajo.

Prólogo2.3.XVliCursos de introducción o nivel medio sobre temas específicos de ingeniería del software. E l libro es válido para cursos de especificación de requerimientos, diseño desoftware, gestión de proyectos software, desarrollo de sistemas fiables y evolución delsoftware. Cada parte puede servir tanto para cursos de introducción como intermediosen los diferentes temas. Así como cada capítulo tiene lecturas asociadas, he incluidoen el sitio web información sobre otros artículos y libros relevantes.Cursos avanzados en ingeniería del software. Los capítulos pueden servir como basepara cursos específicos, pero deben ampliarse con lecturas complementarias que traten con mayor detalle los temas. Por ejemplo, yo imparto un módulo en Master en ingeniería de sistemas el cual se apoya en este material. He incluido detalles de este curso y de un curso en ingeniería de sistemas críticos 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 ingeniería del software y en cursos de especificación, diseño y sistemas críticos. Cursos de ingeniería del software basada en componentes e ingeniería de sistemas utilizan el libro a lo largo de su impartición, junto con artículos complementarios que se distribuyen entre los alumnos. Tener unsolo libro de texto da a los alumnos una visión coherente de la materia, y éstos no tienen quecomprar varios libros.Para reforzar la experiencia de aprendizaje de los estudiantes, he incluido un glosario detérminos, con definiciones adicionales en el sitio web. Además, cada capítulo tiene: Unos objetivos claros presentados en la primera página. Una lista de los puntos clave tratados en el capítulo. Lecturas adicionales recomendadas —otros libros que están actualmente en impresión oartículos fácilmente accesibles (en mi sitio web puede encontrar un listado de otras lecturas y enlaces recomendados). Ejercicios, que incluyen ejercicios de diseño.El proyecto denominado «Software Engineering Body of Knowledge» (http://swebok.org)fue establecido para definir las áreas clave de conocimiento técnico relevantes para los profesionales del software. Están organizadas bajo 10 epígrafes: requerimientos, diseño, construcción, prueba, mantenimiento, gestión de configuraciones, gestión, procesos, herramientas y métodos, y calidad. Mientras sería imposible incluir en un solo libro de texto todas lasáreas de conocimiento propuestas por el proyecto S W E B O K . en este libro se tratan todas lasáreas de alto nivel.Páginas WebEl sitio web asociado a este libro es:http://www.software-engin.comEste sitio ofrece una amplia gama de material complementario de ingeniería del software.Desde aquí, usted puede acceder a las páginas web de soporte de este libro y de ediciones anteriores.Esta ha sido mi política, en versiones anteriores y en ésta, para mantener el número de enlaces web en el libro en un mínimo absoluto. La razón es que los enlaces web sufren muchoscambios y, una vez impreso el libro, son imposibles de actual¡7ar. En consecuencia, la pági-

XVÜiPrólogona web del libro incluye un gran número de enlaces a recursos y material relacionado con laingeniería del software. Si usted los utiliza y encuentra problemas, por favor hágamelo sabery actualizaré esos enlaces.Para dar soporte en el uso de este libro en cursos de ingeniería del software, he incluidouna amplia variedad de material en el sitio web. En los enlaces al material para el docente,podrá encontrar: Presentaciones (PowerPoint y PDF) para todos los capítulos del libro.Cuestiones para cada capítulo.Casos de estudio.Sugerencias sobre proyectos.Descripciones sobre estructuras de cursos.Sugerencias sobre lecturas complementarias y enlaces a los recursos web de cada capítulo. Soluciones para los ejercicios asociados a cada capítulo y para las cuestiones (sólo profesor).Sus sugerencias y comentarios sobre el libro y el sitio web serán bienvenidos. Puede contactar conmigo a través de ian@software-engin.com. Recomiendo que incluya [SE7] en elasunto del mensaje para evitar que los filtros antispam rechacen su mensaje. Siento no tenertiempo para ayudar a los estudiantes en su trabajo; por lo tanto, no me pregunten cómo resolver ningún problema del libro.ReconocimientosA lo largo de los años muchas personas han contribuido al desarrollo de este libro, y me gustaría dar las gracias a lodos los que han comentado las ediciones anteriores y han hecho sugerencias constructivas (revisores, estudiantes, lectores que me han escrito). Al personal dela editorial y producción de Pearson Educación en Inglaterra y en Estados Unidos por su apoyo 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 gustaría dar las gracias a mi familia, que ha tolerado mi ausencia cuandoel libro estaba comenzándose a escribir y mi frustración cuando las palabras no surgían. Y enespecial a mi esposa, Anne, y a mis hijas, A l i y Jane, por su ayuda y apoyo.Ian Sommerville,febrero 2004

1 GENERALCapítulo 1IntroducciónCapítulo 2Sistemas socio-técnicosCapítulo 3Sistemas críticosCapítulo 4Procesos del softwareCapítulo 5Gestión de proyectos

La estructura b á s i c a de este libro sigue los procesos esenciales del software de especific a c i ó n , d i s e ñ o , desarrollo, v e r i f i c a c i ó n y v a l i d a c i ó n , y g e s t i ó n . Sin embargo, m á s q u e caeri n m e d i a t a m e n t e e n estos temas, h e incluido esta s e c c i ó n d e v i s i ó n general para q u ep u e d a tener u n a idea a m p l i a de la disciplina. Esta parte c o m p r e n d e los cinco primeroscapítulos:El C a p í t u l o 1 es una i n t r o d u c c i ó n general a la i n g e n i e r í a del software. Para hacerlo accesible y fácil de entender, lo he organizado u s a n d o una estructura de pregunta/respuesta d o n d e planteo y r e s p o n d o preguntas tales c o m o « ¿ Q u é es la i n g e n i e r í a del softw a r e ? » . T a m b i é n introduzco el profesionalismo y la ética en este c a p í t u l o .El C a p í t u l o 2 presenta los sistemas s o c i o - t é c n i c o s , un t e m a q u e creo es a b s o l u t a m e n t e esencial para los ingenieros de software. El software n u n c a es u s a d o por sí solo,p e r o s i e m p r e es parte de un sistema mayor q u e incluye el hardware, el e l e m e n t o h u m a n o y, a m e n u d o , las organizaciones. Estos c o m p o n e n t e s influyen p r o f u n d a m e n t e enlos requerimientos y f u n c i o n a m i e n t o del software. En este c a p í t u l o se estudian las p r o p i e d a d e s emergentes de los sistemas, los procesos de la i n g e n i e r í a de sistemas y a l g u nas de las f o r m a s en las q u e los asuntos org

14.2.1. Contexto del sistema y modelos de utilización 294 14.2.2. Diseño de la arquitectura 296 14.2.3. Identificación de objetos 297 14.2.4. Modelos de diseño 299 14.2.5. Especificación de la interfaz de los objetos 303 14.3. Evolución del diseño 304 15. Diseño de software de tiempo real 309 15.1. Diseño del sistema 312 15.1.1.

Related Documents:

natura de algebra lineal de las titulaciones de Grado en Ingenier a de Materiales, Grado en Ingenier a en Tecnolog as Industriales y Grado en Ingenier a Qu mica, del Plan 2010, que se imparten en la ETSEIB y

COMISIÓN DE INGENIER A MEC NICA PERFIL DEL PROFESIONAL EN INGENIER A MEC NICA COLEGIO CIEMI PROFESIÓN INGENIER A MEC NICA MANTENIMIENTO UNIDADES DE COMPETENCIA 2.1 Diseæar, dirigir, implementar y controlar el plan general de mantenimiento de los recursos (facilidades) y maquinaria pa

Conclusi n de la elaboraci n del Plan de Desarrollo de la licen-ciatura de Ingenier a Qu mica Actualizaci n a los lineamientos del plan curricular de la licenciatura de Ingenier a Qu mica, l neas 4 y 9 se logr la reacreditaci n de la licenciatura de Ing. Qu mica por parte del CACEI Implementaci n del

\Ingenier a Social el Arte del Hacking Personal" de ne a la Ingenier a Social como \El . utilizando herramientas integradas dentro del Kali Linux. Las pruebas de seguridad rea- . La investigaci on se realiz o en los laboratorios de inform atica de la Universidad T ecnica de Manab . Los

Grado en Ingenier a Inform atica G678 - Garant a y Seguridad en Sistemas y Redes Pr actica 3 Ingenier a inversa de malware 1. Introducci on 2. Objetivos

Q. Ma. del Carmen Doria Serrano Acad mico de tiempo completo del departamento de Ingenier a y Ciencias Qu micas 4.1.1 Objetivo del rea El objetivo de este diagn stico es tener un panorama general del uso del agua en el campus C

tres tipos principales de software: software de sistemas, software de aplicación y software de programación. 1.2 Tipos de software El software se clasifica en tres tipos: Software de sistema. Software de aplicación. Software de programación.

la historia oculta o de Satanismo. Es posible tener un sello de Satan y de Dios. Hay casos de los bebés que fueron . pecados del orgullo, del orgullo de terquedad, del orgullo de la vida, del orgullo físico, del orgullo del intelecto, del orgullo espiritual, del amor del mundo, de la superioridad, de la inferioridad, de la venganza, del .