Azistrap



Sofware Engeneering

Introduzione

Col termine “software engineering” o ingegneria del software si intende quella branca che si occupa dei processi produttivi e delle metodologie di sviluppo finalizzate alla realizzazione di architettura dei sistemi software. Forti delle esperienze su metodologie DevOps per la gestione ottimizzata dei processi produttivi, riusciamo a ritagliare e dedicare molto tempo alla creazione di architetture solide e innovative capaci di integrarsi perfettamente col mondo circostante. Tuttavia parlare di disegno architetturale non è mai facile, molteplici sono gli aspetti che orbitano attorno a questo importante tema, purtroppo spesso trascurato o sminuito dai gruppi di lavoro per mancanza di solide competenze o scarsa conoscenza delle recenti tecnologie.

Il nostro approccio

InfoWeb soprattutto con l’avvento delle tecnologie Cloud continua ad investire molto sull’aggiornamento dei propri architetti alle più recenti tecnologie restando sempre al passo coi tempi ma al contempo restando attenta alle esigenze economiche e strutturali dei propri clienti.

Siamo in grado di costruire architetture di vario genere, integrate o distribuite, on premises o su cloud, su tecnologie mobile o web, seguendo sempre le best practises e design pattern indicate dalle case madri e perciò più idonee a risolvere il problema. Xxxx, yyy sono una lista esemplificativa e non esaustiva delle tecnologie di riferimento.

Perché sceglierci?

Negli anni recente abbiamo visto l’ingresso di molte nuove tecnologie sul mercato che hanno lanciato grandi sfide agli architetti software in termini di integrazione soprattutto con sistemi obsoleti. Sfide che InfoWeb ha saputo cogliere specializzando i propri Architetti Software in attività di System Integrator e Reverse Engeneering di software ormai superati e non più manutenibili. Strategie di “porting del software” sono state affinate garantendo al cliente un passaggio quasi indolore capace di evitare blocchi di produzione e perdite economiche.

La possibilità di InfoWeb di sfruttare le competenze create in fase di manutenzione correttiva per suggerire nuovi percorsi di reingegnerizzazione, creano valore aggiunto, riutilizzando in modo trasparente competenze acquisite per un diverso scopo.

Requisiti e analisi funzionale

La parte più complessa nella realizzazione di un sistema software consiste nel decidere cosa realizzare. Nessuna parte del lavoro pregiudica maggiormente il risultato se viene eseguita in modo errato. Nessuna altra parte è più difficile da correggere successivamente.

Fred Brooks – autore di The Mythical Man-Month

Il processo di raccolta requisiti e analisi funzionale consiste nell’individuare le caratteristiche statiche (dei dati) e dinamiche (delle operazioni) dell'applicazione che si desidera realizzare. E’ facile intuire come il successo di un software passa attraverso questo processo di raccolta dati, che diviene così fondamentale al fine di stabilire delle solide basi su cui realizzare il prodotto. InfoWeb perciò dedica a questa fase una grande attenzione sapendo che una raccolta requisiti imprecisa produrrebbe un software poco funzionale e lontano dalle attese del cliente. A tal fine per realizzare un raccolta dati che sia efficiente, InfoWeb mette in campo i propri esperti funzionali del settore capaci al contempo di guidare, comprendere e raccogliere le tue esigenze.

Il nostro approccio

Il nostro principale obbiettivo è di allineare fin dall’inizio le tue aspettative con la loro concreta possibilità di realizzazione. Ogni progetto viene quindi preceduto da uno studio di fattibilità, ossia una fase iniziale del processo di ingegneria dei requisiti, attraverso il tuo coinvolgimento al fine di realizzare un documento sommario del sistema software e delle necessità utente. Il documento prodotto stabilirà l'opportunità o meno di procedere allo sviluppo del sistema software.

Successivamente si procede come di consueto in questa fase, ma con l’ausilio di metodologie “agile” di cui InfoWeb è grande conoscitrice.

In un processo tradizionale, è necessario che tu definisca i requisiti in modo molto preciso immediatamente nella prima fase di analisi. Questo comporta che apportare modifiche nel corso di sviluppo del software diventa rischioso difficile e spesso oneroso, poiché i requisiti sono documentati in modo rigoroso e formale.

Le metodologie agili si basano su concetto che sia il committente che lo sviluppatore non possiedono una conoscenza completa del sistema nelle prime fasi dello sviluppo di un processo. Essi imparano man mano che il sistema evolve. Di conseguenza diventa fondamentale adottare delle pratiche “agile” che permettano ad entrambi di poter sfruttare la propria crescente competenza durante il processo di sviluppo. Pur mantenendo una buona organizzazione e struttura del software, le tecniche agile permettono una certa libertà di decidere in qualsiasi istante quali funzionalità realizzare, modificare, eliminare e/o aggiungere senza intaccare la robustezza del sistema prodotto.

Perché sceglierci?

Perché grazie allo studio iniziale di fattibilità riusciamo con un minimo impiego di risorse a definire l’opportunità di investimento in un progetto evitando sprechi di tempo e denaro. Preferiamo puntare all’aderenza dei requisiti da te desiderati e che si dimostrino con forte valore aggiunto al tuo processo produttivo, piuttosto che ad un look accattivante. Una volta validate le funzionalità da te richieste, ci possiamo avvalere di grafici e designer per soddisfare appieno le tue aspettative di look & feel.

Analisi architetturale

L’architettura software è l’insieme delle strutture del sistema, costituite dalle componenti software, le loro proprietà visibili e le relazioni tra di loro.

[Bass, Clemens & Kazman, 1998]

L’analisi architetturale è un processo fondamentale nella realizzazione dei software: un punto di partenza necessario per un lavoro di successo. Spesso un’errata analisi porta a conseguenze disastrose che aggiungono complessità alle già poco lineari infrastrutture in cui questi devono integrarsi. Analizzare le architetture vuol dire “capire”, “mappare” le tue architetture preesistenti e conseguentemente riuscire a “disegnare” una nuova struttura adatta ad integrarsi in modo naturale con le altre strutture hardware e software presenti nell’ecosistema aziendale. Architetture capaci di favorire l’interoperabilità tra sistemi, convivere, dialogare, e soprattutto portare benefici anche in infrastrutture obsolete o mal funzionanti.

 

Il nostro approccio

Il nostro approccio all’analisi architetturale parte da una semplice domanda:

“Cosa posso proporti di realmente vantaggioso che mostri immediati benefici alle architetture preesistenti?”

Nel contempo, prevediamo sin da subito a sistema per l’integrazione quali componenti di Testing automatici idonei a “collaudare” l’interoperabilità del prodotto con il resto dei tuoi sistemi.

Il nostro metodo di analisi architetturale passa attraverso la nostra pluriennale e solida esperienza acquisita negli anni attraverso il lavoro su grandi sistemi ed architetture, il tutto condito da una buona dose di creatività poggiata sul solide basi offerte dai principi di Ingegneria del Software di cui i consulenti di InfoWeb sono certificati ed esperti.

 

Perché sceglierci? 

Perché svolgiamo questo lavoro con passione e dedizione. Perché i consulenti di Infoweb hanno sempre un occhio sulle tecnologie del passato (conoscenza indispensabile per qualsiasi integrazione di sistemi) ma al contempo guardano al futuro restando aggiornati con le più moderne tecnologie. La preparazione unita all’esperienza ci consente di evitare gli errori più comuni commessi in questo settore, quali ad esempio:

  • sottovalutare i sistemi preesistenti poiché non si conoscono bene le tecnologie su cui essi poggiano
  • sovrastimare lo di sviluppo (con conseguente ricarico di costi sul progetto) per ridurne i potenziali rischi
  • progettare qualcosa di inutile e già offerto dai Framework e tecnologie presenti sul mercato

solo per citarne alcuni.

In definitiva realizzare una buona analisi architetturale significa avere un approccio pragmatico sui risultati, offrendoti soluzioni cucite su misura che portino gli effetti sperati ma a costi competitivi e soddisfacenti.

Tutto questo vuol dire per InfoWeb analisi architetturale.  

Progettazione e produzione del codice

Progettare software è un campo più vasto e distinto dallo scrivere codice. Sia la progettazione che la produzione del codice rientrano in quella branchia denominata “ingegneria del software” ed entrambe costituiscono una fase del ciclo di vita del software.

Una volta realizzata una architettura su cui implementare i requisiti del software, è purtroppo sempre più consolidata la consuetudine di saltare la progettazione e partire con l’implementazione dei moduli del prodotto definitivo. Viene quindi accorpata la fase di progettazione e implementazione e demandata al programmatore.

Sfortunatamente una solida architettura non è garanzia di software stabili e funzionanti. Infatti i programmatori, se non adeguatamente preparati, possono produrre codice instabile, o anche se stabile, difficilmente manutenibile con conseguenze disastrose sui costi, sulle manutenzioni ed evoluzione dei prodotti. 

Il nostro approccio

Il nostro approccio passa per le metodologie di sviluppo “agile”, attraverso la formazione di team di sviluppo minimali, poli-funzionali e auto-organizzati, attraverso lo sviluppo iterativo e incrementale, la pianificazione adattiva, e il tuo coinvolgimento diretto e continuo nel processo di sviluppo. Attraverso questo approccio integrato con la pratica di “Continuous Integration - CI”, InfoWeb è in grado di ridurre il rischio di fallimento sviluppando il software in finestre di tempo limitate chiamate iterazioni.

Ogni iterazione dura in genere poche settimane, al termine delle quali vengono rilasciato dei componenti software, a volte anche incompleti (da integrare in iterazioni successive), ma perfettamente funzionanti.

Non dovrai più aspettare la fine del progetto per vedere i risultati. Non rischiarai quindi di imbatterti in “spiacevoli” sorprese, per sentirti dire “non avevamo inteso bene i requisiti”.

Finalmente puoi seguire e guidare passo dopo passo la nascita del tuo software facendolo divenire il prodotto desiderato e quindi reale motore per lo sviluppo economico della tua azienda.

Perché sceglierci?

Perché i tecnici di InfoWeb di qualsiasi livello, seguono dei corsi di specializzazione al fine di “educarsi” alle metodologie di progettazione e scrittura codice richiesti dai principi di ingegneria del software.

Il software progettato e sviluppato dai programmatori è sempre supervisionato da un architetto software esperto pronto ad interviene qualora il codice non soddisfi i requisiti necessari di leggibilità, manutenibilità, efficienza e consistenza.

Sceglierci perché scrivere codice in InfoWeb non è soltanto un mestiere ma è “passione e dedizione” per il proprio lavoro, programmatori motivati dall’ottima formazione, aggiornamento e gratificazione economica, che InfoWeb è capace di offrire in maniera costante ai propri dipendenti e collaboratori.

Siamo una società agile che realizza software di qualità, ma se sei interessato a crescere nelle competenze DevOps possiamo affiancarci al tuo team per travasare le competenze necessarie sul campo.   

Installazione e versioning

In informatica possiamo definire l'installazione come una procedura di rilascio del software ossia un processo di copia e configurazione dello stesso su una o più macchine. Mentre un sistema di controllo di versione (VCS), consiste nella gestione di versioni multiple di un insieme di informazioni, esso consente di gestire le modifiche apportate ai file di un progetto (non necessariamente un software) su cui in genere possono lavorare anche più persone contemporaneamente.

Il processo di “rilascio” di un prodotto è un momento critico per molte aziende, la paura di rilasciare qualcosa che vada ad alterare la stabilità di un prodotto (anche obsoleto ma…) funzionante e che soprattutto il prodotto rilasciato possa generare molti bug e ticket in produzione è una fobia che accompagna numerosi architetti di processo e strutture aziendali che si occupano di deployment (installazioni) di soluzioni informatiche. 

Il nostro approccio

Con l’avvento delle metodologie agile e soprattutto di quelle DevOps, l’installazione ed il versioning di un prodotto hanno rivoluzionato i metodi tradizionali del passato. InfoWeb in tal senso fornisce ai clienti un processo automatico di “Continuous Delivery - CD” (rilascio agile e quindi continuo) validato da un consistente strato di test automatici scritti ad hoc (Quality Assurance - QA) idonei ad abbattere i potenziali malfunzionamenti introdotti dalle modifiche apportate ai software.

Rilasci affidati a procedure software (ma monitorate da esperi del settore) anche con un semplice click da uno smartphone o tablet.

Versioning del codice fatto attraverso i più moderni strumenti software, capaci non solo di mantenere il codice prodotto al sicuro, ma di produrre statistiche e report sull’andamento degli sviluppi, sino al singolo programmatore così da avere sotto controllo l’intera produzione.

Inoltre il nostro approccio fa uso delle più moderne ed efficienti tecniche di roll-out del software (rilascio incrementale), quali ad esempio i “feature flags”, attraverso cui siamo in grado di rilasciare modifiche di software attivabili/disattivabili manualmente senza alcun intervento software, andando ad evitare tempestivamente propagazioni incontrollate di ticket dovuti a problemi di rilascio.

Perché sceglierci? 

Attraverso le più moderni ed efficienti tecnologie e metodologie, Infoweb ha fatto della fase di Installazione e versioning del software una componente importante, automatica e monitorata con la massima affidabilità in ogni rilascio in produzione. InfoWeb ha investito molto su questo aspetto proprio per dare un valore aggiunto al software prodotto, curando tutta la filiera del processo produttivo.

Tutto ciò perché il tuo software non sia soltanto bello e funzionante secondo le tue specifiche, ma soprattutto “adattivo” alle repentine richieste di business e rilasciato attraverso procedure costantemente monitorate e adeguatamente provate prima di ogni rilascio.