Créditos
6
Tipos
Obligatoria de especialidad (Ingeniería del Software)
Requisitos
- Prerrequisito: AS
Departamento
ESSI
Profesorado
Responsable
- Carles Farre Tost (carles.farre@upc.edu)
Otros
- Carlota Catot Bragós (carlota.catot@upc.edu)
- Marc Oriol Hilari (marc.oriol@upc.edu)
- Pau Duran Manzano (pau.duran.manzano@upc.edu)
- Quim Motger de la Encarnacion (joaquim.motger@upc.edu)
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Competencias
Competencias técnicas comunes
- CT2.1 - Demostrar conocimiento y capacidad de aplicación de los principios, metodologías y ciclos de vida de ingeniería de software.
- CT2.3 - Diseñar, desarrollar, seleccionar y evaluar aplicaciones, sistemas y servicios informáticos, y al mismo tiempo asegurar su fiabilidad, su seguridad y su calidad, conforme a principios éticos y a la legislación y la normativa vigente.
- CT2.5 - Diseñar y evaluar interfaces persona-computador que garanticen la accesibilidad y la usabilidad a los sistemas, a los servicios y a las aplicaciones informáticas.
Especialidad ingeniería del software
- CES1.1 - Desarrollar mantener y evaluar sistemas y servicios software complejos y/o críticos.
- CES1.2 - Dar solución a problemas de integración en función de las estrategias, de los estándares y de las tecnologías disponibles.
- CES1.4 - Desarrollar, mantener y evaluar servicios y aplicaciones distribuidas con soporte de red.
- CES1.7 - Controlar la calidad y diseñar pruebas en la producción de software.
- CES2.2 - Diseñar soluciones apropiadas en uno o más dominios de aplicación, utilizando métodos de ingeniería del software que integren aspectos éticos, sociales, legales y económicos.
- CES3.1 - Desarrollar servicios y aplicaciones multimedia.
Aprendizaje autónomo
- G7.3 - Aprendizaje autónomo: Capacidad de planificación y organización del trabajo personal. Aplicar los conocimientos adquiridos a la realización de una tarea en función de la pertenencia y la importancia, decidiendo la manera de llevarla a cabo y el tiempo que hay que dedicarle y seleccionando las fuentes de información más adecuadas. Identificar la importancia de establecer y mantener contactos con los compañeros de estudios, con el profesorado y con profesionales (networking). Identificar fórums de información sobre ingeniería TIC, sus avances y su impacto en la sociedad (IEEE, asociaciones, etc.).
Objetivos
-
Adquirir un conecimiento crític0 y sistemático de los principales protocolos y tecnologias web
Competencias relacionadas: CES1.1, CES1.2, CES1.4, CES3.1, G7.3, CT2.3, -
Adquirir una visión de conjunto del amplio abanico de lenguajes, técnicas y herramientas disponibles para el desarrollo de aplicaciones y servicios web
Competencias relacionadas: CES1.1, CES1.2, CES1.4, CES2.2, G7.3, CT2.3, -
Evaluar y seleccionar la arquitectura y las tecnologías más apropiadas para una determinada aplicación / servicio web
Competencias relacionadas: CT2.1, CES1.1, CES1.2, CES1.4, CES2.2, G7.3, CT2.3, -
Diseñar aplicaciones y servicios web
Competencias relacionadas: CT2.1, CES1.1, CES1.2, CES1.4, CES2.2, G7.3, CES1.7, CT2.3,
Subcompetences- Conocer y aplicar los patrones de diseño más apropiados en cada caso
- Diseñar las interfaces de los servicios web
- Realizar el diseño externo de aplicaciones web
- Realizar el diseño interno de aplicaciones y servicios web
-
Conocer y utilizar frameworks para implementar aplicaciones y servicios web
Competencias relacionadas: CT2.1, CES1.1, CES1.2, CES1.4, CES2.2, G7.3, CT2.3, -
Implementar, desplegar y configurar aplicaciones y servicios web utilizando las tecnologías y técnicas propuestos
Competencias relacionadas: CT2.1, CES1.1, CES1.2, CES1.4, CES2.2, G7.3, CT2.3, -
Conocer e identificar los principales riesgos de seguridad de las aplicaciones y servicios web y las estrategias para solucionarlos.
Competencias relacionadas: CT2.1, CES1.1, CES1.4, CES2.2, G7.3, CES1.7, CT2.3, -
Analizar y evaluar aplicaciones y servicios web según criterios de calidad
Competencias relacionadas: CT2.1, CES1.1, CES1.4, CES2.2, CT2.5, G7.3, CES1.7, CT2.3,
Subcompetences- Conocer y aplicar principios, estrategias y herramientas para evaluar el rendimiento de aplicaciones y servicios web
- Diseñar y ejecutar pruebas de regresión
- Conocer y aplicar principios, estrategias y herramientas para evaluar la usabilidad de aplicaciones y servicios web
Contenidos
-
Introducción
Diferencias entre aplicaciones web y servicios web. Evolución histórica. Características principales de las aplicaciones y servicios web. -
Protocolos, lenguajes y tecnologías Web
<ul><li> El núcleo: URIs y HTTP </li><li> En el cliente: HTML, CSS, JavaScript, DOM, AJAX </li><li> En el servidor: PHP, Java Servlets, JSPs, ... </li><li> Formatos de intercambio de datos: XML, JSON </li><li> Servicios Web: SOAP + WSDL, REST </li></ul> -
Arquitecturas para Aplicaciones y Servicios Web
Arquitectura Lógica vs. Arquitectura Física. Especificidades y condicionantes de las aplicaciones y servicios web. Componentes de una arquitectura web genérica. Patrones de arquitecturas físicas. -
Diseño de Aplicaciones Web
Arquitectura y diseño de aplicaciones web. -
Diseño de Servicios Web
Arquitectura y diseño de servicios web. -
Seguridad, Usabilidad i Pruebas de Aplicaciones y Servicios Web
Aspectos relacionados con la seguridad, usabilidad y la automatización de pruebas de aplicaciones y servicios web.
Actividades
Actividad Acto evaluativo
Tema 1: Introducción
Participa activamente en la clase de teoría, donde se explican los objetivos y la organización de la asignatura.Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Tema 2: Protocolos, lenguajes y tecnologías Web
Participa activamente en la clase de teoría. De manera autónoma, y ​​en grupos de dos o tres, comenzará a buscar información sobre una tecnología específica que deberán presentar en clase.Objetivos: 1 2
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h
P1: Presentación sobre protocolos, lenguajes y tecnologías web (Parte 1)
Además de realizar la presentación ante toda la clase, se deberá entregar un archivo con las transparencias elaboradas a tal efecto.Objetivos: 1 2
Semana: 3
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
P1: Presentación sobre protocolos, lenguajes y tecnologías web (Parte 2)
Además de realizar la presentación ante toda la clase, se deberá entregar un archivo con las transparencias elaboradas a tal efecto.Objetivos: 1 2
Semana: 4
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Tema 3: Arquitecturas para Aplicaciones y Servicios Web
Participa activamente en la clase de teoría.Objetivos: 3
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h
Tema 4: Diseño de Aplicaciones Web
Participa activamente la clase de teoría. De manera autónoma, estudiará material relacionado con el tema y realizará los ejercicios propuestos por el profesor.Objetivos: 4
Contenidos:
Teoría
6h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
9h
C1: Control 1
Control donde se evaluarán todos los contenidos de los temas 1, 2 y 3.Objetivos: 4
Semana: 9
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
0h
Tema 5: Diseño de Servicios Web
Participa activamente la clase de teoría. De manera autónoma, estudiará material relacionado con el tema y realizará los ejercicios propuestos por el profesor.Objetivos: 4
Contenidos:
Teoría
6h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
9h
Laboratorio: Sesiones d'introducción a tecnologias para aplicaciones y servicios web
Por parejas, trabaja (instala, configura, programa) para llevar a cabo una serie de tareas preestablecidas en el enunciado entregado al inicio de la sesión, utilizando el lenguaje, herramientas y recursos indicados. Con antelación, y de manera autónoma, se ha familiarizado e introducido en el uso de estas tecnologías.Objetivos: 1 2 6
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
8h
Aprendizaje dirigido
0h
Aprendizaje autónomo
10h
Laboratorio: Proyecto
En grupos de 3-4, diseña e implementa los tests y el código de una aplicación web y hace el despliegue en la nube. Independientemente de sus funcionalidades, esta aplicación constará de tres partes: aplicación web "clásica", API REST e interfaz móvil "responsive". Cada semana acude a la sesión de laboratorio para trabajar en el proyecto, indicar el grado de consecución de los hitos establecidos para esa sesión, (re) planificar los hitos para las próximas sesiones, presentar resultados i reportar dudas y problemas. Al final del proyecto, evalua el trabajo de sus compañeros de proyecto.Objetivos: 4 5 6 7 8
Contenidos:
Teoría
0h
Problemas
0h
Laboratorio
22h
Aprendizaje dirigido
0h
Aprendizaje autónomo
30h
Metodología docente
La docencia de la asignatura está estructurada en clases de teoría/problemas y clases de laboratorio.Clases de teoría / problemas: 2 horas de clase por semana.
Los instructores pueden presentar algunos de los contenidos del curso utilizando diapositivas o algún otro material disponible en Atenea. Los problemas servirán para poner en práctica y comprobar el aprendizaje. A veces, los estudiantes podrían ser requeridos a tener los problemas resueltos total o parcialmente antes de la clase. Entonces las posibles soluciones serán discutidas en clase. En otras ocasiones, el problema será planteado y resuelto durante la clase, utilizando técnicas de aprendizaje cooperativo. Habrá también sesiones en las que los estudiantes serán requeridos para preparar por su cuenta y presentar ante la clase algún tema.
Clases de laboratorio: 2 horas de laboratorio por semana.
Durante las 4 primeras semanas de curso, yi tras una breve introducción sobre las tareas a realizar, los alumnos las llevarán a cabo usando el ordenador de acuerdo con un plan de trabajo preestablecido y una lista de objetivos.
Durante el resto de semanas del curso, los alumn0s, en grupos de 3-4, diseñarán e implementarán un proyecto web. Las sesiones de laboratorio servirán per trabajar en el proyecto, discutir i resolver dudas y problemas, fijar y gestionar objetivos y presentar resultados.
Método de evaluación
Cualquier acto de fraude académico, plagio o uso o mera tenencia al alcance de medios no autorizados en cualquier actividad de
evaluación comportará la calificación de cero (0) en la prueba o entrega afectada. Además, de acuerdo con la normativa de la
Universidad, la posible derivación de los hechos para la apertura de un expediente disciplinario implicará que la asignatura quede en
el estado provisional de "pendiente de evaluación" hasta la resolución del expediente. La gestión de estas incidencias se lleva a cabo
de acuerdo con el Marco de actuación para la integridad académica en la evaluación de la UPC.
Nota Final = 50% NTP + 50% NLABNTP = nota de teoria y problemas
NLAB = nota de laboratorio
La NTP se obtiene de las notas de C1 (Control 1), C2 (Control 2), NQ (Cuestionarios en clase), P1 (Presentación 1) y P2 (Presentación 2) aplicando la fórmula siguiente:
NTP = 20% C1 + 20% C2 + 20% NQ + 20% P1 + 20% P2
Los cuestionarios (NQ) son pruebas breves realizadas presencialmente en clase y distribuidas a lo largo del curso. El número N exacto de cuestionarios se anunciará el primer día de clase y oscilará entre 5 y 7. La nota NQ se calcula como la media de las mejores N-2 notas. Si el estudiante entrega N-3 o menos cuestionarios, NQ será igual a la suma de las calificaciones de todos los cuestionarios entregados dividida entre N-2.
La NLAB se obtiene de les notas IntroLAB (Sessiones de introducción a tecnologias web) i Proyecto aplicando la fórmula siguiente:
NLAB = 30% IntroLAB + 70% Proyecto
Tanto las presentaciones (P1 y P2) como el Proyecto conllevan trabajo en grupo. En estos casos, el estudiante tendrá una nota individualizada que se calculará a partir de la evaluación que hará el profesor sobre la calidad global del ítem en cuestión (presentación o proyecto), de la evaluación que hará el profesor sobre la contribución del estudiante dentro del grupo y de la evaluación que harán el resto de compañeros del grupo sobre la contribución del estudiante al grupo.
La evaluación de la competencia transversal asignada a la asignatura (G7.3) se obtiene a partir de la fórmula :
Nota G7.3 numérica = 60% Proyecto+ 40% Ps
I tendrá unos valores A, B, C, D según la distribución siguiente:
Nota G7.3 = A si la Nota numérica G7.3 está entre 8.5 y 10
Nota G7.3 = B si la Nota numérica G7.3 está entre 7 y 8.4
Nota G7.3 = C si la Nota numérica G7.3 está entre 5 y 6.9
Nota G7.3 = D si la Nota numérica G7.3 és inferior a 5
Bibliografía
Básico
-
Service design patterns: fundamental design solutions for SOAP/WSDL and RESTful web services
- Daigneau, R,
Addison-Wesley,
2012.
ISBN: 9780321544209
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003924839706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Engineering software as a service: an Agile approach using Cloud Computing: first edition 1.1.1
- Fox, A.; Patterson, D,
Strawberry Canyon,
2012.
ISBN: 9780984881246
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003990539706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
.NET application architecture guide
- ,
Microsoft,
2009.
ISBN: 9780735627109
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004034619706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Web application architecture: principles, protocols, and practices
- Shklar, L.; Rosen, R,
John Wiley,
2009.
ISBN: 9780470518601
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003630939706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Complementario
-
Designing data-intensive web applications
- Ceri, S. [et al.],
Morgan Kaufmann,
2003.
ISBN: 1558608435
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002730699706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Building web applications with UML
- Conallen, J,
Addison-Wesley,
2003.
ISBN: 0201730383
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002575779706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Web Applications and Services
- Farré, Carles,
-
Desenvolupament d'aplicacions web
- Farré, Carles,
Revista de Tecnologia,
2017/7.
ISBN: 2013-9861
https://doi.org/10.2436/20.2004.01.20 -
Patterns of enterprise application architecture
- Fowler, M,
Addison-Wesley,
2003.
ISBN: 0321127420
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991002575799706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Web engineering: the discipline of systematic development of web applications
- Kappel, G. [et al.] (eds.),
John Wiley & Sons,
2006.
ISBN: 0470015543
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991003175679706711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Web links
Capacidades previas
1) Saber qué es una especificación en UML de los requisitos funcionales y no funcionales de un sistema.2) Saber el contexto en que se puede hacer el diseño de un sistema y, en particular, cuáles son las actividades previas y siguientes.
3) Saber qué es la arquitectura del software, y qué estilos arquitectónicos hay (la arquitectura en capas es una de ellas).
4) Conocer los principios del diseño orientado a objetos.
5) Conocer el concepto de patrones de diseño y los patrones de diseño principales.
6) Conocer los elementos del UML específicos del diseño.
7) Conocer las características principales de las plataformas de componentes distribuidos.