Введение

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

Уточнение программы

В формальных методах усовершенствование программы — это верифицируемое преобразование абстрактной (высокоуровневой) формальной спецификации в конкретную (низкоуровневую) исполняемую программу. Пошаговое усовершенствование позволяет выполнять этот процесс поэтапно. Логически, усовершенствование обычно связано с импликацией, но могут возникать дополнительные сложности. Прогрессивная детализация бэклога продукта (списка требований) в гибких методологиях разработки программного обеспечения, таких как Scrum, также часто называется усовершенствованием.

Уточнение данных

Уточнение данных используется для преобразования абстрактной модели данных (например, представленной в виде множеств) в реализуемые структуры данных (такие как массивы). Уточнение операции преобразует спецификацию операции над системой в реализуемую программу (например, процедуру). В этом процессе пост-условие может быть усилено и/или предусловие ослаблено. Это уменьшает недетерминированность в спецификации, обычно приводя к полностью детерминированной реализации. Например, x ∈ {1,2,3} (где x – значение переменной x после операции) может быть уточнено до x ∈ {1,2}, затем до x ∈ {1} и реализовано как x := 1. В этом случае реализации x := 2 и x := 3 также были бы допустимы, используя другой путь уточнения. Однако следует избегать уточнения до x ∈ {} (что эквивалентно ложному), поскольку это нереализуемо; невозможно выбрать элемент из пустого множества. Термин "реификация" также иногда используется (введённый Клиффом Джонсом). Альтернативной техникой, когда формальное уточнение невозможно, является ретре́нчмент. Противоположностью уточнению является абстракция.

Рафинированный анализ

Исчисление уточнения — это формальная система (вдохновлённая логикой Хоара), способствующая уточнению программ. Система преобразований FermaT — промышленная реализация уточнения. Метод B также является формальным методом, расширяющим исчисление уточнения языком компонентов: он применялся в промышленных разработках.

Типы очистки

В теории типов, уточняющий тип — это тип, снабжённый предикатом, который предполагается истинным для любого элемента этого типа. Уточняющие типы могут выражать предусловия при использовании в качестве аргументов функций или постусловия при использовании в качестве типов возвращаемых значений: например, тип функции, принимающей натуральные числа и возвращающей натуральные числа, большие 5, может быть записан как. Таким образом, уточняющие типы связаны с поведенческим подтипированием.