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


lunedì 1 dicembre 2014

Siete dipendenti dall' Information Technology?


Ho letto con interesse un articolo su Forbes dal titolo Are You Addicted to Information Technology?. È di un paio di anni fa ma parla di un argomento molto attuale, cioè di quanto le nostre abitudini siano ormai strettamente legate alla tecnologia, con un occhio particolare alla sicurezza.
Mi ha dato spunto per alcuni commenti e considerazioni, che troverete alla fine, e quindi ho deciso di tradurlo in italiano per facilitarne la lettura e la condivisione.




L'articolo: "Siete dipendenti dalla tecnologia dell'informazione ?"

(libera traduzione da Are You Addicted to Information Technology? del 20/08/2012 di John Mariotti)

Siete appassionati della tecnologia ?  Io si.
Pensate anche voi che la tecnologia sia una cosa bellissima ? Io certamente si !
Almeno fino al momento in cui qualcosa si rompe e smette di funzionare.
Quando ciò accade, siamo costretti con le nostre abitudini a ritornare all'epoca delle vecchie tecnologie, dei vecchi telefoni fissi, della posta "lumaca" e a ricominciare a comunicare di persona.

Quando l'information technology non funziona, ci manca terribilmente la facilità e la velocità di comunicazione (anche se impersonale), l'integrazione ("sincronizzazione") ed il veloce accesso alle informazioni che essa garantisce.

Come abbiamo fatto in passato a farne a meno?
In realtà ce la siamo cavata abbastanza bene, fino a quando non ne siamo diventati "dipendenti".
Ora però ne siamo schiavi !

Viviamo in un'epoca senza precedenti, di straordinaria connettività, di convergenza ed integrazione tra tutti i diversi tipi di tecnologia.
I computer, collegati a smartphone e tablet, ci permettono di parlare, messaggiare, gestire email, scrivere e leggere blog, siti web, registrare e guardare podcast audio/video e di comunicare a distanza in modo molto più semplice, completo e veloce.

Quando tutto funziona, (ammesso che ci sia stato l'impegno per capire come si usa), la tecnologia è una cosa meravigliosa, potente, abilitante e che fa risparmiare molto tempo.

Vi ricordate l'ultima volta che siete andati in un negozio o in una stazione di servizio quando i sistemi non funzionano ? Potete acquistare qualcosa?
Durante le interruzioni di corrente elettrica, i negozi possono restare aperti durante le ore diurne e, solo se la loro azienda lo consente, sono costretti a registrare le transazioni con carta e penna. In caso contrario, fino a quando i sistemi non tornano di nuovo on-line, vi diranno di tornare più tardi.

Avete mai iniziato un viaggio quando i sistemi informatici della compagnia aerea sono spenti ?
Risultato: il Caos ! I voli non possono essere gestiti, pianificati e prenotati, si ferma tutto.
L'unica cosa da fare è sedersi ed aspettare.

Che ne dite delle vostre preziose foto e/o video che avete caricato sul computer ? Se c'è un problema tecnico e si perdono c'è un modo per recuperare tutto ?
Probabilmente no !  Peccato, avete appena conosciuto il lato oscuro della tecnologia.

Se si pensa di inviare messaggini per incontrare qualcuno durante un grande evento come una partita di calcio con 100.000 spettatori, c'è una buona probabilità che i sistemi della società telefonica siano sovraccaricati e quindi non sia possibile usarli !
Scegliete in anticipo l'orario e il luogo di incontro.

Siamo assuefatti alla tecnologia ?
Ci potete scommettere che lo siamo. Quando la nostra email o l'accesso ad internet non sono disponibili ci sentiamo persi. E' terribile.

Ora, immaginate che il vostro telefono cellulare non funzioni e che non sia neanche possibile inviare messaggi, come diavolo si può fare per comunicare?
La maggior parte delle persone penserebbe di usare un telefono fisso. Ma se anche questo non funzionasse, come potrebbe fare ?

A molte persone in passato è capitato di avere l'email hackerata o il sito web rediretto.
Tutti noi riceviamo spam e siamo stati vittime di tentativi di phishing (pratiche ingannevoli per ottenere informazioni private).
Il furto di identità è un incubo tecnologico nuovo, ma succede spesso, troppo spesso.

La nostra dipendenza dalla tecnologia non è completamente negativa, ma è pericolosa.
Non sto suggerendo di diventare Luddisti, di tornare a comunicare solo a voce di persona o con testi scritti a mano. Nel mondo di oggi significherebbe disconnettere comunicazioni di vitale importanza.
Tuttavia non bisogna sottovalutare i problemi che la nostra dipendenza dalla tecnologia solleva.

Il più importante riguarda la sicurezza, si registra infatti un grande aumento dei tentativi di hackerare i sistemi per rubare l'accesso o i dati. Questi attacchi per alcuni tipi di sistemi si contano a milioni ogni giorno. Proprio così: milioni al giorno.
Si può anche essere fiduciosi sul fatto il proprio sistema sia in grado di opporsi ad un paio di attacchi al giorno,  ma se si utilizzano le carte di credito, si è iscritti ai social network e si è attivi su Internet, la propria vulnerabilità cresce in modo esponenziale.

Che cosa si può fare?
  1. Limitare l'esposizione sui social network.
  2. Eseguire il backup dei sistemi, non solo in automatico sul Cloud, ma anche personalmente.
  3. Utilizzare i migliori strumenti per la sicurezza (firewall, antivirus, ecc) e tenerli aggiornati.
  4. Prestare attenzione alle password, al loro aggiornamento (cambiamenti periodici) e alla loro robustezza. Non condividere le password con nessun altro, non importa chi.
  5. Essere consapevoli di quanto si è dipendenti dalla tecnologia e quindi crearsi più alternative da utilizzare caso di necessità. Aprire account di posta elettronica di backup, tenere un telefono fisso in aggiunta al vostro cellulare o telefono Internet.
  6. Sapere come contattare il proprio ISP (Internet Service Provider), quando ci sembra ci sia qualcosa di strano o di sbagliato.
  7. Imparare a trovare le pagine "preferenze e impostazioni" per la posta elettronica, la messaggistica e l'accesso al web, e capire come funzionano.
  8. Mantenere anche il backup cartaceo delle informazioni ritenute più critiche. Fatture, pagamenti, documenti legali e finanziari, numeri di telefono importanti e altre informazioni di contatto, ecc.
  9. Diventare più consapevoli che malware, furti informatici e cyber-terrorismo esistono. Stanno accadendo ora e la cosa peggiorerà. L'aumento dei dispositivi in rete aumenterà il rischio.
  10. Fare un elenco di emergenza con numeri di telefono e numeri di conto di tutti i fornitori di servizi: utenze, manutenzione, medici, avvocati, parenti, vicini di casa, e così via. Crearlo, memorizzarlo sul proprio computer ma dare anche copie delle stampate ai familiari diretti "in caso di emergenza".
In questa epoca di dipendenza dalla tecnologia, non esiste un modo unico e semplice per proteggere i nostri dati e i nostri sistemi. Tutto quello che si può fare è fare tutto ciò che si sa che si dovrebbe fare, per poi sperare che tutto continui a funzionare.


(John Mariotti è un dirigente di fama internazionale ed un autore premiato)


Considerazioni

Un breve articolo come questo non ha la presunzione di essere esaustivo, non è uno studio approfondito e probabilmente è stato scritto in poco tempo fornendo solo una visione parziale.
Mi sembra che l'autore, sicuramente una persona competente, si sia soffermato molto su alcuni aspetti a discapito di altri ugualmente importanti.

Fermo restando che tutte le cose che dice sono condivisibili, di seguito ne ho elencate altre che avrei evidenziato:

  • Si fa riferimento al disagio che si ha quando si rimane scollegati da internet, argomento che avrebbe meritato un maggiore approfondimento. Il termine Nomofobia forse 2 anni fa non era ancora molto noto.
  • Si parla molto dei pericoli che possono arrivare dall'esterno quando si è collegati in rete, ma non si accenna ai danni che ci si può procurare da soli se non si utilizza con attenzione la tecnologia. La causa più frequente della perdita di dati è dovuta all'errore umano, magari alla banale cancellazione di un file o di una directory per una disattenzione.
  • Vengono giustamente messi in evidenza i pericoli che si corrono usando le carte di credito su Internet. Non si dice però che percentualmente il rischio di clonazione è maggiore quando si fanno acquisti nei negozi normali o quando si fanno prelievi da sportelli bancomat "tarocchi".  Non si parla della possibilità di usare carte prepagate e paypal per limitare i rischi.
  • Analogamente, il furto dei dati personali e di identità sono all'origine di truffe anche nella vita outline.
  • Fare elenchi con informazioni importanti e distribuirle in giro (vedi punto 10) è il modo migliore per perdere la propria privacy. Non si sa mai in mano a chi possono andare.
  • Ci sono suggerimenti fondamentali per salvaguardare la sicurezza ma mancano alcuni strumenti importantissimi che è opportuno utilizzare:
    • Impostazione delle soglie e degli alert via SMS e via email sui siti che lo consentono (tipicamente carte e banche);
    • Programmi e APP con cui in caso di smarrimento o di furto è possibile localizzare gli smartphone ed eventualmente cancellare i dati contenuti;
    • Controllo della lista IP delle ultime connessioni al proprio account sulle applicazioni che forniscono il servizio.



Articoli correlati



martedì 18 novembre 2014

Infobesity, l'abbuffata di informazioni

E' stato coniato un po' di tempo fa il termine che indica il disagio procurato alle persone dal sovraccarico di informazioni: Infobesity.

L' infobesità è un problema che sta riguardando un numero sempre maggiore di persone.

Il numero di comunicazioni che vengono pubblicate in rete giornalmente (email, post, tweet, news, podcast, audio/video, ecc.) si è praticamente decuplicato negli ultimi 10 anni, questo flusso continuo bombarda tutti noi che assorbiamo le informazioni in modo sia cosciente che involontario.

Fino a qualche anno fa il problema si era evidenziato negli uffici, nei posti di lavoro dove chi è sempre collegato al computer riceve quotidianamente per posta elettronica, sui vari messenger e su internet un sovraccarico di input informativo (Information Overload).
Da qualche tempo si sta diffondendo anche tra coloro che con smartphone e tablet sono sempre online, sempre raggiungibili dalle telefonate, dai messaggi testuali, vocali e multimediali, sui social, dalle email, dalle news, dalle notifiche delle App, ecc., tutto ciò in aggiunta agli input provenienti dai media tradizionali come stampa, radio e TV.


I sintomi

Analogamente all'obesità dovuto al troppo cibo, sembra ormai certo che l'infobesity può creare dei disturbi, vediamo quali sono i sintomi più comuni:
  • difficoltà nel selezionare e quindi gestire le informazioni realmente importanti,
  • difficoltà nel prendere decisioni,
  • difficoltà nella memorizzazione,
  • diminuzione della attenzione necessaria per seguire fino alla fine e comprendere appieno un contenuto,
  • fretta nella lettura dei singoli articoli/email (lettura a "balzi"),
  • ansia nel passare velocemente da un contenuto all'altro, anche utilizzando diversi device,
  • diminuzione nella capacità di valutare le informazioni,
  • eccesso di fiducia in quello che si legge,
  • ansia dovuta alla paura di non riuscire a seguire qualcosa, di staccarsi dal flusso comunicativo, di perdersi qualche informazione,
  • stress dovuto alla paura di rimanere scollegato (Nomofobia),
  • problemi nel riuscire a rilassarsi completamente, a riposare per recuperare.


Noi esseri umani, ciascuno con le proprie capacità, siamo in grado di elaborare un volume di dati finito. Quando veniamo travolti da un diluvio incontrollabile di dati ci sentiamo stressati e finiamo per non rendere al meglio, diminuisce la nostra capacità di gestire le informazioni.

Per far fronte al sovraccarico, il nostro cervello sviluppa automaticamente delle abitudini, ad esempio può dare maggiore priorità ad informazioni provenienti da alcune fonti oppure privilegiare contenuti presentati in un formato (es, video) piuttosto che in un altro.

Queste reazioni ostacolano la capacità di prendere decisioni basate sulle migliori evidenze disponibili, le prestazioni ne soffrono e di conseguenza lo stress aumenta.

La dieta

Gli accorgimenti per limitare le problematiche derivanti dal sovraccarico da informazioni esistono, come in tutte le diete la cosa più difficile è riuscire a metterli in pratica.

Di seguito un superficiale elenco:

  • Sfruttare al meglio le funzionalità che email, social network e sistemi di messaggistica mettono a disposizione per filtrare le informazioni, categorizzarle ed organizzarle. 
  • Organizzare al meglio i gruppi/cerchie di amici che si hanno sui social network e differenziarne la visibilità dei messaggi.
  • Silenziare sullo smartphone le notifiche delle App, in modo che andrai a guardare solo quando lo vorrai. Stai sicuro che se qualcuno ti cercherà con urgenza ti telefonerà.
  • Utilizzare un media per volta, ad esempio se si sta guardando la TV non tenere lo smartphone vicino.
  • Non mischiare l'uso lavorativo e privato delle tecnologie. Se stai lavorando al PC non tenere aperta anche la finestra sul tuo social preferito o sul sito della borsa.
  • Controllare le news solo una o due volte al giorno, magari la mattina appena si arriva in ufficio e la sera prima di uscire. Non c'è alcuna necessità di essere informati minuto per minuto su quello che succede nel mondo.
  • Selezionare i propri siti di riferimento ed accedere solo a quelli cercando di navigare meno da un link all'altro.  
  • Utilizzare gli aggregatori tematici di news (siti, programmi, app) che evitano di ricevere passivamente in input informazioni non desiderate. Quando si accede ad un portale si è bombardati da una serie di notizie e spot che, posizionate ad arte, distraggono e incanalano l'utente verso un percorso informativo diverso rispetto alle intenzioni iniziali.
  • Evitare di pubblicare troppo di frequente su social forum, ciò innesca la voglia di andare a verificare di continuo le evoluzioni dei commenti.
  • Concedersi quando possibile dei periodi o delle giornate intere di Digital Detox "disintossicazione", dimenticandosi a casa lo smartphone e non accendendo neanche TV, PC e Tablet. Le prime volte sarà una forzatura, ma poi ne riscoprirai i tanti pregi tra i quali quello che, quando ti ricollegherai, andrai a controllare solo quello che realmente ti interessa (non ti sei perso niente).

Buona dieta a tutti !!


 Image courtesy of Jeroen van Oostrom at FreeDigitalPhotos.net

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

domenica 13 luglio 2014

La rivincita del tablet con Windows 8.1

Dopo più di un anno di utilizzo di alcuni tablet Android (Lo smartphone Android come un PC), mi sono convinto a provarne uno con Windows 8.1 ed ho acquistato un HP Omnia 10.

Non avevo grandissime aspettative ma invece devo dire che sono rimasto piacevolmente sorpreso dalla fluidità di funzionamento, dalla qualità costruttiva del prodotto e soprattutto dalla completezza funzionale che ti può ridare un sistema operativo progettato per coprire i requisiti di un PC. 


I Pro

Pur confermando quanto si legge in giro, cioè che per un dispositivo Touch le modalità di utilizzo di Windows 8.1 non sono così intuitive e ci si confonde spesso nel passare dal Desktop alla schermata Start e viceversa, sono però molto soddisfatto della facilità con cui si possono sfruttare tutte le funzionalità senza problemi.

Dopo un anno passato a cercare work around software, cavetti ed adattatori per connettere Android alle diverse periferiche (stampante, tastiera, mouse, memorie USB, monitor HDMI, ecc.), a selezionare App adeguate per un utilizzo più professionale, con il nuovo tablet Windows da questo punto di vista sono rinato.

Ho attaccato i cavi ed ha funzionato subito (la dotazione di porte è finalmente adeguata), ho acceso il bluetooth e si connesso senza problemi, ho installato i programmi che sono abituato ad utilizzare sul PC e tutto il mio ambiente di lavoro è stato facilmente predisposto.

Riguardo alle App, il Windows Store sicuramente non è fornito come quello Apple o Google, ma il problema è di poca importanza visto che su Win8.1 si possono installare anche programmi desktop normali.

Un altro aspetto che ho apprezzato molto è quello di poter utilizzare finalmente un browser come si deve e quindi:
  • accedere in automatico ai siti in formato desktop e non a quelli riformattati per i monitor dei dispositivi mobili (Come funziona "Richiedi sito desktop" di Chrome) ;
  • utilizzare le applicazioni e le estensioni del browser preinstallate (utilizzo Chrome ma sarebbe stato ugualmente utile con Firefox).

I Contro

  • Per un utilizzo touch in movimento (in fondo il tablet nasce proprio per quello), si paga qualcosa in termini di usabilità; 
  • L'interfaccia è ancora un ibrido con ampi margini di miglioramento e quindi la User Experience Touch non è così entusiasmante;
  • Le App disponibili per l'interfaccia Metro (mi pare che Microsoft abbia ripudiato questo nome) sono per numerosità e maturità molto inferiori rispetto a quelle presenti su Apple Store e Google Play.  

Considerazioni

Come in tutte le scelte, dipende da quali sono le necessità e da cosa ci si vuole fare.

Se il tablet vi serve solo per navigare su internet, utilizzare i social, fare video, foto e fotoritocco, ecc., sicuramente sono ancora preferibili IPad e Android, ma se la necessità è anche quella di avere uno strumento che all'occorrenza può essere soddisfacente per un uso più professionale, allora la soluzione con Windows 8.1 potrebbe essere la più opportuna.

Attenzione: nella scelta di un tablet Windows per un uso più completo, consiglio di fare molta attenzione all'allestimento HW del tablet (porte usb e hdmi, memoria, presenza di slot per scheda sd) e soprattutto al sistema operativo che deve essere la versione 8.1 e non la RT che consente solo l'installazione di App e non di programmi desktop.  

Articoli Correlati

  

giovedì 10 luglio 2014

Programmi, APP o funzionalità sul Cloud ?

Probabilmente ancora non è evidente qual'è la soluzione migliore per la realizzazione di funzionalità utente che hanno una GUI (Graphic User Interface).

Prima c'erano, e ci sono ancora, i Programmi installati sui PC,
poi sono arrivate le App che in fin dei conti sono sempre dei programmi, scaricati da repository ufficiali, da installare sugli Smartphone, sui Tablet e più di recente anche sui PC stessi.

Parallelamente, con l'evoluzione delle tecnologie web e l'incremento della velocità della rete, sono arrivate le prime funzionalità on line, soprattutto di tipo office (es. Google Drive, Microsoft OneDrive, Office 365), ed utilizzabili tramite il solo browser, senza bisogno di installare nulla sul proprio device.
Sul web ce ne sono tantissime, di tutti i tipi e sempre più evolute: per il foto ritocco, video editing, document conversion, data analytics, grafica, ecc., alcune anche molto complete e ben fatte.

Le stesse aziende, leader del mercato del software, hanno raccontato che il futuro è nel Cloud, con risorse, funzionalità e servizi SaaS (Software as a Service) utilizzabili direttamente on line, ma nel contempo si sono smentite da sole imponendo alla clientela l'utilizzo di Store ufficiali da dove effettuare il download delle applicazioni. 

Google ha invaso il mercato con Android che fonda tutto sulle App e poi ha prodotto Chromebook che è utilizzabile solo essendo connessi ad internet accedendo alle funzionalità Cloud, per poi recentemente fare un passo indietro dichiarando che permetterà di installare App anche sul sistema operativo ChromeOS.

Non è stata da meno Microsoft che sull'ultimo Windows 8.1 consente di installare sia programmi tradizionali che App. 

Sui diversi repository ufficiali (Apple Store, Google Play, Windows Store) proliferano App ibride che sfruttano gli stessi servizi già raggiungibili sul cloud con il browser.
Molte di queste non sono altro che semplici cornici alla pagina web che implementa la vera funzionalità.

Nonostante con le ultime tecnologie web si realizzino interfacce grafiche che non hanno nulla più da invidiare, si continuano a sviluppare anche doppioni funzionali con App e programmi da installare che replicano di fatto le stesse modalità di utilizzo.
Ad esempio, che senso ha sviluppare una App di news, quando si ha già un sito web responsive che pubblica le notizie ?  E' solo un a tattica marketing per avere una propria icona/logo sul telefono di chi la installa oppure c'è una reale motivazione funzionale ?

Chiaramente hanno una reale utilità le App che possono funzionare in locale senza bisogno di essere connessi ad internet o che fanno delle notifiche automatiche all'utente, ma negli altri casi qual'è lo scopo se non quello pubblicitario ?

In un momento di convergenza funzionale tra PC e terminali mobili (Smartphone e Tablet), è emblematico il mix che si è creato sui nostri device dove proliferano link, app e programmi.

Installo il Programma, la App oppure vado sul Sito ?
Nel dubbio tutti e tre, per non perdermi niente.

Forse è proprio il mix la soluzione più giusta.

Boh....




Articoli correlati
Strumenti OnLine