Come sapere quando smettere di progettare? [duplicare]

5

In primo luogo alcuni sfondi, sono internato in un'azienda che produce hardware per l'elaborazione parallela.

Al momento stiamo elaborando il progetto per un componente del nostro driver che dovrebbe evolvere nel corso di alcune generazioni dei nostri prodotti. Il prossimo gen è ancora in fase di simulazione e le specifiche che abbiamo ora potrebbero cambiare quando avremo effettivamente l'hardware. Il nostro modulo dovrebbe funzionare sulla generazione attuale e su tutte le future generazioni.

Ho sempre avuto l'impressione che un progetto debba essere il più possibile a prova di futuro. In questo caso, sappiamo esattamente cosa fare per l'attuale hardware di gen, ma non sono chiari su alcuni fronti per il prossimo gen.

Quindi la mia domanda è:

Quando sai che dovresti smettere di progettare per il futuro e mantenerlo semplice e corretto per ciò che sai in questo momento?

    
posta BeyondSora 22.01.2014 - 19:31
fonte

2 risposte

13

Segui il principio YAGNI e utilizza le migliori pratiche di progettazione sensate.

Nonostante la reputazione che gli sviluppatori di software hanno tra il pubblico in generale di essere al comando di una qualche forma di magia nera, gli sviluppatori di software non hanno ancora capacità predittive che vanno oltre quelle di detto pubblico in generale. Quindi rimani con quello che sai. Raccogli i requisiti, pianifica il tuo lavoro, agisci di conseguenza.

Se uno dei requisiti è "L'applicazione deve essere a prova di futuro", beh, non è davvero un requisito, vero? Non è nemmeno una caratteristica; è solo un desiderio. Prendi quel desiderio e scomporlo finché non diventa un requisito testabile.

Esempio

The application shall have a plug-in, extensible interface, with the following specifications: [listed here]

Questo è un requisito verificabile.

    
risposta data 22.01.2014 - 19:38
fonte
4

Tipicamente progettiamo questo software a strati, ognuno con la sua interfaccia. Ogni livello incapsula quello sotto. I livelli possono essere molto sottili e, a seconda del linguaggio utilizzato, possono essere compilati in codice senza costi di runtime (ad es. Macro C o asm o modelli C ++).

Il livello più esterno o più esterno presenta l'interfaccia che i tuoi clienti utilizzano per interagire con il tuo prodotto e modifica il meno possibile. Gli strati interni affrontano i problemi di implementazione e cambiano ogni volta che devono.

Come progettare per il futuro? Il team dell'hardware deve avere una sorta di road map per dove sta andando. Consulta con loro. Qualunque sia l'estensione della loro pianificazione futura (che non può essere garantita di rimanere invariata) è il limite della tua pianificazione futura.

La chiave è limitare i costi dei cambiamenti futuri, e questo è ciò che fanno questi livelli di astrazione. Lo strato corrente più basso affronterà la simulazione corrente. Se la simulazione cambia, anche quello strato inferiore sarà, ma si spera non lo strato successivo.

Come sapere quando smettere di progettare? Quando hai un design che risolve la variazione futura conosciuta .

    
risposta data 23.01.2014 - 01:37
fonte

Leggi altre domande sui tag