General goals described according to the expected learning results.
1. Knowledge and understanding: the student will be able to use aspect-oriented, parallel, asyncronous, and distributed mechanisms.
2. Applying knowledge and understanding: the student will be able to design, document, and implement aspect-oriented software systems, distribute and complex systems.
3. Making judgements: the student will be able to analyse parallel and distributed software systems.
4. Communication skills: the student will be able to describe distributed software systems using a proper technical language.
5. Learning skills: the student will be able to solve typical problems, by studying, analysing and using novel distributed technologies.
General goals described according to the expected learning results.
Frontal lessons for concepts, techniques and code.
Should remote teaching be needed, then some adjustements to the above might be introduced, while honouring the programme outlined in the syllabus.
Frontal lessons for concepts, techniques and code; practical tutorials with examples of code for the covered topics.
Should remote teaching be needed, then some adjustements to the above might be introduced, while honouring the programme outlined in the syllabus.
Design patterns for distributed systems: Proxy, Broker, Forward-Receiver, Remote Facade, Data Transfer Object, Session State, Serialized Large Object. Design patterns for secure distributed systems: Role Based Access Control, Authenticator, Remote Authenticator. Design and implementation of aspect-oriented software systems. Design pattern for aspect-oriented systems and Refactoring to aspects. Implementing Asyncrhonous calls in Java. Reactive programming design patterns Circuit Breaker, Bulkheads, Timeout. Message-oriented Middleware RabbitMQ. Blockchain technology.
Introduction to DevOps. Git Workflow and distributed development. Maven. Unit Testing. Automatic test generation. Mutation Testing. Combinatorial Testing. Microservices. Microservices with Spring Boot. Distributed Tracing.
1. F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal. Pattern-Oriented Software Architecture A System of Patterns. John Wiley and Sons, 1996
2. M. Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2003
3. M. Schumacher, E. Fernandez-Buglioni, D. Hybertson, F. Buschmann, P. Sommerlad. Security Patterns: Integrating Security and Systems Engineering. John Wiley and Sons, 2006
4. R. Laddad. AspectJ in Action: Enterpriese AOP with Spring Applications. Manning Publications. 2010.
5. R.-G. Urma, M. Fusco, A. Mycroft. Java 8 in Action: Lambdas, streams, and functional-style programming. Manning, 2015
6. G. Hohpe, B. Woolf. Enterprise Integration Patterns. Addison-Wesley, 2003
7. A. Videla, J.J.W. Williams. RabbitMQ in Action. Manning, 2012
8. A. M. Antonopoulos. Mastering Bitcoin. Programming the open blockchain. O'Reilly, 2017
9. R. Kuhn. Reactive Design Patterns. Manning, 2017