Windows - Informazioni riservateGestione delle modifiche alla compatibilità

Raymond Chen

UN PROGRAMMA scritto per Windows® 3.1 consentiva di visualizzare il pannello di controllo delle stampanti eseguendo la ricerca della finestra Pannello di controllo e selezionando l'opzione Stampante dal menu File. Nel Pannello di controllo di Windows 95 non era disponibile alcuna opzione Stampante in File. Di conseguenza, quando veniva eseguito in Windows 95, il programma generava un messaggio di errore per il Pannello di controllo. Per risolvere questo problema, in Windows 95 è stata creata una finestra Pannello di controllo da utilizzare come esca per il programma. Quando il programma generava il messaggio per la finestra fasulla, si apriva la cartella Stampanti.

Alcuni ritengono che Windows 3.1 avrebbe dovuto rilevare che il programma formulava ipotesi non corrette sul Pannello di controllo e visualizzare un avviso. In tal modo l'autore del programma avrebbe visto l'avviso e corretto il problema prima del rilascio del prodotto. Rilevare tuttavia lo scopo di un frammento di codice richiede un livello di analisi che spingerebbe ad avventurarsi nel regno dell'intelligenza artificiale. In sostanza Windows 3.1 avrebbe dovuto rilevare che il programma stava eseguendo la funzione strcmp per la cartella Stampanti, analizzare la funzione strcmp specifica e stabilire se era errata. Un processo di questo tipo, inoltre, è applicabile solo al contesto specifico della cartella Stampanti. La serie di controlli di compatibilità eseguiti dal sistema diventerebbe infinita, senza tenere conto dei falsi positivi.

Secondo un'altra obiezione, Windows 95 avrebbe dovuto rispondere al presupposto non corretto su cui era basato il programma con una finestra di dialogo di avviso del tipo "Il programma XYZ sta eseguendo un'operazione non valida". Tuttavia, perché il Pannello di controllo potesse determinare la causa del messaggio di errore, era necessario che l'operazione di rilevamento venisse eseguita nella gestione finestre, creando un fragile legame tra due componenti: Pannello di controllo e gestione finestre. Per di più, anche in questo modo la soluzione è applicabile a un unico caso specifico. Stabilire un legame fragile fra la gestione finestre e tutti gli altri componenti del sistema non è ovviamente una procedura consigliata.

È più semplice visualizzare un messaggio generico in cui non si faccia alcun riferimento al nome dell'applicazione interessata. Anche questa non è tuttavia una soluzione accettabile. Visualizzare un messaggio di errore generico equivale, in realtà, a non visualizzare alcun messaggio. La finestra di dialogo di avviso verrebbe con ogni probabilità ignorata dall'utente, perché non indica alcuna procedura da seguire per la soluzione del problema. Al contrario, la finestra di dialogo verrebbe percepita dagli utenti come una seccatura. Questo è un punto di importanza cruciale. È essenziale che ogni messaggio di errore proponga un azioni da eseguire. La finestra di dialogo diventa utile solo se l'utente la utilizza per apprende il tipo di reazione da adottare.

  

Un altro problema è il punto di rientranza creato dal ciclo della finestra di dialogo. Questo è un problema squisitamente tecnico. Una rientranza imprevista è la principale fonte di errori nella programmazione dell'interfaccia utente. Il Pannello di controllo può inoltre essere in stato modale e la visualizzazione di una finestra di dialogo può causare il crollo della struttura modale.

Per la finestra di dialogo è inoltre necessario accollarsi un ulteriore onere in termini di localizzazione. Se si scrive una finestra di dialogo per ogni modifica volta a garantire la compatibilità, il risultato sarà la presenza di centinaia o migliaia di finestre di dialogo sparse in tutto in sistema. Sarebbe necessario tradurre ciascuna finestra nelle 33 lingue per le quali Windows fornisce il supporto.

Infine, occorre tenere conto della reazione delle aziende concorrenti nel caso di finestre di dialogo di questo tipo generate per uno dei loro prodotti. Potrebbero affermare, ad esempio, che Microsoft incolpa gli altri per i difetti del proprio sistema operativo oppure che Microsoft tenta intenzionalmente di far sembrare scadenti i programmi dei concorrenti. Sono cose che accadono davvero, non certo esagerazioni. Alcune società hanno espresso lamentele al Congresso per una presunta azione intenzionale da parte di Microsoft mirata a ridurre la compatibilità dei rispettivi programmi software. Ulteriori controlli in seguito hanno rivelato che i bug erano nei programmi prodotti da queste società. In tutta franchezza, è meglio correggere gli errori dei loro programmi piuttosto che impantanarsi in un'investigazione congressuale senza fine.

Di conseguenza, nelle versioni correnti di Windows viene visualizzata una finestra di dialogo di avviso solo quando l'incompatibilità tra un programma e Windows potrebbe precluderne il funzionamento o consentirne l'esecuzione solo a prezzo di limitazioni inaccettabili. Anche in questo caso, Microsoft tenta di collaborare con il fornitore per garantire che nessun cliente sia lasciato nei guai. Tutto ciò che desiderano gli utenti è eseguire i programmi sul sistema operativo che acquistano. Se un programma non funziona correttamente, identificare il colpevole è di importanza secondaria per gli utenti: ciò che conta è riuscire a portare a termine il lavoro.

Raymond Chen, The Old New Thing (in inglese), vengono illustrate la storia di Windows e la programmazione di Win32. Attualmente Raymond Chen sta lavorando a un libro dal titolo The Old New Thing (Addison-Wesley, 2007).

© 2008 Microsoft Corporation e CMP Media, LLC. Tutti i diritti riservati. È vietata la riproduzione completa o parziale senza autorizzazione.