Материал предоставлен https://it.rfei.ru

Корректность

Корректность — это способность программы выполнять задачи так, как они определены спецификацией.

Корректность является важнейшим качеством. Если система не делает того, что она должна делать, то все остальное — ее быстродействие, хороший пользовательский интерфейс — не имеет особого значения.

На практике даже первый шаг к обеспечению корректности уже труден: необходимо в точной форме специфицировать технические требования к системе, что само по себе является тяжелой задачей.

Многоуровневая архитектура

Методы обеспечения корректности условны. Серьезная программная система, даже небольшая по нынешним меркам, использует столь многое, что невозможно гарантировать ее корректность, работая со всеми компонентами на одном уровне. Необходим многоуровневый подход.

Разделение ответственности

В условном подходе к корректности мы заботимся только о том, чтобы обеспечить корректность каждого уровня, основываясь на предположении, что нижележащие уровни корректны.

Это единственно реалистичный подход, поскольку он позволяет разделить проблему и на каждой ступени сконцентрироваться на ограниченном круге задач. Нельзя проверить, что программа на языке высокого уровня корректна, если не предположить, что используемый компилятор корректно реализует язык. Это не слепое доверие компилятору, а разделение проблемы на две: проверка корректности компилятора и проверка корректности программы относительно семантики языка.

Таким образом, многоуровневый подход к корректности притворяет в жизнь основополагающий принцип инженерной деятельности разделения ответственности.

Многие практики полагают, что достижение корректности связано с тестированием и исправлением ошибок. Современные подходы к конструированию программного обеспечения, в том числе предлагаемые для изучения в данном курсе, более амбициозны: они направлены на построение программных продуктов, корректных с самого начала.

Внешние и внутренние факторыУстойчивость