Forum Sicurpas...

Versione completa: 07 - Le prestazioni del software
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Un sistema può essere considerato corretto, affidabile, robusto, ma comunque suscettibile a scarsa usabilità per via delle basse prestazioni, intese chiaramente come utilizzo insufficiente di alcune importanti risorse, come ad esempio il tempo di esecuzione e la memoria occupata. Se infatti, per usufruire di specifiche risposte l’utente deve attendere ulteriore tempo, può verificarsi che il medesimo ritenga il sistema non conforme alle aspettative o addirittura ritenerlo non usabile!
Nonostante la stratosferica velocità delle apparecchiature attuali, con un costo della memoria notevolmente ridotto, pertanto sotto questo profilo egregiamente equipaggiate, è bene osservare come gli elaboratori vengano comunque sfruttati al limite delle possibilità operative, in conseguenza le esigenze di spazio e tempo permangono come un problema di preponderante importanza per numerose classi di applicativi. Si osservino in proposito determinati algoritmi di simulazione su reti di trasmissione dati oppure particolari elaborazioni di natura meteorologica: ancor oggi richiedono svariate ore di tempo – macchina affinché i risultati proposti possano essere classificati come significativi.
Un metodo per valutare con estrema precisione le prestazioni di un programma è dato dalla teoria della complessità del calcolo, questa consente di valutare le prestazioni nel caso medio e peggiore, in termini asintotici riferiti ad alcune grandezze tipiche del programma in esame. Osserviamo un esempio pratico e nel contempo esaustivo: sia dato un programma che effettua la ricerca di un valore all’interno di una sequenza ordinata, la valutazione delle prestazioni può calcolare l’andamento asintotico del tempo di esecuzione in funzione del numero di valori facenti parte della sequenza, nel caso medio o peggiore. E’ ben noto che, nel caso peggiore, indicata come n la lunghezza della sequenza, un algoritmo che scandisce la medesima in modo sequenziale ha un valore asintotico che risulta dell’ordine di n, mentre un algoritmo che esegue una ricerca di tipo binario (la ricerca di questo tipo entra inizialmente a metà della sequenza ordinata e, nel prosieguo della ricerca, entra a metà di una delle sottosequenze restanti, in base al valore precedentemente trovato a metà) ha un elemento asintotico dell’ordine di log2(n).
Il settore della teoria della complessità del calcolo costituisce indubitabilmente uno degli argomenti più vasti e suntuosi dell’informatica teorica ed ha portato ad una valutazione estremamente precisa della complessità per molti algoritmi di tipo fondamentale.
Per taluni problemi la teoria ha dimostrato che non esistono soluzioni algoritmiche di ragionevole efficienza, poiché, ad esempio, la complessità accresce in misura esponenziale con il numero di dati da sottoporre al processo di elaborazione: in virtù di questo i problemi sotto esame divengono facilmente improponibili.
Un metodo consiste nel misurare, via software (software monitors), il tempo di esecuzione o l’occupazione di memoria durante esecuzioni – campione dell’applicativo. Altro modo ancora è dato dall’effettuare tali misure non durante delle esecuzioni reali ma in ambienti simulati.
Un sistema assai utilizzato consiste nella costruzione di un modello del sistema sotto esame e successivamente dedurne le prestazioni operando in modo analitico sul modello medesimo. Ad esempio molti sistemi di calcolo possono essere appositamente modellati come dei sistemi di servizio ai quali accedere mediante code, nel caso specifico, la teoria delle code mette a disposizione metodi analitici da impiegare in analisi di tipo probabilistico. Si tenga presente che i metodi per la valutazione delle prestazioni di un software richiedono una grande preparazione teorica dal punto di vista matematico, pertanto l’ingegnere del software deve avere delle competenze in questo settore, alfine di sfruttarne metodologia e specifiche all’interno della propria attività progettuale.
Abbiamo si qui disquisito di prestazioni in riferimento esclusivo al prodotto, ma è bene sviscerare il discorso anche sulle prestazioni relative al processo. In seguito parleremo di prestazioni del processo all’interno di caratteristiche di qualità più specifiche, come produttività e manutenibilità
.