Diseño y Evaluación de Sistemas Basados en Web

Usted está aquí

Créditos
6
Tipos
Optativa
Requisitos
Esta asignatura no tiene requisitos
Departamento
ESSI
This course aims to extend and integrate students' knowledge from earlier engineering subjects in the area of designing distributed and web-based applications with a hands-on approach that will cover the requirements, design, implementation and deployment of both the client and the server applications using cloud services and tools.
It will also serve as an introduction to agile software development as a more apt way to develop software for the web than traditional methods.

Horas semanales

Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
7.11

Competencias

Competencias Técnicas de cada especialidad

Service engineering

  • CEE5.1 - Capacidad para participar en proyectos de mejora o creación de sistemas de servicios, aportando especialmente: a) propuestas de innovación e investigación basadas en nuevos usos y desarrollos de las tecnologías de la información b) la aplicación de los principios de la ingeniería del software y las bases de datos en el desarrollo de los sistemas de información que sean más adecuados, c) la determinación, instalación y gestión de la infraestructura/plataforma informática necesaria para el funcionamento eficiente de los sistemas de servicio.
  • CEE5.3 - Capacidad para trabajar en equipos interdisciplinarios de ingeniería de servicios y, disponiendo de la experiencia de dominio necesaria, capacidad para trabajar autónomamente en sistemas de servicios concretos.

Competencias Técnicas Genéricas

Genéricas

  • CG2 - Capacidad para dirigir, planificar y supervisar equipos multidisciplinares.
  • CG4 - Capacidad para la dirección general y técnica de proyectos de investigación, desarrollo e innovación, en empresas y centros tecnológicos, en el ámbito de la Ingeniería Informática.

Competencias Transversales

Sostenibilidad y compromiso social

  • CTR2 - Conocer y comprender la complejidad de los fenómenos económicos y sociales típicos de la sociedad del bienestar. Ser capaz de analizar y valorar el impacto social y medioambiental

Básicas

  • CB7 - Que los estudiantes sean capaces de integrar conocimientos y enfrentarse a la complejidad de formular juicios a partir de una información que, siendo incompleta o limitada, incluya reflexiones sobre las responsabilidades sociales y éticas vinculadas a la aplicación de sus conocimientos y juicios

Contenidos

  1. Introduction to Web Based Systems
    The web and Web Based Systems. Core web technologies: DNS, URIs, Internet Media Type. HTTP: Resources, Methods, Headers, Status Codes. Browsers and other clients, Proxies and Servers.
  2. Browser technologies
    Prototype Object Oriented Programming. Functional Programming. Modularity. Regular Expressions. Error handling. Event Driven Programming. HTML documents. Decoupling semantics and presentation with CSS. Forms. HTML5 and multimedia. HTML5 applications: Offline, data storage and DBs. Geolocation. CSS for mobile devices. Asynchronous server requests (AJAX).
  3. Programming for the Web
    Introduction to Web Programming: High Concurrency, High Availability Requirements. Programming Paradigms and the Web: (OO) Procedural Programming, Functional Programming, Logic Programming. Introduction to Functional Programming with Scala.
  4. Development Processes for the Web
    The Web: Changing Requirements and Uncertainity. Agile Software Development Values and Principles. Agile Methodologies. Introduction to Scrum. Agile Requirements Management with User Stories. Agile Estimating and Plannig. Agile Tools for Developers: Pair Programming, Test Driven Development, Continuous Integration, Refactoring. Behavior Driven Development.
  5. Server Side Architecture and Design: Layered Architecture and Presentation Patterns
    Layered Architecture. Model View Controller. Controller Patterns: Page Controller, Front Controller, Application Controller. View Patterns: Template View, Transform View, Two Step View. Session State Pattern: Client, Server, Database.
  6. Server Side Architecture and Design: Service, Domain and Data Access Layers.
    Domain Logic Patterns: Service Layer, Domain Model, Table Module, Transaction Script. Data Source Patterns: Data Gateways, Active Record, Data Mapper. Object-Relational Patterns. Offline Concurrency Patterns.
  7. Security for Web Applications
    Foundations of Web Security. Threat and Countermeasures. The Three-Tiered Approach to Security. Network and Host Security Overview. Application Security. Cryptography. SSL.
  8. Testing and Quality
    Introduction to Testing and Quality. Web Quality: Reliability, Usability, Security, Availability, Scalability, Maintainability, Performance & Time To Market. Tests and Development: Unit & Integration Test Patterns and Tools. Acceptance Testing. Introduction to Non Functional Requirements Testing. Performance Testing: Load and Stress Tests.
  9. Physical Architecture
    Architecture Patterns: Single Server, Separated Database, Separated Scripting Engine. Replication, Performance and Availability. Caching. Cloud Computing.

Metodología docente

The course is divided into 2 differentiated blocks:

# Theory classes: 2h / week

The teacher will give a short introduction to every unit by means of a short lecture at the end of the theory session. Furthermore, he will give references or materials so that students can prepare the content of the unit before the next theory session. Students will prepare the contents at home (aproximately 2 hours / week of dedication) by preparing an artifact that could be a summary, a comment, a cheat sheet or the solution to some exercise. That document will be handed in just to show the content has been prepared, but it will not be graded.

During the first part of the session, students will present the contents they prepared to the teacher and fellow students. Students are expected to be able to present the result of their preparation, discuss the topics prepared, ask questions about things they could not understand completely, etc. The teacher will guide the process and will finally summarize the key aspects.


# Lab sessions and project (lab sessions: 2h / week)

The most important part of the course will be the development of a real web application applying the technologies, principles and practices taught during the course. Theory classes and project requirements will be coordinated so that needed theoretical knowledge is taught before its practical application in the project.

The first 4 lab sessions will be introductory sessions to the technologies needed: The development tools used (including GIT, a cloud platform, a build tool, an IDE...), Javascript, HTML&CSS and Scala.

From the 5th session on, the project will be developed in teams of up to 5 people. Teams will be given a product backlog with all the desirable priorized requirements and they will develop a completely usable project (wich will be deployed for real) using 2 week long iterations.

Students will need to solve not only technical problems but also agile management issues like changing requirements, wrong estimations or communication difficulties with business poeple, to name a few.

Therefore, each other lab session (from the 5th on), a given team will deliver an increment of working software doing a demo to the teacher (who will act as a Product Owner) and a retrospective aimed to enhance the quality of both the product and the process. Students will get feedback about the current business value of their solution. The final grade of the project will be an average of the technical quality of the delivered software and the business value of the solution.

Método de evaluación

Final Mark = 60% Project Individual Mark + 30% Theory Exam + 10% Participation

Project Individual Mark = Project Team Mark * Individual Factor

Project Team Mark = 50% Technical Quality + 50% Business Value Delivered

Individual Factor: Each student will evaluate each team member's participation on each iteration (including his or her own). Those will be averaged in a Individual Factor between 0 (the team member didn't show up) to 1.2 (the team member participated much more than asked to).

Participation: Students will deliver materials they prepared for each theory class. The participation grade will be calculated from the number of theory classes prepared by the student and his or her participation in class.

Bibliografía

Básica:

Complementaria:

  • User Stories Applied: For Agile Software Development - Cohn, Mike, Addison-Wesley Professional , 2004. ISBN: 0321205685
  • Agile Estimating and Planning - Cohn, Mike, Prentice Hall , 2005. ISBN: 0131479415
  • Agile software development - Cockburn, Alistair, Addison-Wesley , 2006. ISBN: 0321482751
    http://cataleg.upc.edu/record=b1419281~S1*cat
  • Continuous Integration: Improving Software Quality and Reducing Risk - Duvall, Paul M.; Matyas, Steve; Glover, Andrew, Addison-Wesley Professional , 2007. ISBN: 0321336380
  • Test-driven development : by example - Beck, Kent, Addison-Wesley , cop. 2003. ISBN: 0321146530
    http://cataleg.upc.edu/record=b1260746~S1*cat
  • Improving Web Application Security: Threats and Countermeasures - Microsoft Corporation, Microsoft Press , 2003. ISBN: 0735618429