ACS2017

This page is the entry point of the ACS (Architectures, Components and Services) course of the MOSIG AISSE curriculum.

=Schedule= DD : Didier DONSEZ JBS : Jean-Bernard STEFANI


 * 03/10 : JBS : Introduction
 * 10/10 : DD : Introduction to JHipster and presentation of the homework.
 * 17/10 : DD : Introduction to Services.
 * Service-Oriented Architecture [[Media:soa.pdf]]
 * OSGi, WS, UPnP
 * 24/10 : Homework (DD)
 * Docker and JHipster installation party and code review : Bring your ladtop.
 * 31/10 : Holidays
 * 07/11 : DD : Introduction to REST and and Micro Services
 * REST Principles (Richardson Maturity Model, HATEOS) [[Media:restfulservices.pdf]]
 * OpenAPI 2.0 & 3.0 : try http://editor.swagger.io/ and generate clients and servers
 * Micro-services Patterns (API Gateway, …)
 * 14/11 : JBS :
 * 21/11 : JBS : Reported
 * 28/11 : DD : Introduction to Generative Programming [[Media:generativeprogrammingtools.pdf]] + JHipster code review
 * Bonus: Inspect the MBeans your JHispter applications with the MBean plugin of the JVisualVM.
 * 05/12 JBS Formal component foundations (1H30)
 * 12/12 DD (1H30) Generative Programming in practice with JHipster
 * 19/12 JBS : Formal component foundations (1H30)
 * 9/01 JBS : Formal component foundations (1H30)
 * ??/01 JBS & DD : Homework defense + Satisfaction survey

=Homework=

Homework introduction slides https://docs.google.com/presentation/d/14xH8_LrpsI95kIs3CjgMnKzNrHji38kthC5Lvxpjys4/edit?usp=sharing

Have a glance on the JDL examples https://github.com/jhipster/jdl-samples/

JHipster key technologies
 * Getting started with JHipster
 * Docker
 * Angular 2+
 * Spring Projects
 * Swagger and OpenAPI

Possible extensions for the homework : https://air.imag.fr/index.php/Contributions_open-source_au_projet_JHipster
 * New datatypes : color, geocode, geolocation, media document (stored in CDNs), qrcode (with url shortener external services)
 * New data presentations : charts, heatmap, carpet, punch card for time-series.
 * New containers : HAProxy with SSL Termination and Let's Encrypt, PostGres with PostGIS extensions.
 * New services : Hyperledger

=Annex 1 : Extended Bugtracker JDL= DEFAULT_MIN = 1 DEFAULT_MAX = 3

/** * This is a project to track * @author Didier */ entity Project { name String required minlength(6) pattern("^[-_ a-zA-Z0-9]*$") }

/** * This is a label for tagging the projects * @author Didier */ entity Label { /**	* The name of the label */	label String required minlength(3) }

entity Ticket { /**       * The title of the ticket */	title String required, description String, priority Integer min(DEFAULT_MIN) max(DEFAULT_MAX) dueDate LocalDate, done Boolean }

relationship ManyToMany { Ticket{label(label)} to Label{ticket} }

relationship ManyToOne { Ticket{project(name)} to Project }

relationship ManyToOne { Ticket{assignedTo(login)} to User{ticket} }

dto * with mapstruct angularSuffix * with bt paginate Ticket with pagination

=Annex 2: Exam preparation=

The blockchain is considered as the most disruptive innovation since the Web.

Read the sections 1 and 2 in this article : Christidis and M. Devetsikiotis, ‘‘Blockchains and smart contracts for the Internet of Things,’’ IEEE Access, vol. 4, pp. 2292–2303, 2016. https://mycourses.aalto.fi/pluginfile.php/378344/mod_resource/content/1/Christidis%20and%20Devetsikiotis.pdf

One part of the exam will be a dissertation with regard to the impact of the Blockchain (especially permissioned blockchains) and Smart Contracts on the service ecosystem (OpenAPI, microservices, SLA ...).

References
 * https://en.wikipedia.org/wiki/Blockchain
 * https://en.wikipedia.org/wiki/Smart_contract
 * https://hbr.org/2017/01/the-truth-about-blockchain
 * https://cachin.com/cc/research.html#blockchain
 * Hyperledger
 * Ethereum
 * Smart Contracts
 * OpenZeppelin (https://openzeppelin.org/)
 * https://blog.zeppelin.solutions/a-gentle-introduction-to-ethereum-programming-part-1-783cc7796094
 * https://blog.zeppelin.solutions/a-gentle-introduction-to-ethereum-programming-part-2-7bbf15e1a953
 * Hyperledger Chaincodes
 * http://hyperledger-fabric.readthedocs.io/en/release/chaincode.html

=Links=
 * Crnkovic et al. A Classification Framework for Software Component Models, TSE 2011, http://www.idt.mdh.se/kurser/cd5490/2014/lectures/tse_classificationFramework.pdf
 * Microservice Design Patterns http://microservices.io/patterns/microservices.html