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 - 4
Total - Available soon
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.
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
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. 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 two phases. 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: