Visualizzazione post con etichetta Software. Mostra tutti i post
Visualizzazione post con etichetta Software. Mostra tutti i post

giovedì 5 maggio 2016

In Waze We Trust

Waze è lo strumento più utilizzato dagli automobilisti come navigatore e contestualmente come guida per districarsi al meglio nel traffico cittadino.



Questa App è stata una vera e propria Killer Application che ha surclassato le altre concorrenti in ambito mobility grazie ad alcuni aspetti fondamentali: 

  • funziona bene, 
  • è sufficientemente affidabile,
  • si installa sugli smartphone senza bisogno di altro (basta avere un piano tariffario che prevede l'utilizzo "dati"),
  • è facile da usare (la versione 2016 è molto più bella ed intuitiva anche se appena rilasciata ha causato molte crisi di identità negli automobilisti),
  • è gratuita.

Essendo Waze un navigatore social, che prevede la partecipazione da parte degli utenti, è facile intuire quante persone lo utilizzano guardando le numerose segnalazioni interattive che influenzano l'elaborazione dei percorsi proposti dalla app e che compaiono ai guidatori allertandoli su traffico, incidenti, presenza delle forze dell'ordine, lavori in corso, ecc.

Le nostre città ormai sono piene di Wazer, molti di noi ne sono quasi dipendenti.
Un po' per pigrizia nel dover pensare al percorso, un po' avere la sicurezza di evitare il traffico, spesso lo accendiamo anche se conosciamo benissimo la strada.

...e tra Wazer esperti ci si riconosce anche.
Come ?  Vediamo se ti ritrovi in queste situazioni:
  • Guidato da Waze sei finito in stradine sconosciute (presunte scorciatoie), e ti ritrovi a far parte di un serpentone di auto che procede a zig zag tra incroci e traverse. Tutti i guidatori si guardano attorno dubbiosi, nessuno sa dove si trova realmente ed è ormai costretto a fidarsi ciecamente del navigatore. Siete tutti Wazer !!
  • Stai procedendo normalmente quando alla macchina che ti precede improvvisamente si accendono gli stop e ti costringe ad una brusca frenata. Anche lui è un Wazer !!! Sarà facile notare che in quel punto è stata in segnalata la presenza della polizia, che ormai non c'è più ma... l'assioma è che bisogna sempre avere fede in Waze (In Waze we trust) altrimenti è meglio non utilizzarlo.
  • Stai in mezzo al traffico procedendo dritto in prossimità di un incrocio, all'improvviso Waze rielabora il percorso (inconfondibile il suono che emette in questi casi) e ti suggerisce di girare a destra per risparmiare 2 minuti. Nei pressi anche altre auto mettono repentinamente la freccia, chissà perché.

Buon Waze a tutti.







venerdì 18 dicembre 2015

Cos'è il Blockchain (Block Chain)


Il Block Chain (letteralmente Catena di Blocchi) è un registro pubblico e condiviso che contiene tutte le transazioni effettuate in Bitcoin
Visto come un nuovo importante protocollo di trasmissione e memorizzazione dei dati, essendo continuamente ricondiviso da tutti i client partecipanti alla rete bitcoin rappresenta la prova di tutte le transazioni, il blockchain è in costante crescita in quanto vengono sempre aggiunti nuovi Blocks per registrare le movimentazioni. 

Un Block (Blocco) è l'anello della catena, quando viene completato con l'inserimento delle informazioni relative alle transazioni recenti, viene chiuso e non è più modificabile. 
Successivamente viene quindi generato e collegato alla catena un nuovo blocco, contenente un identificativo del blocco precedente, alimentando così una banca dati lineare con tutte le operazioni in ordine cronologico.



Per fare un'analogia con i processi bancari tradizionali, il blockchain è come una storia completa delle operazioni bancarie: le transazioni in bitcoin sono gestite cronologicamente come le transazioni bancarie. Mentre i Blocchi possono essere assimilati ad estratti conto di operazioni fatte in determinati spazi temporali.

Vengono chiamati Nodes (Nodi), tutti i computer che partecipano alla rete Bitcoin e che svolgono il compito di convalidare e di ricondividere il blockchain.
Ciascun Nodo utilizza un programma client che riceve automaticamente una copia integrale del blockchain con le informazioni di tutte le movimentazioni contenute, a partire dal primo blocco (Genesis Block) fino a quello completato più di recente.

Questa continua condivisione su tutti i client in rete, di fatto valida tutte le transazioni e ne diventa il database storico distribuito.

Considerando che in media viene creato un nuovo blocco ogni 10 minuti, la dimensione sempre crescente del blockchain è una delle criticità che dovranno essere gestite in futuro, potrebbero infatti nascere problemi di spazio per la memorizzazione e sincronizzazione.


venerdì 11 settembre 2015

Cos'è il NewsML

Il NewsML (News Markup Language) è un formato dati progettato per la memorizzazione e la trasmissione delle notizie digitali.
Utilizzato dai più importanti media, giornali, TV, agenzie di stampa, ecc., è uno standard riconosciuto e sviluppato dal consorzio internazionale IPTC  (International Press Telecommunications Council).

La necessità di avere un Common Data Model di riferimento, è derivato dalla continua crescita della produzione e dello scambio di notizie in formati eterogenei (testo o multimedia) dovuto alla rapida espansione di Internet e delle comunicazioni veloci world wide.

Il formato NewsML può essere applicato a tutte le fasi del ciclo di vita delle notizie digitali.  Un uso tipico lo prevede nelle comunicazioni:


  • interne ad un sistema editoriale
  • verso altri sistemi editoriali
  • tra agenzie di stampa e loro clienti 
  • tra editori ed aggregatori di notizie 
  • tra i fornitori di servizi di stampa e gli utenti finali. 

Basato sul linguaggio XML (eXtensible Markup Language) , il NewsML ha l'obiettivo di fornire struttura dati generica in grado di rappresentare tutte le tipologie di notizie (testi, foto, video, audio, multimedia, rss, links, composte), in modo da abilitarne lo scambio, l'interpretazione e l'elaborazione in modalità standard da parte dei sistemi editoriali.

A tale scopo è disponibile il NewsML Toolkit, una libreria Java-based che può essere integrata all'interno delle applicazioni per facilitare la gestione delle News espresse in tale formato.

Sono state prodotte 2 main release del NewsML, aggiornate poi con versioni successive:
  • NewsML 1.* - la cui versione 1.0 è stata presentata nel 2000;
  • NewsML-G2 - standard di nuova generazione la cui prima versione è del 2008.

Ciascuna versione prevede un documento descrittivo (metadati in formato DTD e/o XSD) che definisce la struttura del file NewsML e gli attributi possibili delle informazioni che può contenere.  


Image courtesy of Stuart Miles at FreeDigitalPhotos.net



Articoli Correlati

venerdì 7 agosto 2015

Windows 10, buona la prima

Finalmente sul mio tablet, un HP Omni 10, è arrivato l'aggiornamento a Windows 10.
Partendo dalla versione 8.1, dopo circa 3 ore tra download (2.7 gb) ed installazione, filata liscia come l'olio, ho potuto fare un primo giro sul nuovo sistema operativo di Microsoft.

Il desktop di Windows 10 con lo sfondo di default
La primissima impressione è stata senz'altro positiva, intanto perché, cosa non scontata, ho ritrovato i dati, le impostazioni e le applicazioni che avevo lasciato sulla vecchia versione, poi per l'usabilità ed il design grafico di desktop e menu che finalmente hanno un logica sia in versione Tablet che PC.

Andiamo con ordine, descrivendo le sensazioni di un primo veloce giro su Windows 10 ed evidenziando le caratteristiche di usabilità e le differenze più evidenti con la versione 8.1.

Accesso a Windows 10

La schermata di Welcome, per intenderci quella prima del Login in cui l'utente inserisce username e password per accedere al sistema, presenta come sfondo delle foto ad alta risoluzione.
Le foto raffigurano dei panorami naturali e di per se sono molto belle anche se personalmente ho sempre preferito avere sfondi più professionali.
Un po' strana risulta essere la scritta che compare in alto e chiede all'utente di esprimere un parere sulla foto stessa.

La schermata di Welcome al sistema

Desktop

Molto bella tutta la grafica generale, le icone e lo sfondo di default.
Rispetto alla versione 8.1, si nota subito l'annunciato e gradito ritorno del menù di Start in basso a sinistra, molto ben fatto con un mix tra la lista dei programmi ed i quadratoni tipici dell'interfaccia metro di Windows.
Sul menù ad icone posizionato in basso a destra sulla barra delle applicazioni, si accede ad una nuova (per Windows) comodissima pulsantiera che centralizza e facilita l'accesso alle funzionalità di base per l'impostazione del Tablet/PC (bluetooth, wifi, modalità aereo, vpn, batteria, ecc.).

Il desktop con il nuovo menù di Start e quello applicativo/operativo

Da segnalare nella barra delle applicazioni l'icona che consente finalmente anche su Windows di accedere alla creazione di Desktop multipli (non è mai troppo tardi per introdurre una cosa buona).

Possibilità di creare desktop multipli

Modalità Tablet

Uno dei suddetti pulsanti virtuali serve ad effettuare lo switch dalla modalità PC a quella Tablet. 
Stavolta devo dire che Microsoft ha fatto una ottima scelta. Dimentichiamo la macchinosità che aveva Windows 8 per passare dal Desktop alla interfaccia Metro, ora la transizione da una modalità all'altra avviene per scelta dell'utente in modo semplice e veloce.


Quando si imposta la modalità Tablet, contrariamente a quanto avveniva nelle precedenti versioni in cui l'utente si trovava spaesato nel passaggio, nonostante il cambio di interfaccia più adatto alla digitazione Touch viene mantenuta una congruenza operativa ed è comunque sempre possibile accedere al menù di Start ed alla barra delle applicazioni. 



Da evidenziare quanto sia migliorata grazie ai nuovi menù l'usabilità con il Touch anche in modalità Desktop. La facilità con cui si accede alle App oltre che ai programmi, non fa sentire quasi più l'esigenza di passare alla modalità Tablet.

Ricerca e Cortana

Di default sulla barra delle applicazioni è presente un campo (negli screenshot non c'è) in cui è possibile impostare ricerche oppure farsi aiutare dall'assistente Cortana con comandi vocali.  Non l'ho ancora provata ma suppongo che data la posizione centrale che Microsoft ha riservato a questa funzionalità, punteranno molto a lanciare servizi automatici sempre più evoluti di supporto alle operatività degli utenti.

Conclusioni

A livello di usabilità sembra che Microsoft stavolta abbia fatta centro. 
La tanto pubblicizzata convergenza multidevice del sistema operativo Windows sembra ben indirizzata almeno per quanto riguarda PC e Tablet.  Staremo a vedere quale sarà il risultato sugli Smartphone più piccoli.



domenica 29 marzo 2015

Ma 'ndo vai se il Big Data non ce l'hai ?

Stiamo vivendo gli anni del Big Data e del Cloud, in questo periodo storico qualsiasi soluzione informatica sembra non poterne fare a meno, soprattutto a livello commerciale e comunicativo però.

Ormai ne parlano tutti, non si può realizzare ma soprattutto vendere o comprare un'architettura software che non abbia questi 2 aspetti ben evidenti.  Chi non lo fa è out.
Una spruzzata qua e la di Big Data e Cloud ci sta sempre bene, serve per far vedere che si sta sulla cresta dell'onda, che si seguono le nuove tecnologie e le tendenze del mercato, poi chissenefrega se invece in quel caso non servono.

Siamo arrivati al punto in cui per registrare 1000 records e farci qualche conteggio statistico sopra, si parla di Big Data ed Analitycs (ecco un'altra parola magica di questi anni), il tutto possibilmente in Cloud.

Sono le mode del mondo IT, chi ci vive da sempre ha imparato a riconoscerle e anche a sfruttarle.

Nel periodo a cavallo tra il vecchio ed il nuovo secolo si parlava solo di Data WareHouse, un qualsiasi database veniva descritto come DWH, non importava se ne avesse effettivamente le caratteristiche, l'importante era utilizzare questa locuzione difficile per enfatizzare il tutto.

Poi a seguire sono arrivate l'EAI (Enterprise Application Architecture), la SOA (Service Oriented Architecture) e la BI (Business Intelligence) che, oltre a imporre realmente nuove tecnologie e metodologie strutturate, sono servite a riempire, troppo spesso anche a sproposito, presentazioni ed articoli per più di un decennio.

Fa comodo a tutti dare enfasi a prodotti, soluzioni ed architetture utilizzando termini cool di ampio respiro, aiuta a vendere ma anche a comprare.

Poi, come tutte le mode passano e di queste tecnologie diventa difficile anche parlarne quando invece servono effettivamente e devono essere utilizzate.
Ci sarà sempre qualcuno che ti dirà "io di queste cose ne parlavo 10 anni fa" presupponendo quindi una tua scarsa visione innovativa, allora è sempre meglio proporre quello che gli interlocutori si aspettano e vogliono sentirsi dire, anche se le soluzioni non sono completamente appropriate al contesto.

I veri professionisti ed amanti dell'Information Technology sanno riconoscere dopo pochi minuti chi parla con cognizione di causa e coloro che invece si riempiono la bocca con tematiche più grandi di loro per sentirsi adeguati. Quest'ultimi non bisogna mai contraddirli, basta guardarli e sorridere, in cuor loro sanno che tu sai.

Image courtesy of photoexplorer at FreeDigitalPhotos.net






lunedì 15 dicembre 2014

La misura del software: dal conteggio delle linee di codice ai Function Point

Nell'ambito informatico, la ricerca del miglior metodo per misurare un software è sempre stato uno degli aspetti più discussi e discutibili. 

Esiste una metodologia strutturata per calcolare il peso ed il valore di un'applicazione software ?
Quali sono le metriche più adatte per valutarne le difficoltà, le competenze e l'impegno necessario per l'implementazione ?
Come si fa a stimare un progetto informatico prima della realizzazione per poterlo quotare economicamente ?

Conteggio delle linee di codice e delle istruzioni

Fino alla fine degli anni 80 si usava contare le linee di codice oppure il numero degli statement, tipicamente dei punti e virgola, che identificano il termine di ciascuna istruzione nei programmi procedurali e strutturati.
Questi due metodi però, oltre ad essere utilizzabili solo a sviluppo terminato e quindi non per una stima preventiva, risentono pesantemente dallo stile e dal linguaggio di programmazione.

Conteggio delle classi e delle interfacce

In seguito, con l'introduzione della programmazione object oriented, si è passati a misurare le applicazioni conteggiando classi, metodi ed interfacce.
Anche in questo caso però il limite principale rimane la soggettività rispetto a quanto fa lo sviluppatore, alle tecniche di programmazione ed alle librerie di terze parti utilizzate e non conteggiabili.

Stima in giorni/uomo

Per le stime preventive, la metrica più utilizzata è quella in giorni/uomo: il fornitore basandosi su determinati parametri (requisiti espressi, competenza, esperienza, tecnologie utilizzate, ecc.), valuta e comunica al cliente quante giornate di lavoro cumulative (Effort) servono per realizzare il prodotto.
Al fine di ottenere la valutazione economica viene condivisa una tariffa giornaliera che, moltiplicata per l'effort stimato, determina il valore del progetto.
L'effort è sempre opportuno esprimerlo separatamente per le diverse figure professionali coinvolte nel progetto, in modo da poter poi applicare tariffe differenti in base al costo di ciascuna ed arrivare quindi ad una stima più precisa.
Questo, che probabilmente è il metodo migliore in quanto mette direttamente in relazione il software con il lavoro/tempo che serve per realizzarlo, presuppone però una grande competenza ed esperienza in progetti analoghi, sia da parte del fornitore che fa la stima, sia del cliente che deve valutarne la correttezza.

Abbiamo parlato dell' Effort, per completare il quadro di seguito una descrizione sintetica dei termini che vengono utilizzati nella valutazione e pianificazione temporale di un progetto:
  • Effort (Sforzo, Impegno): è il numero di unità di lavoro temporali (es. giorni/uomo ma potrebbero essere anche ore o settimane) richieste per completare l'attività. Per determinare la durata dell'attività, l'effort deve essere stimato prima;
  • Duration (Durata): è il tempo totale che serve per completare l'attività in base alle risorse umane disponibili. La durata, che non include vacanze e giorni non lavorativi, può essere espressa in giorni, settimane o mesi;
  • Elapsed (Tempo trascorso): è il tempo di calendario o intervallo necessario per completare le attività in base alle risorse disponibili includendo però anche i giorni festivi e non lavorativi. Anche l'elapsed può essere espresso in giorni, settimane o mesi

Esempio:
La stima per un nuovo progetto software prevede un Effort di 10 giorni/uomo.
Con una persona sola che lavora 5 giorni a settimana dal lunedì al venerdì, la Duration è di 10 giorni lavorativi con un Elapsed di 2 settimane
Se invece ci lavorano 2 persone, la Duration è 5 giorni lavorativi con un Elapsed di 1 settimana.


Conteggio dei Function Point

Per definizione, il conteggio in Function Point (FP) esprime la dimensione funzionale di un prodotto software.
Tale metodologia, sviluppata nel corso degli anni dal IFPUG (International Function Point Users Group), può essere utilizzata prima o dopo la realizzazione del software perchè viene applicata alla specifiche funzionali e non alla implementazione della applicazione stessa.
In altre parole l'obiettivo è quello di misurare le funzionalità, indipendentemente dalla tecnologia utilizzata, dalle modalità di realizzazione e dalle problematiche di contesto.

Il conteggio dei FP non è una operazione proprio facilissima ed intuitiva, lo testimonia anche il fatto che l'esame per diventare un IFPUG Certified Member è abbastanza complesso (niente di impossibile beninteso) in quanto le regole e le nozioni sono parecchie e di non immediata digeribilità.

Senza entrare nel dettaglio, la misurazione prevede l'identificazione ed il conteggio dei movimenti dati (dati di input e output dell'applicazione) e degli archivi logici memorizzati e raggiunti dall'applicazione.
Le elaborazioni applicative vengono classificate come Inferenze o Regole, escludendo ogni valutazione riguardo alle performance, alla complessità, ai meccanismi tecnologici e di programmazione.

Per questo motivo la dimensione funzionale espressa in FP rappresenta solo uno degli aspetti di misura di un software, non include infatti la copertura dei requisiti di qualità, sicurezza, velocità, robustezza, gestibilità, scalabilità, tecnici e di contesto per i quali bisogna utilizzare altri metodi di valutazione.

Per poter convertire una misurazione funzionale in una stima economica, è necessario stabilire a priori quanto vale un Function Point oppure qual'è il rapporto di conversione tra FP e giorni/uomo ( quanti FP riesce ad implementare un uomo in un giorno?), parametri entrambi aleatori e molto variabili in base al contesto ed alla contrattazione commerciale tra cliente e fornitore.

Ne consegue che tale metodologia, molto utile ad esempio per una comparazione funzionale tra diversi software o per la valutazione delle attività di manutenzione evolutiva rispetto al progetto iniziale, risulti insufficiente o addirittura fuorviante per effettuare stime economiche corrette.

Se non applicata in modo adeguato ed accompagnata anche da altri razionali di valutazione, a parere di molti questa metodologia introduce solo un ulteriore significativo impegno per il cliente ed il fornitore, protagonisti di lunghissimi confronti sui conteggi effettuati, costretti successivamente a dover riconvertire tutto in giorni/uomo, per poi probabilmente scoprire che la stima ottenuta non è assolutamente commisurata al lavoro da svolgere.


Image courtesy of Stuart Miles at FreeDigitalPhotos.net

Articoli correlati


sabato 15 novembre 2014

Cos'è un Web Service

Un Web Service (WS) è una funzionalità informatica offerta sulla rete da una applicazione che fornisce il servizio (sistema provider o server) ad uso di altre applicazioni che fruiscono del servizio stesso (sistemi requester o client)

Caratteristiche fondamentali di un WS sono:
  • essere raggiungibile via Web (rete Internet o Intranet) su un determinato indirizzo URI,
  • implementare una funzionalità auto-consistente,
  • avere un interfaccia documentata secondo delle specifiche standard, indipendente rispetto alla tecnologia con la quale è sviluppato e con la quale sono realizzati i client che lo invocano.
Solitamente quando si parla di Web Services si fa riferimento a servizi realizzati secondo quelli che sono gli standard più consolidati, cioè le specifiche HTTPSOAPWSDL, XML e XSD.
Tuttavia il termine generico WS può indicare anche servizi basati su altri tipi di protocolli, come ad esempio JMS per trasporto ed i sempre più utilizzati REST e JSON per il formato dati.

Rispetto ai meccanismi di comunicazione chiamati API (Application Programming Interface), i WS si differenziano perchè:
  • un API non è detto che rispetti specifiche standard di protocollo,
  • la fruizione di una funzionalità API da parte dei client, quasi mai è consentita mediante una interfaccia esposta sul web, ma tipicamente devono essere utilizzate delle librerie software specifiche rilasciate ad hoc, con tutte le limitazioni tecnologiche che ne conseguono,
  • un API solitamente da accesso a funzionalità atomiche interne ad un singolo sistema/applicazione mentre i WS realizzano anche processi di business distribuiti con workflows più articolati.
Fermo restando l'interfaccia di accesso unica che prevede dati di input e output, un WS può essere semplice oppure composto, nel caso in cui al proprio interno invochi altri servizi WS sequenzializzandoli o parallelizzandoli in un workflow (Service Orchestration).

Quando un contesto IT distribuito è formato da sistemi che cooperano con un approccio a servizi strutturato, si parla di SOA (Service Oriented Architecture).

Image courtesy of ddpavumba at FreeDigitalPhotos.net


Articoli Correlati

mercoledì 12 novembre 2014

Cos'è un Service Registry

Un Service Registry è una applicazione software, raggiungibile sulla rete Internet o Intranet, che elenca sotto forma di catalogo i Web Services disponibili, descrivendone le caratteristiche e le modalità di accesso.
Anche detto UDDI Registry, garantisce una più semplice interoperabilità tra i sistemi e facilita la SOA Governance.

UDDI (Universal Description Discovery and Integration) è un protocollo standard che consente la descrizione dei servizi, la loro localizzazione e le specifiche delle loro interfacce.
Le specifiche UDDI, arrivate alla versione 3.0, si fondano su un insieme di standard consolidati tra i quali HTTP, XML, XSD, SOAP e WSDL.

Il Service Registry viene utilizzato da:
  • Applicazioni Provider / Server per pubblicare le informazioni relative ai servizi che espongono,
  • Applicazioni Consumer / Requester / Client per ricercare quali sono i servizi disponibili e le relative modalità di invocazione.

Tipico paradigma Publish, Discover, Invoke


In un contesto architetturale SOA, il Service Registry è un elemento accessorio importante ma non fondamentale, infatti Provider e Consumer possono condividere le specifiche di integrazione anche in modo autonomo senza passare per il registry.
In altre parole, chi gestisce il sistema Provider può fornire il WSDL e la documentazione dei servizi direttamente ai responsabili dei sistemi Consumer che devono predisporre il software per le invocazioni.

Tuttavia la possibilità di far ricercare i servizi ai Client (Service Discovery) in modo autonomo, può risultare molto utile nel caso i Server decidano di far utilizzare dinamicamente le proprie funzionalità, consentendo a qualsiasi Client la ricerca autonoma dei servizi ed un interfacciamento più veloce e semplice agli stessi.

Un Service Registry tipicamente prevede:

  • una struttura dati in grado di memorizzare 
    • White Pages, informazioni riguardo ai provider che espongono ciascun servizio,
    • Yellow Pages, descrizioni e categorizzazioni arbitrarie dei servizi chiamate tassonomie,
    • Green Pages, informazioni tecniche per l'accesso ai servizi (wsdl, url);
  • un set di API (Application Protocol Interface) per consentire la pubblicazione e la consultazione delle informazioni da parte delle applicazioni esterne;
  • una web console di configurazione accessibile un amministratore/operatore che, in base alle permission che ha, può visualizzare, inserire, modificare e cancellare le informazioni.


Esistono Service Registry di mercato oppure Open Source tra i quali il più conosciuto ed utilizzato è sicuramente Apache jUDDI.



Articoli Correlati

giovedì 6 novembre 2014

Il confronto XML vs JSON

L' XML (eXtensible Markup Language) è il formato più utilizzato per la condivisione di dati in formato open.
Non essendoci disponibili in passato altri standard altrettanto semplici e strutturati, l' XML è da parecchi anni la codifica migliore per lo scambio dati tra diverse applicazioni.

Nate in un contesto di sviluppo WEB/HTML, sul finire degli anni 90 le specifiche XML sono state consolidate dal W3C (World Wide Web Consortium) ed hanno permesso di estenderne l'uso anche in altri contesti applicativi, in particolare nell'Application Integration.

Questo linguaggio di markup, oltre ad essere ottimo per la gestione di dati testuali e numerici, può essere sfruttato, utilizzando gli opportuni encoding, anche per la rappresentazione ed il trasferimento di documenti, immagini, audio, video ed altre tipologie di files in genere.

Per facilitare l'uso dell'XML, nel tempo sono state sviluppate innumerevoli librerie e programmi software in grado di automatizzare il parsing, la validazione, l'interpretazione del codice e la conversione dei dati.


Negli ultimi anni sta prendendo sempre più piede l'utilizzo anche di un altro formato, il JSON (Javascript Object Notation), il cui successo è dovuto principalmente alla semplicità di utilizzo in ambito Web a supporto delle tecnologie Ajax e Javascript diffusissime nei siti dinamici di ultima generazione.
Nella sostanza, considerando la sintassi del codice e le modalità funzionali, le analogie tra XML e JSON sono evidenti, tuttavia ci sono effettivamente delle specificità che li distinguono e che fanno preferire uno o l'altro a seconda delle esigenze. 

Leggibilità

Uno degli aspetti da considerare in un linguaggio di codifica testuale dei dati, è la facilità con cui una persona può leggere e comprendere le informazioni contenute.
Premesso che entrambi i formati sono molto leggibili ed è quindi soprattutto una questione di abitudine personale, tuttavia JSON sotto questo aspetto si fa preferire per una sintassi più snella, con meno vincoli, opzioni e tag di formattazione.

Interoperabilità

Un altro tratto comune tra JSON e XML è che implementano caratteristiche di Auto-Descrizione (Self-Describing) ed Internazionalizzazione dei dati (Internationalization).
Entrambi utilizzano standard e codifiche che permettono la manipolazione delle informazioni mediante utilizzo di strumenti software generici.  Ciò ne ha facilitato l'uso in una vasta gamma di applicazioni.

Gli strumenti di descrizione e validazione (dtd e xsd), i linguaggi di navigazione all'interno dei nodi (xquery e xpath) e le librerie di elaborazione a disposizione per l'XML sono sicuramente più consolidate ed affidabili, pertanto si fanno preferire in un contesto di integrazione tra sistemi, di Web Services con transazioni Server to Server.
Grazie a questi aspetti, il formato XML è spesso utilizzato anche per implementare su files veri e propri database strutturati.

In una tipica interazione Web Client->Server (siti web, App) invece le caratteristiche del JSON sono più indicate in quanto, oltre che essere un linguaggio più leggero (una minore verbosità corrisponde ad una minore grandezza dei file e quindi a performance migliori nel trasferimento dati), è immediatamente integrato con la programmazione Javascript e per lo scambio dati con i meccanismi Ajax.

Estensibilità

La possibilità di estendere gli attributi dei dati memorizzati permette all'XML di essere più flessibile.
Mentre JSON si limita a gestire solo dati classici come testo e numeri, l'XML consente di memorizzare e descrivere in modo più completo qualsiasi tipo di dato.

Inclusione di altri file

Con XML è possibile includere file di qualsiasi formato, questo significa che è possibile inserire documenti, foto, audio, video e altri file all'interno di un file XML (file embedded).
La stessa cosa non è possibile farla con JSON.

Trasmissione di dati alfanumerici

Con JSON i dati sono memorizzati in array e object mentre in XML le informazioni sono strutturate ad albero.
Entrambe le soluzioni hanno i loro vantaggi, ma utilizzando le tecnologie web di ultima generazione il trasferimento dati è molto più semplice e veloce quando i dati sono già organizzati in un modo direttamente interpretabile con la programmazione orientata agli oggetti.

Questo rende il JSON più indicato per importare i dati di testo e numerici con diversi linguaggi e quindi è da molti considerato migliore per lo sviluppo di funzionalità web con elaborazione lato client.

Per fare la stessa cosa con l'XML bisogna trasformare i dati prima di poterli utilizzare all'interno del programma.

Conclusioni

XML ha sicuramente uno spettro di utilizzo molto più vasto dovuto sia alle caratteristiche intrinseche nel linguaggio stesso sia al fatto che intorno a questo formato si è da tempo evoluto un mondo molto significativo di direttive, metodologie, strumenti ed applicazioni.

JSON invece, in forte ascesa solo da qualche anno, si caratterizza per la semplicità nella rappresentazione ed è ottimo per la serializzazione e la trasmissione di dati di tipo classico.

XML è un linguaggio di markup in grado di gestire in modo completo qualsiasi tipo di informazione, mentre JSON è un formato di interscambio dati che risulta essere di più agile utilizzo in determinati contesti.

mercoledì 22 ottobre 2014

Tecniche di programmazione: Procedurale, Strutturata e ad Oggetti

Un linguaggio di programmazione è un metodo di codifica che prevede una serie di istruzioni interpretabili ed eseguibili dai computer. I processori (CPU) dei computer sono in grado di elaborare solo istruzioni in codice macchina, cioè codice binario composto da 0 e 1 che come si può facilmente intuire è molto difficile da interpretare per un uomo. 
Sono nati pertanto i diversi linguaggi di programmazione con i quali si può progettare e scrivere in modo più semplice un codice sorgente che, una volta compilato, fornisce il programma binario effettivamente eseguibile dall'elaboratore.



Esistono molte tecniche e metodologie di programmazione che si possono raggruppare in tre macro paradigmi: 
  • Procedurale (Procedural Programming)
  • Strutturata (Structured Programming),
  • Orientata agli Oggetti (OOP Object Oriented Programming).
Di seguito una breve overview.

Programmazione Procedurale

Questo stile di programmazione può ricondotto all'utilizzo di processori un po' vecchiotti con un approccio sequenziale all'esecuzione dei comandi.
Con i linguaggi che prevedono una codifica procedurale, le istruzioni vengono eseguite in serie una dopo l'altra, per la lettura e la modifica di una memoria condivisa (memoria RAM, disco rigido) e nella gestione delle periferiche (tastiera, monitor, stampante, ecc.). 
Nei programmi procedurali le istruzioni sono organizzate in blocchi funzionali, procedure progettate per uno scopo specifico, anche denominate subroutine o function a seconda del linguaggio e del ruolo all'interno del programma stessoche possono essere raggiunte in cascata oppure utilizzando il comando go to da più punti del codice. 

Il codice viene scritto ed eseguito dall'elaboratore passo dopo passo dall'inizio alla fine (top-down) quindi è molto facile da seguire soprattutto nei programmi più semplici. 

Esempi di linguaggi con approccio procedurale sono: CobolBasic e Fortran.


Programmazione Strutturata

La programmazione strutturata, evoluzione di quella procedurale, pur continuando ad avere un approccio top-down enfatizza maggiormente la separazione dei dati trattati rispetto alle operazioni del programma stesso. L'esecuzione delle istruzioni non è più fatta obbligatoriamente in ordine sequenziale ma è gestita con un flusso logico e condizionata con loop, sequenze e decisioni (if, switch) basate sul valore dei dati. 

La progettazione e la codifica strutturata di un software non si limita ad un approccio sequenziale dall'alto verso il basso ma si concentra sulla scomposizione del problema in sotto-parti (funzioni, moduli e librerie esterne) con la conseguente semplificazione del processo principale;
Il codice viene strutturato in singoli moduli che implementano specifiche funzionalità. 
Vengono utilizzate le strutture di controllo per estrarre in modo deterministico, in base ai dati trattati in quel contesto, l'ordine esatto in cui i set di istruzioni devono essere eseguiti (un codice strutturato non prevede l'utilizzo dell'istruzione "goto" ). 

Esempi di linguaggi con approccio strutturato sono: C, Pascal, PL/I e Ada.


Programmazione ad Oggetti

I linguaggi Object Oriented attualmente sono i più largamente usati ed i più potenti in relazione alle architetture hardware e software nei quali vengono utilizzati.
I programmi sono scritti come una collezione di oggetti auto-consistenti che comunicano tra di loro.
Si basano sulle classi, cioè istanze di oggetti software nei quali rivestono maggiore importanza i dati piuttosto che il flusso logico. 
Una classe può essere definita come un contenitore che abbina i dati con le operazioni/azioni che possono essere eseguite su di essi.  Le caratteristiche di ciascun oggetto (classe) vengono chiamate proprietà o attributi, mentre le azioni sono dette metodi
Diversamente dai linguaggi precedentemente descritti, gli OOP hanno un approccio diprogettazione bottom-up, per prima cosa non va definita la struttura del programma generale ma vanno progettati gli oggetti, le modalità con le quali gestiscono le proprie informazioni e le interfacce con cui interagiscono con gli altri oggetti.


Esempi di linguaggi Object Oriented sono: C++ e Java.



Articoli Correlati



venerdì 10 ottobre 2014

Quanto influenza Gartner ?

Gartner, la famosa multinazionale leader nella consulenza strategica, ricerca ed analisi nel mondo dell'Information Technology, è generalmente considerata una sorta di detentrice della verità assoluta, una Cassandra che predice le tendenze future in base alle informazioni del presente e del passato.

Partendo da statistiche, notizie, eventi, verifiche e ricerche, Gartner fornisce con grande competenza una vision di alto livello sulle evoluzioni del mondo IT,
Gartner analizza le tendenze, osserva il mercato e, lavorando anche a stretto contatto con le aziende, riesce a fotografare un mondo che evolve velocissimo.

Non esiste meeting che si rispetti in cui non venga citato qualche report di Gartner.
Spesso nelle convention azendali l'ospite d'onore è proprio un rappresentante della suddetta società in grado di sperticarsi in discorsi sui massimi sistemi e conquistare una platea il più delle volte non preparata e che quindi alla fine capisce ben poco.

Sulle direttive di Gartner le aziende più cool fondano parte delle strategie o quantomeno spesso giustificano le proprie scelte facendo riferimento alle informazioni che seguono al "Gartner dice che.....".

Non volendo mettere assolutamente in discussione la qualità del lavoro Gartneriano, è lecito porsi alcune domande:

  • Gartner analizza il mondo IT, ma quanto essa stessa lo influenza ?
  • Qual'è la percentuale delle previsioni che poi si verificano anche nei numeri ?
  • Quale quota parte di eventi annunciati poi si verifica proprio perché è stato prima suggerito da Gartner?
  • Quale incidenza hanno le analisi di Garner sul fatto che poi si verifichino ? In altre parole, se Gartner indica una tendenza, data la sua autorevolezza, è probabile che venga seguita e quindi è anche più semplice da prevedere.

Sarebbe interessante avere da Gartner anche report di questo tipo.
Chissà se fanno anche queste analisi.
Sicuramente si.

Image courtesy of jscreationzs at FreeDigitalPhotos.net



martedì 30 settembre 2014

La nuova corsa all' E-Commerce diretto

E' un dato di fatto che in questi ultimi mesi stiamo assistendo ad un nuovo innamoramento delle grosse aziende di servizi, manifatturiere e telco nei confronti della vendita online.

C'è un effettivo risveglio di interesse e quindi nuovi investimenti verso la fornitura di servizi di e-commerce direttamente sotto il controllo delle aziende stesse e non demandati a partner di vendita esterni.

Image courtesy of Feelart at FreeDigitalPhotos.net

Un po' di storia

Nella prima metà degli anni 2000 nel nostro paese c'è stata la prima corsa alla realizzazione dei siti di e-commerce.
Copiando un po' quanto accadeva negli Stati Uniti, ci sono stati investimenti importanti da parte delle aziende, non solo grandi, che si sono dotate ciascuna della propria infrastruttura tecnologica e logistica per la vendita online dei propri prodotti.

Col senno di poi, si può affermare che i tempi non erano ancora maturi, i mercati e la clientela consumer non erano ancora pronti per sposare in toto questa nuova modalità di acquisto.

Nonostante la crescita del numero degli utenti su internet, persisteva nel nostro paese una atavica avversione nel fare acquisti online e nel fornire i dati propri e delle carte di credito. Non erano ancora così diffusi metodi di e-payment e le carte prepagate che facilitassero l'utente, si nutriva una prevenuta sfiducia in chi vendeva senza mostrarsi di persona.
A rafforzare le difficoltà anche le iniziali inefficienze da parte dei corrieri postali, non ancora adeguati per gestire volumi così alti di consegne.

In breve tempo molti siti di e-commerce, soprattutto quelli mono-brand, sono stati chiusi o ridimensionati e la vendita online è stata affidata dalle aziende a partner specializzati con portali di e-commerce più generalistici che includono prodotti e servizi multi-marche.

Perchè questo ritorno di interesse ?

Oggi lo scenario è sostanzialmente cambiato.

Piano piano la fiducia e l'abitudine degli italiani di comprare su internet sono aumentate, gli acquisti online vanno alla grande e sono in continua crescita rispetto alla crisi generale dei consumi.
Tutti o quasi ora utilizzano i metodi di pagamento più veloci e sicuri (carte prepagate, conti tipo paypal o google wallet, bonifici online), i corrieri sono assolutamente affidabili, le spedizioni sono controllabili sulle loro pagine di tracking ed i tempi di consegna si sono notevolmente abbassati.

Il web marketing, in tutte le sue declinazioni, è diventato molto importante per le aziende, superando come investimenti anche la pubblicità sulle radio e sulla carta stampata, avvicinando sempre più quella sulla TV.
Avere un collegamento diretto tra web advertising e vendita online è diventato un aspetto fondamentale in un mondo dove almeno il 50% delle persone è sempre collegato e può tranquillamente navigare dal proprio smartphone visualizzando prodotti ed effettuando acquisti in qualsiasi momento della giornata.

Un cliente always on, sempre raggiungibile e spesso anche localizzabile, è un cliente perfetto che bisogna assolutamente saper sfruttare.
L'utente internet/social, quando visualizza le caratteristiche di un prodotto e fa click sulla foto o sulla pubblicità, è opportuno che poi abbia la possibilità di acquisto direttamente dal portale ufficiale di e-commerce dell'azienda produttrice.

Le principali soluzioni tecniche 

Le tecnologie web negli ultimi anni si sono evolute parecchio, pertanto anche i portali di e-commerce oggi sono per l'utente finale più semplici da usare, accattivanti esteticamente, veloci e sicuri.

Per le aziende, la scelta di una infrastruttura completa per la vendita online non è una cosa facile, va chiaramente fatta in base alle necessità, alle caratteristiche dei diversi prodotti ed alla capacità economica di investimento dell'azienda stessa.

I principali aspetti funzionali da considerare per la scelta di una piattaforma tecnologica sono:

  • Il catalogo prodotti  (product catalog)
  • La gestione degli ordini (order management)
  • La gestione delle anagrafiche dei clienti
  • La gestione del basket multiprodotto
  • La presentazione grafica e la gestione dei contenuti (CMS content management system), anche in ottica responsive multi-channel
  • Le capacità di integrazione con i sistemi di fatturazione aziendali
  • Le capacità di integrazione con i sistemi di provisioning e delivery degli ordini.

Alcuni tra i prodotti più conosciuti ed utilizzati sono (lista assolutamente non esaustiva):

  • Magento (soluzione open source)
  • Prestashop (soluzione open source)
  • Oracle Commerce (prodotto enterprise derivato da ATG)
  • Hybris (prodotto enterprise)
  • IBM Commerce (suite di prodotti enterprise tra i quali Commerce on Cloud).
Per le aziende che hanno esigenze più limitate è anche possibile scegliere una soluzione di tipo SaaS (Software as a Service), trovando in rete un provider che fornisca una infrastruttura di e-commerce già bella e pronta per pubblicare e vendere i prodotti.


Image courtesy of ddpavumba at FreeDigitalPhotos.net

mercoledì 17 settembre 2014

Architettura informatica a servizi (SOA), cos'è e perchè

I settori produttivi della aziende sono messi sotto pressione dalle proprie strutture decisionali e di controllo che richiedono una sempre maggiore efficienza in ogni aspetto delle operatività. In particolare, richiedono maggiore produttività, velocità e qualità con costi sempre minori.

Per massimizzare l'efficienza uno dei principali aspetti da curare è quello dei pesanti impatti dovuti a sistemi rigidi e costosi.
La flessibilità dei processi e di conseguenza dei sistemi IT, consente di migliorare la produttività senza aumentare i costi. 

Maggiore Flessibilità -> Maggiore Efficienza 

In un contesto IT complesso, la flessibilità si ottiene facendo in modo che sistemi ed applicativi eterogenei, di diversi produttori, sviluppati con diverse tecnologie e software di base, provenienti da molteplici aree funzionali, possano "parlare" e scambiarsi dati in modo intelligente.
Per ottenere ciò è necessario che i sistemi, che hanno funzioni sempre più specializzate, non comunichino semplicemente ma implementino una vera e propria cooperazione applicativa.

Il modo migliore è quello di strutturare e rendere fruibili le diverse funzionalità sotto forma di servizi.

SOA (Service Oriented Architecture) è un approccio architetturale che persegue l’obiettivo di ridurre il gap tra IT ed i processi di business.

Cos'è SOA

Un'architettura IT, costruita seguendo la metodologia SOA, è costituita da servizi indipendenti tra loro che risiedono e sono fruibili in forma distribuita sulla rete.
Quindi in base al modello SOA, ogni funzionalità è resa disponibile sulla rete sotto forma di servizio e deve possedere determinate caratteristiche affinché possa essere riutilizzata ed integrata in un ambiente eterogeneo.

Cos'è un Servizio

La prima necessità per un processo di business è quella di costruire un workflow (una serie di step operativi che implementano una esigenza funzionale).

Tutto ciò si ottiene sui sistemi applicativi realizzando le diverse funzionalità sotto forma di servizi auto-consistenti, che però devono essere anche orchestrabili ed integrabili fra di loro per la composizione di servizi più complessi.

Un servizio quindi può essere definito come una funzionalità, semplice o complessa, che ha le seguenti caratteristiche:
  • Ha un Service Provider (sistema che lo espone ed implementa)
  • Ha uno o più Service Consumer (sistemi client che lo utilizzano)
  • E' definito da interfaccia standard  (documento/contratto che descrive le specifiche con cui ci si può integrare al servizio stesso) pubblicata su un Service Registry 
  • E' ricercabile e recuperabile dinamicamente sulla rete 
  • E' auto-consistente e modulare
  • Ha un funzionamento indipendente dalle tecnologie con le quali è realizzato
  • E' accessibile in modo trasparente rispetto alla sua allocazione
  • E' realizzato in modo tale da permettere la sua integrazione con altri servizi (workflow di servizi).
Tipico Pattern SOA



Articoli Correlati



venerdì 5 settembre 2014

Impatti delle applicazioni mobili sui sistemi server

Con l'aumento esponenziale delle APP e più in generale degli accessi al WEB dai dispositivi mobili, sono cresciuti enormemente i volumi delle connessioni e delle richieste verso i sistemi server che effettivamente detengono le informazioni. 



Per fare un esempio, se fino a pochi anni fa chi si collegava al sito del Meteo lo faceva al massimo una volta al giorno dal PC, oggi gli utenti che usano la specifica APP sullo smartphone sono tantissimi e lo fanno con frequenza molto più elevata.

Qualsiasi servizio o tipologia di informazione le aziende mettano a disposizione della propria clientela online, il numero delle transazioni client-server è decuplicato rispetto al passato.

Il trend è in continua ascesa, gli impatti sui sistemi di backend sono importanti e per reggere l'urto le aziende sono costrette a potenziare le proprie infrastrutture hardware ed implementare architetture software più efficienti.



A seconda delle specifiche situazioni, esigenze e disponibilità, si stanno mettendo in campo soluzioni di diversa tipologia (non esclusive).

Soluzione 1 - Potenziamento HW

La cosa che viene più facile ed immediata pensare è quella di incrementare le risorse HW (CPU, RAM, dispositivi di rete) dei sistemi impattati in modo da poterne aumentare performance e stabilità.
Per una attività di approvvigionamento HW, particolare importanza riveste la qualità del Capacity Plan, che deve essere fatto in modo accurato per evitare investimenti inutili, insufficienti o di corto respiro.

Pro:
  • Facilità di realizzazione (basta comprare ed installare)
  • Tempi di realizzazione
Contro:
  • Incrementare l'HW su un numero elevato di sistemi complessi ed eterogenei potrebbe rivelarsi molto costoso
  • Soluzione non risolutiva se in futuro dovesse aumentare il carico oltre quanto stimato nel Capacity Plan.



Soluzione 2 - Ottimizzazioni applicative 

La review funzionale dei sistemi, della architettura di integrazione ed un tuning sistemistico sono sempre attività opportune in questi casi.
Le ottimizzazioni possono essere apportate su più livelli:
  • Processi 
  • Software applicativo 
  • Configurazioni sistemistiche.

Pro:
  • Riprogettare i processi e rendere l'architettura applicativa dei sistemi maggiormente performante e scalabile, potrebbe consentire una corretta ripartizione del carico sulle risorse a disposizione, quindi di fatto risolvere il problema
Contro:
  • Rivedere processi e apportare modifiche al software applicativo potrebbe rivelarsi non fattibile o molto costoso
  • Non sempre le architetture dei sistemi si prestano ad essere estese in modo da implementare correttamente le nuove funzionalità 
  • I tempi di realizzazione sono legati alla quantità ed alla tipologia degli interventi.

Soluzione 3 - Introduzione di un layer applicativo di Data Caching

In caso i volumi siano molto elevati, la soluzione migliore prevede l'introduzione all'interno dell'architettura IT di un nuovo layer applicativo (Data Cache Service Layer), un sistema molto performante in grado di recuperare inizialmente dai sistemi server tutte le informazioni necessarie, memorizzarle all'interno di una propria cache e rispondere velocemente ai client.

Con questa soluzione, le richieste provenienti dai client non arrivano mai ai sistemi server ma vengono gestite direttamente dal Data Cache Service Layer.

Accorgimenti necessari:
  • implementare gli opportuni meccanismi di aggiornamento delle informazioni in caso vengano variate, per mantenerle sempre allineate tra i sistemi e la cache
  • strutturare internamente alla cache un Data Model adatto alla tipologia dei dati che si trattano ed alle modalità di interrogazione da parte dei client.




Pro:
  • Performance al top (non si perde tempo ad interrogare i sistemi di backend ma le informazioni sono già disponibili nella cache)
  • Nessun potenziamento HW sui sistemi
  • Ottimizzazione SW dei sistemi non necessaria
  • Massima predisposizione se in futuro dovesse aumentare ulteriormente il carico (basterà adeguare il Data Cache Service Layer senza dover toccare tutti i sistemi di backend)
Contro:
  • Necessario un investimento iniziale
  • Tempi e costi di realizzazione da valutare a seconda della complessità delle informazioni, dei sistemi e dei processi


Articoli Correlati



lunedì 28 luglio 2014

Come scegliere il nome di un Software

Il vostro nuovo progetto o prodotto software ha bisogno di un nome ?

La scelta del nome è un fattore molto importante in quanto, dopo giorni passati a scervellarvi giocando con gli acronimi e attaccando parole tipo "FantasticWare" o "MySoft",  e dopo mesi di lavoro investiti nello sviluppo del progetto, è molto brutto poi scoprire che è un nome già utilizzato oppure che non è propriamente adatto al tipo di software che state rilasciando.

La decisione di come chiamarlo deve essere presa molto rapidamente all'inizio di un progetto. Chiaramente non è un aspetto fondamentale ma un buon nome può aiutare un prodotto ad avere successo sul mercato, ad avere un migliore appeal verso i clienti ed una maggiore visibilità generale.

Di seguito alcuni suggerimenti per scegliere un nome efficace ed evitare gli errori più comuni.

Corto è meglio 

Un nome accattivante ed incisivo deve essere breve, preferibilmente di poche sillabe, facilmente utilizzabile su documenti, presentazioni, email e nelle discussioni di tutti i giorni.
Se possibile, scegliere un nome che inizia con una delle prime lettere dell'alfabeto in modo che verrà elencato in cima a liste di software, elenchi di prodotti, ecc.

Comprensibile, mnemonico, facile da pronunciare e da scrivere

Bisogna valutare attentamente se il nome è ben comprensibile, facile da memorizzare e quindi non passibile di storpiature. Chi lo sente deve essere subito in grado di ripeterlo, di scriverlo e di cercarlo sui motori di ricerca senza margini di errore.
Se avete intenzione di scegliere un nome in una lingua straniera (es. in inglese), consultate prima qualcuno che è di madre lingua per valutare se la scelta è opportuna ed evitare parole non corrette o che magari hanno un doppio significato e potrebbero essere imbarazzanti.

Non cercare acronimi a tutti i costi

Non è obbligatorio che un nome sia determinato da un acronimo.  Le parole che lo compongono vengono subito dimenticate mentre quello che resta è solo il nome.
Quindi il suggerimento è quello di preferire un bel nome ad un brutto acronimo.

Non già utilizzato

Evitare di scegliere un nome che sia già uguale o simile ad uno già utilizzato nello stesso ambito di mercato. Valutare sempre l'opportunità delle parole scelte a seconda del contesto (cliente, competitors, mercato).
Google è un ottimo strumento per fare tutte le ricerche del caso.

Marchio non già registrato

Assicurarsi che su quel nome/marchio non ci siano diritti già registrati (copyright, trademark).

Per verificare se un marchio nazionale e' registrato:

• UIBM - Ufficio Italiano Brevetti e Marchi (marchi italiani)
  URL: http://www.uibm.gov.it/uibm/dati/

• UAMI - Ufficio per l'Armonizzazione nel Mercato Interno (marchi europei comunitari)
  URL: http://oami.europa.eu/CTMOnline/RequestManager/it_SearchAdvanced_NoReg

• OMPI - Organizzazione Mondiale per la Proprietà Intellettuale (marchi internazionali)
  URL: http://www.wipo.int/branddb/en/index.jsp

• TMview - Servizio di ricerca cumulativa in 12 Uffici marchi nazionali dell'UE
  URL: http://www.tmview.europa.eu/tmview/welcome.html?language=it

Su Internet naturalmente è possibile reperire ulteriori informazioni su siti specializzati come ad esempio: http://www.marchiodimpresa.it/marchio/ricerca-marchio/ oppure su: http://www.tutelamarchio.com

Dominio internet disponibile

Se si ha intenzione di dare visibilità sulla rete al proprio prodotto, diventa fondamentale acquisire il dominio internet con lo stesso nome. Tipicamente i più importanti per un prodotto italiano sono quelli con i suffissi .it e .com, quindi il consiglio è quello di registrarli entrambi  (es.:  www.miosoftware.com www.miosoftware.it), mentre per i prodotti di community opensource spesso si preferisce .org.

Per verificare se un dominio internet è disponibile:
• WHO IS 
  URL: http://whois.domaintools.com/

Utilizzo di parole che descrivono la tipologia di prodotto

In molti casi può essere utile l'inclusione all'interno del nome di una parola che definisce il tipo di software (ad esempio MyEditor nel caso di sviluppo di un tool di editing, oppure GoodMonitoring per una applicazione di controllo).  La scelta può essere opportuna per far capire subito di cosa si tratta.

Impatto grafico

Valore aggiunto può essere anche il suo potenziale grafico, un nome vincente può infatti essere fonte di ispirazione per un bel logo e per le immagini di presentazione utilizzate dal marketing.



Articoli correlati

Perchè il software è una forma d'arte