Conceção e Implementação de Aplicações para a Internet (2017/2018) - Departamento de Informática
Descrição

Most Internet applications, both web and mobile, depend on resources provided by one or more online services, which may or may not be aware of all its clients. Clients range from simple web pages, reactive and collaborative single page applications, mobile native applications, to service providers that orchestrate several other services to provide a compound result.These challenges are specific of Internet Applications and should be attained using specific methods, tools and techniques.

This course focuses on the principles and concepts on the development of Internet applications. The syllabus follows an approach based on the fundamentals of software development based on web and service oriented architectural patterns, advanced modularity mechanisms, data persistency abstractions, good development practices, performance concerns, and validation techniques. Course lectures are accompanied by a series of practical assignments and a final project development using frameworks, languages, and programming tools for Internet Applications that ensure the safety and compliance of the solution with relation to a specification.

Objectivos

To Know

To Do

Programa

Syllabus

Software Architecture for Internet applications. Inversion of control architectural patterns. Single and compound presentation-abstraction-control architectures. Software as a service (SaaS). Web and Service oriented architectures. Single page applications, plugins and mash-ups. The browser as a virtual machine.

Specification of web and service applications. Data-centric (resource based) application modeling. User-centric (operation based) specification (IFML) Business process modeling in web applications (BPMN). Web service orchestration (BPEL).

Data and control abstractions of web and service applications. REST (resource based) and SOAP (operation based). Object Relational Mappings (ActiveRecord, Hibernate). Relational and NoSQL data layer models. Data manipulation languages (e.g., LINQ, XQuery, NoSQL languages). Reactive programming models (e.g. Atmosphere, BaconJS, AngularJS, MeteorJS), Unified languages for Internet applications (e.g., GWT, Go, Node.JS). OO based data validation architectures.

Performance, scalability and monitoring of applications. Pitfalls of ORMs. Load balancing. Queuing. Caching. Search and indexing. Logging and monitoring.

Security of internet applications. Access control models (RBAC). Third-party authentication. Common attacks (SQL Injection, XSS-scripting attacks).

Plan of lectures

  1. Introduction. Software Architectures. Web development frameworks.
  2. Client technologies (HTML, CSS, JS)
  3. Libraries, Frameworks, Languages and Dialects (from JQuery to TS)
  4. Specification and Implementation of client apps (IFML+REACT)
  5. IFML to React: an example from user stories to code
  6. React, Flux and Redux: State Management
  7. Service based architecture (REST)
  8. Server Software Architecture (MVC)
  9. Data Abstraction
  10. Data Abstraction (Cont.)
  11. Security (Authentication, Access Control)
  12. Performance and Scalability
  13. Reactive Frameworks, Other topics
Bibliografia Principal

Brambilla, M., & Fraternali, P. (2015). Interaction Flow Modeling Language. Interaction Flow Modeling Language. http://doi.org/10.1016/B978-0-12-800108-0.00010-2

Fowler, M. (2002). Patterns of Enterprise Application Architecture. Source (Vol. 48). http://doi.org/10.1119/1.1969597

Abbott, M. L., & Fisher, M. T. (2009). The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise.

Scarioni, C., Deinum, M., Rubio, D., Josh, L., Mak, G., Wheeler, W., … Penchikala, S. (2011). Spring IN Action 3rd. North. http://doi.org/10.1007/978-1-4302-3346-6

Spring.io official guides and tutorials

ReactJS official tutorials

Requisitos Prévios

Students should be proficient programmers with knowledge on Software Engineering, Relational Database design, and Distributed Systems.

The project developed in this course is currently based on a Java based stack, using ReactJS and Typescript for the client development and Java Spring, Hibernate and MySQL to develop server.

The development makes use of mainstream development tools like git, maven, and IDEs like eclipse and IntelliJ, and browser and browser debuggers.

Esforço do Aluno
  Horas por crédito 28
  Horas p/ semana Semanas Horas
Total de Horas 0
ECTS 6.0