- 1. ASIGNATURA: Tópicos Especiales I — Ingeniería de Software para …
- 2. Equipo de cátedra
- 3. Objetivos generales de la asignatura
-
4. Contenidos programáticos
- Unidad 1. Introducción
- Unidad 2. Elementos básicos
- Unidad 3. Justificación del proyecto
- Unidad 4. Estructura del software
- Unidad 5. Registración y gestión de usuarios
- Unidad 6. Gestión de contenidos
- Unidad 7. Modularidad del software
- 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
- 5. Metodología
- 6. Horas programadas
- 7. Evaluaciones
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.
