998 resultados para Ballerina,Cloud Native,API,Linguaggio di Programmazione


Relevância:

100.00% 100.00%

Publicador:

Resumo:

Ballerina è un linguaggio open-source, cloud-native, progettato, quindi, con l'intento di alleggerire il carico dello sviluppo e dell'integrazione associato alle applicazioni aziendali. Questo linguaggio semplifica il modo in cui un programma comunica con la rete, che di solito avviene tramite un API (Application Program Interface). Ballerina tenta di creare un sistema integrato, riunendo i concetti, le idee e gli strumenti essenziali di integrazione di un sistema distribuito e offrendo un ambiente concorrente e sicuro per supportare lo sviluppo di API.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Questo elaborato tratta alcuni dei più noti framework di programmazione avanzata per la costruzione di piattaforme distribuite che utilizzano il linguaggio di programmazione avanzata Scala come fulcro principale per realizzare i propri protocolli. Le tecnologie analizzate saranno Finagle, Akka, Kafka e Storm. Per ciascuna di esse sarà presente una sezione di introduzione, documentazione e un esempio di codice. L’obiettivo dell’elaborato è l’analisi approfondita delle tecnologie sopraelencate per comprendere a fondo le tecniche di programmazione che le rendono uniche nel loro genere. Questo percorso fornisce una chiave di lettura obiettiva e chiara di ciascuna tecnologia, sarà cura del lettore proseguire nello studio individuale della specifica tecnica che ritiene essere più efficace o interessante. Alla fine della tesi è presente un aperto dibattito in cui le quattro tecnologie vengono messe a confronto e giudicate in base alle loro caratteristiche. Inoltre vengono ipotizzate realtà in cui si possa trovare collaborazione tra i vari framework ed, infine, è presente una mia personale opinione basata sulla mia esperienza in merito.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Nella tesi vengono descritte le caratteristiche principali del linguaggio di programmazione service-oriented Jolie, analizzandone ampiamente la sintassi e proponendo esempi di utilizzo degli operatori e dei costrutti. Viene fatta una panoramica di SOC, SOA, Web Services, Cloud Computing, Orchestrazione, Coreografia, Deployment e Behaviour, gli ultimi due analizzati in diversi capitoli. La tesi si conclude con un esempio di conversione di servizi WSDL in Jolie, producendo un esempio di utilizzo del Web Service convertito. Nel documento vengono accennati i progressi storici del linguaggio ed i loro sviluppatori, nonché le API fornite dal linguaggio.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

I sistemi software rivestono nel campo dell'informatica un ruolo di fondamentale importanza. Negli ultimi anni una caratteristica richiesta ai sistemi è la decentralizzazione del controllo, nell'ottica di un sistema visto come connessioni di parti che possono interagire, e dove ciascuna parte possiede un certo grado di autonomia nella scelta delle attività che devono essere compiute. In tale contesto si introduce il paradigma degli agenti, in quanto include sia aspetti relativi ai modelli computazionali, sia aspetti relativi ai linguaggi. Nella tesi si esplora l'applicazione del linguaggio di programmazione Jason applicato alla programmazione dei controllori di robot. In particolare, si esplora ciò che riguarda il comportamento individuale dell'agente.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Questa tesi esamina la progettazione e lo sviluppo di un'applicazione mobile Android che è in grado di gestire l'attività sportiva di un utente. L'applicazione offre numerose funzionalità, che permettono all'utente di eseguire allenamenti per il fitness e allenamenti per la corsa, tenendo sempre sotto controllo i risultati ottenuti e tutte le informazioni necessarie. Oltre ad eseguire allenamenti l'utente può crearne di propri e modificarli a suo piacimento, in più nell'App è inserito lo shop dove l'utilizzatore può comprare allenamenti messi a disposizione direttamente da FitBody. Gli aspetti visti sopra saranno descritti attraverso un'analisi del problema e un'analisi sulla progettazione architetturale. In particolare verranno sottolineati aspetti riguardanti l'interazione tra utenti e l'utilizzo di API che permetteranno all'utilizzatore di condividere le proprie esperienze sul social network Facebook e di avere un'esperienza completa con l'app. In questo scritto si parlerà anche della comunicazione tra applicazione e server, che avviene grazie a chiamate HTTP con metodo POST. Attraverso queste chiamate l'applicazione leggerà e scriverà informazioni sul database online, 'hostato' sulla piattaforma Altervista. L'applicazione web, di cui sarà data solamente un'infarinatura, è stata sviluppata utilizzando il linguaggio di programmazione PHP. Ogni 'response' inviata dal server al client è composta da uno o più oggetti JSON.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Il processo di sviluppo di un’applicazione comprende più fasi, ognuna strettamente correlata alle altre. Una delle fasi di questo processo è il rilascio del software, che consiste nel rendere disponibile agli utenti l’applicazione caricandone l’eseguibile su un server, sul quale verrà poi eseguita. Per un’azienda di sviluppo software è particolarmente importante automatizzare e standardizzare il processo di rilascio del software, allo scopo di renderlo più veloce e di diminuire il tempo che intercorre fra una modifica e il momento in cui questa viene effettivamente resa disponibile per gli utenti, ottimizzando infine l’impegno degli sviluppatori. La presente tesi descrive l’implementazione di un sistema di Continuous Integration e Continuous Deliveliry scalabile su una software house con più di 900 dipendenti suddivisi in decine di team, ognuno dei quali ha in carico lo sviluppo di vari software. Le applicazioni realizzate dai team sono generalmente microservizi in esecuzione all’interno di container su piattaforma Kubernetes. Sono state quindi valutate le varie alternative per la realizzazione di questo sistema, analizzandone pro e contro, scegliendo infine GitLab per la parte di Continuous Integration e ArgoCD per la parte di Continuous Deployment. Nei vari capitoli viene quindi analizzata l’infrastruttura esistente e vengono illustrati i vantaggi e svantaggi delle varie soluzioni considerate. Per i due software selezionati viene invece descritto il lavoro svolto, con dettagli sul funzionamento del sistema e la configurazione necessaria per il corretto funzionamento dell’intero processo. La soluzione realizzata effettua build, test, code validation e deploy delle applicazioni seguendo un pattern GitOps, con un repository git contenente la configurazione attuale delle applicazioni, permettendo rollback in caso di problematiche e garantendo un alto livello di sicurezza attraverso il mantenimento dello storico della configurazione e della versione delle applicazioni.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Il Cloud Storage è un modello di conservazione dati su computer in rete, dove i dati stessi sono memorizzati su molteplici server, reali e/o virtuali, generalmente ospitati presso strutture di terze parti o su server dedicati. Tramite questo modello è possibile accedere alle informazioni personali o aziendali, siano essi video, fotografie, musica, database o file in maniera “smaterializzata”, senza conoscere l’ubicazione fisica dei dati, da qualsiasi parte del mondo, con un qualsiasi dispositivo adeguato. I vantaggi di questa metodologia sono molteplici: infinita capacita’ di spazio di memoria, pagamento solo dell’effettiva quantità di memoria utilizzata, file accessibili da qualunque parte del mondo, manutenzione estremamente ridotta e maggiore sicurezza in quanto i file sono protetti da furto, fuoco o danni che potrebbero avvenire su computer locali. Google Cloud Storage cade in questa categoria: è un servizio per sviluppatori fornito da Google che permette di salvare e manipolare dati direttamente sull’infrastruttura di Google. In maggior dettaglio, Google Cloud Storage fornisce un’interfaccia di programmazione che fa uso di semplici richieste HTTP per eseguire operazioni sulla propria infrastruttura. Esempi di operazioni ammissibili sono: upload di un file, download di un file, eliminazione di un file, ottenere la lista dei file oppure la dimensione di un dato file. Ogniuna di queste richieste HTTP incapsula l’informazione sul metodo utilizzato (il tipo di richista, come GET, PUT, ...) e un’informazione di “portata” (la risorsa su cui effettuare la richiesta). Ne segue che diventa possibile la creazione di un’applicazione che, facendo uso di queste richieste HTTP, fornisce un servizio di Cloud Storage (in cui le applicazioni salvano dati in remoto generalmene attraverso dei server di terze parti). In questa tesi, dopo aver analizzato tutti i dettagli del servizio Google Cloud Storage, è stata implementata un’applicazione, chiamata iHD, che fa uso di quest’ultimo servizio per salvare, manipolare e condividere dati in remoto (nel “cloud”). Operazioni comuni di questa applicazione permettono di condividere cartelle tra più utenti iscritti al servizio, eseguire operazioni di upload e download di file, eliminare cartelle o file ed infine creare cartelle. L’esigenza di un’appliazione di questo tipo è nata da un forte incremento, sul merato della telefonia mobile, di dispositivi con tecnologie e con funzioni sempre più legate ad Internet ed alla connettività che esso offre. La tesi presenta anche una descrizione delle fasi di progettazione e implementazione riguardanti l’applicazione iHD. Nella fase di progettazione si sono analizzati tutti i requisiti funzionali e non funzionali dell’applicazione ed infine tutti i moduli da cui è composta quest’ultima. Infine, per quanto riguarda la fase di implementazione, la tesi presenta tutte le classi ed i rispettivi metodi presenti per ogni modulo, ed in alcuni casi anche come queste classi sono state effettivamente implementate nel linguaggio di programmazione utilizzato.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

L'obiettivo di questo lavoro è effettuare un'analisi del modello di programmazione proposto da Android. L'attenzione verrà posta, in particolare, su quali meccanismi vengano forniti per la gestione di eventi asincroni generati dal sistema, allo scopo di notificare cambiamenti del contesto in cui si sta operando: dal modo in cui vengono intercettati, a come risulta possibile modificare il comportamento dell'applicazione, in reazione alle nuove informazioni acquisite. Si valuteranno gli elementi di novità introdotti nelle API di Android, in relazione ai classici mezzi disponibili nella programmazione standard in Java, atti a risolvere una nuova categoria di problematiche dovute alla natura context-aware delle applicazioni. Sarà effettuata anche un'analisi più generale della qualità del modello proposto, in termini di estensibilità e modularità del codice; per fare ciò, si prenderà in esame l'applicazione SMS Backup+ come caso di studio e si proporranno delle possibili estensioni per verificarne la fattibilità.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Il web ha cambiato radicalmente le nostre vite. Grazie ad esso, oggi si possono fare cose che solo qualche decennio fa erano pura fantascienza, come ad esempio la telepresenza o gli interventi chirurgici da remoto, ma anche cose più “semplici” come seguire corsi di formazione (anche universitaria), effettuare la spesa, operare con il proprio conto corrente, tutto restando comodamente a casa propria, semplificando così la vita di tutti. Allo stesso tempo il web è stato utilizzato per fini tutt’altro che nobili, ad esempio per commettere crimini informatici, recare danni alla concorrenza, compiere varie forme di truffe ecc. Ogni persona dovrebbe comportarsi in modo corretto e nel pieno rispetto del prossimo, sia sul mondo reale che sul web, ma purtroppo non è sempre così. Per quanto riguarda il mondo del web, sta agli sviluppatori soddisfare le necessità dei propri utenti, assicurandosi però che la propria applicazione non verrà usata per recare qualche tipo di danno a terzi o alla propria infrastruttura. Questa tesi nasce da un idea dei docenti del corso di Programmazione riguardo alla realizzazione di un modulo del sito web del corso che si occupa della correzione automatica di esercizi scritti in linguaggio C dagli studenti del corso, dove per correzione automatica si intende la verifica della correttezza degli esercizi.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

L'informatica è al giorno d'oggi al centro di un incredibile sviluppo e tumulto innovativo; è la scienza che coniuga ogni sviluppo tecnologico, il quale inevitabilmente, d'ora in poi, verrà in qualche modo condizionato dalle innovazioni di tale disciplina. Fra gli innumerevoli nuovi trend che si sono affacciati prepotentemente negli ultimi anni sul panorama informatico, il paradigma per la programmazione ad agenti è uno dei più interessanti, in accordo con i recenti e prossimi sviluppi della tecnologia in generale. Questa tesi tratterà tale argomento partendo da un punto di vista generico ed introduttivo volutamente esaustivo, per poi concentrarsi su una specifica tecnologia implementativa, ovvero il linguaggio Jason, mostrandola infine nella pratica con la presentazione di un'applicazione nel capitolo tre.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

In questa tesi si discutono inizialmente i concetti chiave di agente e sistema multi-agente e si descrivono in ogni dettaglio il linguaggio di programmazione AgentSpeak(L) e la piattaforma Jason, fornendo le basi per poter programmare con il paradigma AOP. Lo scopo centrale di questa tesi è quello di estendere il modello di pianificazione dell’interprete di AgentSpeak(L), considerato come caso specifico, con un approccio che può essere integrato in qualsiasi linguaggio di programmazione ad agenti. Si espone un’evoluzione di AgentSpeak(L) in AgentSpeak(PL), ossia la creazione ed esecuzione di piani automatici in caso di fallimento attraverso l'uso di un algoritmo di planning state-space. L'approccio integrativo modifica il Ciclo di Reasoning di Jason proponendo in fase di pianificazione automatica un riuso di piani già esistenti, atto a favorire la riduzione di tempi e costi nel long-term in un sistema multi-agente. Nel primo capitolo si discute della nozione di agente e delle sue caratteristiche principali mentre nel secondo capitolo come avviene la vera e propria programmazione con AgentSpeak(L). Avendo approfondito questi argomenti base, il terzo capitolo è incentrato sull’interprete Jason e il quarto su una migliore estensione dell'interprete, in grado di superare i limiti migliorando le performance nel tempo. Si delineano infine alcune considerazioni e ringraziamenti nel quinto e ultimo capitolo. Viene proposta con scrittura di carattere divulgativo e non ambiguo.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Software Defined Networking along with Network Function Virtualisation have brought an evolution in the telecommunications laying out the bases for 5G networks and its softwarisation. The separation between the data plane and the control plane, along with having a decentralisation of the latter, have allowed to have a better scalability and reliability while reducing the latency. A lot of effort has been put into creating a distributed controller, but most of the solutions provided by now have a monolithic approach that reduces the benefits of having a software defined network. Disaggregating the controller and handling it as microservices is the solution to problems faced when working with a monolithic approach. Microservices enable the cloud native approach which is essential to benefit from the architecture of the 5G Core defined by the 3GPP standards development organisation. Applying the concept of NFV allows to have a softwarised version of the entire network structure. The expectation is that the 5G Core will be deployed on an orchestrated cloud infrastructure and in this thesis work we aim to provide an application of this concept by using Kubernetes as an implementation of the MANO standard. This means Kubernetes acts as a Network Function Virtualisation Orchestrator (NFVO), Virtualised Network Function Manager (VNFM) and Virtualised Infrastructure Manager (VIM) rather than just a Network Function Virtualisation Infrastructure. While OSM has been adopted for this purpose in various scenarios, this work proposes Kubernetes opposed to OSM as the MANO standard implementation.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Nello sviluppo di sistemi informatici si sono affermate numerose tecnologie, che vanno utilizzate in modo combinato e, possibilmente sinergico. Da una parte, i sistemi di gestione di basi di dati relazionali consentono una gestione efficiente ed efficace di dati persistenti, condivisi e transazionali. Dall'altra, gli strumenti e i metodi orientati agli oggetti (linguaggi di programmazione, ma anche metodologie di analisi e progettazione) consentono uno sviluppo efficace della logica applicativa delle applicazioni. E’ utile in questo contesto spiegare che cosa s'intende per sistema informativo e sistema informatico. Sistema informativo: L'insieme di persone, risorse tecnologiche, procedure aziendali il cui compito è quello di produrre e conservare le informazioni che servono per operare nell'impresa e gestirla. Sistema informatico: L'insieme degli strumenti informatici utilizzati per il trattamento automatico delle informazioni, al fine di agevolare le funzioni del sistema informativo. Ovvero, il sistema informatico raccoglie, elabora, archivia, scambia informazione mediante l'uso delle tecnologie proprie dell'Informazione e della Comunicazione (ICT): calcolatori, periferiche, mezzi di comunicazione, programmi. Il sistema informatico è quindi un componente del sistema informativo. Le informazioni ottenute dall'elaborazione dei dati devono essere salvate da qualche parte, in modo tale da durare nel tempo dopo l'elaborazione. Per realizzare questo scopo viene in aiuto l'informatica. I dati sono materiale informativo grezzo, non (ancora) elaborato da chi lo riceve, e possono essere scoperti, ricercati, raccolti e prodotti. Sono la materia prima che abbiamo a disposizione o produciamo per costruire i nostri processi comunicativi. L'insieme dei dati è il tesoro di un'azienda e ne rappresenta la storia evolutiva. All'inizio di questa introduzione è stato accennato che nello sviluppo dei sistemi informatici si sono affermate diverse tecnologie e che, in particolare, l'uso di sistemi di gestione di basi di dati relazionali comporta una gestione efficace ed efficiente di dati persistenti. Per persistenza di dati in informatica si intende la caratteristica dei dati di sopravvivere all'esecuzione del programma che li ha creati. Se non fosse cosi, i dati verrebbero salvati solo in memoria RAM e sarebbero persi allo spegnimento del computer. Nella programmazione informatica, per persistenza si intende la possibilità di far sopravvivere strutture dati all'esecuzione di un programma singolo. Occorre il salvataggio in un dispositivo di memorizzazione non volatile, come per esempio su un file system o su un database. In questa tesi si è sviluppato un sistema che è in grado di gestire una base di dati gerarchica o relazionale consentendo l'importazione di dati descritti da una grammatica DTD. Nel capitolo 1 si vedranno più in dettaglio cosa di intende per Sistema Informativo, modello client-server e sicurezza dei dati. Nel capitolo 2 parleremo del linguaggio di programmazione Java, dei database e dei file XML. Nel capitolo 3 descriveremo un linguaggio di analisi e modellazione UML con esplicito riferimento al progetto sviluppato. Nel capitolo 4 descriveremo il progetto che è stato implementato e le tecnologie e tools utilizzati.