Brinda un completo panorama de la Ingeniería de software, desde los aspectos histórico-evolutivos, tales como los grandes hitos de la evolución del desarrollo de software, las necesidades emergentes de cada uno de esos momentos y los avances tecnológicos que surgieron como solución, hasta la planificación y control de las tareas de trabajo en equipo y el control de la calidad. Hace un recorrido por los distintos paradigmas de programación y aborda tanto temas relacionados a los criterios de diseño y pruebas de software como aquellos vinculados a las herramientas para su implementación.
Contenido. Ingeniería de Software
Prólogo
Prefacio
Guía de lectura
Parte I – Introducción
Capítulo 1 – Evolución
1.1 Introducción
1.2 Los hitos en la evolución histórica del desarrollo de software
1.2.1 Los sistemas integrados hardware-software
1.2.2 Los primeros sistemas de software independientes
1.2.3 La crisis del software
1.2.4 La creación de la Ingeniería de Software
1.2.5 La aparición de la PC
1.2.6 La interconexión de las PCs
1.2.7 El surgimiento de la Internet
1.2.8 La evolución de Internet y las arquitecturas corporativas
1.2.9 El futuro cercano
1.3 Problemas y soluciones
1.3.1 Fallas, malas estimaciones y metodologías
1.3.2 Herramientas de desarrollo
1.3.3 El concepto de calidad en el software
1.3.4 Venta de proyectos de desarrollo de software
1.3.5 Visibilidad de los proyectos de desarrollo
1.3.6 Calidad versus velocidad de desarrollo
1.4 Incumbencias de la nueva ingeniería
1.4.1 Conocimientos de procesos versus conocimientos tecnológicos
1.4.2 Formación de un ingeniero de software
1.5 Nuestro caso testigo
1.5.1 Descripción del problema a resolver
1.5.2 Observaciones obtenidas en la empresa cliente
1.5.3 Característica de la empresa desarrolladora
1.6 Conclusión
1.7 Contenido de la página web de apoyo
1.7.1 Mapa conceptual
1.7.2 Autoevaluaciones
1.7.3 Presentaciones en Power Point (exclusivo para el docente)
1.8 Referencias
Capítulo 2 – Condiciones de trabajo en el Desarrollo de Software
2.1 Proyectos de Software en diferentes ámbitos
2.1.1 Desarrollo de sistemas
2.1.2 Desarrollo de productos
2.1.3 Desarrollo remoto
2.1.4 Software factory
2.1.5 Proyectos de código abierto
2.1.6 Servicios para clientes internos
2.2 Proyectos de Software y las personas que participan
2.2.1 Trabajo en equipo
2.3 Proyectos de software y las condiciones de trabajo
2.3.1 Condiciones versus procesos
2.3.2 Condiciones y metodologías
2.3.3 Manifestación en la gestión de los proyectos
2.4 Buenas prácticas
2.4.1 Trabajo iterativo
2.4.2 Comunicación fluida y cerrada
2.4.3 Entregables frecuentes
2.4.4 Reflexión y mejoras
2.4.5 Seguridad personal
2.4.6 Focalización en tareas de los proyectos
2.4.7 Fácil acceso a los clientes
2.4.8 Ambiente de desarrollo con integración frecuente
2.4.9 Colaboración de la organización a partir del compromiso con los proyectos
2.4.10 Alta visibilidad de los proyectos
2.4.11 Inducción a los proyectos
2.4.12 Asignación de tareas clausurando funcionalidades
2.4.13 Arquitecto programador
2.4.14 Programación compartida
2.5 Conclusión
2.6 Contenido de la página web de apoyo
2.6.1 Mapa conceptual
2.6.2 Autoevaluaciones
2.6.3 Presentaciones en Power Point (exclusivo para el docente)
2.7Referencias
Capítulo 3 – Paradigmas y lenguajes de programación
3.1 Paradigmas de programación
3.2 Programación con Procedimientos
3.2.1 Historia
3.2.2 Conceptos
3.2.3 Su uso en la actualidad
3.3 Programación Funcional
3.3.1 Historia
3.3.2 Conceptos
3.3.3 Su uso en la actualidad
3.4 Programación Lógica
3.4.1 Historia
3.4.2 Conceptos
3.4.3 Su uso en la actualidad
3.5 Programación Orientada a Objetos
3.5.1 Historia
3.5.2 Conceptos
3.5.3 Su uso en la actualidad
3.6 Programación Orientada a Aspectos
3.6.1 Historia
3.6.2 Conceptos
3.6.3 Su uso en la actualidad
3.7 Programación Genérica
3.7.1 Historia
3.7.2 Conceptos
3.7.3 Su uso en la actualidad
3.8 El modelo de múltiple paradigma
3.8.1 Historia
3.8.2 Conceptos
3.8.3 Su uso en la actualidad
3.9 Ejemplo
3.9.1 Especificación
3.9.2 Solución
3.10 Lenguajes de programación
3.10.1 Clasificación
3.11 Métricas del grado de utilización
3.12 Conclusiones
3.13 Contenido de la página web de apoyo
3.13.1 Mapa conceptual
3.13.2 Autoevaluaciones
3.13.3 Presentaciones en Power Point (exclusivo para el docente)
3.14 Referencias
Parte II – Proceso de desarrollo de Software / Metodologías
Capítulo 4 – Metodologías de desarrollo de software
4.1 Metodologías
4.1.1 Historia
4.1.2 Clasificación
4.2 Metodologías conducidas por los planes
4.2.1 Cascada
4.2.2 Prototipado
4.2.3 DRA (Desarrollo Rápido de Aplicaciones)
4.2.4 Incremental
4.2.5 Espiral
4.3 Metodologías ágiles
4.4 Diferencias de enfoque
4.5 Diferencias de aplicabilidad
4.6 Conclusión
4.7 Contenido de la página web de apoyo
4.7.1 Mapa conceptual
4.7.2 Autoevaluaciones
4.7.3 Presentaciones en Power Point (exclusivo para el docente)
4.8 Referencias
Capítulo 5 – Metodologías conducidas por los planes
5.1 El Proceso Unificado de Desarrollo de Software
5.2 Conducido por los planes
5.3 El flujo de trabajo
5.3.1 Las fases y los hitos
5.4 Las iteraciones
5.5 El organigrama, los roles y actividades
5.6 Roles asociados a la organización
5.6.1 Roles derivados de la forma de trabajo
5.7 Los activos como nexo entre los roles
5.7.1 Los hitos y entregables
5.8 Planes
5.8.1 Preventa
5.9 Plan de proyecto
5.10 Otros planes
5.10.1 Plan de administración de la configuración
5.10.2 Plan de administración de la calidad
5.11 Activos de trabajo
5.11.1 Especificación de arquitectura de software
5.12 Conclusión
5.13 Contenido de la página web de apoyo
5.13.1 Mapa conceptual
5.13.2 Autoevaluaciones
5.13.3 Presentaciones en Power Point (exclusivo para el docente)
5.14 Referencias
Capítulo 6 – Metodologías ágiles
6.1Extreme Programming y Scrum
6.1.1 Procesos de gestión y procesos técnicos
6.2 Extreme Programming(XP)
6.2.1 Valores
6.2.2 Principios
6.2.3 Prácticas
6.2.4 Flujo de trabajo
6.3 Scrum
6.4 Integración Xp – Scrum
6.5 Ágiles
6.6 El flujo de trabajo
6.6.1 Ciclo de vida
6.7 Organigrama y seguimiento del proyecto
6.8 Conclusión
6.9 Contenido de la página web de apoyo
6.9.1 Mapa conceptual
6.9.2 Autoevaluaciones
6.9.3 Presentaciones en Power Point (exclusivo para el docente)
6.10Referencias
Parte III – Modelos y Documentación
Capítulo 7 – El lenguaje UML y sus modos de utilización
7.1Introducción
7.1.1 ¿Qué es UML?
7.1.2 Preguntas frecuentes
7.2 Evolución histórica
7.3 ¿Cómo es utilizado en la comunidad informática?
7.3.1 Dibujo (Sketch)
7.3.2 Plan (Blueprint)
7.3.3 Lenguaje de programación
7.4 Perspectivas
7.4.1 Problema (Concepción y Análisis)
7.4.2 Solución (Diseño)
7.4.3 Respuestas a las preguntas frecuentes
7.4.4 Madurez y nivel de conocimiento de los desarrolladores
7.5 Diagramas
7.5.1 Diagramas Estáticos
7.5.2 Diagramas Dinámicos
7.6 Relación con el proceso de desarrollo
7.7 Selección del modo de uso
7.8 Contenido de la página web de apoyo
7.8.1 Mapa conceptual
7.8.2 Autoevaluaciones
7.8.3 Presentaciones en Power Point (exclusivo para el docente)
7.9 Referencias
Capítulo 8 – El lenguaje UML – Diagramas estáticos
8.1 Introducción
8.2 Diagramas
8.3 Clases
8.4 Paquetes
8.5 Componentes
8.6 Instalación
8.7 Ejemplo
8.8 Conclusión
8.9 Contenido de la página web de apoyo
8.9.1 Mapa conceptual
8.9.2 Autoevaluaciones
8.9.3 Presentaciones en Power Point (exclusivo para el docente)
8.10 Referencias
Capítulo 9 – El lenguaje UML – Diagramas dinámicos
9.1 Introducción
9.2 Actividades
9.3 Casos de uso
9.4 Interacción
9.5 Estado
9.6 Ejemplo
9.7 Conclusión
9.8 Contenido de la página web de apoyo
9.8.1 Mapa conceptual
9.8.2 Autoevaluaciones
9.8.3 Presentaciones en Power Point (exclusivo para el docente)
9.9 Referencias
Parte IV – Relevamiento, modelado y análisis de requerimientos
Capítulo 10 – Relevamiento de requerimientos
10.1Relevamiento de requerimientos
10.1.1 Objetivos
10.1.2 Técnicas de relevamiento
10.2 Casos de uso
10.2.1 Paquetes funcionales
10.3 Organización del trabajo con requerimientos
10.3.1 Planificación
10.4 Priorización de requerimientos
10.5 Conclusión
10.6 Contenido de la página web de apoyo
10.6.1 Mapa conceptual
10.6.2 Autoevaluaciones
10.6.3 Presentaciones en Power Point (exclusivo para el docente)
10.7 Referencias
Capítulo 11 – Análisis de requerimientos
11.1Análisis de requerimientos
11.1.1 Objetivos
11.1.2 Modelo del comportamiento y control
11.1.3 Trazabilidad de los requerimientos
11.2 Conclusión
11.3 Contenido de la página web de apoyo
11.3.1 Mapa conceptual
11.3.2 Autoevaluaciones
11.3.3 Presentaciones en Power Point (exclusivo para el docente)
11.4 Referencias
Capítulo 12 – Pruebas a los requerimientos
12.1 Pruebas a los requerimientos
12.2 Validación
12.2.1 Validación de la aplicación
12.2.2 Validación del modelo de negocio
12.3 Verificación
12.3.1 Casos de pruebas
12.3.2 Ciclo de vida y herramientas
12.4 Conclusión
12.5 Contenido de la página web de apoyo
12.5.1 Mapa conceptual
12.5.2 Autoevaluaciones
12.5.3 Presentaciones en Power Point (exclusivo para el docente)
12.6 Referencias
Parte V – Arquitectura y diseño de software
Capítulo 13 – Arquitectura de software
13.1 Definiciones
13.1.1 El concepto de arquitectura
13.1.2 Documentación de la arquitectura
13.1.3 Vista estática
13.2 Selección de componentes
13.2.1 Plataformas marco (Framework)
13.2.2 Comunicación con sistemas externos
13.2.3 Atributos de calidad
13.2.4 Pruebas a la arquitectura
13.2.5 Herramientas de desarrollo
13.3 Conclusión
13.4 Contenido de la página web de apoyo
13.4.1 Mapa conceptual
13.4.2 Autoevaluaciones
13.4.3 Presentaciones en Power Point (exclusivo para el docente)
13.5 Referencias
Capítulo 14 – Diseño de software
14.1 El proceso de diseño
14.1.1 Criterios de buen diseño
14.1.2 Patrones de diseño
14.2 Desarrollo del Caso Testigo
14.2.1 Presentación
14.2.2 Acceso al negocio
14.2.3 Negocio
14.2.4 Persistencia
14.2.5 Conexión con sistemas externos
14.2.6 Web Service
14.3 Conclusión
14.4 Contenido de la página web de apoyo
14.4.1 Mapa conceptual
14.4.2 Autoevaluaciones
14.4.3 Presentaciones en Power Point (exclusivo para el docente)
14.5 Referencias
Capítulo 15 – Métricas de software
15.1El proceso de evaluación
15.1.1 Construyendo un sistema
15.1.2 Manteniendo un sistema
15.2 Primera aproximación al diseño de un sistema
15.3 Adentrándonos en los subsistemas
15.3.1 Métricas
15.3.2 Polimétricas
15.3.3 Desarmonías
15.4 Buenas prácticas decodificación
15.4.1 Estándares
15.4.2 Chequeos de estilo
15.5 Conclusión
15.6 Contenido de la página web de apoyo
15.6.1 Mapa conceptual
15.6.2 Autoevaluaciones
15.6.3 Presentaciones en Power Point (exclusivo para el docente)
15.7 Referencias
Parte VI – Codificación y pruebas
Capítulo 16 – Pruebas de software
16.1 Definiciones
16.1.1 Objetivos y filosofía
16.1.2 Principios
16.2 Niveles y Tipos de pruebas
16.2.1 Métodos de prueba
16.2.2 Caja Negra
16.2.3 Caja Blanca
16.3 Estrategias de prueba
16.3.1 Propiedades básicas
16.3.2 Evolución de las pruebas con el desarrollo
16.4 Tácticas
16.5 Claves del cambio en la forma de trabajo
16.5.1 Razones para automatizar las pruebas
16.5.2 Pruebas sistemáticas
16.6 Ejemplo
16.7 Conclusión
16.8 Contenido de la página web de apoyo
16.8.1 Mapa conceptual
16.8.2 Autoevaluaciones
16.8.3 Presentaciones en Power Point (exclusivo para el docente)
16.9 Referencias
Capítulo 17 – Proceso de pruebas de software
17.1 El proceso de prueba de software
17.1.1 Plan de pruebas
17.1.2 Qué probar Hasta cuándo probar
17.2 Automatización de las pruebas
17.2.1 Por qué automatizar las pruebas
17.2.2 Qué debería automatizarse
17.3 Integración continua
17.3.1 Fases del flujo de trabajo
17.3.2 Infraestructura
17.3.3 Resultados
17.4 Conclusión
17.5 Contenido de la página web de apoyo
17.5.1 Mapa conceptual
17.5.2 Autoevaluaciones
17.5.3 Presentaciones en Power Point (exclusivo para el docente)
17.6 Referencias
Parte VII – Gestión de Proyectos
Capítulo 18 – Gestión de proyectos – Estimación y planificación
18.1 Gestión de proyectos de desarrollo de software
18.2 Estimación
18.2.1 Venta de proyectos de desarrollo de software
18.2.2 Metodología conducida por los planes
18.2.3 Metodologías ágiles
18.3 Planificación
18.3.1 Metodología conducida por los planes
18.3.2 Metodologías ágiles
18.4 Conclusión
18.5 Contenido de la página web de apoyo
18.5.1 Mapa conceptual
18.5.2 Autoevaluaciones
18.5.3 Presentaciones en Power Point (exclusivo para el docente)
18.6 Referencias
18.7 Apéndice A – Cuestionario guía de relevamiento preliminar
18.7.1 Aspectos vinculados al contexto
18.7.2 Reingeniería de sistemas (Sistemas a ser reemplazados)
18.7.3 Sistemas a desarrollar en proyectos integrales
Capítulo 19 – Gestión de proyectos – Monitoreo y control
19.1 Monitoreo y control de proyectos
19.1.1 Metodologías conducidas por los planes
19.1.2 Metodologías ágiles
19.2 Conclusión
19.3 Contenido de la página web de apoyo
19.3.1 Mapa conceptual
19.3.2 Autoevaluaciones
19.3.3 Presentaciones en Power Point (exclusivo para el docente)
19.4 Referencias
Capítulo 20 – Gestión del proyecto del caso testigo – Planificación
20.1 Preventa
20.1.1 Propuesta técnico económica
20.2 Metodología conducida por los planes
20.2.1 Selección de la metodología
20.2.2 Estimación y planificación del proyecto
20.3 Metodología ágil
20.3.1 Selección de la metodología
20.3.2 Estimación y planificación del proyecto
20.4 Conclusión
20.5 Contenido de la página web de apoyo
20.5.1 Mapa conceptual
20.5.2 Autoevaluaciones
20.5.3 Presentaciones en Power Point (exclusivo para el docente)
20.6 Referencias
20.7 Apéndice – Visión del proyecto
20.7.1 Requerimientos del negocio
20.7.2 Visión de la solución
20.7.3 Características salientes
20.7.4 Alcance y limitaciones
20.7.5 Contexto del proyecto
Capítulo 21 – Gestión del proyecto del caso testigo – Seguimiento
21.1 Metodología conducida por los planes
21.1.1 Monitoreo y control del proyecto
21.1.2 Cierre del Proyecto
21.2 Metodología ágil
21.2.1 Monitoreo y control del proyecto
21.2.2 Cierre del Proyecto
21.3 Conclusión
21.4 Contenido de la página web de apoyo
21.4.1 Mapa conceptual
21.4.2 Autoevaluaciones
21.4.3 Presentaciones en Power Point (exclusivo para el docente)
21.5 Referencias
Parte VIII – Calidad de Software
Capítulo 22 – Calidad de procesos y productos de software
22.1 Calidad de procesos y productos de software
22.1.1 El concepto de calidad aplicado al software
22.1.2 Validación y verificación
22.1.3 Ejemplo de uso
22.2 Métricas en el software
22.2.1 Las medidas como mecanismo de aseguramiento y control de calidad
22.2.2 Medidas de la calidad de productos de software
22.2.3 Medidas de la calidad de procesos de software
22.3 Conclusiones
22.4 Contenido de la página web de apoyo
22.4.1 Mapa conceptual
22.4.2 Autoevaluaciones
22.4.3 Presentaciones en Power Point (exclusivo para el docente)
22.5 Referencias
Capítulo 23 – Organización del área de calidad de una empresa
23.1 Introducción
23.2 Origen
23.2.1 Primeros pasos
23.3 Implementación del área de calidad
23.3.1 Alternativas de organigrama
23.3.2 Roles
23.3.3 Actividades
23.3.4 Recursos
23.3.5 Ejemplo de uso
23.4 Conclusiones
23.5 Contenido de la página web de apoyo
23.5.1 Mapa conceptual
23.5.2 Autoevaluaciones
23.5.3 Presentaciones en Power Point (exclusivo para el docente)
23.6 Referencias
Capítulo 24 – Planificación de las actividades de control de calidad de un proyecto de desarrollo
24.1 Introducción
24.2 Plan de calidad
24.2.1 Ejemplo del caso testigo
24.2.2 Objetivos
24.2.3 Flujo de trabajo
24.3 Conclusiones
24.4 Contenido de la página web de apoyo
24.4.1 Mapa conceptual
24.4.2 Autoevaluaciones
24.4.3 Presentaciones en Power Point (exclusivo para el docente)
24.5 Referencias
24.6 Apéndice – Ejemplo del caso testigo
Capítulo 25 – Estándares de calidad de software
25.1 Introducción
25.2 Normas y modelos de referencia
25.3 NormaISO9001-2000
25.4 Modelo CMMi
25.5 Enfoque y alcance de aplicación
25.6 Conclusiones
25.7 Contenido de la página web de apoyo
25.7.1 Mapa conceptual
25.7.2 Autoevaluaciones
25.7.3 Presentaciones en Power Point (exclusivo para el docente)
25.8 Referencias
Parte IX – Cierre
Capítulo 26 – Conclusiones
26.1 Acerca de la tecnología
26.2 Acerca de la forma de trabajo
26.3 Acerca de la calidad
26.4 Acerca de la Ingeniería de Software
26.5 Contenido de la página web de apoyo
26.5.1 Mapa conceptual
26.5.2 Autoevaluaciones
26.5.3 Presentaciones en Power Point (exclusivo para el docente)
26.6 Referencias
Lautaro Rinaldi –
Calificación Positiva | Calificación de MercadoLibre
Lautaro Rinaldi –
Calificación Positiva | Calificación de MercadoLibre
Lautaro Rinaldi –
Calificación Positiva | Calificación de MercadoLibre