wiki:2009-PlanificacionDeCatedra

Universidad Católica de Santiago del Estero
Departamento Académico Rafaela

Carrera: Ingeniería en Computación

Planificación de cátedra


1. ASIGNATURA: Tópicos Especiales I — Ingeniería de Software para Aplicaciones de Internet

La asignatura pertenece a la disciplina informática-computación.

  • 1.1. Régimen: CUATRIMESTRAL
  • 1.2. Promoción: SIN EXAMEN FINAL
  • 1.3 Correlatividad:

Las correlatividades fuertes anteriores son FIXME. No existen correlatividades posteriores.


2. Equipo de cátedra


Apellido y nombre Categoría
Ing. César Ballardini Profesor Adjunto
Juan Pedro Fisanotti Ayudante Estudiantil (Rentado? FIXME)



3. Objetivos generales de la asignatura

El objetivo de la materia es introducir al alumno en el desarrollo de comunidades de aprendizaje en línea, su justificación y la gestión del proceso de desarrollo mediante conceptos de Ingeniería de Software.

Que el alumno sea capaz de:

  • FIXME

4. Contenidos programáticos

Unidad 1. Introducción

Definición de ingeniería en el contexto social. Desafíos modernos en entornos de Internet. Gestión de conocimiento. Comunidades de aprendizaje y enseñanza online. Interfaces de voz y móviles. Escalabilidad de las comunidades online: desafíos tecnológicos y sociales.

Unidad 2. Elementos básicos

Protocolos con y sin estado. HTTP: sin estado y anónimo. Impacto de HTTP en la programación de aplicaciones Web. Mecanismos de persistencia del lado del cliente y del servidor. Cookies. El problema de privacidad de las cookies. Bases de datos. Transacciones. ACID. Bases de datos relacionales. Modelos de programación declarativo e imperativo. SQL. Introducción al HTML. Cómo servir contenido estático desde el servidor Web. Lenguajes de programación en el servidor Web. URL abstracta. Bitácoras del servidor Web (logs). Cómo ejecutar un programa en el servidor Web. Depuración de programas Web. Formularios de ingreso de datos. Conexión del programa con la base de datos. Utilización de consola de acceso al servidor de la base de datos. Ejercitación con SQL y modelado de datos. XML: documentos y DTD. Programas que se almacenan y ejecutan en el servidor de la base de datos. Vistas SQL. Lenguajes orientados a objeto y bases relacionales: un desajuste de impedancia. ORM: Object Relational Mapper.

Unidad 3. Justificación del proyecto

Comunidades de aprendizaje online. Clasificaciones de los usuarios. Construcción de escenarios de uso. Perfiles de usuario. Comparación con alternativas offline y online de una comunidad dada. El concepto de «contenido atractivo» para una comunidad. El sistema de nombres DNS. Acertada elección para el nombre de dominio de la comunidad. Registro del nombre de dominio. Negociación de los derechos de copia, modificación y distribución del software. Licencias de software. Aspectos legales de la contratación de desarrollo de software. Modalidades de contratación. Limitación de responsabilidades y garantías.

Unidad 4. Estructura del software

Estructura general de los datos en una comunidad de aprendizaje online. Usuarios. Roles. Contenidos. Artículos. Preguntas y respuestas. Comentarios. Versiones. Relaciones entre contenidos. Relaciones entre usuarios y contenidos. Relaciones entre usuarios y usuarios. Consultas preparadas para la base de datos. Procedimientos compartidos entre diferentes scripts Web.

Unidad 5. Registración y gestión de usuarios

Modelos de usuario: fat vs skinny. Usuarios que pertenecen a un grupo. Modelado de datos. Formas normales. Flujo de trabajo en la registración de un usuario nuevo: autorización, aprobación, estados de una cuenta de usuario. Diseño de flujos de las páginas para la interacción del usuario. Estilo de interacción objeto-verbo. REST en HTTP. Manejo de la integridad referencial en la base de datos. Optimización de consultas con índices. Análisis del plan generado por la base de datos para responder una consulta.

Unidad 6. Gestión de contenidos

Repositorio y flujo de trabajo del contenido. Unificación de clases de contenido. Intercambio de opiniones en una comunidad. Problemas de los archivos estáticos. Base de datos relacional vs. archivos estáticos. Flujo de trabajo típico en una comunidad. Control de versiones de contenido. Control de versiones de software. Solución clásica: un desarrollador por area. Solución actual: múltiples servidores y versionado de código. Diseño del sitio. Espacio de pantalla. Información como interfaz. Tiempo. Velocidad y consistencia. Palabras. Expresiones y formatos. Colores. Navegación. Mapa del sitio. Noticias. Búsqueda global. Acceso a secciones más usadas. Arquitectura de la información. Implícito vs explícito.

Unidad 7. Modularidad del software

Módulos comunes de una comunidad online. Procedimientos compartidos vs procedmientos almacenados. Documentación. Docstrings y documentación comprehensiva. Separación entre diseño (estilo) y desarrollo. Solución básica: script de código y plantilla de diseño. Solución media: directorios separados para código y plantillas. Solución SQL: almacenar plantillas en la base de datos. Solución avanzada: sistema de plantillas. API intermódulos. Parámetros de configuración. Problemas con la configuración en el código. Configuración en la base de datos. Configuración en memoria del servidor web. Ejemplos con .Net y Java. Inyecciones de HTML.

Unidad 8. Foros de discusión

Unidad 9. Usuarios móviles

Unidad 10. Tratamiento de voz

Unidad 11. Escalabilidad

Unidad 12. Búsqueda

Unidad 13. Computación distribuída con HTTP, XML, SOAP, y WSDL

Unidad 14. Metadatos y programas que escriben programas

Unidad 15. Análisis de la actividad de los usuarios

Bibliografía

EVE ANDERSSON, PHILIP GREENSPUN, ANDREW GRUMET, "Software Engineering for Internet Applications", MIT Press 2006, Massachusetts

Bibliografía Adicional

FIXME (ver en cada capitulo de SEIA)


5. Metodología

El curso se desarrollará en clases en parte teóricas y en parte prácticas. En las partes teóricas se expondrán los contenidos conceptuales y procedimentales. En las clases prácticas se resolverán problemas representativos de situaciones que se encuentran en la práctica del desarrollo de aplicaciones Web para comunidades de usuarios. Los alumnos deberán resolver el resto de los problemas a modo de preparación para los parciales, recuperatorios y/o exámenes, y para capacitarse en las habilidades necesarias para culminar el trabajo práctico integrador.

El trabajo práctico integrador se desarrolla en grupos de no más de 4 ó 5 personas. La labor del grupo es poner en producción dentro del cuatrimestre una comunidad online de aprendizaje para un cliente real (empresa, organización sin fines de lucro, departamento u oficina pública) que se beneficiará del crecimiento de la comunidad y de la interacción entre los usuarios.

Cada módulo del trabajo se debe presentar en las clases para recibir la crítica de sus pares y una vez presentado puede ser usado como base o disparador de ideas en los otros grupos. La labor del ingeniero no sólo genera una aplicación como resultado, sino interacciones de valor con sus pares, donde puede ofrecer y recibir crítica constructiva sobre el enfoque, ideas e implementación elegidos.

Siempre Siempre Frecuente Frecuente A veces A veces
Teoría Práctica Teoría Práctica Teoría Práctica
5.1- Exposición X X
5.2- Planteo de problemas X X
5.3- Diálogo — conversación X X
5.4- Estudio dirigido X X
5.5- Discusión en grupo X X
5.6- Exposición — participación del alumno X X

6. Horas programadas

Carácter de la clase Hs teoría Unidades Hs práctica Unidades Horas totales Unidades
Primer cuatrimestre
Segundo cuatrimestre
Totales 56 35 91

7. Evaluaciones

Evaluaciones Fecha prevista Tipo de evaluación Número de unidades didácticas
Parcial
Recuperatorio del parcial
Entrega Cuestionario Introductorio escrita
Entrega Ejercicios Unidad 1 escrita
Entrega Ejercicios Unidad 2 escrita
Entrega Ejercicios Unidad 3 escrita
Entrega Ejercicios Unidad 4 escrita
Entrega Ejercicios Unidad 5 escrita
Entrega Ejercicios Unidad 6 escrita
Entrega Ejercicios Unidad 7 escrita
Entrega Ejercicios Unidad 8 escrita
Entrega Ejercicios Unidad 9 (opcional promoción) escrita
Entrega Ejercicios Unidad 11 (opcional promoción) escrita

7.1. Requisitos para regularizar la asignatura

Las condiciones para obtener la regularidad en la asignatura son las siguientes:

  • Asistencia mínima al 60% de las clases, sin considerar las relativas a evaluaciones parciales o recuperatorios.
  • Aprobación del Parcial o su recuperatorio con puntaje mínimo del 60%.
  • Aprobación de los ejercicios hasta Unidad 8.

7.2. Requisitos para promocionar la asignatura

Los de regularización más:

  • Aprobación de los ejercicios hasta Unidad 9 y 11.
  • Defensa oral y demostración de la comunidad en producción.