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
Nota Final = 50% NTP + 50% NLABNTP = nota de teoria y problemas
NLAB = nota de laboratorio
La NTP se obtiene de les notas de C1 (Control 1), C2 (Control 2), P1 (Presentación 1) y P2 (Presentación 2) aplicando la fórmula siguiente:
NTP= 30% C1 + 30% C2 + 20% P1 + 20% P2
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.