Disseny i Avaluació de Sistemes Basats en la Web

Esteu aquí

Crèdits
6
Tipus
Optativa
Requisits
Aquesta assignatura no té requisits
Departament
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.

Hores setmanals

Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
7.11

Competències

Competències Tècniques de cada especialitat

Enginyeria de serveis

  • CEE5.1 - Capacitat per participar en projectes de millora o creació de sistemes de serveis, aportant especialment: a) propostes d'innovació i recerca basades en nous usos i desenvolupaments de les tecnologies de la informació b) l'aplicació dels principis de l'enginyeria del programari i les bases de dades en el desenvolupament dels sistemes d'informació que siguin més adequats, c) la determinació, instal·lació i gestió de la infraestructura/plataforma informàtica necessària per al funcionament eficient dels sistemes de servei.
  • CEE5.3 - Capacitat per treballar en equips interdisciplinaris d'enginyeria de serveis i, disposant de l'experiència de domini necessària, capacitat per a treballar autònomament en sistemes de serveis concrets.

Competències Tècniques Generals

Genèriques

  • CG2 - Capacitat per a dirigir, planificar i supervisar equips multidisciplinaris.
  • CG4 - Capacitat per a la direcció general i tècnica de projectes de recerca, desenvolupament i innovació, en empreses i centres tecnològics, en l'àmbit de l'Enginyeria Informàtica.

Competències Transversals

Sostenibilitat i compromís social

  • CTR2 - Conèixer i comprendre la complexitat dels fenòmens econòmics i socials típics de la societat del benestar. Ser capaç d'analitzar i valorar l'impacte social i mediambiental.

Bàsiques

  • CB7 - Que els estudiants siguin capaços d'integrar coneixements i enfrontar-se a la complexitat de formular judicis a partir d'una informació que, essent incomplerta o limitada, inclogui reflexions sobre les responsabilitats socials i ètiques vinculades a l'aplicació dels seus coneixements i judicis.

Continguts

  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.

Metodologia docent

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ètode d'avaluació

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.

Bibliografia

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