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: 
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:
o    Gestión de versiones
o    Gestión de proyectos
o    Modelado
o    Desarrollo web
o    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:
o    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:
o    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.