Internet Application Design and Implementation
- essential aspects of architectural patterns for inversion of control and software architectures specific for Internet Applications.
- principles of the development of web applications and single page web applications.
- mechanisms of specifying and implementing web services and web service orchestrations.
- internal structure of an Internet browser and its client applications.
- principles of data-centric and user-centric development of Internet applications.
- main data abstraction mechanisms used in Internet applications.
- major performance pitfalls of Internet applications and their workarounds.
- main specification and implementation mechanisms for security policies in Internet Applications.
- use development frameworks that implement architectural styles for Internet applications.
- specify and build web and cloud applications to support thin, flat, and native clients.
- specify and build client applications for web and cloud applications with reactive and rich behaviour.
- implement authentication mechanisms and specify the core security rules of an Internet Application
- specify and efficiently use abstraction data layers such as Object Relational Mappings in Internet applications.
- design and deploy Internet Applications that are efficient and maintainable.
João Ricardo Viegas da Costa Seco, Luís Manuel Marques da Costa Caires
Weekly - 6
Total - 58
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.
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.
The course lectures introduce the different topics highlighting good development practices and specification and implementation methods. Methodologies and technologies are presented in an integrated way to show the specificities of the domain of internet application development.
Laboratory classes are composed from early development challenges and support to the project development. Sample code is given to bootstrap the project development process. Development follows the mainstream development techniques of agile development with use of the most advanced version control, development and automated building tools.
Evaluation is twofold:
- Written evaluation component (worth 50% of the final grade) comprises two tests with equal weights. The tests evaluate proficiency in the development methods and good practices transmitted in the course lectures.
- Laboratory work component (worth 50% of the final grade) comprises project development of an Internet Application with four phases with equal weights. The development is performed in teams of 3 members. The project includes the user-centric development method for a client application (Single Page Web Application) and a data-centric application (REST/Service based). All aspects of the work will be evaluated, from the design of the interface, the development methods, to data modelling and security concerns. The evaluation is concluded with a written report and the presentation of the developed work.
- There is no minimum grade on any of the above components, and there is no frequency condition that are saved from one year to another.
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
- Introduction. Software Architectures. Web development frameworks.
- Client technologies (HTML, CSS, JS)
- Libraries, Frameworks, Languages and Dialects (from JQuery to TS)
- Specification and Implementation of client apps (IFML+REACT)
- IFML to React: an example from user stories to code
- React, Flux and Redux: State Management
- Service based architecture (REST)
- Server Software Architecture (MVC)
- Data Abstraction
- Data Abstraction (Cont.)
- Security (Authentication, Access Control)
- Performance and Scalability
- Reactive Frameworks, Other topics
Programs where the course is taught: