Construcción de Software y Pruebas

Información Básica

  • Créditos: 3
  • Horas de trabajo acompañado: 5 / semana (3 horas clase, 2 horas taller)
  • Horas de trabajo independiente: 4 / semana
  • Pre-requisitos: Diseño de Interfaces Humano-Computador, Procesos y Diseño de Software
  • Tipo de curso: Núcleo de Formación Fundamental.

Descripción del Curso

Los sistemas de información, aplicaciones y software de todo tipo forman parte integral de nuestras vidas. Desde el software de nuestro computador, teléfono celular o el software comercial que manejamos en la empresa, a todos nos ha pasado alguna vez que el ‘sistema’ o software no funciona de la manera correcta o funciona con defectos.

Son múltiples las causas de los defectos y sería muy difícil, en ocasiones, encontrar la causa raíz de los defectos de un software. Sin embargo, estos funcionamientos inapropiados o defectos pueden ser minimizados si se realizan correctamente procesos de pruebas de software en diferentes niveles que aporten fiabilidad a la calidad del software.

A continuación se presenta el curso Construcción de Software y pruebas en el cual los participantes comprenderán las buenas prácticas en construcción de software, la importancia de las pruebas de software y conocerán su proceso desde la planeación, análisis y diseño de las pruebas en la etapa de ingeniería y diseño del ciclo de vida de software, hasta la ejecución y evaluación de las pruebas.

Objetivos

Al finalizar el curso los participantes podrán:

  1. Aplicar “buenas prácticas” en los procesos de desarrollo de software.
    1. Manejo de versiones
    2. PSP
    3. Agilismo
    4. Gestión de riesgos
    5. Seguridad (Aclarar)
  2. Comprender la importancia de las pruebas de software y de los insumos requeridos dentro de todo el ciclo de diseño y desarrollo de software.
    1. Conocer las etapas del proceso de pruebas de software y su interacción con las diferentes etapas del diseño y desarrollo de software.
    2. Explicar los diferentes tipos y niveles de pruebas de software existentes.
    3. Diseñar, ejecutar y evaluar pruebas funcionales de software.
    4. Diseñar, ejecutar y evaluar pruebas no funcionales de software.
    5. Identificar los tipos de pruebas funcionales que pueden ser automatizadas, sus beneficios y factores críticos de éxito.
  3. Desarrollar, validar y probar un producto de software de tamaño mediano
    1. Reconocer las “buenas prácticas” en los procesos de desarrollo de software.
    2. Identificar los aspectos más importantes en los procesos de verificación y validación de software.
    3. Enunciar los aspectos más importantes del desarrollo formal de Software.
    4. Construir e integrar componentes de software de acuerdo a especificaciones y diseños establecidos.
    5. Evaluar y validar soluciones de software con respecto a las especificaciones establecidas.
  4. Utilizar los procesos metódicos de análisis, diseño, desarrollo, validación y mantenimiento de software en un proyecto real.
    1. Implementar una solución de software siguiendo una metodología específica, desde la etapa de obtención de requerimientos hasta la validación del producto desarrollado.

Competencias técnicas específicas que se desarrollan

  1. Lenguaje de programación Java (intermedio).
  2. Lenguaje de Modelado – UML (intermedio).
  3. Herramientas de seguimiento de proyectos PSP (Intermedio).

Contenido

Capítulo 1: Introducción

Sesión Horas teóricas Prácticas acompañadas Temas Bibliografía
1 3 Presentación del curso. Introducción. Retos de desarrollo, y la validación y verificación del software
2 2 Práctica
3 3 Principales conceptos del trabajo en equipo, incluyendo responsabilidades para tareas concretas y estructura de reuniones y horario de trabajo
4 2 Definición del proyecto semestral
5 3 Los roles y responsabilidades en un equipo de software. Resolución de conflictos en los Equipo. Riesgos asociados con equipos virtuales (comunicación, percepción, la estructura)
6 2 Práctica. Trabajo en proyecto semestral

Total de Horas: 15

Sesión Horas de trabajo independiente Temas Bibliografía
1 – 6 12 Lecturas, Tareas semanales y resolución de problemas en temas vistos

Capítulo 2: Manejo del Riesgo y manejo de release

Sesión Horas teóricas Prácticas acompañadas Temas Bibliografía
7 3 El papel del riesgo en el ciclo de vida. Categorías de riesgo : Seguridad, mercado, financiero, tecnología, recursos humanos, calidad, estructura y proceso
8 2 Práctica
9 3 manejo de release. Entornos de programación que automatizan los procesos de construcción de software (Ej. Construcción automática)
10 2 Herramientas de integración: Conceptos y mecanismos

Total de Horas: 10

Sesión Horas de trabajo independiente Temas Bibliografía
7 – 10 8 Lecturas, Tareas semanales y trabajo en proyecto semestral

Capítulo 3: Construcción (Desarrollo de Software)

Sesión Horas teóricas Prácticas acompañadas Temas Bibliografía
11 3 Construcción (Desarrollo). Estándares en el desarrollo de software
12 2 Práctica. Refactoring.
13 3 Desarrollo Formal de Software
14 2 Taller
15 3 Sistemas de reingeniería. Reuso. Segmentos de código. Librerias y frameworks. Componentes. Lineas de productos
16 2 Práctica
17 3 Calidad de Software (Software reliability, system reliability and failure behavior)
18 2 Trabajo en proyecto semestral

Total de Horas: 20

Sesión Horas de trabajo independiente Temas Bibliografía
11 – 18 16 Lecturas, Tareas semanales y trabajo en proyecto semestral

Capítulo 4: Pruebas

Sesión Horas teóricas Prácticas acompañadas Temas Bibliografía
19 – 28
  1. Testing types, including human computer interface, usability, reliability, security, conformance to specification
  2. Testing fundamentals
    1. Unit, integration, validation, and system testing
    2. Test plan creation and test case generation
    3. Black-box and white-box testing techniques
    4. Regression testing and test automation
  3. Defect tracking
  4. Limitations of testing in particular domains, such as parallel or safety-critical systems
  5. Verification and validation of non-code artifacts (documentation, help files, training materials)

Total de Horas: 25

Sesión Horas de trabajo independiente Temas Bibliografía
19 – 28 20 Lecturas, Tareas semanales y trabajo en proyecto semestral

Capítulo 5: Evolución del Software

Sesión Horas teóricas Prácticas acompañadas Temas Bibliografía
29 3 Evolución del Software
30 2 Práctica
31 3 Mantenimiento de Software. Características del software mantenible
32 2 Taller

Total de Horas: 10

Sesión Horas de trabajo independiente Temas Bibliografía
29 – 32 8 Lecturas, Tareas semanales y trabajo en proyecto semestral

Uso de material en exámenes

No está permitido el uso de notas de clase, bibliografía, calculadoras, computadores personales, teléfonos celulares ni ningún otro equipo electrónico.

Asistencia

Obligatoria

Bibliografía

  1. Ingeniería de Software, un enfoque práctico. 7ed. Roger S. Pressman. McGraw Hill. Madrid, 2010.
  2. Ingeniería de Software. 9ed. Ian Sommerville. Pearson Educación S.A. Madrid, 2011.
  3. Ingeniería de Software. Un enfoque desde la guía SWEBOK. Salvador Sánchez, Miguel Ángel Sicilia y Daniel Rodriguez. Alfaomega. México D.F, 2012.
  4. The Unified Modeling Language reference manual. – 2ed. James Rumbaugh, Ivar Jacobson, Grady Booch.
  5. The rational unified process and introduction. – 2ed. Philippe Kruchten.
  6. Fundamentos de Pruebas de Software. R. Black and G. Rueda Sandoval. RBCS, Inc. 2011.

Instalaciones

Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.