You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 5, 2019. It is now read-only.
Copy file name to clipboardExpand all lines: 00 - Introduzione.md
+90-13Lines changed: 90 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,13 +15,28 @@ Il corso viene tenuto dal prof. Riccardo Sisto in collaborazione con l'assistent
15
15
16
16
L'obiettivo principale del corso è quello di concludere la consocenza degli argomenti trattati nei corsi di *Distributed programming I* e di *Object oriented programming*.
17
17
18
+
In particolare nel primo corso ci si era posti come obiettivi:
19
+
20
+
1.`network programming` ossia programmare i socket.
21
+
2.`web application` ossia siti web.
22
+
23
+
In questo corso invece andremmo verso la parte di web-application ma ci si foccalizzerà su B2B interazione.
24
+
18
25
In particolare ci si focalizzerà su tre concetti chiave:
19
26
20
-
1. conoscere le principali tecniche di sviluppo di software distribuito, cioè **applicazioni B2B** (Business to Business)
27
+
1. conoscere le principali tecniche di sviluppo di software distribuito, cioè **applicazioni B2B** (Business to Business) ossia `machine to machine iteration` in contraposizione (del primo corso) con con l'iterazione tra utente e machine. In altre parole nel primo corso si aveva una iterazione tra l'utente e le macchine mentre qui si vuole avere come unici attori due o più macchine.
28
+
29
+
E per fare ciò si andrà ad utilizzare XML programming e web service programing.
21
30
2. imparare a programmare utilizzando **XML** e a sviluppare **servizi Web**.
22
31
23
32
Tutto questo tenendo conto degli aspetti della *robustezza*, *sicurezza*, *portabilità* ed *interoperabilità* delle applicazioni che impareremo a sviluppare.
24
33
34
+
35
+
36
+
XML è un metodo per rapresentare i dati sul web. Si potrebbe dire che è simile a XDR. XML serve per rappresentare qualsiasi dati e ed è "cariental oriented".
37
+
38
+
Web-service sono i programmi che interagiscono tra di loro nel web e andremmo ad usare il java per fare ciò.
39
+
25
40
### Cosa ci sarà di nuovo rispetto al corso di DP1?
26
41
27
42
Sostanzialmente, ci concentreremo sullo sviluppo di **applciazioni Web** nelle interazioni B2B, ma parleremo anche di micro servizi nell'**Internet delle cose** (ovvero: **IoT**). Faremo anche alcune cose che riguradano l'accesso programmato ai servizi di **cloud computing***.
@@ -76,6 +91,20 @@ In questo corso studieremo l'**IoT**? No. Studieremo in modo ragionevolmente app
76
91
77
92
78
93
94
+
Un primo modo per connettere i dispositivi tra di loro è passare per un "service" o meglio dire un server che fornisca a loro un servizio. 
95
+
96
+
97
+
98
+
99
+
100
+
Oppure fare in modo che si parlino a vicenda senza l'intervento di un umano o di un altro computer.
101
+
102
+

103
+
104
+
Un altra tecnologia per IoT è IPV6. Quindi ai giorni nostri molte applicazioni hanno la compatibilità con ipv6 o meglio dire si cerca la compatibilità con IpV6 come fa apple.
105
+
106
+
107
+
79
108
#### Che cos'è il cloud computing?
80
109
81
110
> #### Cloud computing
@@ -88,12 +117,26 @@ In questo corso studieremo il **cloud computing**? No. Studieremo i meccanismi i
88
117
89
118
90
119
120
+
Come esempio di cloud computing non si deve solo pensare ad una nuvola che da potenza di calcolo ma anche per mettere i dati con Icloud. Quindi nella nuvola si può anche virtualizare le cose e poi si accede tramite intenert.
121
+
122
+
Nella nuvola si hanno dei server che devono parlare tra di loro per svolgere dei servizi.
123
+
124
+
Più specificatamente le tecniche che studieremmo in questo corso sono alla base per tutti questi ambienti.
125
+
126
+
Nel primo corso avemamo studiato la parte che c'è tra l'omino e la macchina (web-server) tra lasciando ciò che accadeva dietro le quinte.
127
+
128
+
Qui andremmo a vedere l'iterazione tra i vari server che stanno dietro alle quinte come si può vedere con le freccie rosse nel disegno sotto. In questo modo ogni server da un contributo diverso ed in più. 
129
+
130
+
131
+
132
+
133
+
91
134
## Prerequisiti del corso
92
135
93
136
Quattro grandi argomenti sono necessari per affrontare con serenità questo corso:
94
137
95
138
-[ ] come funziona un **sistema operativo** e le basi per interagire con esso
96
-
-[ ] le reti telematiche, in particolare è richiesta la conoscenza dei protocolli **TCP/IP** e **HTTP**. Si userà molto il paradigma *restful*, ovvero: GET, UPDATE, DELETE, ... .
139
+
-[ ] le reti telematiche, in particolare è richiesta la conoscenza dei protocolli **TCP/IP** e **HTTP** (sapere molto bene http). Si userà molto il paradigma *restful*, ovvero: GET, UPDATE, DELETE, ... .
97
140
-[ ] ciò che abbiamo imparato in **DP1**.
98
141
-[ ] infine bisognerà saper usare ragionavolmente bene il linguaggio **Java**.
99
142
@@ -103,22 +146,20 @@ Quattro grandi argomenti sono necessari per affrontare con serenità questo cors
103
146
104
147
I principali argomenti inclusi in questo corso sono:
105
148
106
-
1. il linguaggio **XML** e i relativi strumenti Java per utilizzarlo:
149
+
1. il linguaggio **XML** e i relativi strumenti Java per utilizzarlo o meglio dire frameworks:
107
150
108
151
1.`JAXP`
109
152
2.`JAXB`
110
-
111
153
2. conosceremo l'architettura delle applicazioni distribuite nel senso di applicazioni sviluppate secondo i seguenti paradigmi:
112
154
113
155
1. object-oriented
114
156
2. component-oriented
115
-
3. service-oriented
116
-
157
+
3. service-oriented (soprattutto)
117
158
3. i *Web services* (quelli visti poco fa, **non** le Web applications) e il relativo strumenti per svilupparli, ovvero `JAX-RS`
118
-
119
159
4. altre cose, come *ant* per il supporto automatizzato dello sviluppo, le *annotazioni Java* e così via...
120
160
121
-
161
+
162
+
Negli anni passati si vedeva anche sop web-services e rest-full, quest'anno ci concentriamo di più su rest-full perché il trend generale lo usa maggiormente.
122
163
123
164
## Esercizi e laboratori
124
165
@@ -133,11 +174,21 @@ Lo svolgimento dei laboratori si tiene sempre di lunedì ma è diviso in due squ
133
174
134
175
I laboratori inizieranno già il **10 ottobre 2016**.
135
176
177
+
Una parte dei laboratori ci sarà la Serena mentre l'altra parte ci sarà Sisto.
178
+
136
179
137
180
138
181
## Materiale di supporto
139
182
140
-
Tutto il materiale utile può essere trovato nella [pagina del corso](https://pad.polito.it:8080/enginframe/dp2/dp2.xml?_uri=//dp2/material). Il corso è anche videoregistrato.
183
+
Tutto il materiale utile può essere trovato nella [pagina del corso](https://pad.polito.it:8080/enginframe/dp2/dp2.xml?_uri=//dp2/material). Il corso è anche videoregistrato (sulla nostra pagina personale).
184
+
185
+
Dentro al campus si deve usare un link:
186
+
https://pad.polito.it:8080
187
+
188
+
Fuori dal campus:
189
+
https://pad.polito.it
190
+
191
+
141
192
142
193
143
194
@@ -147,22 +198,38 @@ L'esame consiste in tre punti:
147
198
148
199
1. valutazione degli **assignments**
149
200
2. prova scritta ai LABINF (possibile esonero se gli assignments sono stati svolti brillantemente)
150
-
3. facoltativo un orale finale
201
+
3. facoltativo un orale finale che potrebbe essere chiesto dallo studento (se il voto non è quello che vorebbe avere) o dal professore se ci sono dei dubbi.
151
202
152
203
153
204
154
205
##### Gli assignments
155
206
156
-
Ciascun assignment verrà proposto ad ogni laboratorio e dovranno essere consegnati entro una data prestabilita, se qualche assignments verrà consegnato oltre tale data, l'assignment non verrà considerato nella valutazione.
207
+
Ciascun assignment verrà proposto ad ogni laboratorio e dovranno essere consegnati entro una data prestabilita che è relativa all'appello d'esame in cui si vuole passare, se qualche assignments verrà consegnato oltre tale data, l'assignment non verrà considerato nella valutazione.
157
208
158
209
Inoltre, ogni assignment deve essere svolto individualmente. Se il docente scopre che qualcuno ha copiato o hanno lavorato insieme, verranno **entrambi** segnalati alla commissione disciplinare. Bisogna quindi stare molto attenti anche a far si che la propria soluzione rimanga al sicuro e che nessuno ce la copi.
159
210
211
+
La data di consegna di solito sono due giorni lavorativi prima dell'esame in cui si vuole sostenere.
212
+
213
+
Si consegnano gli assegnaments come quando di faceva DP1 con il sito.
214
+
215
+
Quando si consegnato i laboratori ci sono dei test che vengono fatti in automatico dal sistema e il laboratorio deve passare i mandatory test. Se non gli passa allora si deve ri-caricare il laboratorio con le opportune modifiche. Ci sarà anche la possibilità di provare i nostri laboratori in locale, tuttavia è buona norma mandare i laboratori non all'ultima ora ma ben prima in modo da verificare e corregere eventuali errori se non passa i tests.
216
+
160
217
161
218
162
219
##### Ammissione al test finale
163
220
164
221
Si può essere ammessi solo se ogni assignment superi almeno i test di base. Si noti che si possono consegnare gli assignment (anche tutti assieme) solo entro due giorni **lavorativi** prima dell'inizio della prova scritta ai LABINF. Quindi, se l'esame è di lunedì, bisogna consegnare gli assignment entro mercoledì! Poiché sabato e domenica non sono due giorni lavorativi.
165
222
223
+
Possiamo anche essere esonerati se i laboratori sono molto buoni e molto diverrsi l'uno dall'altro.
224
+
225
+
Inoltre per sapere se non dobbiamo andare all'esame finale lo sapremmo solo 1 giorno prima rispetto all'esame stesso. Perché per valutarli deve aspettare che tutti abbiano consegnato e visto che la scadenza è per l'appunto due giorni lavoratori va da se che lo sapremmo solo dopo. Quindi è meglio prepararsi e poi la più non si va perché si ha avuto una buona sorpresa.
226
+
227
+
228
+
229
+
Un altro modo per non sostenere l'esame è di fare una tesi o una "tesina" (progetto speciale) tutto relativo al corso. I numeri di progetti sono limitati quindi ci sarà una selezione se ci sono tanti studenti che richiedono una.
230
+
231
+
In alcuni casi si può fare un progetto (tesi o tesina) assieme ma solo perché mettendo a ssieme il tutto si ottiene una gorssa cosa quindi è come se ci fossero molte tesi o tesine.
232
+
166
233
167
234
168
235
##### Il professore controllerà i tuoi assignments!
@@ -173,18 +240,28 @@ Fare molta attenzione ai propri elaborati, perchè il docente, con il supporto d
173
240
174
241
##### La prova scritta ai LABINF
175
242
176
-
La prova finale è facoltativa. Dipende da come sono stati fatti gli assignments. Se sono di buona qualità non ci sarà bisogno di fare la prova finale. Tale prova consiste nello svolgimento di un nuovo assignment più una domanda aperta, il tutto da svolgersi nell'arco di due ore oppure due ore e mezza. Questa prova verrà considerata superata se l'elaborato scritto supererà i test obbligatori. Faremo una simulazione di questa prova verso la fine del corso: è **importante** esserci!
243
+
La prova finale è facoltativa. Dipende da come sono stati fatti gli assignments. Se sono di buona qualità non ci sarà bisogno di fare la prova finale e molto diversi dai nostri compagni. Tale prova consiste nello svolgimento di un nuovo assignment più una domanda aperta (relativa ai nostri laboratori su come abbiamo svolto gli assignmen), il tutto da svolgersi nell'arco di due ore oppure due ore e mezza. Questa prova verrà considerata superata se l'elaborato scritto supererà i test obbligatori. Faremo una simulazione di questa prova verso la fine del corso: è **importante** esserci!
244
+
245
+
246
+
247
+
Per passare la prova scritta si deve passare i test obbligatori se no non si passa la prova. In alcuni casi se non si passa l'esame ma l'errore è cosi piccolo allora il professore potrebbe fare passare l'esame.
177
248
178
249
179
250
180
251
##### Valutazione finale
181
252
182
253
I punti assegnati verranno calcolati nel seguente modo:
183
254
184
-
- gli assignment verranno valutati con un punteggio minimo di 16 e un massimo di 20 punti,
255
+
- gli assignment verranno valutati con un punteggio minimo di 16 (solo se si passa i test obbligatori) e un massimo di 20 punti (se si passa anche i test non obbligatori quindi extra-test),
185
256
- la prova scritta ha un range da 0 a 6 punti,
186
257
- la domanda aperta vale da 0 a 4 punti.
187
258
259
+
260
+
261
+
Il professore ci darà un voto finale se ci piace bene se no in casi speciali si può richiedere un orale.
262
+
263
+
Durante l'orale può chiedere delle cose e andranno ad influire sulla notazione finale sia in positivo sia in negativo.
Copy file name to clipboardExpand all lines: 01 - A brief recall of UML NOTATION.md
+99-2Lines changed: 99 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,7 @@
10
10
4. Sequence Diagrams
11
11
12
12
13
+
Questa parte è solo un richiamo per avere la stessa "base"/linguaggio/idea del professore sul UML onde evitare pastici di comprensione in futuro.
13
14
14
15
## Richiami su UML
15
16
@@ -37,6 +38,18 @@ Uno degli assunti fondamentali del paradigma a oggetti è che il concetto di cla
37
38
38
39
L'elemento di modello principale dei diagrammi delle classi è la classe. Una classe rappresenta una categoria di entità (istanze), nel caso particolare dette oggetti; il nome della classe indica la categoria di entità descritta dalla classe. Ogni classe è corredata da un insieme di attributi (che descrivono le caratteristiche o lo stato degli oggetti della classe) e operazioni (che descrivono il comportamento della classe). Il simbolo grafico che rappresenta le classi UML è un rettangolo suddiviso in tre scomparti, rispettivamente dedicati al nome della classe, agli attributi e alle operazioni.
39
40
41
+
Si possono rappresenatare le classi in vario modo:
42
+
43
+
1. Una classe senza altri dettagli.
44
+
2. Oppure con attributi e metodi.
45
+
3. Oppure dando ancora più dettagli come public, protect ecc... Con anche dei "static metodi".
46
+
4. Ci possono anche essere metodi astratti.
47
+
5. Se un metodo ha un eccezione si può usare una "throws relazione" in cui si punta alla classe a cui è collegata l'eccezione.
48
+
49
+
Si può avere una classe senza altri dettagli. 
50
+
51
+
52
+
40
53
41
54
42
55
##### Relazione
@@ -63,7 +76,7 @@ Due classi possono essere legate da una relazione di generalizzazione, che indic
63
76
64
77
65
78
66
-
##### Esempio di diagramma
79
+
##### Esempio di diagramma 1
67
80
68
81
Esempio di *Class Diagram*:
69
82
@@ -79,6 +92,31 @@ La relazione indica anche una **cardinalità** (i numeri posti vicino alle Class
79
92
80
93
81
94
95
+
##### Esempio di diagramma 2
96
+
97
+
1. L'ereditarietà:
98
+
99
+
In questo caso si ha l'ereditarietà: In questo caso `FileEntry` e `DirectoryEntry` ereditano da `DirectoryComponent` che è una classe astratta. Quindi `disaplay` è astratta sotto `DirectoryComponent`ma è non-astratta in `FileEntry`e `DirectoryEntry`.
100
+
101
+
2. Aggregation relationship:
102
+
103
+
Un altro importante link è "aggregation relationship" e si va a specificare che `DirecotoryEntry` object include `DirectoryComponent` oggetto. In questo modo si può specificare che dentro a `DirectoryEntry`si ha `DirectoryComponent` reference (link).
104
+
105
+
3. Navigation relationship:
106
+
107
+
Significa che si navigare da un oggetto di una classe ad un oggetto di un altra classe. In particolare in questo caso da `FileEntry object` a `File obejct`.
108
+
109
+
4. General relationship:
110
+
111
+
In questo caso si può anche mettere un'ettichetta (label) con la loro molteplicità. Ad esempio un `File obejct`ha uno o più `DiskSector object`. E viceversa un `DisckSector object`ha un solo `File object`.
112
+
In altre parole un `File object` è mappato su uno o più `DiskSector Objcet`mentre un `DisckSector Objcet`è mappato solo su un `File object`.
113
+
114
+
5. "Use" relationship:
115
+
116
+
Esso è un generico link. Quando un metodo sta per qualche motivo fuori dalla classe.
117
+
118
+

119
+
82
120
##### Interfacce
83
121
84
122
Nel modellamento UML, le interfacce sono elementi di modello che definiscono serie di operazioni che altri elementi, ad esempio le classi, o componenti devono implementare. Un elemento del modello di implementazione realizza un'interfaccia sostituendo ogni operazione dichiarata dall'interfaccia.
@@ -89,6 +127,19 @@ Le interfacce supportano la non visualizzazione di informazioni e la protezione
89
127
90
128
Le interfacce si identificano nel seguente modo: `<<interface name>>`.
91
129
130
+
##### Esempio di interfaccia:
131
+
132
+
1. In una interfiaccia classe la parte di attributi deve essere vuota. Ma si hanno dei metodi e i metodi devono essere astratti.
133
+
2. Altro modo per rapresentare un interfaccia senza dettagli è usare un cerchietto mettendo solo il nome.
134
+
Quindi le due interfaccie (1 e 2) sono uguali a parte per i metodi che in uno ci sono mentre nell'altro non ci sono.
135
+
3. Questo link è simile all'ereditarietà ma rappresenta una classe che implementa un'interfaccia. Quindi `Bibliography`implementa `BigSearch`. Come per il cerchietto in cui `BigSearch`è attacato alla classe che implementa quella interfaccia. Quindi `Bibliography`implementa `BigSearch`.
136
+
4. In particolare si può vedere come ci siano due cerchietti che sono due interfaccie (`BigSearch`e `Update`) che vengono implementati da `Bibliography`.
137
+
5. Si può anche fare in modo che è possibile specificare che qualche classi usano le interfaccie. O alcune classi chiamano i metodi delle interfaccie. Ad esempio `SearchRobot class`usa l'interfaccia `BigSearch interface` e quindi `SearchRobot class` può chiamare le operazioni di `searchByTitle()`o altre di quella interfaccia.
138
+
139
+
140
+
141
+

142
+
92
143
93
144
94
145
## Package Diagrams
@@ -97,6 +148,18 @@ Un package nell'Unified Modeling Language è usato *"per raggruppare elementi e
97
148
98
149
Praticamente *tutti gli elementi UML possono essere raggruppati in package*. Così classi, oggetti, use case, componenti, nodi, istanze di nodi, ecc. possono essere tutti organizzati come package, consentendo così una maneggevole organizzazione delle miriadi di elementi che un modello UML comporta.
99
150
151
+
152
+
153
+
##### Esempio di package:
154
+
155
+
Dentro al package `Widgets`si ha `Window class`e cosi via.
156
+
157
+

158
+
159
+
160
+
161
+
162
+
100
163
##### Utilizzo
101
164
102
165
Quando si organizzano modelli funzionali (use case, workflow, ecc.) si usano i package per modellare la struttura modulare del sistema da applicare nel mondo reale. Quando si organizza il codice sorgente, si usano i package per rappresentare i differenti strati di un codice sorgente.
@@ -137,12 +200,30 @@ Il diagramma descrive nella parte superiore i diversi modi in cui possono essere
137
200
138
201
Nella parte inferiore è riportato un esempio di istanze di due classi diverse, la classe Progetto e quella Utente, e la relazione che esiste tra l'istanza Wikipedia e l'istanziazione di tre determinati utenti.
139
202
203
+
Si rammenti che i nomi nelle classi nel object diagram è sempre sottolineato in modo da riccordare che non è una rappresentazione delle classi ma degli oggetti.
204
+
205
+
Ad esempio da `d1` si può andare a `d2`ma non viceversa.
206
+
207
+
1)Rappresenta un oggetto e non una classe. `d1`è il nome dell'ogetto.
208
+
209
+
2)`DirectoryEntry`è il tipo della classe che appartiene a `d2`.
210
+
211
+
3)`FileEntry`è la classe dell'ogetto ma non si specifica il nome. Ergo si ha l'oggetto `FileEntry`senza il nome.
212
+
213
+
4) E' un oggetto remoto.
214
+
215
+
216
+
217
+

218
+
140
219
141
220
142
221
## Sequence Diagrams
143
222
144
223
Un **Sequence Diagram** (in italiano: Diagramma di sequenza) è un diagramma previsto dall'UML utilizzato per descrivere uno scenario.
145
224
225
+
Il diagramma si legge dall'alto verso il basso e da sinistra verso destra insomma come quando si legge.
226
+
146
227
147
228
Uno scenario è una determinata sequenza di azioni in cui tutte le scelte sono state già effettuate; in pratica nel diagramma non compaiono scelte, né flussi alternativi.
148
229
Normalmente da ogni Activity Diagram sono derivati uno o più Sequence Diagram; se per esempio l'Activity Diagram descrive due flussi di azioni alternativi, se ne potrebbero ricavare due scenari, e quindi due Sequence Diagram alternativi.
@@ -164,7 +245,23 @@ Un esempio di sequence diagram:
164
245
165
246
166
247
167
-
## State diagram
248
+
In questo diagramma l'omino è semplicemente qualche d'uno che svolge un attività e non deve essere per forza un essere umano. I nomi dentro i rettangoli che sono sottlienati sono degli oggetti.
249
+
250
+
Le liene verticali rappresentano la vita dell'oggetto. In particolare si può vedere come `x:Remote`vive più a lungo di tutti gli altri.
251
+
252
+
Al punto 1 si vede che quel rettangolo rappresenta l'attività svolta dall'oggetto `Local`.
253
+
254
+
Inoltre si vede come `getRemoteRef()`venga chiamato come metodo e poi viene ritornato una `x`come valore di ritorno.
255
+
256
+
Nel punto 2 si vede come la chiamata al metodo è su se stesso. Quindi si chiama un metodo dell'ogetto stesso per ritornare all'oggetto stesso un valore di ritorno.
257
+
258
+
Nel punto 3 si vede come un oggetto venga distrutto.
259
+
260
+
261
+
262
+
263
+
264
+
## State diagram (Non è stato fatto)
168
265
169
266
Lo State Chart Diagram o Diagramma degli stati è un diagramma previsto dall'UML per descrivere il comportamento di entità o di classi in termini di stato (macchina a stati).
170
267
Il diagramma mostra gli stati che sono assunti dall'entità o dalla classe in risposta ad eventi esterni.
0 commit comments