Come avvicinarsi al sistema non orogonale?

0

Lavoro su una piattaforma software che è di casa e, per la maggior parte, utilizzata internamente in azienda, ma è distribuita in strutture di tutto il mondo.

Questo sistema funziona su un set specifico di hardware e ha molte dipendenze, per lo più rientrano nelle seguenti categorie:

  1. Driver e librerie hardware OEM.
  2. Librerie personalizzate.
  3. Archivio dati locale e di rete.
  4. Librerie incorporate personalizzate in esecuzione su hardware.

Un team di almeno 15 ingegneri sta sviluppando attivamente il codice che viene creato come parte integrante del sistema.

Questo sistema è stato rilasciato agli utenti come download da un repository git, quindi gli utenti lo avrebbero eseguito all'interno di un IDE in modalità di debug.

Non ci sono test di software reali da eseguire, solo ciò che lo sviluppatore originale ritiene necessario. Non esiste un sistema di build CI.

Recentemente ho letto il libro Pragmatic Programmer e mi sono reso più problematico in questo sistema. Il problema peggiore che vedo in questo sistema è che è altamente non orientazionale. Qualsiasi piccola modifica richiederebbe diverse altre modifiche in diversi progetti.

Per me, questo è schiacciante. Quindi la mia domanda è: dato un sistema così complesso, come si potrebbe affrontare il problema dell'ortogonalità?

    
posta mbadawi23 31.08.2017 - 21:24
fonte

1 risposta

1

L'ortogonalità si riferisce alle diverse dimensioni che vengono indirizzate dai componenti del sistema. In genere, queste dimensioni assomigliano a: archiviazione dei dati, elaborazione dei dati (ad esempio, elaborazione e aggiornamento), presentazione dei dati (GUI e reporting), comunicazioni (trasporto, sincronizzazione), implementazione (server, workstation, terminali dell'utente finale) e così via on.

Crea una serie di dimensioni che rappresentano il tuo prodotto. Ogni dimensione avrà una caratteristica principale e sub-dimensioni, attributi che contribuiscono alla dimensione complessiva. Ad esempio, le comunicazioni come dimensione avranno sub-dimensioni di affidabilità, qualità del servizio, velocità, ecc. Quindi, prendi l'inventario dei componenti che hai suggerito di avere e produci una matrice di impatto - per ogni componente, che impatto ha su ogni dimensione. Un buon foglio di calcolo o un set di fogli di calcolo ti può aiutare con questo.

L'impatto che fornisci in ogni cella identifica l'efficacia con cui il componente risolve quella dimensione, i costi e gli svantaggi.

La mancanza di ortogonalità è indicata in tale matrice mediante l'imbrunimento e il raggruppamento - la "sbavatura" si verifica quando alcuni componenti tendono a dominare più dimensioni. "Clustering" si verifica quando più componenti rispondono a dimensioni specifiche con una sovrapposizione significativa tra i componenti.

Esempio di dimensione dell'archiviazione dei dati

Usiamo la dimensione "archiviazione dati", con sotto-dimensioni di "quantità", "velocità di aggiornamento", "velocità di lettura", "ridondanza", "costo di distribuzione in corso" e "flessibilità" (solo come set di avvio). Usiamo "memoria locale" e "memoria di rete" come componenti.

Per ciascuna sottodimensione forniremo una cifra di merito da 0 a 10, con un numero di dimensioni maggiori e maggiore, che potremo utilizzare a scopo di confronto. Quindi, a partire da "memoria locale":

  • "quantità" - 6 - i singoli computer hanno uno spazio limitato
  • "velocità di aggiornamento" - 9 (10 se si utilizzano gli SSD ovunque)
  • "velocità di lettura" - 9 (10 se si usano gli SSD ovunque)
  • "ridondanza" - 1
  • "costo di implementazione in corso" - 6
  • "flessibilità" - 6

Quindi per "archiviazione di rete":

  • "quantità" - 10 - le farm di dischi possono essere ridimensionate dinamicamente
  • "velocità di aggiornamento" - 4
  • "velocità di lettura" - 6 (a seconda delle comunicazioni)
  • "ridondanza" - 8-10 (a seconda dell'implementazione dello storage di rete)
  • "costo di implementazione in corso" - 9
  • "flessibilità" - 5

Suppongo anche che quando si dice "archiviazione locale" si intenda che ci sono molti meccanismi di archiviazione locali in uso. Ogni meccanismo conterà come un componente ed è necessario valutarli tutti.

Riepilogo

Una volta che hai questo foglio di calcolo, hai un sacco di numeri sulle tue mani e non sarai sicuro di cosa fare con loro. Ci sono molti modi per guardare una cosa del genere. Puoi trattarlo come una matrice di valutazione dei requisiti, oppure puoi creare una mappa di calore da esso.

Quando proponi una soluzione, dovresti essere in grado di produrre una matrice di impatto prima e dopo che ti permetta di descrivere l'impatto complessivo dei tuoi miglioramenti proposti.

D'altra parte, puoi capire cosa ti stanno già dicendo gli esperti, che la soluzione che hanno è "abbastanza buona".

    
risposta data 01.09.2017 - 02:20
fonte

Leggi altre domande sui tag