19 resultados para Requisito não-funcional. Arquitetura de software. NFR-framework. Padrão arquitetural
em AMS Tesi di Laurea - Alm@DL - Università di Bologna
Resumo:
Lo stato attuale del mercato continua a dimostrare come l'interesse del pubblico verso i dispositivi mobili sia in costante crescita; se fino a pochi anni fa il termine smartphone era ai piu' privo di significato, ora e' abbastanza comune per giovani e adulti essere concentrati su piccoli dispositivi dove si possono contattare i clienti via e-mail, verificare lo stato di avanzamento dei processi aziendali, consultare il web e cosi' via. L'obiettivo di questa tesi e' introdurre l'utilizzo di diverse tipologie di framework, prendendo come riferimento i sistemi operativi per i dispositivi mobili e quello di presentare soluzioni (attraverso i framework) per lo sviluppo di applicazioni mobili su diverse piattaforme software.
Towards model driven software development for Arduino platforms: a DSL and automatic code generation
Resumo:
La tesi ha lo scopo di esplorare la produzione di sistemi software per Embedded Systems mediante l'utilizzo di tecniche relative al mondo del Model Driven Software Development. La fase più importante dello sviluppo sarà la definizione di un Meta-Modello che caratterizza i concetti fondamentali relativi agli embedded systems. Tale modello cercherà di astrarre dalla particolare piattaforma utilizzata ed individuare quali astrazioni caratterizzano il mondo degli embedded systems in generale. Tale meta-modello sarà quindi di tipo platform-independent. Per la generazione automatica di codice è stata adottata una piattaforma di riferimento, cioè Arduino. Arduino è un sistema embedded che si sta sempre più affermando perché coniuga un buon livello di performance ed un prezzo relativamente basso. Tale piattaforma permette lo sviluppo di sistemi special purpose che utilizzano sensori ed attuatori di vario genere, facilmente connessi ai pin messi a disposizione. Il meta-modello definito è un'istanza del meta-metamodello MOF, definito formalmente dall'organizzazione OMG. Questo permette allo sviluppatore di pensare ad un sistema sotto forma di modello, istanza del meta-modello definito. Un meta-modello può essere considerato anche come la sintassi astratta di un linguaggio, quindi può essere definito da un insieme di regole EBNF. La tecnologia utilizzata per la definizione del meta-modello è stata Xtext: un framework che permette la scrittura di regole EBNF e che genera automaticamente il modello Ecore associato al meta-modello definito. Ecore è l'implementazione di EMOF in ambiente Eclipse. Xtext genera inoltre dei plugin che permettono di avere un editor guidato dalla sintassi, definita nel meta-modello. La generazione automatica di codice è stata realizzata usando il linguaggio Xtend2. Tale linguaggio permette di esplorare l'Abstract Syntax Tree generato dalla traduzione del modello in Ecore e di generare tutti i file di codice necessari. Il codice generato fornisce praticamente tutta la schematic part dell'applicazione, mentre lascia all'application designer lo sviluppo della business logic. Dopo la definizione del meta-modello di un sistema embedded, il livello di astrazione è stato spostato più in alto, andando verso la definizione della parte di meta-modello relativa all'interazione di un sistema embedded con altri sistemi. Ci si è quindi spostati verso un ottica di Sistema, inteso come insieme di sistemi concentrati che interagiscono. Tale difinizione viene fatta dal punto di vista del sistema concentrato di cui si sta definendo il modello. Nella tesi viene inoltre introdotto un caso di studio che, anche se abbastanza semplice, fornisce un esempio ed un tutorial allo sviluppo di applicazioni mediante l'uso del meta-modello. Ci permette inoltre di notare come il compito dell'application designer diventi piuttosto semplice ed immediato, sempre se basato su una buona analisi del problema. I risultati ottenuti sono stati di buona qualità ed il meta-modello viene tradotto in codice che funziona correttamente.
Resumo:
Negli ultimi anni le Web application stanno assumendo un ruolo sempre più importante nella vita di ognuno di noi. Se fino a qualche anno fa eravamo abituati ad utilizzare quasi solamente delle applicazioni “native”, che venivano eseguite completamente all’interno del nostro Personal Computer, oggi invece molti utenti utilizzano i loro vari dispositivi quasi esclusivamente per accedere a delle Web application. Grazie alle applicazioni Web si sono potuti creare i cosiddetti social network come Facebook, che sta avendo un enorme successo in tutto il mondo ed ha rivoluzionato il modo di comunicare di molte persone. Inoltre molte applicazioni più tradizionali come le suite per ufficio, sono state trasformate in applicazioni Web come Google Docs, che aggiungono per esempio la possibilità di far lavorare più persone contemporanemente sullo stesso documento. Le Web applications stanno assumendo quindi un ruolo sempre più importante, e di conseguenza sta diventando fondamentale poter creare delle applicazioni Web in grado di poter competere con le applicazioni native, che siano quindi in grado di svolgere tutti i compiti che sono stati sempre tradizionalmente svolti dai computer. In questa Tesi ci proporremo quindi di analizzare le varie possibilità con le quali poter migliorare le applicazioni Web, sia dal punto di vista delle funzioni che esse possono svolgere, sia dal punto di vista della scalabilità. Dato che le applicazioni Web moderne hanno sempre di più la necessità di poter svolgere calcoli in modo concorrente e distribuito, analizzeremo un modello computazionale che si presta particolarmente per progettare questo tipo di software: il modello ad Attori. Vedremo poi, come caso di studio di framework per la realizzazione di applicazioni Web avanzate, il Play framework: esso si basa sulla piattaforma Akka di programmazione ad Attori, e permette di realizzare in modo semplice applicazioni Web estremamente potenti e scalabili. Dato che le Web application moderne devono avere già dalla nascita certi requisiti di scalabilità e fault tolerance, affronteremo il problema di come realizzare applicazioni Web predisposte per essere eseguite su piattaforme di Cloud Computing. In particolare vedremo come pubblicare una applicazione Web basata sul Play framework sulla piattaforma Heroku, un servizio di Cloud Computing PaaS.
Resumo:
Ingegnerizzazione di sistemi software per schermi pervasivi che riconoscono l'attenzione degli osservatori e adattano ad essi i propri contenuti, interagendo tramite interfacce naturali. Viene proposto un framework per facilitare lo sviluppo di applicazioni che utilizzano kinect e OpenNI. Sulla base del framework realizzato viene presentato anche lo sviluppo di un prototipo per uno di questi sistemi, calato nel contesto accademico.
Resumo:
Internet of Energy è un progetto di ricerca europeo nato con lo scopo di sviluppare infrastrutture hardware e software volte a introdurre la mobilità elettrica veicolare nei moderni contesti urbani. È stato oggetto di tesi di Federco Montori il quale ha sviluppato un primo prototipo di piattaforma comprendente un servizio cittadino di gestione delle ricariche, un’applicazione mobile che vi interagiva e infine un simulatore necessario al test della piattaforma. Nel corso di oltre un anno di sviluppo ho riscritto tutte le componenti software che costituivano il progetto ampliandone notevolmente le funzionalità, rendendole modulari e ben ingegnerizzate. Del progetto originario è stata ereditata l’architettura ontology-based basata sullo scambio di informazioni tramite il Semantic Information Broker (SIB). Il mio contributo è iniziato nel 2012 con la riscrittura dell’applicazione mobile che inizialmente funzionava solo in presenza del simulatore. Attualmente permette di interfacciarsi a un veicolo reale tramite la tecnologia Blue&Me di Fiat. Questo approccio è stato reso possibile grazie all’opportunità offerta dal Centro Ricerche Fiat, che ci ha permesso di testare presso loro sede l’applicazione mobile su un prototipo di Daily elettrico. Ho inoltre introdotto lo studio del profilo altimetrico e consumo energetico che separa il possessore dello smartphone da una determinata destinazione. Nel 2013 ho deciso di riscrivere il Servizio Cittadino per renderlo conforme a un nuovo protocollo di prenotazione. Ho colto l’occasione per rendere il servizio altamente performante grazie a tecniche quali: pool di thread, pool di oggetti e caching. Infine a cavallo tra il 2013 e il 2014 ho riscritto il simulatore al fine di ottimizzare il consumo di risorse, velocizzare il setup delle simulazioni e sopratutto renderlo più conforme alla realtà. Questo lavoro ha permesso di avere una piattaforma software che permette di valutare realisticamente gli scenari di mobilità elettrica veicolare.
Resumo:
Resource management is of paramount importance in network scenarios and it is a long-standing and still open issue. Unfortunately, while technology and innovation continue to evolve, our network infrastructure system has been maintained almost in the same shape for decades and this phenomenon is known as “Internet ossification”. Software-Defined Networking (SDN) is an emerging paradigm in computer networking that allows a logically centralized software program to control the behavior of an entire network. This is done by decoupling the network control logic from the underlying physical routers and switches that forward traffic to the selected destination. One mechanism that allows the control plane to communicate with the data plane is OpenFlow. The network operators could write high-level control programs that specify the behavior of an entire network. Moreover, the centralized control makes it possible to define more specific and complex tasks that could involve many network functionalities, e.g., security, resource management and control, into a single framework. Nowadays, the explosive growth of real time applications that require stringent Quality of Service (QoS) guarantees, brings the network programmers to design network protocols that deliver certain performance guarantees. This thesis exploits the use of SDN in conjunction with OpenFlow to manage differentiating network services with an high QoS. Initially, we define a QoS Management and Orchestration architecture that allows us to manage the network in a modular way. Then, we provide a seamless integration between the architecture and the standard SDN paradigm following the separation between the control and data planes. This work is a first step towards the deployment of our proposal in the University of California, Los Angeles (UCLA) campus network with differentiating services and stringent QoS requirements. We also plan to exploit our solution to manage the handoff between different network technologies, e.g., Wi-Fi and WiMAX. Indeed, the model can be run with different parameters, depending on the communication protocol and can provide optimal results to be implemented on the campus network.
Resumo:
La presenza sempre più massiccia di fornitori di servizi basati su web service ha portato in rilievo uno dei limiti di questo approccio, l’impossibilità di rendere automatizzabili i task di ricerca, invocazione e orchestrazione dei servizi. Il raggiungimento di questo obiettivo risulta impossibile a causa della mancanza di informazioni comprensibili ad una macchina attraverso le quali un agente software può effettuare delle scelte tra vari servizi esposti. Il fallimento della “ricerca intelligente” di un servizio pubblicato sta nella stessa modellazione dei servizi. I linguaggi attualmente disponibili permettono di modellare un servizio solo dal punto di vista sintattico. Definire le operazioni proposte, il tipo di parametri accettati e il tipo di output prodotto non è sufficiente a comprendere cosa il servizio può fare. I web services semantici consentono di superare questo limite fornendo uno stack semantico, il quale ha il compito di racchiudere le informazioni relative ai servizi, il loro funzionamento e gli obiettivi raggiungibili organizzando la conoscenza in ontologie. La formalizzazione dei modelli ontologici e la loro integrazione con i servizi esistenti è uno dei problemi più interessanti che ha catturato l’attenzione di numerosi studi di settore. Negli ultimi anni numerose sono state le soluzioni proposte. Tra queste si possono considerare due principali vie di sviluppo che hanno visto un’intensa attività sperimentale. Il primo scenario è volto a modellare in maniera formale la conoscenza legata ai servizi esposti, il secondo integra i servizi già esistenti con nuove strutture semantiche in modo da conservare le infrastrutture presenti. Entrambi i filoni hanno come scopo quello di fornire la conoscenza adatta a sistemi esperti che consentano di automatizzare la ricerca dei servizi in base ai desideri dei clienti, permettendo la loro composizione dinamica basata su un’interazione utile e indipendente dai protocolli che vincolano il trasporto delle informazioni.
Resumo:
Agile methodologies have become the standard approach to software development. The most popular and used one is Scrum. Scrum is a very simple and flexible framework that respond to unpredictability in a really effective way. However, his implementation must be correct, and since Scrum tells you what to do but not how to do it, this is not trivial. In this thesis I will describe the Scrum Framework, how to implement it and a tool that can help to do this. The thesis is divided into three parts. The first part is called Scrum. Here I will introduce the framework itself, its key concepts and its components. In Scrum there are three components: roles, meetings and artifacts. Each of these is meant to accomplish a series of specific tasks. After describing the “what to do”, in the second part, Best Practices, I will focus on the “how to do it”. For example, how to decide which items should be included in the next sprint, how to estimate tasks, and how should the team workspace be. Finally, in the third part called Tools, I will introduce Visual Studio Online, a cloud service from Microsoft that offers Git and TFVC repositories and the opportunity to manage projects with Scrum. == Versione italiana: I metodi Agile sono diventati l’approccio standard per lo sviluppo di software. Il più famoso ed utilizzato è Scrum. Scrum è un framework molto semplice e flessibile che risponde ai cambiamenti in una maniera molto efficace. La sua implementazione deve però essere corretta, e visto che Scrum ci dice cosa fare ma non come farlo, questo non risulta essere immediato. In questa tesi descriverò Scrum, come implementarlo ed uno strumento che ci può aiutare a farlo. La tesi è divisa in tre parti. La prima parte è chiamata Scrum. Qui introdurrò il framework, i suoi concetti base e le sue componenti. In Scrum ci sono tre componenti: i ruoli, i meeting e gli artifact. Ognuno di questi è studiato per svolgere una serie di compiti specifici. Dopo aver descritto il “cosa fare”, nella seconda parte, Best Practices, mi concentrerò sul “come farlo”. Ad esempio, come decidere quali oggetti includere nella prossima sprint, come stimare ogni task e come dovrebbe essere il luogo di lavoro del team. Infine, nella terza parte chiamata Tools, introdurrò Visual Studio Online, un servizio cloud della Microsoft che offre repository Git e TFVC e l’opportunità di gestire un progetto con Scrum.
Resumo:
Negli ultimi anni le tecnologie informatiche sono state al centro di uno sviluppo esponenziale. Fra le incalcolabili innovazioni presentate, ha preso sempre più campo il paradigma per la programmazione ad agenti, che permette la realizzazione di sistemi software complessi, i quali, nell'informatica moderna, ricoprono un ruolo di fondamentale importanza. Questi sistemi, denominati autonomi, mostrano caratteristiche interessanti per scenari dinamici; essi infatti devono essere robusti e resistenti, in grado di adattarsi al contesto ambientale e quindi reagire a determinate modifiche che si verificano nell'ambiente, comportandosi di conseguenza. Indicano perciò la pro-attività dell'entità presa in considerazione. In questa tesi saranno spiegate queste tipologie di sistemi, introdotte le loro caratteristiche e mostrate le loro potenzialità. Tali caratteristiche permettono di responsabilizzare i soggetti, rendendo il sistema auto-organizzato, con una migliore scalabilità e modularità, riducendo quindi le elevate esigenze di calcolo. L'organizzazione di questo documento prevede i primi capitoli atti a introdurre il mondo dei sistemi autonomi, partendo dalle definizioni di autonomia e di agenti software, concludendo con i sistemi multi-agenti, allo scopo di permettere al lettore una comprensione adatta ed esaustiva. I successivi capitoli riguardano le fasi di progettazione delle entità prese in esame, le loro forme di standardizzazione e i modelli che possono adottare, tra i quali il più conosciuto, il modello BDI. Ne seguono due diverse metodologie per l'ingegneria del software orientata agli agenti. Si conclude con la presentazione dello stato dell'arte degli ambienti di sviluppo conosciuti, contenente un'esauriente introduzione ad ognuno di essi ed una visione nel mondo del lavoro del loro apporto negli applicativi in commercio. Infine la tesi terminerà con un capitolo di conclusioni e di riflessioni sui possibili aspetti futuri.
Resumo:
Nell'ambito dello sviluppo software, la concorrenza è sempre stata vista come la strada del futuro. Tuttavia, questa è stata spesso ignorata a causa del continuo sviluppo dell'hardware che ha permesso agli sviluppatori di continuare a scrivere software sequenziale senza doversi preoccupare delle performance. In un'era in cui le nuove architetture hardware presentano processori multi-core, tutto questo non è più possibile. L'obiettivo di questa tesi è stato quello di considerare il Modello ad Attori come valida alternativa allo sviluppo di applicazioni in ambito mobile e quindi di progettare, sviluppare e distribuire un nuovo framework sulla base di tale modello. Il lavoro parte quindi da una panoramica di Swift, il nuovo linguaggio di programmazione presentato da Apple al WWDC 2014, in cui vengono analizzati nel dettaglio i meccanismi che abilitano alla concorrenza. Successivamente viene descritto il modello ad attori in termini di: attori, proprietà, comunicazione e sincronizzazione. Segue poi un'analisi delle principali implementazioni di questo modello, tra cui: Scala, Erlang ed Akka; quest'ultimo rappresenta la base su cui è stato ispirato il lavoro di progettazione e sviluppo del framework Actor Kit. Il quarto capitolo descrive tutti i concetti, le idee e i principi su cui il framework Actor Kit è stato progettato e sviluppato. Infine, l'ultimo capitolo presenta l'utilizzo del framework in due casi comuni della programmazione mobile: 1) Acquisizione dati da Web API e visualizzazione sull'interfaccia utente. 2) Acquisizione dati dai sensori del dispositivo. In conclusione Actor Kit abilita la progettazione e lo sviluppo di applicazioni secondo un approccio del tutto nuovo nell'ambito mobile. Un possibile sviluppo futuro potrebbe essere l'estensione del framework con attori che mappino i framework standard di Apple; proprio per questo sarà reso pubblico con la speranza che altri sviluppatori possano evolverlo e renderlo ancora più completo e performante.
Resumo:
Caratteristiche hardware di un rover terrestre (progetto SHERPA). Implementazione tramite il framework ROS di un algoritmo di alto livello di navigazione autonoma basato su due possibili algoritmi di basso livello: LOS (Lightweight Object Streaming developed by BlueBotics) o Navigation Stack. Sviluppo di una Control Ground Station (Java) basata su: protocollo SSH2 oppure sfruttando la libreria LOS.
Resumo:
The 5th generation of mobile networking introduces the concept of “Network slicing”, the network will be “sliced” horizontally, each slice will be compliant with different requirements in terms of network parameters such as bandwidth, latency. This technology is built on logical instead of physical resources, relies on virtual network as main concept to retrieve a logical resource. The Network Function Virtualisation provides the concept of logical resources for a virtual network function, enabling the concept virtual network; it relies on the Software Defined Networking as main technology to realize the virtual network as resource, it also define the concept of virtual network infrastructure with all components needed to enable the network slicing requirements. SDN itself uses cloud computing technology to realize the virtual network infrastructure, NFV uses also the virtual computing resources to enable the deployment of virtual network function instead of having custom hardware and software for each network function. The key of network slicing is the differentiation of slice in terms of Quality of Services parameters, which relies on the possibility to enable QoS management in cloud computing environment. The QoS in cloud computing denotes level of performances, reliability and availability offered. QoS is fundamental for cloud users, who expect providers to deliver the advertised quality characteristics, and for cloud providers, who need to find the right tradeoff between QoS levels that has possible to offer and operational costs. While QoS properties has received constant attention before the advent of cloud computing, performance heterogeneity and resource isolation mechanisms of cloud platforms have significantly complicated QoS analysis and deploying, prediction, and assurance. This is prompting several researchers to investigate automated QoS management methods that can leverage the high programmability of hardware and software resources in the cloud.
Resumo:
In these last years, systems engineering has became one of the major research domains. The complexity of systems has increased constantly and nowadays Cyber-Physical Systems (CPS) are a category of particular interest: these, are systems composed by a cyber part (computer-based algorithms) that monitor and control some physical processes. Their development and simulation are both complex due to the importance of the interaction between the cyber and the physical entities: there are a lot of models written in different languages that need to exchange information among each other. Normally people use an orchestrator that takes care of the simulation of the models and the exchange of informations. This orchestrator is developed manually and this is a tedious and long work. Our proposition is to achieve to generate the orchestrator automatically through the use of Co-Modeling, i.e. by modeling the coordination. Before achieving this ultimate goal, it is important to understand the mechanisms and de facto standards that could be used in a co-modeling framework. So, I studied the use of a technology employed for co-simulation in the industry: FMI. In order to better understand the FMI standard, I realized an automatic export, in the FMI format, of the models realized in an existing software for discrete modeling: TimeSquare. I also developed a simple physical model in the existing open source openmodelica tool. Later, I started to understand how works an orchestrator, developing a simple one: this will be useful in future to generate an orchestrator automatically.
Resumo:
Sviluppare e manutenere applicativi destinati a differenti piattaforme è un’opzione esclusiva di quelle entità capaci di sostenere costi molto alti per la realizzazione di queste applicazioni. Questo esclude gli sviluppatori indipendenti, che spesso realizzano prodotti in totale autonomia; le start-up, che hanno l’esigenza di sviluppare un’idea di business avendo a disposizione budget estremamente ridotti; le piccole aziende, alle quali viene così preclusa la possibilità di competere con player più importanti. Questo tipo di emergenze rende lo sviluppo cross-platform una soluzione interessante per la realizzazione delle applicazioni mobili, abbattendo i costi di sviluppo e permettendo di raggiungere più velocemente un pubblico più ampio. C'è quindi sempre maggiore interesse, da parte degli sviluppatori, per gli strumenti di sviluppo cross-platform. Per catturare l’attenzione degli sviluppatori è necessario che lo strumento sia dotato di buona stabilità, che offra un ambiente di sviluppo confortevole, una buona user experience, facilità di aggiornamento, tempi di sviluppo contenuti e possibilità di immissione delle applicazioni su diversi ecosistemi software. L’idea alla base di questa Tesi di laurea è valutare i pro e i contro di uno di questi framework cross-platform e compararlo con le tecnologie native. Il framework scelto è Ionic per via della sua popolarità tra gli sviluppatori e della ridotta bibliografia scientifica a riguardo. Molte ricerche scientifiche valutano le prestazioni di uno o più framework cross-platform rispetto ad una soluzione nativa, tuttavia è raro un confronto tra un framework e più soluzioni native. Per questo, oltre a valutare i pro e i contro del framework, verrà anche effettuata una comparazione tra gli applicativi nativi per Android e iOS e le controparti sviluppate attraverso Ionic, permettendo di identificare eventuali differenze di performance e aiutare gli sviluppatori nelle scelte tecnologiche.
Resumo:
Negli ultimi anni il crescere della capacità di calcolo dei dispositivi e il diminuire delle loro dimensioni ha permesso di far nascere idee innovative e di esplorare più in dettaglio alcuni settori. Uno di questi è sicuramente quello della realtà aumentata (Augmented reality), infatti, la discussione su questo argomento nasce già negli anni 40 del novecento, ma, per mancanza di mezzi tecnologici adeguati, solo ora si iniziano a realizzare le prime applicazioni che si basano su questa idea e il grande pubblico inizia ad interessarsi all'argomento. La costruzione di applicazioni di realtà aumentata, al momento, è basata sull'utilizzo di alcuni framework che mettono a disposizione dello sviluppatore alcune funzioni molto comuni in questi software, come il tracking di marker e l'utilizzo di bottoni virtuali. Questi strumenti, seppur comodi, non garantiscono sempre la buona progettazione dell'applicazione e tendono a unire insieme parti di logica applicativa e di grafica. Per questo motivo, anche nella ricerca, si stanno cercando di studiare dei metodi in grado di permettere una divisione ottimale dei compiti in modo da ottenere un software riusabile e facilmente mantenibile, ma che permetta anche di sfruttare appieno le potenzialità dell'AR attraverso, per esempio, sistemi distribuiti. Un framework concettuale che rientra in questa categoria è sicuramente quello degli Augmented Worlds, mondi virtuali collegati a quello fisico che ne incrementano le caratteristiche e le possibilità tramite la presenza di entità aumentate. La tesi, quindi, si propone di sviluppare un prototipo di un framework con le caratteristiche sopra citate di estendibilità, utilizzando le piattaforme in questo momento a disposizione e ispirandosi alla visione degli Augmented Worlds.