Atributos
Sigla: 
CI-0128
Créditos: 
3
Horas: 
3
Clasificación: 
Curso propio
Énfasis y ciclo: 
Tronco común 3.II
Descripción: 

Este curso se enfoca en la aplicación e integración de los conocimientos y habilidades que los estudiantes están aprendiendo en los cursos de Bases de Datos e Ingeniería de Software (los cuales llevan simultáneamente en el tercer año de la carrera de Bachillerato en Computación e Informática). Durante el curso se desarrolla un proyecto siguiendo las buenas prácticas de calidad, cuyo producto es una aplicación web con su correspondiente base de datos.

Objetivo general: 

El objetivo general del curso es que los estudiantes consoliden e integren los conocimientos y habilidades aprendidos en los cursos de Bases de Datos e Ingeniería de Software, mediante su aplicación en el contexto de un proyecto de software con el fin de que construyan una aplicación web que acceda a una base de datos, siguiendo procesos adecuados de planificación, análisis, diseño, implementación y pruebas.  

Objetivos específicos: 

Durante este curso el estudiante desarrollará habilidades para:

  1. Conceptualizar y planificar un proyecto de software usando métodos, técnicas y herramientas adecuadas al contexto, para elaborar el Plan de proyecto.
  2. Extraer y analizar requerimientos de un software usando métodos, técnicas y herramientas adecuadas al contexto, para especificar los requerimientos de la aplicación web.
  3. Analizar y diseñar un software aplicando patrones de diseño básicos y métodos de Interfaz Humano-Computador adecuados al contexto, para producir el diseño de la aplicación web.
  4. Diseñar la base de datos de un software usando métodos y herramientas, para generar un diseño adecuado de la base de datos.
  5. Implementar la aplicación de software y su base de datos usando métodos, técnicas y herramientas adecuadas al contexto, para producir la aplicación web.
  6. Validar y verificar la aplicación de software y su base de datos usando métodos, técnicas y herramientas adecuadas al contexto, para evaluar si la aplicación web desarrollada satisface los requerimientos originales.
  7. Reconocer el problema de inyección de código y explicar cómo evitarlo, mediante la ilustración del problema y el uso de técnicas de defensa durante el desarrollo del proyecto, para evitar que la aplicación web exhiba esta vulnerabilidad de seguridad.
  8. Utilizar herramientas de trabajo colaborativo a través del desarrollo del proyecto con el fin de soportar el proceso de construcción de la aplicación web.

Transversales:

Durante este curso el estudiante desarrollará habilidades para:

  1. Aplicar principios básicos de administración de proyectos a través del desarrollo del proyecto para realizar una adecuada gestión del mismoeptualizar y planificar un proyecto de software usando métodos, técnicas y herramientas adecuadas al contexto, para elaborar el Plan de proyecto.
  2. Aplicar buenas prácticas de aseguramiento de la calidad del software a lo largo de todo el proyecto para producir una aplicación de calidad.
  3. Aplicar buenas prácticas de seguridad del software a lo largo de todo el proyecto para producir una aplicación segura.
  4. Generar acciones comunicativas efectivas para fomentar la socialización de la información y el conocimiento, mediante la elaboración presentaciones orales 0 reportes escritos sobre el avance del proyecto.
  5. Trabajar en equipo de forma cooperativa para fomentar la integración de múltiples visiones y alternativas de solución de problemas, mediante la planificación, distribución y ejecución de las actividades asociadas al proyecto.
Contenidos: 

En este curso, una iteración se entenderá como un periodo de tiempo corto (entre 2 y 4 semanas) en el cual los estudiantes planearán, diseñarán, implementarán y probarán parte de los requerimientos del software (con excepción de la iteración cero, donde solo de conceptualiza y planifica). Es decir, la aplicación a desarrollar se irá construyendo de forma incremental, en varias iteraciones, al final de las cuales debe haber un entregable funcional.

Objetivo específico Eje temático Desglose Semanas
1, 2, 3, 4, 8, 9, 12, 13 Iteración 0:
Conceptualización y Planificación

De Ingeniería de software:

  • Técnicas de extracción de requerimientos
  • Definición del alcance
  • Estimación del proyecto
  • Planificación del proyecto
  • Herramientas para el desarrollo de la aplicación y trabajo colaborativo:
    • Gestión de versiones
    • Gestión de proyectos
    • Modelado
    • Desarrollo web
    • Diseño de interfaces

De Bases de datos:

  • Diseño conceptual y lógico de bases de datos
  • Herramientas para el diseño de bases de datos:
    • Diseño de bases de datos
7
4, 5, 6, 7, 8, 9, 10, 11, 12, 13 Iteración 1

De Ingeniería de software:

  • Refinamiento del análisis y las estimaciones
  • Refinamiento de capas y de base de datos
  • Diseño de interfaces
  • Programación de las capas
  • Pruebas
  • Liberación de la iteración
  • Prácticas de calidad

De Bases de datos:

  • SQL básico: comandos para la definición del esquema de la base de datos con sus restricciones, la manipulación y consulta básica de datos
  • Evaluación de la calidad del diseño mediante guías informales y el proceso de normalización
  • Herramientas para la implementación de bases de datos:
    • Sistema de gestión de bases de datos relacional
3
5, 6, 7, 8, 9, 10, 11, 12, 13 Iteración 2

De Ingeniería de software:

  • Refinamiento del análisis y las estimaciones
  • Refinamiento de capas y de base de datos
  • Diseño de interfaces
  • Programación de las capas
  • Pruebas
  • Liberación de la iteración
  • Prácticas de calidad

De Bases de datos:

  • Consultas avanzadas en SQL
  • Procedimientos almacenados
  • Disparadores (triggers) y cursores 
  • Vistas
  • Inyección SQL y su prevención
3
5, 6, 7, 8, 9, 10, 11, 12, 13 Iteración 3 De Ingeniería de software:
  • Refinamiento del análisis y las estimaciones
  • Refinamiento de capas y de base de datos
3
Bibliografía: 

1.    Elmasri R. y Navathe S. “Fundamentos de Sistemas de Bases de Datos”, 6ta ed. Pearson-Addison Wesley, 2010.
2.    Malinowski E. “Material de Apoyo Bases de Datos I” (folleto del curso), Escuela de Ciencias de la Computación e Informática, UCR, 2015.
3.    Ramakrishnan R. y Gehrke J. “Database Management Systems”, 3ra ed. McGraw-Hill, 2002.
4.    Salazar, Gabriela. “Guía para elaborar Planes de Administración de Proyecto de Desarrollo de Software” Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica. 2014. 
5.    Salazar, Gabriela. “Metodología Scrum” Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica. 2015. 
6.    Salazar, Gabriela. “Plantilla para especificar el alcance de un proyecto de software”. Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica. 2015. 
7.    Salazar, Gabriela. “Plantilla para especificar los requerimientos del software”. Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica. 2015.  
8.    Salazar, Gabriela. Plantilla para especificar Casos de Uso. Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica. 2015.  
9.    Bermúdez, Manuel. Plantilla para gestionar el desarrollo de las historias de usuario. Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica. 2015. 
10.    Salazar, Gabriela. “Plantilla para especificar el diseño del software”. Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica. 2015.
11.    https://help.rallydev.com/rally-video-tutorials
12.    https://www.planningpoker.com/
13.    https://pidoco.com/en/help/videos
14.    https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCcQtwIwAWoVChMI_vb2_M2SyAIVytgeCh0L5gaA&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DfythGf2PT08&usg=AFQjCNHeI69EAWbmhm7Od7XNa0-CrH9M_w&bvm=bv.103627116,d.dmo
 

LIberación de responsabilidad: 

Este no es un documento oficial. Documentos oficiales se entregan en la secretaría de la escuela.