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

Integración Curricular

Resultados de Programa (ABET)

(A) La habilidad para aplicar conocimientos de matemáticas, ciencias e ingeniería.

(B) La habilidad para analizar un problema e identificar los requerimientos necesarios para su definición y solución.

(C) La habilidad para diseñar, implementar y evaluar procesos y sistemas computacionales.

(D) La habilidad para funcionar en equipos de trabajo.

(E) El entendimiento de la responsabilidad profesional y ética.

(F) La habilidad para comunicarse efectivamente.

(G) La habilidad para analizar los impactos de la computación y la ingeniería en las personas, organizaciones y la sociedad.

(H) El reconocimiento de la necesidad de, y la habilidad para, continuar con el desarrollo profesional.

(I) La habilidad para usar las técnicas, destrezas y herramientas modernas para la práctica de la computación.

(J) La habilidad para aplicar los fundamentos y principios de las matemáticas y de la computación en el modelamiento y diseño de sistemas computacionales de manera que se demuestre comprensión de las ventajas y desventajas en las decisiones de diseño.

(K) La habilidad para aplicar los principios de diseño y desarrollo de software en la construcción de sistemas de diferente complejidad.

Relevancia del curso con los resultados de programa

Resultados de Programa
A B C D E F G H I J K
Relevancia 3 5 5 2 2 2 1

Escala: (1) baja relevancia - (5) alta relevancia.

Integración de objetivos, contenido y metodología del curso

El curso es presencial y con participación y trabajo en clase. Se asignarán investigaciones, ejercicios y lecturas. Durante la sesión se expondrán los conceptos acompañados de ejemplos, se fomentará la participación de los estudiantes. Se realizará una exposición por cada estudiante relacionada con temas de Ingeniería de Software. Se realizará un MiniProyecto (en el primer mes del curso), donde se trabajaran los conceptos de métodos ágiles de desarrollo de software. Se desarrollará a lo largo del semestre un Proyecto Semestral en grupos con entregas y sustentaciones parciales.

Resultados del Programa Indicadores de Desempeño Objetivos/Contenido del Curso Actividades de aprendizaje Instrumentos de medición
(A) Aplicación de Conocimientos (A1) Identificar los fundamentos científicos y los principios de ingeniería que rigen un proceso o sistema. (Conocimiento) (A2) Resolver problemas relacionados con la disciplina y otras áreas por medio de la utilización de conocimientos, modelos y formalismos de las ciencias de la computación, las matemáticas y la ingeniería. (Aplicación) (A3) Analizar conjuntos de datos. (Análisis) Todos Exposiciones del profesor, talleres, tareas y lecturas Exámenes, miniproyecto, proyecto semestral y tareas
(B) Análisis de problemas y requerimientos (B1) Describir procesos de manera declarativa ignorando los detalles de su implementación. (Comprensión). (B2) Utilizar el lenguaje propio de las matemáticas, la lógica y la ingeniería para especificar requerimientos funcionales y no funcionales de un sistema o proceso. (Aplicación). (B3) Sintetizar la información, evidencias y hechos necesarios para analizar un problema. (Análisis - Síntesis). Obj. 3,6 / Cap. 2,3 Exposiciones del profesor, Talleres y desarrollo de proyectos Exámenes, miniproyecto, proyecto semestral y tareas
(C) Diseño (C1) Utilizar estándares de codificación en la implementación de componentes de software. (Aplicación). (C2) Identificar componentes, interacciones, relaciones e interfaces entre componentes. (Análisis). (C3) Diseñar procesos y componentes de software haciendo uso de la notación, técnicas y herramientas adecuadas. (Síntesis). (C4) Evaluar un componente de software de acuerdo a su complejidad temporal y espacial. (Evaluación). Obj. 4,5,6 / Cap. 3,4 Exposiciones del profesor, Talleres y desarrollo de proyectos Exámenes, miniproyecto y proyecto semestral
(D) Trabajo en equipo (D2) Participar en tareas y en la toma de decisiones. (Respuesta - Afectivo). (D3) Integrar diferentes puntos de vista, información, críticas y retroalimentación para proponer una solución. (Síntesis). (D4) Definir tareas, roles y responsabilidades. (Aplicación). Obj. 1,2,5,6 Desarrollo de proyectos (2) Mniproyecto y Proyecto semestral
(F) Comunicación efectiva (F2) Comunicarse de manera efectiva de acuerdo al público objetivo haciendo uso correcto del lenguaje, estilo, tiempo y expresión corporal. (Aplicación). (F3) Utilizar recursos gráficos para comunicar y expresar una idea. (Aplicación). Todos Exposiciones, sustentación de proyectos, Informes escritos de proyectos Exposiciones, Miniproyecto y proyecto semestral
(I) Uso de herramientas y técnicas (I1) Utilizar herramientas de desarrollo de software. (Aplicación). (I2) Utilizar herramientas de diseño, modelamiento y simulación. (Aplicación). Obj. 5,6 Talleres y desarrollo de proyectos Miniproyecto, proyecto semestral, y Talleres
(J) Modelamiento y diseño de sistemas computacionales (J1) Reconocer la importancia del modelamiento cuando se resuelve un problema. (Compresión). (J2) Relacionar conceptos y principios teóricos para la resolución efectiva de un problema. (Síntesis). (J4) Evaluar decisiones de diseño basándose en principios matemáticos y de computación. (Evaluación). Todos Exposiciones del profesor, talleres, tareas, lecturas y proyectos Exámenes, miniproyecto, proyecto semestral, talleres y tareas

Contribución al Desarrollo de Competencias Genéricas

La tabla muestra que aspectos de las competencias de Comunicación Escrita, Lectura Crítica y Razonamiento Cuantitativo son evaluados a través de los factores ABET correspondientes. Por otra parte, las competencias de Ciudadanía e Inglés se favorecen gracias a la metodología del curso y también, gracias a los factores ABET correspondientes.

Resultados de Programa
A B C D E F G H I J K
Ciudadanía U U
Comunicación escrita E
Lectura crítica E
Inglés U
Razonamiento cuantitativo E E

E- Se evalúa. U - Se usa

Contribución a los objetivos educacionales

La Carrera de Ingeniería de Sistemas y Computación plantea los siguientes objetivos educacionales, El estudiante graduado de la carrera será capaz de:

  1. EO1. Ejercitar la práctica de la Ingeniería de Sistemas y Computación profesionalmente.
  2. EO2. Diseñar y operar sistemas de computación que contribuyen a la solución de problemas relacionados a la disciplina, otra área de la ciencia y la ingeniería u otras disciplinas.
  3. EO3. Contribuir al bienestar de las comunidades desde posiciones prominentes en la industria, academia, sector público o como un emprendedor.
  4. EO4. Ser distinguido por su bases sólidas en computación, su sentido de ciudadanía responsable, su profesionalismo y liderazgo.
  5. EO5. Continuar su desarrollo profesional o involucrarse en estudios de posgrado.
Resultados de Programa
A B C D E F G H I J K
EO1 X X X X X
EO2 X X X X X
EO3 X X
EO4 X X X X
E05 X

Reglas del curso

Calificación y Balance de Evaluación del Curso

Instrumento Porcentaje A B C D E F G H I J K
Tareas, Trabajos y Quices 10% 20% 28% 20% 26% 6%
Exposición 5% 75% 25%
Miniproyecto - Metodología Ágil 10% 30% 30% 15% 10% 15%
Primer Parcial 20% 30% 60% 10%
Segundo Parcial 20% 20% 60% 10% 10%
Proyecto Semestral
- Primera Entrega - Requerimientos 15% 50% 20% 10% 20%
- Segunda Entrega - Diseño 20% 40% 23 % 15% 22%

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

 
materias/procesosdisenosoftware.txt · Última modificación: 2016/08/31 16:03 por juancmartinez
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki