Procesos y Diseño de Software

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: Programación Orientada a Objetos, Gestión y Modelado de Datos
  • Tipo de curso: Núcleo de Formación Fundamental.

Descripción del Curso

En el curso de Procesos y diseño de Software se estudian los procesos involucrados en el desarrollo de software, especificamente la obtención y análisis de requisitos, y el diseño de la solución de software, concebidos desde la ingeniería de software. Se revisan las diferentes etapas de un proceso de desarrollo de software y su finalidad. Se introducen diferentes metodologías de desarrollo de software y su aplicación de acuerdo al contexto. El curso se enfoca en la aplicación de la metodología Rational Unified Process (RUP) y el establecimiento de la documentación requiera para proyectos de software. Finalmente, por medio de la realización de un proyecto de desarrollo de software de tamaño mediano, se aplican los conceptos y técnicas estudiadas en el curso.

Objetivos

Al finalizar el curso los participantes podrán:

  1. Identificar los conceptos fundamentales de la ingeniería de software ◦Enumerar las principales características y cualidades del software
    1. Identificar cual es el propósito de la Ingeniería de Software y la diferencia con las ciencias de la computación
    2. Describir los procesos de software y los modelos asociados a ellos.
    3. Reconocer la importancia de los modelos en el proceso de desarrollo de software.
  2. Reconocer los ciclos de vida del software, los modelos de procesos de desarrollo y metodologías de desarrollo de software. ◦Identificar los ciclos de vida del software.
    1. Reconocer y diferenciar los modelos de procesos de desarrollo.
    2. Identificar y comparar diferentes metodologías de desarrollo de Software.
    3. Evaluar las ventajas y desventajas de cada metodología de acuerdo al contexto donde se aplicará.
    4. Aplicar una metodología de desarrollo ágil de software a un proyecto pequeño
  3. Recolectar, analizar y modelar los requerimientos de un producto de software mediano.
    1. Enumerar las diferentes etapas en el proceso de ingeniería de requerimientos
    2. Explicar las características que deben tener los requerimientos en un proyecto de software.
    3. Identificar requerimientos funcionales y no funcionales en proyectos de desarrollo de Software.
    4. Enumerar los diferentes tipos de requerimientos no funcionales.
    5. Realizar documentos de Requerimientos de Software (SRS) basados en estándares establecidos.
    6. Modelar con diagramas UML los requerimientos de un producto de software.
  4. Diseñar un producto de software de tamaño mediano
    1. Utilizar diferentes técnicas y modelos en el proceso de diseño de Software.
    2. Realizar documentos de Diseño de Software basados en estándares establecidos.
    3. Modelar con diagramas UML el diseño y funcionamiento de una aplicación.
    4. Evaluar diferentes alternativas de diseño relacionadas con la arquitectura, estructura e interfaces de un producto de software.
  5. Utilizar los procesos metódicos de ingeniería de requerimientos, y el análisis y diseño de software en un proyecto real.

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 SCRUM (básico).
  4. Wix/Wordpress (intermedio).
  5. Herramientas de gestión de Requerimientos (Básico).

Contenido

Capítulo 1: Introducción

Sesión Horas teóricas Prácticas acompañadas Tópicos Bibliografía
1 3 Presentación del curso. Introducción. Reto y realidad del desarrollo del software [1,cap 1]
2 2 Práctica – Trabajo alrededor de los proyectos exitosos y fallidos
3 3 Definiciones y Conceptos básicos sobre la Ingeniería de Software [2,cap 1]
4 2 Definición del Miniproyecto y trabajo sobre los requerimientos de éste (aplicación de metodología ágil)

Total de Horas: 10

Sesión Horas de trabajo independiente Tópicos Bibliografía
1-2 4 Lectura “Aún estamos en crisis? y solución de guía
3-4 4 Definición del diagrama de contexto de miniproyecto y búsqueda de soluciones similares

Total de Horas: 8

Capítulo 2: Ciclo de vida, modelos de proceso y metodologías de desarrollo

Sesión Horas teóricas Prácticas acompañadas Tópicos Bibliografía
5 3 Ciclos se Vida y Modelos de Proceso [1,cap 2],[2,cap 2]
6 2 Práctica
7 3 Metodologías de Desarrollo de Software [1,cap 3],[2,cap 2.4,3],[6,cap 1,2,3]
8 2 Taller – Metodologías de Desarrollo de Soft : Comparativo. Rational Unifed Process (RUP) [1,cap 3],[2,cap 2.4,3],[6,cap 1,2,3]

Total de Horas: 10

Sesión Horas de trabajo independiente Tópicos Bibliografía
5-6 4 Taller Metodologías ágiles
7-8 4 Trabajo en Miniproyecto

Total de Horas: 8

Capítulo 3: Especificación y requerimientos de software

Sesión Horas teóricas Prácticas acompañadas Tópicos Bibliografía
9 3 Especificación y requerimientos de Software [1,cap 5], [3,cap 4], [5,cap 6,7]
10 2 Práctica – Requerimientos funcionales y no funcionales
11 y 13 6 Ingeniería y Modelado de Requerimientos [1,cap 5,6,7], [2,cap 4], [5,cap 6,7]
12 y 14 4 Definición de requerimientos para proyecto semestral (aplicación de metodología RUP). Taller
15 3 Diagramas UML – Casos de Uso [1, Apéndice 1],[5,cap 3,7,A]
16 2 Taller – Casos de Uso [1, Apéndice 1],[5,cap 3,7,A]
17 3 Doc. de Especificación de Requerimientos [2,cap 4.2], [8]
18 2 Especificación formal de requerimientos – Taller Especificación
19 3 Prototipado
20 2 Práctica Prototipado
21 3 Presentación de Miniproyecto de desarrollo de software basado en métodos ágiles
22 2 Taller en Clase y Revisión de requerimientos de Proyecto Semestral

Total de Horas: 35

Sesión Horas de trabajo independiente Tópicos Bibliografía
9-10 4 Taller Obtención de requerimientos y Especificación
11-16 8 Trabajo en proyecto semestral
17-18 4 Lectura y síntesis prototipado
19-22 8 Trabajo en proyecto semestral

Total de Horas: 24

Capítulo 4: Diseño de Software

Sesión Horas teóricas Prácticas acompañadas Tópicos Bibliografía
23 3 Principios de Diseño de Software [1,cap 13,14,22], [3,cap 11,14]
24 2 Práctica
25 y 27 6 Diseño de Software [1,cap 13,14,22], [3,cap 11,14]
26 y 28 4 Práctica Arquitectura de Software – Ejercicios Diagramas UML (Clase y otros) [5,cap 9,A]
29 3 Paradigmas de diseño y Diseño basado en componentes
30 2 Documento de Diseño de Software
31 3 Patrones de Diseño y Análisis y medidas en la calidad del Diseño [3,cap 16], [7]
32 2 Diagramas UML – Diag. de Actividad [5,cap A,B]

Total de Horas: 25

Sesión Horas de trabajo independiente Tópicos Bibliografía
23-24 4 Investigación y presentación en clase sobre Arquitecturas
25-28 8 Trabajo en proyecto Semestral
29-30 4 Taller sobre diseño de software
31-32 4 Trabajo en Proyecto Semestral

Total de Horas: 20

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. Klaus Pohl, Chris Rupp. Requirements Engineering Fundamentals. Rocky Nook, 2015.
  5. Karl Wiegers, Joy Beatty. Software Requirements. Microsoft Press, 2013
  6. The Unified Modeling Language reference manual. – 2ed. James Rumbaugh, Ivar Jacobson, Grady Booch.
  7. The rational unified process and introduction. – 2ed. Philippe Kruchten
  8. IEEE Std 830-1998. Recommended Practice for Software Requirements Specifications

Instalaciones

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

Material de este semestre