Este libro fue concebido como una guía de estudio para estudiantes de carreras tales como Ingeniería Informática o Ingeniería de Sistemas. Es, también, una referencia para los profesionales que desempeñan roles técnicos o de gestión en proyectos de desarrollo de software.
Los estudiantes encontrarán un medio de relacionar conocimientos adquiridos a veces como entidades aisladas cuando en realidad forman parte de un todo en cuyas relaciones se fundamenta su comprensión.
Los profesionales encontrarán respuesta a muchos de los problemas que se les presentan a diario, un análisis de ellos y una propuesta de solución. El objetivo es cubrir aspectos del desarrollo de software que son claves y en los cuales se debe trabajar bien a efectos de garantizar la calidad de los productos generados en los proyectos de desarrollo.
Este manual fue escrito pensando en los obstáculos que se presentan a la hora de llevar adelan-te un proyecto de desarrollo. Busca las causas de dichos problemas y guía al lector en la búsqueda de las soluciones a los problemas mencionados, a partir de la formación de criterios elaborados en función de la experiencia recogida por el autor, a lo largo de 30 años, en escenarios muy diversos.
Nivel: Intermedio - Avanzado
Guillermo Pantaleo es ingeniero en Telecomunicaciones recibido en la Universidad Nacional de La Plata, Argentina. Tiene 30 años de experiencia en el desarrollo de software. Participó en numerosos seminarios y congresos, es autor de publicaciones científicas nacionales e interna-cionales. Como programador independiente desarrolló software para el mercado de instrumen-tación y telefonía. Es profesor de las materias: Técnicas de Diseño, Arquitectura de Software y Calidad en el Desarrollo de Sistemas en la Facultad de Ingeniería de la UBA (Universidad de Buenos Aires).
1.1 | Introducción
1.2 | Calidad en el software
1.2.1 Evolución histórica
1.2.2 Lecciones no aprendidas
1.3| Calidad versus velocidad de desarrollo
1.3.1 Estándares
1.3.2 Creatividad
1.3.3 Madurez
1.4 | Modelos de calidad de software
1.4.1 Surgimiento y evolución . . . . . .
1.4.2 Modelos
1.4.3 Certificaciones y evaluaciones ..32
1.5 |Conclusión
Capítulo 2 - Causas que deterioran la calidad en el software
2.1 | Introducción
2.1.1 Definiciones
2.1.1.1 Calidad de producto
2.1.1.2 Calidad de proceso
2.2 | Causas que deterioran la calidad..36
2.3 | Aspectos sobre los que trabajar para mejorar la calidad
2.4 | Forma de tratamiento de los temas ..40
Capítulo 3 - Trabajo con la organización -
Mejora de procesos
3.1 | Visión del cambio
3.1.1 Análisis de casos
3.1.2 Primeros pasos en un proceso de mejoras
3.2 | Trabajando en los cambios
3.2.1 Forma de trabajo
3.2.1.1 Modelo ideal
3.2.1.2 Modelo eoalg
3.2.2 Dos fenómenos espontáneos
3.2.2.1 Desconcierto
3.2.2.2 Procesos virtuales
3.3 | Aspectos y factores del proceso de mejora .
3.3.1 Direcciones del cambio organizacional en sus múltiples dimensiones
3.3.2 Aspecto socio-cultural de la gestión del cambio
3.3.3 Factores críticos y de riesgo
3.3.4 Factores generales de éxito
3.3.5 Factores de éxito en pymes
3.3.6 Factores adicionales
3.3.7 Recomendaciones
3.4 | Gestión del cambio
3.4.1 Oposición al cambio
3.4.1.1 Razones de resistencia al cambio.
3.4.1.2 Rescatar lo positivo de la resistencia
3.4.2 Influencia de la cultura organizacional
3.4.2.1 Tipos de cultura organizacional
3.4.3 Comportamientos generadores de conflictos y tensiones en la implementación
de procesos de mejora de los roles participantes.
3.4.4 Estrategia
3.4.5 Tácticas
3.4.5.1 Diferentes tácticas para el trabajo con los miembros jerárquicos y con los demás miembros.70
3.4.5.2 Diferentes formas de comunicación con áreas jerárquicas y racionales, y canal de comunicación entre ellas
3.4.5.3 Compartir lugar físico con los miembros de las áreas
3.4.5.4 Foco en temas puntuales y en grupos reducidos con intereses comunes
3.4.5 Liderazgo
3.5 | Respuesta a los casos de estudio ..73
Caso 1
Caso 2
Caso 3
3.6 | Conclusión
Capítulo 4: Trabajo con Requerimientos
4.1 | Importancia de los requerimiento.77
4.1.1 El rol de analista
4.1.1.1 Definición
4.1.2 ¿Qué son los requerimientos?
4.1.3 ¿Para qué sirven?
4.1.4 ¿Cuál es el impacto en un proyecto de desarrollo de software?
4.2 | Tareas asociadas a los requerimientos
4.2.1 Foco
4.2.2 Nivel..............8 4
4.2.3 Vista .................8 4
4.3 | Estrategia y tácticas en el trabajo con requerimientos
4.3.1 Estrategia
4.3.2 Tácticas
4.3.2.1 Especificación de requerimientos
de software y sus atributos de calidad
4.3.2.2 Especificación de casos de uso
4.4 | Análisis de requerimientos
4.4.1 No confundir dominio y negocio con diseño
4.4.1.1 Nota para desarrolladores ágiles
4.4.1.2 Nota a los analistas de sistemas
4.4.2 Paquetes
4.4.2.1 Alternativas de selección
4.5 | Validación y verificaciación
4.5.1 Validación
4.5.2 Verificación
4.6 | Administración de cambios a losrequerimientos
4.6.1 Problema
4.6.2 Alternativas de solución
4.6.2.1 Nota para desarrolladores ágiles
4.7 | Conclusión
Capítulo 5: Trabajo con la Gestión de
Proyectos
5.1 | Proyectos
5.1.1 Planes y planificación
5.1.2 Cascada versus iteraciones
5.1.2.1 La dinámica de las iteraciones
5.1.2.2 Las vistas de los roles
5.1.3 Planificación de iteraciones
5.1.3.1 Medidas de estabilidad
5.1.4 Fases, actividades, objetivos ..114
5.1.5 Cuestiones a tener en cuenta y algunas recomendaciones
5.1.5.1 A tener en cuenta
5.1.5.2 Recomendaciones
5.1.6 Condiciones de contexto
5.2 |Planificación de proyectos
5.2.1 Estrategia
5.2.1.1 Un caso demostrativo
5.2.2 Construcción de una estrategia..122
5.2.2.1 Visión
5.2.2.2 Objetivos
5.2.2.3 Prioridades . . . . . . . . . . .
5.2.2.4 Riesgos
5.2.2.5 Estimaciones
5.2.2.6 Estrategia
5.3 | Seguimiento del desarrollo de proyectos
5.3.1 Roles
5.3.1.1 Qué cosas debe hacer un líder de proyectos para cubrir sus responsabilidades
5.3.1.2 Qué cosas no debe hacer un líder de proyectos
5.3.2 Actividades
5.3.3 Puntos de observación
5.3.4 Fotos versus película
5.3.4.1 Tratamiento de una decena de temas
5.3.4.2 No seguimiento de los temas tratados
5.3.5 Escalamiento
5.3.6 Acciones
5.3.7 Métricas
5.4 |Conclusión
Capítulo 6: Trabajo con la Implementación
- Diseño Codificación y Pruebas
6.1 | Diseño, codificación y pruebas
6.1.1 Problemas
6.1.1.2 Proceso de diseño
6.1.1.3 Coordinación de la construcción
6.1.1.4 Pruebas
6.2 | Pruebas de software
6.2.1 Trabajo con el repositorio
6.2.2 Test sistemáticos y automáticos..146
6.2.3 Cómo adoptar la nueva forma de trabajo
6.2.3.1 Obstáculos para automatizar las pruebas
6.2.3.2 Qué debería automatizarse
6.2.3.3 Qué no debería automatizarse
6.2.3.4 Estrategia para comenzar la automatización
6.3 | Integración continua
6.3.1 Forma de trabajo
6.3.1.1 Pasos
6.3.1.2 Principios
6.3.2 Infraestructura
6.3.3 Resultados
6.4 | Revisiones de diseño y Código
6.4.1 Revisiones
6.4.1.1 Objetivos
6.4.1.2 Beneficios
6.4.1.3 Métricas guía
6.4.1.4 Indicadores
6.4.1.5 Polimétrica de complejidad..158
6.5 | Conclusiones
6.6 | Herramientas
Capítulo 7: Trabajo con Modelos de
Desarrollo - CMMI
7.1 | Modelos de referencia
7.1.1 CMMi
7.1.2 Relación entre áreas de proceso
7.1.3 Desmistificando el modelo
7.1.3.1 Por qué CMMi
7.1.3.2 Con quién trabajar
7.1.3.3 Cómo es el proceso de mejoras con CMMi
7.1.3.4 Qué recursos se necesitan
7.1.3.5 Cómo es la evaluación con CMMi (SCAMPI)
7.2 |Mejora de procesos utilizando el modelo CMMI
7.2.1 Estrategia general
7.2.1.1 Políticas y Procesos
7.2.1.2 Interpretación y mapeo de objetivos y tareas
7.2.3 Institucionalización
7.2.3.1 Relación entre áreas de proceso y objetivos genéricos
7.3 |Modelos y metodologías
7.3.1 Metodologías y modelos
7.3.2 CMMI y metodologías
7.4 |Madurez
7.5 |Conclusiones
Apéndice
Apéndice - Ejemplos de Activos
Especificación de requerimientos de software (ers)
Modelo de especificación de casos de uso
Ejemplo de priorización de
requerimientos
Modelo de informe de avance
Modelo de procedimiento
Procedimiento de trabajo con código compartido (cc) en ambiente de Ic
Descripción
Forma de trabajo
Condiciones de entrada
Entradas
Roles
Activos
Pasos de la actividad
Salida
Condiciones de salida
Métricas
Verificación y validación