Qual è la regola della semplicità rispetto alla complessità? [chiuso]

1

Abbiamo un sito estremamente complesso nella sua implementazione. Concettualmente, è semplice: un catalogo basato sul web. Ma l'implementazione è diventata un incubo multistrato.

Qualcuno può indicare una "regola generale" per misurare quando qualcosa è diventato troppo complesso per il lavoro che sta facendo?

    
posta user3120173 07.10.2014 - 03:15
fonte

3 risposte

2

Il rasoio di Einstein si applica per il caso generale , sia che tu stia creando un semplice sito Web o una massiccia applicazione multiuso.

It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience

Probabilmente troverai il modulo semplificato molto più quotabile: Tutto dovrebbe essere reso il più semplice possibile, ma non più semplice.

Quando si crea un nuovo sistema e si ha la scelta tra due modelli di sviluppo, selezionare sempre quello che lascia il sistema più semplice a meno che non si abbia una ragione convincente per introdurre la complessità. Questa ragione convincente dovrebbe essere documentata in modo tale da dare un senso a chiunque erediti il tuo codice.

Sfortunatamente, sembra che il tuo caso specifico sia un sistema esistente che è diventato più complesso nel tempo. Questo ti porta al principio opposto, in particolare Se non è rotto, non aggiustarlo . Un sistema che funziona dovrebbe essere lasciato così com'è, finché non si rompe o una sostituzione è pronta.

La domanda su quando è necessario sostituire o continuare semplicemente è una gestione, e in realtà si riduce al costo in dollari effettivi o opportunità spesi per mantenere il considerevole debito tecnico che hai nel vecchio sistema contro il costo vorrebbe progettare, sviluppare, distribuire, convertire e supportare un nuovo sistema.

    
risposta data 07.10.2014 - 04:58
fonte
2

La regola empirica che utilizzo sempre è quella di codificare quanto basta per soddisfare i requisiti. L'utilizzo di un approccio minimalista garantisce la possibilità di crescere organicamente anziché assumere ciò che l'utente desidera. È ciò che ha reso Google un ottimo sito web secondo me. Mantieni la semplicità

Ora se l'implementazione è troppo complessa, potresti voler utilizzare MVC in modo più efficace

    
risposta data 07.10.2014 - 03:25
fonte
1

Un pezzo di software è una macchina, con pulsanti, tubi, parti mobili e tutto ciò che potrebbe essere parte di un'automobile, o un dispositivo in una fabbrica, eccetto che sono rappresentati in codice. Immagina la tua macchina (il sito web), se presa alla vita come dispositivo fisico. Ci sono parti extra inutili? Troppe manopole (o del tipo sbagliato)? Una strana pila di scarico? Cosa dovrebbe realmente fare?

Ogni sistema è diverso e le cose non possono essere misurate nel modo in cui possono nel mondo fisico, quindi regole, percentuali e formule non sono sempre disponibili per l'ingegnere del software. Tuttavia, alcune linee guida potrebbero aiutarti durante l'analisi del tuo sistema:

  1. Esiste un Wiki interno o domande frequenti con passaggi dettagliati che devono essere eseguiti per aggiungere o modificare funzionalità? Questi passaggi sono davvero necessari e, in tal caso, possono essere automatizzati?

  2. C'è solo una persona che sa come va l'intero sistema? Cosa succede se lascia la compagnia?

  3. Esistono livelli di astrazione che hanno un solo utilizzo reale? (cioè interfacce con una sola implementazione concreta).

  4. Quante trasformazioni di dati avvengono tra gli endpoint del sistema? In alcune applicazioni, è possibile utilizzare JSON su e giù per lo stack senza problemi. Questo non è appropriato in ogni situazione, ma ogni volta che si verifica una trasformazione dei dati, valuta se il livello che richiede la trasformazione stia veramente aggiungendo valore.

  5. Alcune tecnologie impiegate sono obbligatorie per ragioni politiche, di costo o di altra natura non ingegneristica? (es .: "Dobbiamo usare Oracle perché l'amministratore delegato ha detto che è il migliore")

  6. Per l'usabilità, il feedback è stato sollecitato da utenti (o persone che non hanno lavorato al progetto)? Ci sono troppi clic, pagine ingombra?

  7. Se dovessi identificare un'area di "salsa segreta" del codice, quale sarebbe? Questa funzionalità potrebbe essere estratta in un modulo separato che consente ad altri pezzi di interagire con esso in un modo più pulito?

  8. Infine, potresti progettare un sistema più semplice? Crea un prototipo e raccogli feedback dai tuoi colleghi. Questo è il miglior test di tutti.

risposta data 07.10.2014 - 04:37
fonte

Leggi altre domande sui tag