Concorrenza robustezza vs correttezza [chiusa]

18

Lettura "Codice completo 2" in un paragrafo Qualità dei requisiti Ho trovato questo:

Are acceptable trade-offs between competing attributes specified — for example, between robustness and correctness?

(questo sopra è un punto di un ampio elenco di spunta per verificare la qualità dei requisiti)

Quindi ho trovato molte definizioni di Robustezza e Correttezza, nel web, nei libri accademici, ecc.

es. :

In "Costruzione di software orientato agli oggetti, seconda edizione, Bertrand Meyer, Prentice-Hall, 1997" libro:

  • Correctness: The degree to which a system is free from [defects] in its specification, design, and implementation.
  • Robustness: The degree to which a system continues to function in the presence of invalid inputs or stressful environmental conditions.

Nonostante ciò, non è chiaro perché e in quali situazioni questi due potrebbero essere in conflitto.

La mia domanda è: perché questi due attributi sono in competizione ?

    
posta overcomer 07.03.2018 - 09:22
fonte

3 risposte

36

Ci sono molte situazioni in cui questi due potrebbero essere in conflitto. Ad esempio, la robustezza può comportare la resilienza sotto carico pesante. Se una risposta approssimativa (cioè errata) a una richiesta può essere calcolata molto più rapidamente di una risposta esatta (corretta), è importante sapere se il sistema dovrebbe fornire un risultato approssimativo, o fallire nel consegnare del tutto.

    
risposta data 07.03.2018 - 09:25
fonte
18

Questi due sono solo esempi come hai detto tu. In effetti, tutti i requisiti non funzionali di questo tipo possono potenzialmente entrare in conflitto l'uno con l'altro. Nel libro "Building Evolutionary Architectures" c'è una tabella di circa un centinaio di queste "abilità" (come spesso vengono anche chiamate).

È una specie di esercizio per gli architetti del software considerare il potenziale conflitto tra due di questi. Puoi sostanzialmente decidere quali di questi sono importanti per i tuoi progetti, quindi tieni traccia di questi conflitti.

Per tornare al tuo esempio preciso e dare un'occhiata alla definizione del termine robustness in Wikipedia:

In computer science, robustness is the ability of a computer system to cope with errors during execution[1][2] and cope with erroneous input.

Come puoi vedere dalla definizione, la robustezza implica errori . D'altra parte, vuoi avere la correttezza, che in pratica significa l'assenza di errori.

Per rendere il conflitto più evidente, consideriamo un semplice campo di input. Dal requisito di correttezza è più facile che qualsiasi input errato da parte dell'utente venga rifiutato. Ma la robustezza richiede di essere in grado di lavorare con questo input, che potrebbe non essere del tutto corretto.

Per attirare l'attenzione sul tuo libro: qual è il compromesso accettabile adesso? Diciamo che scrivi un'applicazione scientifica in cui l'utente può inserire una quantità di tensione, inclusa la magnitudine. Quindi gli ingressi corretti sarebbero qualcosa come "10 kV" o "200 mV". I trade-off accettabili possono includere input come "10kV", "10kVolt", o anche solo "10" e per correttezza mapparli ad un valore di tensione valido. Si noti che questo è ancora un trade-off e non un "best-of-both-worlds" cosa. Considerare maiuscole e minuscole: "10 kV" e "10 KV" potrebbero andare bene, ma "10 mV" e "10 MV" potrebbero non esserlo. La correttezza diventa discutibile in quanto non si è sicuri che sia milli o mega ora, ma se insisti sul riquadro superiore / inferiore destro perdi di nuovo in robustezza, perché alcuni input errati non funzioneranno.

    
risposta data 07.03.2018 - 09:50
fonte
5

Un esempio pratico è XHTML contro HTML .

  • I browser (in modalità rigorosa) rifiutano XHTML con errori di sintassi. Ciò garantisce che all'utente non vengano visualizzati risultati errati e aiuti a trovare gli errori.
  • I browser tentano di continuare ad analizzare il codice HTML anche se presenta problemi molto evidenti. Questo spesso consente all'utente di visualizzare la pagina, anche se i contenuti sono leggermente alterati.

Quindi XHTML punta alla correttezza, mentre l'HTML punta alla robustezza. Attualmente l'HTML sembra più popolare, ma entrambe le parti hanno buoni argomenti.

    
risposta data 07.03.2018 - 20:42
fonte