Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
11.04.2015
Размер:
849.92 Кб
Скачать
  • Interlocked-композиция (Interlocked composition):

value_expr1 ╫ value_expr2

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

Единицей interlocked-композиции является skip, нулем — chaos. Interlocked-композиция обладает свойствами коммутативности и дистрибутивности по отношению к внутреннему выбору:

value_expr ╫ skip º value_expr

value_expr ╫ chaos º chaos

value_expr1 ╫ value_expr2 º value_expr2 ╫ value_expr1

value_expr1 ╫ ( value_expr2 úù value_expr3 ) º

( value_expr1 ╫ value_expr2 ) úù ( value_expr1 ╫ value_expr3)

Заметим, что в отличие от параллельной композиции ║interlocked-композиция╫не является ассоциативной.

Если выражение value_exprсходится и не вызывает взаимодействия и еслиc1c2, то справедливы следующие две эквивалентности:

x := c1? ╫ c2! value_expr º stop

x := c? ╫ c! value_expr  x := value_expr

Комбинатор interlocked-композиции иллюстрирует различие между внешним и внутренним выборами. Если выраженияvalue_expr1иvalue_expr2сходятся и не вызывают взаимодействия и еслиc1¹c2, то имеют место следующие две эквивалентности:

(x := c1? ▌ c2! value_expr2) ╫ c1! value_expr1 º x := value_expr1

(x := c1? ▌ c2! value_expr2) ╫ c1! value_expr1 º (x := value_expr1) úù stop

  • Последовательная композиция:

value_expr1 ; value_expr2

Второе выражение value_exprпринуждается к выполнению после выполнения первого выраженияvalue_expr. В качестве результата выполнения последовательной композиции возвращается значение второго выраженияvalue_expr.

Единицей последовательной композиции является skip, кроме того, данная композиция ассоциативна и обладает свойством дистрибутивности по первому аргументу по отношению к внутреннему выбору:

value_expr ; skip º value_expr

skip ; value_expr º value_expr

value_expr1 ; (value_expr2 ; value_expr3) º

(value_expr1 ; value_expr2) ; value_expr3

(value_expr1 úù value_expr2) ; value_expr3 º

(value_expr1 ; value_expr3) úù ( value_expr2 ; value_expr3)

Литература для дополнительного чтения

[ADL]http://www.sun.com/960201/cover/language.html

[Eiffel] http://www.eiffel.com

[iContract] R.Kramer. iContract – The Java Design by Contract Tool. Fourth conference on OO technology and systems (COOTS), 1998.

[IFAD] http://www.ifad.dk

[ISPRAS] http://www.ispras.ru/

[Jones] C.B. Jones. Systematic Software Development Using VDM. Prentice Hall International, 1986.

[Larch] J.Guttag et al. The Larch Family of Specification Languages. IEEE Software, Vol. 2, No.5, September 1985, pp.24-36.

[OMG] http://www.omg.org

[RAISE-language] The RAISE Language Group. The RAISE Specification Language. Prentice Hall Europe, 1992.

[RAISE-method] ftp://ftp.iist.unu.edu/pub/RAISE/method_book

[RUP] http://www.rational.com

[VDM_SL] N.Plat, P.G.Larsen. An Overview of the ISO/VDM-SL Standard. SIGPLAN Notes, Vol. 27, No. 8, August 1992.

[VDM++] http://www.csr.ncl.ac.uk/vdm/

[MSC] Message Sequence Charts. ITU recommendation Z.120.

[SDL] Specification and Design Language. ITU recommendation Z.100.

[Z] J.M.Spivey. The Z Notation: A Reference Manual. Prentice Hall, 2nd edition, 1992.

Соседние файлы в папке ТРПО