Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Sep 5, 2019. It is now read-only.

Commit d539a95

Browse files
Merge pull request #3 from cristiano-c/video-fra
Video fra
2 parents 0189ce2 + f523bec commit d539a95

File tree

15 files changed

+223
-19
lines changed

15 files changed

+223
-19
lines changed

‎00 - Introduzione.md

Lines changed: 90 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,28 @@ Il corso viene tenuto dal prof. Riccardo Sisto in collaborazione con l'assistent
1515

1616
L'obiettivo principale del corso è quello di concludere la consocenza degli argomenti trattati nei corsi di *Distributed programming I* e di *Object oriented programming*.
1717

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+
1825
In particolare ci si focalizzerà su tre concetti chiave:
1926

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.
2130
2. imparare a programmare utilizzando **XML** e a sviluppare **servizi Web**.
2231

2332
Tutto questo tenendo conto degli aspetti della *robustezza*, *sicurezza*, *portabilità* ed *interoperabilità* delle applicazioni che impareremo a sviluppare.
2433

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+
2540
### Cosa ci sarà di nuovo rispetto al corso di DP1?
2641

2742
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
7691

7792

7893

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. ![01](immagini/lezione-00/01.png)
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+
![02](immagini/lezione-00/02.png)
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+
79108
#### Che cos'è il cloud computing?
80109

81110
> #### Cloud computing
@@ -88,12 +117,26 @@ In questo corso studieremo il **cloud computing**? No. Studieremo i meccanismi i
88117

89118

90119

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+
![03](immagini/lezione-00/03.png)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ù. ![04](immagini/lezione-00/04.png)
129+
130+
131+
132+
133+
91134
## Prerequisiti del corso
92135

93136
Quattro grandi argomenti sono necessari per affrontare con serenità questo corso:
94137

95138
- [ ] 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, ... .
97140
- [ ] ciò che abbiamo imparato in **DP1**.
98141
- [ ] infine bisognerà saper usare ragionavolmente bene il linguaggio **Java**.
99142

@@ -103,22 +146,20 @@ Quattro grandi argomenti sono necessari per affrontare con serenità questo cors
103146

104147
I principali argomenti inclusi in questo corso sono:
105148

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:
107150

108151
1. `JAXP`
109152
2. `JAXB`
110-
111153
2. conosceremo l'architettura delle applicazioni distribuite nel senso di applicazioni sviluppate secondo i seguenti paradigmi:
112154

113155
1. object-oriented
114156
2. component-oriented
115-
3. service-oriented
116-
157+
3. service-oriented (soprattutto)
117158
3. i *Web services* (quelli visti poco fa, **non** le Web applications) e il relativo strumenti per svilupparli, ovvero `JAX-RS`
118-
119159
4. altre cose, come *ant* per il supporto automatizzato dello sviluppo, le *annotazioni Java* e così via...
120160

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.
122163

123164
## Esercizi e laboratori
124165

@@ -133,11 +174,21 @@ Lo svolgimento dei laboratori si tiene sempre di lunedì ma è diviso in due squ
133174

134175
I laboratori inizieranno già il **10 ottobre 2016**.
135176

177+
Una parte dei laboratori ci sarà la Serena mentre l'altra parte ci sarà Sisto.
178+
136179

137180

138181
## Materiale di supporto
139182

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+
141192

142193

143194

@@ -147,22 +198,38 @@ L'esame consiste in tre punti:
147198

148199
1. valutazione degli **assignments**
149200
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.
151202

152203

153204

154205
##### Gli assignments
155206

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.
157208

158209
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.
159210

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+
160217

161218

162219
##### Ammissione al test finale
163220

164221
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.
165222

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+
166233

167234

168235
##### Il professore controllerà i tuoi assignments!
@@ -173,18 +240,28 @@ Fare molta attenzione ai propri elaborati, perchè il docente, con il supporto d
173240

174241
##### La prova scritta ai LABINF
175242

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.
177248

178249

179250

180251
##### Valutazione finale
181252

182253
I punti assegnati verranno calcolati nel seguente modo:
183254

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),
185256
- la prova scritta ha un range da 0 a 6 punti,
186257
- la domanda aperta vale da 0 a 4 punti.
187258

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.
264+
188265
Per avere la lode è necessario fare l'orale.
189266

190267

‎01 - A brief recall of UML NOTATION.md

Lines changed: 99 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
4. Sequence Diagrams
1111

1212

13+
Questa parte è solo un richiamo per avere la stessa "base"/linguaggio/idea del professore sul UML onde evitare pastici di comprensione in futuro.
1314

1415
## Richiami su UML
1516

@@ -37,6 +38,18 @@ Uno degli assunti fondamentali del paradigma a oggetti è che il concetto di cla
3738

3839
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.
3940

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. ![08](immagini/lezione-01/08.png)
50+
51+
52+
4053

4154

4255
##### Relazione
@@ -63,7 +76,7 @@ Due classi possono essere legate da una relazione di generalizzazione, che indic
6376

6477

6578

66-
##### Esempio di diagramma
79+
##### Esempio di diagramma 1
6780

6881
Esempio di *Class Diagram*:
6982

@@ -79,6 +92,31 @@ La relazione indica anche una **cardinalità** (i numeri posti vicino alle Class
7992

8093

8194

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+
![09](immagini/lezione-01/09.png)
119+
82120
##### Interfacce
83121

84122
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
89127

90128
Le interfacce si identificano nel seguente modo: `<<interface name>>`.
91129

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+
![10](immagini/lezione-01/10.png)
142+
92143

93144

94145
## Package Diagrams
@@ -97,6 +148,18 @@ Un package nell'Unified Modeling Language è usato *"per raggruppare elementi e
97148

98149
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.
99150

151+
152+
153+
##### Esempio di package:
154+
155+
Dentro al package `Widgets`si ha `Window class`e cosi via.
156+
157+
![11](immagini/lezione-01/11.png)
158+
159+
160+
161+
162+
100163
##### Utilizzo
101164

102165
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
137200

138201
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.
139202

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+
![12](immagini/lezione-01/12.png)
218+
140219

141220

142221
## Sequence Diagrams
143222

144223
Un **Sequence Diagram** (in italiano: Diagramma di sequenza) è un diagramma previsto dall'UML utilizzato per descrivere uno scenario.
145224

225+
Il diagramma si legge dall'alto verso il basso e da sinistra verso destra insomma come quando si legge.
226+
146227

147228
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.
148229
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:
164245

165246

166247

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)
168265

169266
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).
170267
Il diagramma mostra gli stati che sono assunti dall'entità o dalla classe in risposta ad eventi esterni.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /