π Π‘Π½Π°ΡΠ°Π»Π° ΠΊΠΎΡΠΎΡΠΊΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ:
MOF (Meta-Object Facility) β ΡΡΠΎ ΠΌΠ΅ΡΠ°ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, UML). Π MOF ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ, Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π΄Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· OCL).
Lean/Coq β ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²Π° ΡΠ΅ΠΎΡΠ΅ΠΌ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΡΠΈΠΏΠ°Ρ
. Π Π½ΠΈΡ
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΈΠΏΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
1οΈβ£ Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ (MOF) ΠΈ Π² ΡΠ·ΡΠΊΠ°Ρ
ΡΠΈΠΏΠ° Lean/Coq
Π§ΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ MOF?
MOF ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ:
Π§Π΅ΡΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
(ΠΊΠ»Π°ΡΡΡ, Π°ΡΡΠΈΠ±ΡΡΡ, ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ).
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ (OCL).
ΠΠΎ MOF ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΈΠΏΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ Π² MOF (ΡΠΏΡΠΎΡΡΠ½Π½ΡΠΉ):
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΠΌΠ΅ΡΠ°ΠΌΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²:
Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ Β«ΠΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΒ».
Π£ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° (ΠΈΠΌΡ, ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ, Π·Π°Π΄Π°ΡΠΈ).
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠΉΒ») ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π½Π° ΡΠ·ΡΠΊΠ°Ρ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ (OCL).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, MOF:
Π―Π·ΡΠΊ Π΄Π°Π½Π½ΡΡ
: βοΈ Π΄Π°
Π―Π·ΡΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ: Π½Π΅Ρ, Π½ΡΠΆΠ΅Π½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ (OCL).
Π§ΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Lean/Coq?
Lean ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ°ΠΆΠ°ΡΡ:
Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
(ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ).
Π£ΡΠ»ΠΎΠ²ΠΈΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΈΠΏΠΎΠ².
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²Π° ΡΡΠΈΡ
ΡΡΠ»ΠΎΠ²ΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠ΅ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² Lean:
$$
structure Task :=
(name : string)
(responsible : string)
structure BusinessProcess (n : β) :=
(tasks : vector Task n)
(proof_nonempty : n > 0) -- ΠΠ°ΡΠ°Π½ΡΠΈΡ,
ΡΡΠΎ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΅ΡΡΡ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Π° Π·Π°Π΄Π°ΡΠ°
$$
ΠΠ΄Π΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΠΈΠΏΡ Π΄Π°ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡ: Π½Π΅Π»ΡΠ·Ρ Π΄Π°ΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π±Π΅Π· Π·Π°Π΄Π°Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π·Π°ΡΠΈΡΠΎ ΠΏΡΡΠΌΠΎ Π² ΡΠΈΠΏ.
π₯ Π ΡΡΠΌ ΡΠ°Π·Π½ΠΈΡΠ° Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ?

Lean ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΡΠΈΠΏΡ, ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ. MOF ΠΏΡΠΎΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
2οΈβ£ ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Lean/Coq ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ·ΡΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ?
ΠΠΎΡΠΎΡΠΊΠΈΠΉ ΠΎΡΠ²Π΅Ρ: ΠΠ°, ΡΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
Π Π°Π·Π²ΡΡΠ½ΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ:
Π ΡΠ΅ΠΊΡΡΠΈΡ
ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°Ρ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, UML + OCL):
ΠΡΠΎ Π΄Π²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ, ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π½Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ. ΠΡΠΎ Π²Π΅Π΄ΡΡ ΠΊ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΡΠ°ΡΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Lean/Coq, ΡΠΎ:
Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½Ρ Π΅Π΄ΠΈΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
ΠΠ΅ΡΠ°ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅ΠΎΡΠ΄Π΅Π»ΠΈΠΌΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°. Π’ΠΈΠΏΡ ΡΠ°ΠΌΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Lean ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ MOF ΠΈ OCL ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
2οΈβ£ Π ΠΊΠ°ΠΊΠΈΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
Lean ΠΌΠΎΠ³ Π±Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ MOF ΠΈ OCL?
β
ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ:
ΠΠ»Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΡ
ΠΈΠ»ΠΈ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ, Π³Π΄Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠΎΡΡ Π΄ΠΎΡΠΎΠ³ΠΎ (Π°Π²ΠΈΠ°ΡΠΈΡ, ΠΌΠ΅Π΄ΠΈΡΠΈΠ½Π°, ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°).
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ»).
Π Π·Π°Π΄Π°ΡΠ°Ρ
, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° Π³Π»ΡΠ±ΠΎΠΊΠ°Ρ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΡΠΎΠ²ΡΠ΅ Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΈ, ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ).
β οΈ Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΠΈ:
ΠΠΎΡΠΎΠ³ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ: Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅Ρ-Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ² ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Lean ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π²ΡΠΊΠΎΠ² ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ.
Π’ΡΡΠ΄ΠΎΠ·Π°ΡΡΠ°ΡΡ: Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π² Lean ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ UML.
3οΈβ£ Π Π΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎ Π»ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ Lean ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ?
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, Ρ
ΠΎΡΡ ΡΠΆΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Lean, Coq, Idris) ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ UML Π² ΠΌΠ°ΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠΎ Π΄Π»Ρ ΡΠ·ΠΊΠΎΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ
Π·Π°Π΄Π°Ρ ΡΡΠΎ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ.
ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ ΡΠ²ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Domain-Specific Language First ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°Π΅Ρ Π²Π°ΠΆΠ½ΡΠΉ ΡΠΌΡΡΠ»: Π΅ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ (DSL) ΠΏΠΎΠ²Π΅ΡΡ
Lean, ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΈ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΈ Π»ΡΠ³ΠΊΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
π― ΠΡΠ²ΠΎΠ΄Ρ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
ΠΠ°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΠΈΠΏΡ Lean ΠΈ Coq ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ
ΠΎΠ΄ΡΡ MOF ΠΏΠΎ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΠ»Π΅ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΡΡΠΎΠΈΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ.
Lean ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈ ΡΠ·ΡΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MOF/UML), ΠΈ ΡΠ·ΡΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, OCL) ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Ρ Ρ MOF, Lean Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ Π½Π°Π²ΡΠΊΠΎΠ².
ΠΠ»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΡ
Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ DSL, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΡ
ΡΠ·ΡΠΊΠΎΠ² Ρ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Lean), ΡΡΠΎΠ±Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π»ΡΠ³ΠΊΠΎΡΡΡ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π³Π»ΡΠ±ΠΎΠΊΡΡ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ β ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° DSL ΠΈ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΡΠΈΠΏΠΎΠ² β Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.