stringtranslate.com

Уточнение (вычисление)

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

Усовершенствование программы

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

Последовательная своевременная подготовка бэклога продукта (списка требований) в гибких подходах к разработке программного обеспечения, таких как Scrum , также часто описывается как уточнение. [1]

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

Уточнение данных используется для преобразования абстрактной модели данных ( например , в терминах множеств ) в реализуемые структуры данных (например, массивы ). [ требуется ссылка ] Уточнение операций преобразует спецификацию операции в системе в реализуемую программу (например, процедуру ). Постусловие может быть усилено и/или предусловие ослаблено в этом процессе. Это уменьшает любой недетерминизм в спецификации, как правило, до полностью детерминированной реализации.

Например, x ∈ {1,2,3} (где x — значение переменной x после операции) можно уточнить до x ∈ {1,2}, затем x ∈ {1} и реализовать как x  := 1. Реализации x  := 2 и x  := 3 были бы одинаково приемлемы в этом случае, используя другой маршрут для уточнения. Однако мы должны быть осторожны, чтобы не уточнить до x ∈ {} (эквивалентно false ), поскольку это нереализуемо; невозможно выбрать член из пустого множества .

Термин «реификация» также иногда используется (введен Клиффом Джонсом ). Сокращение — это альтернативный метод, когда формальная детализация невозможна. Противоположностью детализации является абстракция .

Уточненное исчисление

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

Типы уточнений

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

Смотрите также

Ссылки

  1. ^ Чо, Л. (2009). «Принятие Agile-культуры в пути команды по пользовательскому опыту». Agile Conference 2009. С. 416–421. doi :10.1109/AGILE.2009.76. ISBN 978-0-7695-3768-9. S2CID  38580329.
  2. ^ Freeman, T.; Pfenning, F. (1991). "Типы уточнения для ML" (PDF) . Труды конференции ACM по проектированию и реализации языков программирования . стр. 268–277. doi :10.1145/113445.113468.
  3. ^ Хаяши, С. (1993). «Логика типов уточнения». Труды семинара по типам для доказательств и программ . С. 157–172. CiteSeerX 10.1.1.38.6346 . doi :10.1007/3-540-58085-9_74. 
  4. ^ Денни, Э. (1998). «Типы уточнения для спецификации». Труды Международной конференции IFIP по концепциям и методам программирования . Том 125. Чапман и Холл. С. 148–166. CiteSeerX 10.1.1.22.4988 .