Blog2018-07-26T01:39:21+02:00

Testing: appunti per non sviluppatori

Far funzionare il software è solo metà del lavoro. Un buon software non va valutato solo sulla base del suo funzionamento ma anche sulla capacità dello stesso di adattarsi ai cambiamenti. Nel corso della vita di un software il cliente chiederà di apportare diverse modifiche a quanto realizzato in origine. Ignorare questo fatto porta a realizzare prodotti che nel medio-lungo periodo diventeranno sempre più instabili e difficili da manutenere. In alcuni casi il livello di entropia nel codice diventa tale per cui si è costretti a riprogettare il sistema da zero. E’ pertanto necessario attuare delle strategie al fine di ridurre al minimo i costi di manutenzione. Il testing è una delle tecniche che stanno alla base della progettazione di sistemi che ambiscono ad essere stabili, robusti, facilmente manutenibili e che mirano a durare nel tempo. Benefici del testing I test inducono a scrivere codice più chiaro e comprensibile. Un [...]

By |Giugno 18th, 2019|Categories: Testing|Tags: |0 Comments

Anemic Domain Model

TL;DR: le tue classi model sono un insieme di proprietà private e metodi getter e setter? Probabilmente stai implementando degli degli Anemic Domain Model. Questo modo di modellare la realtà si scontra con i principi base della programmazione ad oggetti ed è considerato un anti-pattern. In questo articolo ti spiegherò il perché e ti fornirò una valida alternativa. Sono ormai diversi anni che mi occupo di sviluppo software e una delle cose in cui mi sono imbattuto in tantissimi progetti è stato l'Anemic Domain Model. Stranamente questo modo di strutturare il Model è presente in libri, tutorial e sembra essere considerato come l'unica scelta da molti sviluppatori. Personalmente non mi ha mai convinto e ho sempre cercato un'alternativa. La svolta è arrivata quando ho iniziato ad interessarmi di Domain Driven Design (da qui in avanti DDD) e sono venuto a conoscenza del fatto che all'Anemic Domain Model si contrappone il [...]

By |Marzo 30th, 2019|Categories: Software engineering|Tags: |0 Comments

Autenticazione tramite JWT in Symfony

In questo periodo sto lavorando su un progetto basato su Symfony 4. Il back-end consiste di una serie di API RESTful mentre il front-end è realizzato in Vue con alcune pagine renderizzate partendo da template Twig. In brevissimo tempo si è posto il problema dell'autenticazione. Il team di back-end developer aveva l'esigenza che le API fossero stateless in accordo con le specifiche dell'architettura REST. Tuttavia il sistema di autenticazione di default di Symfony è basato sul session cookie di PHP e questo fa si che il requisito della statelessness venga meno. Inizialmente si è deciso di implementare un doppio sistema di autenticazione: uno basato sulla PHP session per i controller web e uno basato su JWT (JSON Web Tokens) mediante l'impiego del LexikJWTAuthenticationBundle per le API. In brevissimo tempo i front-end developer ci hanno informati della difficoltà di gestire un doppio sistema di autenticazione chiedendoci di porre rimedio. Una [...]

By |Marzo 20th, 2019|Categories: PHP, Symfony|Tags: , , |0 Comments