Ці два - лише приклади, як ви сказали. Насправді, всі нефункціональні вимоги такого роду можуть потенційно конфліктувати між собою. У книзі "Будівля еволюційних архітектур" є таблиця приблизно з сотні цих "-літей" (як їх також часто називають).
Це свого роду вправа для архітекторів програмного забезпечення розглянути потенційний конфлікт між будь-якими двома з них. Ви в основному можете вирішити, які з них важливі для ваших проектів, а потім слідкувати за цими конфліктами.
Щоб повернутися до вашого точного прикладу та ознайомитись з визначенням цього терміна robustness
у Вікіпедії:
В інформатиці надійність - це здатність комп'ютерної системи справлятися з помилками під час виконання [1] [2] та справлятися з помилковим введенням даних.
Як видно з визначення, надійність передбачає помилки . З іншого боку, ви хочете мати правильність, що в основному означає відсутність помилок.
Щоб зробити конфлікт більш очевидним, розглянемо просте поле введення. З вимоги щодо правильності найпростіше відхилити будь-який помилковий вклад, зроблений користувачем. Але надійність вимагає, щоб ви могли працювати з цим входом, що може бути не зовсім коректно.
Щоб донести все це до вашої книги: яка прийнятна компромісія зараз? Скажімо, ви пишете наукову програму, в якій користувач може вводити величину напруги, включаючи величину. Тож правильні входи були б на кшталт "10 кВ" або "200 мВ". Допустимі компроміси можуть включати в себе вхідні джерела типу "10 кВ", "10 кВольт" або навіть просто "10" і для коректності відображають їх на дійсне значення напруги. Зауважте, що це все-таки компроміс, а не «найкращий з обох світів». Розглянемо великі регістри та малі регістри: "10 кВ" та "10 КВ" можуть бути нормальними, але "10 мВ" та "10 МВ" можуть бути. Правильність стає сумнівною, оскільки ви не впевнені, чи зараз це мілі, чи мега,