Abbiamo una dimostrazione pratica del concetto che implementa gli scenari del giorno di sole, ma dobbiamo iniziare a gestire i percorsi delle eccezioni. Siamo appaltatori e dobbiamo mettere insieme stime dettagliate per discutere questa fase successiva con il cliente prima di rinnovare il contratto.
Dettagli
Abbiamo impiegato 10-20 mesi di sviluppo per implementare la libreria proof of concept in JavaScript. Tocca le API del browser, le librerie di terze parti e si connette al software server proprietario del nostro cliente per la comunicazione bidirezionale in tempo reale. Attualmente questa libreria funziona dietro un'interfaccia utente HTML + JavaScript scritta dal nostro cliente. Nel prossimo futuro rilasceranno anche questa libreria come sdk.
Fino ad ora, ci siamo concentrati principalmente su scenari di giornata di sole per mettere insieme la dimostrazione del concetto. Ora che è terminato, dobbiamo portare la biblioteca alla maturità e supportare gli scenari dei giorni di pioggia nelle diverse aree della biblioteca, tra cui:
- dati errati forniti tramite l'API dagli utenti sdk
- percorsi di errore nel nostro codice
- risposte di errori legali dall'API del browser e da librerie di terze parti
- problemi di rete (jitter, limiti di larghezza di banda, disconnessione temporanea, ecc.)
Domanda: quale processo possiamo seguire per generare un elenco di attività ragionevoli di scenari di giorni piovosi che non dobbiamo ma sostenere. In altre parole: Come posso capire cosa manca tra (1) la mia dimostrazione di applicazione concettuale e (2) un'ipotetica applicazione matura e robusta che implementa le stesse funzionalità
Mi interessano anche suggerimenti di tipo retrospettivo su ciò che avremmo potuto fare mentre implementavamo la dimostrazione del concetto per rendere più facile la descrizione di questo lavoro.
Cosa farei nel vuoto
Senza un consiglio migliore, eseguirò un'analisi statica del codice che ho scritto, e le specifiche per le librerie di terze parti e le apis dei browser e identificherò possibili casi di errore. Iniziando dal tutto, lo dividerei in componenti, sottocomponenti, ecc. Quando avrò raggiunto una granularità sufficiente, eseguirò l'analisi statica o analizzerò le specifiche e specificherò i modi in cui potrebbe fallire (output di errore legale, casi di eccezione ragionevole, eccetera.). Quindi vorrei aggregare le modalità di errore per ciascun sottocomponente, quindi componente e ritorno all'intero e vorrei avere un elenco di scenari di giorni piovosi che ho bisogno di supportare.
Problemi con questo:
- come posso evitare di perdere qualcosa di importante?
- c'è un modo per evitare di analizzare codice e specifiche riga per riga?
- avremo bisogno di dare la priorità a questi scenari di giorni di pioggia - come divideremo la lista in più importanti e meno importanti? (probabilità che si verifichi?)
- come aggregare l'elenco di particolari casi di errore per particolari metodi / apis in qualcosa di abbastanza alto da consentire al progetto di prendere decisioni su cosa / quanto / quando? (Questo è strettamente correlato all'ultima domanda sulla definizione delle priorità)
Aggiornamento: ho fatto un FMEA (Analisi degli effetti in modalità fallimento) che è stato utile per analizzare i confini del sistema: gli scenari di giorni piovosi relativi al networking, i consumatori dell'API pubblica e (in misura minore) gli errori a livello di API di terze parti. Il processo FMEA suggerisce di utilizzare un team eterogeneo per generare l'elenco dei possibili errori, il che sarebbe di aiuto con il mio numero 1 (come evitare di perdere qualcosa di importante). Si occupa anche di # 3 (come stabilire le priorità) fornendo una metrica di priorità basata sulla gravità di un errore, sulla probabilità che si verifichi e sulla probabilità che venga rilevata. Non mi ha aiutato (a questo punto) a trovare una lista di scenari per il giorno piovoso per il codice che abbiamo scritto, e non ha risolto i miei problemi n. 2 e n.