La scelta della tecnologia nei progetti software

La scelta della tecnologia nei progetti software

Quando si inizia un nuovo progetto software la valutazione delle tecnologie da utilizzare, ed in particolare, la scelta del framework, è una fase fondamentale e particolarmente critica che richiede grande attenzione e uno studio preliminare approfondito. Al giorno d'oggi gli strumenti che supportano lo sviluppo software sono numerosi, con caratteristiche, vantaggi, svantaggi e costi differenti. La fase precedente a questa scelta, dovrebbe prevedere un'accurata raccolta di requisiti funzionali, non funzionali e relativi all'aspetto grafico che il prodotto finale dovrà avere.

Una volta completata questa prima analisi, si procede con quella delle tecnologie disponibili. Trovare la tecnologia che supporti completamente ed esaustivamente lo sviluppo delle funzionalità richieste è impossibile, ma si può restringere il campo selezionando quella che facilita maggiormente il lavoro.

Lo sviluppo delle funzionalità non è però l'unico fattore da considerare. Altri, altrettanto importanti, sono:

- Il supporto da parte degli sviluppatori della tecnologia, ma anche quello di una community che attraverso forum e blog proponga soluzioni a problemi più o meno comuni che si possono presentare;

- La stabilità degli aggiornamenti nel tempo: utilizzando componenti che non vengono aggiornati da molto tempo, si rischiano problemi di compatibilità che in futuro potrebbero costringere a dover rimuovere quel componente o addirittura a dover riprogettare tutto utilizzando tecnologie diverse;

- La compatibilità tra le tecnologie e la facilità con cui interagiscono dovrà essere comprovata, se si dovesse aver bisogno di utilizzarne più di una;

- La scelta tra linguaggi nativi e ibridi: si tratta di un problema molto comune quando si parla di sviluppo di App. Utilizzare linguaggi nativi, ovvero linguaggi scritti appositamente per un determinato sistema (ad esempio iOS o android), permette di sfruttare al massimo le potenzialità del dispositivo migliorando nettamente le prestazioni. Lo svantaggio che ne consegue è che la stessa App dovrà essere sviluppata più volte nei vari linguaggi. D’altro canto, l’utilizzo di linguaggi ibridi permette di sviluppare una singola App che funziona su vari sistemi, a discapito però delle prestazioni;

- L’esperienza nelle tecnologie, fattore va valutato insieme al tempo a disposizione. Se il tempo per la realizzazione del prodotto finale è limitato, probabilmente è meglio optare per tecnologie che già si padroneggiamo in modo da poter entrare subito nel vivo dello sviluppo. In caso contrario si possono anche scegliere tecnologie che prevedano una prima fase di formazione.

Per lo sviluppatore, quindi, la valutazione della giusta tecnologia da utilizzare è un passo fondamentale. Se questo aspetto viene affrontato con la giusta attenzione, porta indubbi vantaggi al progetto che si intende realizzare.

Pubblicato il 29 mar 2019

Potrebbero interessarti

IL RUOLO DEI COMPILATORI NELLE ARCHITETTURE RICONFIGURABILI

L'hardware riconfigurabile è di fatti una realtà in continua evoluzione e crescita. I dispositivi FPGA trovano sempre maggior impiego nelle diverse realtà tecnologiche, quali ad esempio datacenter e IoT. La riconfigurazione dell'hardware comporta diversi vantaggi in termini prestazionali. Infatti un FPGA può essere programmato in due modi diversi tali da consentire di rispettare gli stessi requisiti funzionali con performance diverse. Tra queste gioca un ruolo fondamentale il consumo di potenza, argomento ampiamente di attualità visto l'utilizzo sempre più frequente e frenetico di dispositivi mobili che necessitano di un'alimentazione tale da garantirne l'uso per almeno un'intera giornata. Tra le possibilità che un FPGA offre, in base alla sua caratteristica di riconfigurabilità, c'è quella di progettare un'architettura fortemente dinamica capace di riconfigurarsi continuamente in base al tipo di applicazione che deve essere processata. Semplificando con un esempio, si pensi alla possibilità di avere un elemento di processamento che si comporti come una GPU quando si elaborano applicazioni fortemente grafiche e come un processore in caso di elaborazioni che richiedono più logica di controllo che processamento massivo. Affinché tale architettura possa essere realizzata è necessario prevedere un meccanismo capace di collegare la parte software delle diverse applicazioni con quella hardware che è riconfigurabile. Tale strato è identificabile attraverso un compilatore che deve essere capace di tradurre nella maniera corretta ed ottimizzata le applicazioni in codice macchina, interpretabile dall'architettura sottostante che essendo riconfigurabile cambierà di volta in volta. Esistono delle toolchain di compilatori che consentono la realizzazione di questo modello. Tali toolchain prevedono sostanzialmente due componenti fondamentali che sono la parte di front-end e quella di back-end. In particolare, la prima consente la traduzione del codice sorgente in un linguaggio di rappresentazione intermedia, definito in genere dalla toolchain stessa. In questo modo è possibile ottenere la stessa rappresentazione per sorgenti provenienti da linguaggi di programmazione differenti. Ovviamente è necessario che la toolchain preveda un compilatore di front-end per ognuno dei linguaggi di programmazione sorgenti supportati. La parte di back-end invece, partendo dalla rappresentazione intermedia che viene prodotta dal componente di front-end, deve produrre del linguaggio macchina (sequenze di bit!) interpretabile dall'architettura sottostante. Dal momento che la nostra architettura è di tipo riconfigurabile è necessario implementare la parte di back-end del compilatore in maniera parametrica, ovvero capace di conoscere di volta in volta i parametri che descrivono in modo completo l'architettura per cui deve essere prodotto il codice macchina. Le piattaforme eterogenee e le architetture riconfigurabili saranno probabilmente la nuova frontiera da perseguire per ottimizzare le performance nei sistemi di elaborazione. Pertanto, in un certo senso, l'oggettiva distanza che esiste tra hardware e software potrebbe ridursi attraverso l'implementazione di piattaforme che richiedono hardware descritto via software e software tradotto in base all'hardware sottostante.

La scelta della tecnologia nei progetti software

Quando si inizia un nuovo progetto software la valutazione delle tecnologie da utilizzare, ed in particolare, la scelta del framework, è una fase fondamentale e particolarmente critica che richiede grande attenzione e uno studio preliminare approfondito. Al giorno d'oggi gli strumenti che supportano lo sviluppo software sono numerosi, con caratteristiche, vantaggi, svantaggi e costi differenti. La fase precedente a questa scelta, dovrebbe prevedere un'accurata raccolta di requisiti funzionali, non funzionali e relativi all'aspetto grafico che il prodotto finale dovrà avere. Una volta completata questa prima analisi, si procede con quella delle tecnologie disponibili. Trovare la tecnologia che supporti completamente ed esaustivamente lo sviluppo delle funzionalità richieste è impossibile, ma si può restringere il campo selezionando quella che facilita maggiormente il lavoro. Lo sviluppo delle funzionalità non è però l'unico fattore da considerare. Altri, altrettanto importanti, sono: - Il supporto da parte degli sviluppatori della tecnologia, ma anche quello di una community che attraverso forum e blog proponga soluzioni a problemi più o meno comuni che si possono presentare; - La stabilità degli aggiornamenti nel tempo: utilizzando componenti che non vengono aggiornati da molto tempo, si rischiano problemi di compatibilità che in futuro potrebbero costringere a dover rimuovere quel componente o addirittura a dover riprogettare tutto utilizzando tecnologie diverse; - La compatibilità tra le tecnologie e la facilità con cui interagiscono dovrà essere comprovata, se si dovesse aver bisogno di utilizzarne più di una; - La scelta tra linguaggi nativi e ibridi: si tratta di un problema molto comune quando si parla di sviluppo di App. Utilizzare linguaggi nativi, ovvero linguaggi scritti appositamente per un determinato sistema (ad esempio iOS o android), permette di sfruttare al massimo le potenzialità del dispositivo migliorando nettamente le prestazioni. Lo svantaggio che ne consegue è che la stessa App dovrà essere sviluppata più volte nei vari linguaggi. D’altro canto, l’utilizzo di linguaggi ibridi permette di sviluppare una singola App che funziona su vari sistemi, a discapito però delle prestazioni; - L’esperienza nelle tecnologie, fattore va valutato insieme al tempo a disposizione. Se il tempo per la realizzazione del prodotto finale è limitato, probabilmente è meglio optare per tecnologie che già si padroneggiamo in modo da poter entrare subito nel vivo dello sviluppo. In caso contrario si possono anche scegliere tecnologie che prevedano una prima fase di formazione. Per lo sviluppatore, quindi, la valutazione della giusta tecnologia da utilizzare è un passo fondamentale. Se questo aspetto viene affrontato con la giusta attenzione, porta indubbi vantaggi al progetto che si intende realizzare.

WORDSMITH, IL SOFTWARE CHE AUTOGENERA ARTICOLI

I robot stanno diventando sempre più presenti nella nostra vita quotidiana...Chi avrebbe mai pensato che un software sarebbe stato in grado di sostituire le persone nella creazione di articoli? Ma oltre a rappresentare un aiuto reale, ora rischiano di diventare addirittura una minaccia. La compagnia tecnologica Automated Insights sta sviluppando il software Wordsmith Beta, che sarebbe in grado di scrivere articoli giornalistici al posto degli uomini. Detto in poche parole, la figura del giornalista potrebbe essere sostituita da un robot “scrittore”. Wordsmith è un programma che si basa sull’intelligenza artificiale per generare articoli o recensioni personalizzabili. L’idea alla base di Wordsmith è quella di creare articoli e recensioni, candidandosi ad un vero e proprio programma in grado di sostituire i giornalisti e gli scrittori. Ma qual è il principio di funzionamento di Wordsmith? L’azienda creatrice ha sfruttato i notevoli passi avanti realizzati dall’intelligenza artificiale. Basti pensare, non a caso, al supercomputer Watson di IBM, in grado di analizzare immense moli di dati e riuscire a imparare delle stesse. Di fatto, Wordsmith sembra essere una piattaforma “intelligente” in grado di generare articoli e recensioni personalizzabili. Tuttavia, entrando all’interno del sito della società creatrice, si scopre che Wordsmith deve aver alcuni dati di partenza. Grazie a fonti solide, il programma è in grado di autogenerare testi. Tuttavia, il secondo passaggio richiede sempre un intervento umano. Infatti, Wordsmith richiede un passaggio intermedio in cui personalizzare il testo e lo stile di scrittura. Se da un lato questo nuovo software che non può ancora competere con i giornalisti e gli scrittori, dall’altro rappresenta un importante strumento per automatizzare una parte del processo, soprattutto quando vi sono importanti moli di dati da analizzare. Possiamo dire con certezza che la creazione di un programma di scrittura completamente automatizzata in grado di sostituire l’uomo è ancora un’utopia. Scrivere un testo è un’azione complessa per un computer e riuscire ad emulare il linguaggio, lo stile di scrittura ed il pensiero sembra essere veramente impossibile, perché nessun robot può riversare su quello che scrive le proprie emozioni, trovandosi logicamente impossibilitato a provarle. Il robot finora è stato impiegato in articoli statistici e finanziari, ed ora la società sta pensando di allargare i propri orizzonti. I ricercatori della compagnia informatica Automated Insights, stanno sviluppando un modello per creare articoli molto più complessi e incentrati sulle più disparate tematiche di attualità, introducendo attraverso tecniche basate sull’ intelligenza artificiale un alto grado di personalizzazione nella stesura del testo, facendo percepire al lettore le sensazioni ed emozioni del “giornalista”. Secondo uno studio condotto dal ricercatore Christer Clerwall, le persone tenderebbero mediamente a non distinguere tra un articolo prodotto da Wodrsmith Beta e uno scritto invece da un giornalista in carne ed ossa, il che getta inquietanti dubbi sulla nostra assuefazione alla tecnologia e su quanto i versanti strettamente teorici finiranno per prevalere presto sulla nostra componente emotiva.