Diagramma per mostrare la responsabilità del codice

7

Qualcuno sa come descrivere visivamente i modi in cui il flusso di controllo nel codice passa tra il codice prodotto da diversi gruppi e in che modo influisce sulla quantità di codice che deve essere attentamente scritto / rivisto / testato per le proprietà del sistema da tenere ?

Quello che sto cercando di aiutare le persone a visualizzare sono gli argomenti del modulo:

  1. Per la proprietà P da tenere, n d gli sviluppatori devono scrivere il codice dell'applicazione, C a , senza alcuni tipi di errori, e n m i manutentori devono assicurarsi che il codice continui a non avere questo tipo di errori nel corso della vita del progetto.
  2. Potremmo ridurre il tasso di errore educando gli sviluppatori n d e n m .
  3. Per essere sicuri che la proprietà sia valida, gli specialisti n s devono ancora testare o controllare | C a | linee di codice e continua a testare / verificare le modifiche con n m manutentori
  4. In alternativa, potremmo essere sicuri che P valuti se tutti i percorsi di codice che potrebbero violare P passano attraverso il codice utensile, C t , scritto dai nostri specialisti.
  5. Nel nostro caso,
      I
    • test suite da soli non possono dare fiducia a P
    • n d »n s
    • n m > n s
    • | C a | »| C t |
    quindi scrivere e mantenere C t è economico, libera i nostri sviluppatori a preoccuparsi di altre cose e riduce l'impegno educativo continuo dei nostri specialisti.

o quelle condizioni non valgono, quindi è preferibile concentrarsi su istruzione e test.

Esempio 1

Come esempio concreto, supponiamo di voler garantire che il nostro servizio Web produca solo un output JSON valido.

Il nostro servizio web offre diversi operatori di query e mutazione che possono essere composti in modi interessanti.

Potremmo provare a educare tutti coloro che mantengono quelle operazioni sulla sintassi JSON, l'importanza della conformità e le librerie disponibili in modo che quando scrivono su un buffer di output, ogni possibile sequenza di appendimenti risulti in JSON sintatticamente valido.

In alternativa, non esporre un handle del flusso di output al codice dell'applicazione ed esporre invece un sink JSON in modo che ogni percorso del codice che scrive una risposta sia canalizzato attraverso un sink JSON scritto e gestito da uno specialista che conosce JSON la sintassi e può utilizzare librerie ben scritte per produrre solo output validi.

Esempio 2

Dobbiamo assicurarci che un servizio che riceve un URL da una fonte non attendibile e cerchi di recuperarne il contenuto non finisca per rivelare file sensibili dal file system, come file:///etc/passwd .

Se esiste un unico modo standard con cui gli sviluppatori che hanno familiarità con le librerie del linguaggio dell'applicazione utilizzeranno per recuperare gli URL, che ha l'accesso al file system disattivato per impostazione predefinita, quindi semplicemente istruendo gli sviluppatori sul meccanismo standard e testando il controllo dei file fallisce per alcuni input, sarà probabilmente sufficiente.

    
posta Mike Samuel 12.06.2014 - 20:02
fonte

1 risposta

1

Potrebbero esserci modi migliori per farlo, ma il mio primo tentativo sarebbe quello di usare alcuni diagrammi di sequenza e metti i limiti (come alt o opt) attorno alle chiamate in diverse fonti di codice. La maggior parte degli strumenti UML che ho usato ti permetteranno di creare confini arbitrari come alt, opt, loop. Quindi puoi avere "oss" "lib1" "lib2" ecc.

Una volta che lo stack delle chiamate è stato suddiviso in diversi bucket, è possibile annotare le sezioni con metriche del codice come numero di righe di codice o complessità ciclomatica in ppt in modo da mostrare chi ha bisogno di mostrare dove si trova l'allocazione del codice.

    
risposta data 12.07.2017 - 22:54
fonte

Leggi altre domande sui tag