“Bad Coding/Designing Practices”: Non individuare e non considerare per tempo le risorse transazionali operanti nel nostro sistema software

Bad Coding/Designing Practices, Ingegneria del Software 0 21

Subject
Transaction Management

Bad Practice
Non individuare e non considerare per tempo le risorse transazionali operanti nel nostro sistema software 

Explanation
In fase di design del software non vengono individuate e considerate opportunamente le risorse transazionali in gioco (DataBase, Queue, FileSystem, etc.) nel sistema software da sviluppare

Problem
La non dovuta considerazione delle risorse transazionali in gioco sul nostro sistema può portare a non gestire correttamente e opportunamente le eventuali  “transazioni distribuite” (che quindi non vengono esplicitate). Ciò potrebbe portare a situazioni di “inconsistenza” dello stato del sistema stesso durante il suo funzionamento, con conseguenti anomalie funzionali di grave severità. Tali problemi, in genere, non si manifestano in condizioni “normali” di funzionamento complessivo del sistema, ma in situazioni problematiche (ad esempio in presenza di malfunzionamenti di componenti infrastrutturali, di timeout nell’esecuzione di metodi, etc.)

Fix
Considerare e valutare le interazioni/collaborazioni delle risorse transazionali presenti sul nostro sistema, possibilmente in fase di design, in modo da progettare e scrivere opportunamente i vari moduli software. Adottare gli strumenti adeguati per la gestione corretta della transazioni distribuite, come i “Transaction Manager” abilitati alla  gestione del commit a più fasi (es. Two Phase Commit). I più moderni framework applicativi ne sono dotati (JEE, .NET). Nel caso non si dovesse disporre di tali strumenti, si può mettere in piedi una gestione “applicativa” della transazione distribuita, costruendo meccanismi di “compensazione applicativa” (undo) delle varie transazioni in gioco.

Note
Nei limiti del possibile, sarebbe meglio evitare di doversi trovare nell’obbligo di gestire transazioni distribuite (perchè comunque rimangono di complessa gestione, anche se tale gestione è spesso completamente demandata al middleware sottostante).

Scope
Linguaggi/framework abilitati alla gestione delle transazioni, Componenti transazionali

About the author / 

Salvatore Di Loro

Related Posts

Leave a reply

Your email address will not be published. Required fields are marked *

Instagram

Flickr