In quale fase del ciclo di sviluppo di un software dovrei progettare il mio algoritmo di calcolo?

5

Nella progettazione del software, di solito ci occupiamo dei diagrammi UML e della progettazione dell'architettura.

Ma nel caso di un software di analisi dei dati, dobbiamo prestare attenzione agli algoritmi di progettazione e cose del genere. Si consideri il caso di un software di rilevamento del volto che ha bisogno di intelligenza artificiale. Dobbiamo progettare esplicitamente una parte del software AI nella progettazione del software?

P.S: Il mio manager dice che deve essere chiaro nello studio di fattibilità ed essere così chiaro che potremmo progettarlo in fasi di progettazione. È corretto?

    
posta Mehraban 12.03.2014 - 08:26
fonte

2 risposte

2

Dalla mia esperienza, è meglio iniziare con l'algoritmo stesso. Analizzare l'algoritmo, scoprire quali flussi di dati richiede, quali strutture di dati dovrebbero essere utilizzate, ecc. Questo approccio consente di costruire il software attorno alla parte più complessa di esso e quindi prevedere e gestire i rischi ad esso associati. Ciò contribuirà anche a rendere l'implementazione più facile e più ottimale.

Se un algoritmo si trova in un modulo separato [indipendente], tale analisi potrebbe essere eseguita dopo lo sviluppo dell'architettura di alto livello. Tuttavia, l'analisi deve essere completata prima di prendere qualsiasi decisione riguardante l'implementazione.

Nota a margine: prestare particolare attenzione alla scelta delle strutture di dati con cui l'algoritmo lavorerà. Le strutture dati possono nascondere parte della complessità al loro interno, rendendo l'implementazione più gestibile.

    
risposta data 12.03.2014 - 10:21
fonte
2

Tutte le parti algoritmiche, specialmente quelle di maggiore complessità, dovrebbero essere ben incapsulate dietro un'API appositamente progettata. Ciò aumenterà drasticamente il disaccoppiamento, che è uno dei principi fondamentali del design, IMHO.

Di conseguenza, l'algoritmo deve essere progettato come dettagliato secondo necessità, in modo tale che questa API diventi una forma abbastanza chiara da inserirla nell'immagine complessiva e ulteriori modifiche a tale API saranno ridotte al minimo.

Vuoi minimizzare il rischio riducendo gli sforzi iniziali, che è più o meno un compromesso in cui devi trovare il punto di equilibrio ottimale. Non è possibile eliminare completamente il rischio di ulteriori cambiamenti API in quella fase, ma puoi sforzarti di evitare errori evitabili e ridurre l'impatto di tali modifiche il più possibile.

    
risposta data 12.03.2014 - 10:42
fonte

Leggi altre domande sui tag