• Non ci sono risultati.

4.6 - Proposte di insegnamenti per il corso di studio

Ritengo che il corso di studio già provveda bene ad allineare le conoscenze dello stu-dente alle richieste di mercato.

Riterrei molto utile che il corso di studi si prendesse carico di modellare la cultura infor-matica dello studente. A livello pratico, si potrebbero destinare alcuni crediti del corso di laurea a progetti che mirino a “staccare” lo studente dal codice. Motivo questo suggeri-mento perchè durante la maggior parte delle mie esperienze professionali ho constatato che i più grandi limiti alla produttività siano legati a questioni culturali più che alle tecno-logie. Come esempio, vorrei portare il fatto che è molto difficile apprendere la reale mo-tivazione della divisione dei ruoli insegnati a Ingegneria del Software senza essere af-fiancati in modo più granulare (anche se mi rendo conto che sarebbe difficile da mettere in pratica).

Sarebbe inoltre interessante approfondire quanto cominciato al corso di Gestione di Im-prese informatiche analizzando con maggior dettaglio l’offerta aziendale Im-presente nel nostro paese dando risalto soprattutto ai difetti e alle loro soluzioni. Motivo questo sug-gerimento in quanto ritengo che lo studente medio si renda realmente conto della situa-zione del mercato soltanto durante l’evento stage-it organizzato alla fine del terzo anno.

Per quanto riguarda argomenti di studio, ritengo che i design pattern meritino un corso dedicato dopo Programmazione ad Oggetti. Motivo questo suggerimento in quanto ri-tengo che il maggior limite del laureato medio sia la propensione alla creazione di solu-zioni personali ai problemi, che nella maggior parte delle situasolu-zioni generano inutile complessità.

Glossario

Agile

Metodologia di sviluppo che, adattata al contesto Miriade, prevede:

• Un alto grado di lavoro di squadra.

• Bassa produzione documentale.

• Reazione immediata a modifiche progettuali in corso d’opera.

• Piccole e ricorrenti release del prodotto.

Amazon Web Services

Primo fornitore di servizi di infrastruttura tramite cloud computing. Le tecnologie mag-giormente utilizzate per questo stage sono state EC2, VPC e CloudFormation.

Antipattern

Termine gergale informatico, che identifica una pratica riconosciuta come non ottimale o addirittura dannosa.

Ant contrib

Libreria su Apache Ant che rende disponibili strutture di programmazione procedurale ed espressioni regolari.

Apache Ant

Build tool basato su Java ed XML che offre strumenti per la scrittura di procedure e ope-razioni multipiattaforma.

Apache Ivy

Libreria su Apache Ant per l’automazione della dichiarazione, risoluzione e download di librerie per il linguaggio Java.

Artefatto

Entità software pronta all’uso (di norma archiviata e riconducibile ad un singolo file) che dichiara dipendenze rispetto ad altri artefatti (normalmente librerie)

Bottom-up (progettazione)

Dall’inglese, “dal basso verso l’alto”, il termine riguarda la generica progettazione o de-finizione di un sistema complesso, partendo da piccole componenti ad alto grado di riu-tilizzo e usandole per definire quelle più grandi.

Branching (controllo di versione)

Operazione tramite la quale vengono mantenuti multipli rami separati della base di co-dice tramite il software di controllo di versione.

Build

Operazione tramite la quale viene generata un’entità software pronta per essere utiliz-zata dall’operazione di deploy. Essa è di solito identificata da un numero.

Checkout

Operazione offerta dal software di controllo di versione che permette l’estrazione del filesystem riconducibile ad un certo commit o branch sulla working directory

CloudFormation

Strumento offerto dal fornitore Amazon per aiutare l’automazione della creazione di in-tere infrastrutture sulla piattaforma.

Clustering

Tecnica tramite la quale si rende un’infrastruttura hardware facilmente estendibile verti-calmente su una particolare funzionalità. Per facilmente estendibile si intende che l’ope-razione di estensione è automatica, ripetibile e simulabile altrove

Commit

Entità astratta rappresentate una modifica su un repository. Un commit è composto da:

• Un insieme di file modificati, aggiunti o rimossi dalla situazione precedente

• Una descrizione delle modifiche rapida identificativa e una più dettagliata opzionale È di fondamentale importanza la correttezza tra semantica e logica implementativa; la responsabilità è totalmente a carico dello sviluppatore che è in questo caso anche auto-re dei messaggi descrittivi.

Datacenter

Luogo fisico che viene scelto per ospitare elaboratori usati per scopi professionali. Il da-tacenter richiede, oltre alla manutenzione delle macchine, un ambiente controllato ter-micamente, personale qualificato per la sicurezza e l’accesso 24/365 agli ambienti (mol-to cos(mol-toso).

Debug

Attività di risoluzione dei malfunzionamenti del software.

Deploy

Operazione tramite la quale si rende funzionale un ambiente usando una build Developement and operations

Ruolo nato dalle esigenze richieste per lo sviluppo di applicazioni sul cloud computing. Il DevOps deve avere conoscenze ad ampio spettro su sviluppo, sistemi, integrazione di software e automazione.

Dump

Il termine si riferisce ad un’entità che racchiude la struttura ed i dati contenuti in un da-tabase in un particolare momento. Spesso è rappresentato tramite un insieme di opera-zioni SQL.

Eclipse

IDE maggiormente utilizzato dagli sviluppatori Java. Tra le altre cose, offre un’integra-zione nativa con il build tool Apache Ant.

Fork (di codice sorgente)

Operazione di fare proprio il codice sorgente di un progetto esterno per continuare lo sviluppo in una direzione diversa o migliorarne le funzionalità esistenti.

Git

Software per il controllo di versione del codice sorgente. La sua peculiarità è la natura distribuita e l’immediatezza delle operazioni di merging e branching.

Github

Applicazione web di gestione e visualizzazione di repository git.

Google Apps

Ecosistema di applicazioni web dedicate al lavoro condiviso. Tra le più usate si ricodano Mail, Docs, Calendar.

Java

Linguaggio di programmazione multipiattaforma di grande diffusione.

Javadoc

Strumento di generazione documentale tecnica automatica proprio del linguaggio Java.

Jenkins

Software che permette di automatizzare le attività necessarie alla continuous integration Linguaggio di dominio

Pseudolinguaggio adattato specificamente ad una classe di problemi detta dominio.

Load balancing

Letteralmente “bilanciamento del carico”, questa tecnica permette assieme al clustering di ottenere un’infrastruttura ad alta affidabilità che permette l’ottimizzazione dei costi.

Nella pratica, viene assegnato ad un balancer il compito di redirezionare il carico en-trante verso un cluster di esecutori.

Milestone

Letteralmente “pietra miliare”, è un termine proveniente dalla gestione di progetto che indica una precisa data con un significato particolare: ad esempio un termine di conse-gna, la fine di una particolare fase, la necessità di mostrare un prototipo, eccetera.

Automazione delle operazioni su piattaforma software as a service

Andrea Zironda ! ! ! ! ! ! ! ! ! ! ! ! ! 67 di 71

Object-oriented design

Struttura di progetto dove le entità sono modellate con classi, istanze e interfacce con obiettivo la definizione di operazioni polimorfe.

Pipeline di deploy

Insieme di attività correlate dall’obiettivo comune, la messa in funzione di un software a partire dal codice sorgente.

Repository (controllo di versione)

Letteralmente magazzino, identifica un entità software che ha la responsabilità di me-morizzare quanto necessario all’esecuzione delle operazioni permesse dal software di controllo di versione.

Repository (Apache Ivy)

Letteralmente magazzino, identifica un software che espone un’interfaccia per l’accesso ad una memoria dedicata all’archivio di artefatti.

Resolver (Apache Ivy)

Entità che identifica un punto di uscita verso il quale risolvere le dipendenze dichiarate.

Risoluzione (di dipendenze)

Operazione che, date una serie di repository e i parametri di ricerca di un artefatto, defi-nisce se e dove questo è disponibile per il download.

Tag (XML)

Marcatori sintattici che permettono la definzione ed il controllo del significato degli ele-menti inclusi in un documento di testo.

Tomcat

Web server scritto in Java e dedicato al servire progetti web (sempre Java) archiviati in file specifici con estensione “war”.

Virtualizzazione infrastruttura

Astrazione software con obiettivo il disaccoppiamento tra sistema operativo ed hardwa-re sottostante. Tramite la virtualizzazione viene chardwa-reata un’interfaccia che permette la creazione virtuale di dispositivi hardware. Questo approccio garantisce maggiore flessi-bilità e portaflessi-bilità delle piattaforme oltre ad abbattere i costi di gestione.

Working copy (controllo di versione)

Copia locale di un repository sul quale lo sviluppatore lavora con obiettivo la composi-zione di un commit (vedere la voce dedicata).

Riferimenti

Maven standard directory layout

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

The Twelve-Factor App

http://www.12factor.net

Continuous Delivery by Martin Fowler

http://martinfowler.com/snips/201006021426.html

Sonatype Nexus

http://www.sonatype.org/nexus/

Apache Archiva

http://archiva.apache.org/index.cgi

AWSTasks

https://github.com/palominoz/aws-tasks/

Maven Repository

http://mvnrepository.com

Documenti correlati