stringtranslate.com

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

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

Мотивация

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

Использует

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

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

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

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

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

Ограничения

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

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

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

Парадигмы

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

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

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

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

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

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

Ссылки

  1. ^ ab Hierons, RM; Bogdanov, K.; Bowen, JP ; Cleaveland, R.; Derrick, J.; Dick, J.; Gheorghe, M.; Harman, M .; Kapoor, K.; Krause, P.; Lüttgen, G.; Simons, AJH; Vilkomir, SA ; Woodward, MR; Zedan, H. (2009). "Использование формальных спецификаций для поддержки тестирования". ACM Computing Surveys . 41 (2): 1. CiteSeerX  10.1.1.144.3320 . doi :10.1145/1459352.1459354. S2CID  10686134.
  2. ^ abcde Gaudel, M.-C. (1994). "Формальные методы спецификации". Труды 16-й Международной конференции по программной инженерии . С. 223–227. doi :10.1109/ICSE.1994.296781. ISBN 978-0-8186-5855-6. S2CID  60740848.
  3. ^ abcdefghijklmno Lamsweerde, AV (2000). "Формальная спецификация". Труды конференции о будущем программной инженерии - ICSE '00 . стр. 147–159. doi :10.1145/336512.336546. ISBN 978-1581132533. S2CID  4657483.
  4. ^ abcd Sommerville, Ian (2009). "Формальная спецификация" (PDF) . Software Engineering . Получено 3 февраля 2013 г.
  5. ^ abc Нумменмаа, Тимо; Тиенсуу, Алекси; Берки, Элени; Микконен, Томми; Куиттинен, Юсси; Култима, Аннакаиса (4 августа 2011 г.). «Поддержка гибкой разработки путем облегчения естественного взаимодействия пользователя с исполняемыми формальными спецификациями». Заметки по разработке программного обеспечения ACM SIGSOFT . 36 (4): 1–10. дои : 10.1145/1988997.2003643. S2CID  2139235.
  6. ^ ab van der Poll, John A.; Paula Kotze (2002). «Какие эвристики проектирования могут повысить полезность формальной спецификации?». Труды Ежегодной исследовательской конференции 2002 года Южноафриканского института компьютерных ученых и информационных технологов по теме «Возможности с помощью технологий» . SAICSIT '02: 179–194. ISBN 9781581135961.
  7. ^ Модель знаний S-Cube: Формальная спецификация

Внешние ссылки