Jump to content

Формальная спецификация

(Перенаправлено из спецификации программы )

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

Мотивация

[ редактировать ]

С каждым десятилетием компьютерные системы становятся все более мощными и, как следствие, оказывают все большее влияние на общество. По этой причине необходимы более совершенные методы, помогающие в разработке и внедрении надежного программного обеспечения. Признанные инженерные дисциплины используют математический анализ в качестве основы для создания и проверки конструкции продукта. Формальные спецификации являются одним из способов достижения этой надежности в разработке программного обеспечения, как когда-то предсказывалось. Другие методы, такие как тестирование , чаще используются для повышения качества кода. [1]

Использование

[ редактировать ]

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

Важно отметить, что формальная спецификация не является реализацией, а скорее может использоваться для разработки реализации . Формальные спецификации описывают, что должна делать система, а не то, как она должна это делать.

Хорошая спецификация должна обладать некоторыми из следующих атрибутов: адекватная, внутренне непротиворечивая, недвусмысленная, полная, удовлетворительная, минимальная. [3]

Хорошая спецификация будет иметь: [3]

  • Конструктивность, управляемость и эволюционируемость
  • Удобство использования
  • Коммуникабельность
  • Мощный и эффективный анализ

Одна из основных причин интереса к формальным спецификациям заключается в том, что они предоставляют возможность проводить доказательства реализаций программного обеспечения. [2] Эти доказательства могут использоваться для подтверждения спецификации, проверки правильности проекта или для доказательства того, что программа удовлетворяет спецификации. [2]

Ограничения

[ редактировать ]

Проект (или реализация) никогда не может быть объявлен «правильным» сам по себе. Оно может быть только «правильным по отношению к заданной спецификации». Правильно ли формальная спецификация описывает решаемую проблему – это отдельный вопрос. Это также трудный вопрос для решения, поскольку в конечном итоге он касается проблемы построения абстрактных формальных представлений неформальной конкретной проблемной области , и такой шаг абстракции не поддается формальному доказательству. Однако можно подтвердить достоверность спецификации, доказав «проблемные» теоремы, касающиеся свойств, которые, как ожидается, будет демонстрировать спецификация. Если они верны, эти теоремы укрепляют понимание спецификатором спецификации и ее связи с базовой проблемной областью. Если нет, то спецификацию, вероятно, необходимо изменить, чтобы лучше отражать понимание предметной области теми, кто участвует в разработке (и реализации) спецификации.

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

  • Время
    • Высокие первоначальные затраты при низкой измеримой прибыли.
  • Гибкость
    • Многие компании-разработчики программного обеспечения используют гибкие методологии , ориентированные на гибкость. Предварительная формальная спецификация всей системы часто воспринимается как нечто противоположное гибкости. Тем не менее, есть некоторые исследования преимуществ использования формальных спецификаций при «гибкой» разработке. [5]
  • Сложность
    • Они требуют высокого уровня математических знаний и аналитических навыков, чтобы понимать и эффективно их применять. [5]
    • Решением этой проблемы могла бы стать разработка инструментов и моделей, которые позволяют реализовать эти методы, но скрывают лежащую в их основе математику. [2] [5]
  • Ограниченная сфера применения [3]
    • Они не отражают свойства, представляющие интерес для всех заинтересованных сторон проекта. [3]
    • Они плохо справляются с определением пользовательских интерфейсов и взаимодействия с пользователем. [4]
  • Не рентабельно
    • Это не совсем так, поскольку, ограничив их использование только основными частями критически важных систем, они доказали свою рентабельность. [4]

Другие ограничения: [3]

  • Изоляция
  • Онтологии низкого уровня
  • Плохое руководство
  • Плохое разделение задач
  • Плохая обратная связь с инструментом

Парадигмы

[ редактировать ]

Методы формальной спецификации уже довольно давно существуют в различных областях и в различных масштабах. [6] Реализации формальных спецификаций будут различаться в зависимости от того, какую систему они пытаются моделировать, как они применяются и на каком этапе жизненного цикла программного обеспечения они были внедрены. [2] Эти типы моделей можно разделить на следующие парадигмы спецификации:

  • Спецификация на основе истории [3]
    • поведение, основанное на истории системы
    • утверждения интерпретируются с течением времени
  • Спецификация на основе состояния [3]
    • поведение, основанное на состояниях системы
    • серия последовательных шагов (например, финансовая транзакция)
    • такие языки, как Z , VDM или B, полагаются на эту парадигму. [3]
  • Спецификация на основе перехода [3]
    • поведение, основанное на переходах из состояния в состояние системы
    • лучше всего использовать с реактивной системой
    • такие языки, как диаграммы состояний, PROMELA, STeP-SPL, RSML или SCR, основаны на этой парадигме. [3]
  • Функциональная спецификация [3]
    • определить систему как структуру математических функций
    • OBJ, ASL, PLUSS, LARCH, HOL или PVS полагаются на эту парадигму. [3]
  • Эксплуатационные характеристики [3]
    • ранние языки, такие как Пейсли , GIST, сети Петри или алгебры процессов, полагаются на эту парадигму. [3]

В дополнение к вышеперечисленным парадигмам существуют способы применения определенных эвристик, которые помогут улучшить создание этих спецификаций. В упомянутой здесь статье лучше всего обсуждаются эвристики, которые следует использовать при разработке спецификации. [6] Они делают это, применяя подход «разделяй и властвуй» .

Программные инструменты

[ редактировать ]

Нотация Z является примером ведущего языка формальных спецификаций . Другие включают язык спецификации (VDM-SL) Венского метода разработки и абстрактную машинную нотацию (AMN) B-метода . В области веб-сервисов формальная спецификация часто используется для описания нефункциональных свойств. [7] ( Качество обслуживания веб-сервисов ).

Некоторые инструменты: [4]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Хиеронс, Р.М.; Богданов К.; Боуэн, Япония ; Кливленд, Р.; Деррик, Дж.; Дик, Дж.; Георге, М.; Харман, М .; Капур, К.; Краузе, П.; Люттген, Г.; Саймонс, AJH; Вилкомир, SA ; Вудворд, MR; Зедан, Х. (2009). «Использование формальных спецификаций для поддержки тестирования». Обзоры вычислительной техники ACM . 41 (2): 1. CiteSeerX   10.1.1.144.3320 . дои : 10.1145/1459352.1459354 . S2CID   10686134 .
  2. ^ Перейти обратно: а б с д и Годель, М.-К. (1994). «Методы формальной спецификации». Материалы 16-й Международной конференции по программной инженерии . стр. 223–227. дои : 10.1109/ICSE.1994.296781 . ISBN  978-0-8186-5855-6 . S2CID   60740848 .
  3. ^ Перейти обратно: а б с д и ж г час я дж к л м н тот Ламсверде, А.В. (2000). «Формальная спецификация». Материалы конференции о будущем программной инженерии - ICSE '00 . стр. 147–159. дои : 10.1145/336512.336546 . ISBN  978-1581132533 . S2CID   4657483 .
  4. ^ Перейти обратно: а б с д Соммервилл, Ян (2009). «Формальная спецификация» (PDF) . Программная инженерия . Проверено 3 февраля 2013 г.
  5. ^ Перейти обратно: а б с Нумменмаа, Тимо; Тиенсуу, Алекси; Берки, Элени; Микконен, Томми; Куиттинен, Юсси; Култима, Аннакаиса (4 августа 2011 г.). «Поддержка гибкой разработки путем облегчения естественного взаимодействия пользователей с исполняемыми формальными спецификациями». Заметки по разработке программного обеспечения ACM SIGSOFT . 36 (4): 1–10. дои : 10.1145/1988997.2003643 . S2CID   2139235 .
  6. ^ Перейти обратно: а б ван дер Полл, Джон А.; Паула Коце (2002). «Какие эвристики проектирования могут повысить полезность формальной спецификации?» . Материалы ежегодной исследовательской конференции Южноафриканского института компьютерных наук и информационных технологов 2002 года по вопросам расширения возможностей посредством технологий . SAICSIT '02: 179–194. ISBN  9781581135961 .
  7. ^ Модель знаний S-Cube: формальная спецификация
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ddb6a332bea1767d3c5aeb3a32b288da__1716735120
URL1:https://arc.ask3.ru/arc/aa/dd/da/ddb6a332bea1767d3c5aeb3a32b288da.html
Заголовок, (Title) документа по адресу, URL1:
Formal specification - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)