Marco Papacchini

Advanced Separation of Concerns

«Le nostre menti sono così limitate che non possiamo trattare diversi aspetti contemporaneamente senza entrare in confusione»
(Edsger W. Dijkstra)

La Separazione delle Competenze (Separation of Concerns) è una delle tecniche fondamentali per affronare la complessità. E' molto importante identificare e incapsulare quelle parti del software che risultano essere rilevanti per uno scopo particolare, ciascuna relativa ad una o più competenze (concerns). Il software può essere così scomposto e organizzato in parti più maneggevoli e questo produce una maggiore comprensibilità, riusabilità, scalabilità, mantenibilità.

I linguaggi di programmazione offrono molti meccanismi di astrazione per realizzare tutto ciò. Ma le astrazioni disponibili nella gran parte dei linguaggi che si utilizzano abitualmente (procedure, funzioni, oggetti moduli, interfacce) costituiscono componenti funzionali del sistema (possono essere chiamati a realizzare una funzione). Tuttavia ci sono molte proprietà che non rientrano in questo tipo di decomposizione (ad esempio la persistenza e i vincoli real-time), che sono quindi distribuite tra i vari componenti funzionali. Il codice diviene quindi un'intricata matassa di istruzioni. Questo aggiunge ai sistemi software un'inutile complessità, che aumenta la dipendenza tra le parti funzionali, riduce la comprensibilità, la riusabilità, la scalabilità e la mantenibilità.

L'Advanced Separation of Concerns è un nuovo approccio, che si propone di ridurre le cause che generano codice intricato, migliorando così la qualità del software. La programmazione Aspect-Oriented è uno dei paradigmi principali in un tale contesto.















































© Copyright Marco Papacchini