Internet Application Design and Implementation (2021/2022) - Departamento de Informática
Description

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.

Objectives

To Know

To Do

Syllabus

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
Bibliography

Martin Fowler. Patterns of Enterprise Application Architecture. USA: Addison-Wesley Longman Publishing Co., Inc., 2002. isbn: 0321127420.

Comment: This is a classic and seminal reference that explores the architectural patterns that inspires many of the developments of the course. This reference is complemented by the references below that update and instantiate in the world of distributed and cloud applications.

Len Bass, Paul Clements, and Rick Kazman. Software architecture in practice, 3rd Edition. Addison-Wesley Professional, 2015. isbn: 0321815734.

Chris Richardson. Microservices Patterns. Manning Publications, 2018. isbn: 9781617294549.

Marco Brambilla and Piero Fraternali. Interaction flow modeling language: Model-driven UI engineering of web and mobile apps with IFML. Morgan Kaufmann, 2014. isbn: 0128001089.

Robert C. Martin. 2017. Clean Architecture: A Craftsman''''s Guide to Software Structure and Design (1st. ed.). Prentice Hall Press, USA.

Prerequisites

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.

Student work
  Hours per credit 28
  Hours per week Weeks Hours
Aulas práticas e laboratoriais   28.0
Aulas teóricas   28.0
Avaliação   4.0
Self study   25.0
Orientação tutorial   2.0
Project   75.0
Total hours 162
ECTS 6.0