Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ CASE-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ (two way tools), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»Ρ, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΈΠ΄Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅, ΡΠ°ΠΊ ΠΈ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠ»Ρβ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠ°ΡΠ°ΡΡΡΡ, ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π±ΡΠ» ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ ΠΏΡΡΠΌΠΎ Π² ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π ΠΈΡ. 17. ΠΠ²ΡΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ CASE-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ModelMaker ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π ΠΈΡ. 18. Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ModelMaker
ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π² CASE-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΡΠ΄ΠΎΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ:
β’ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΡΠ·ΡΠΊΠ°ΠΌ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌ;
β’ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π΅ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ. Π’ΠΎ Π΅ΡΡΡ ΡΠ»ΠΎΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΎΡΡΠ°ΡΡΡΡ Π·Π° ΡΠ°ΠΌΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°;
β’ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°: ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π΄Π΅Π»ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΠ°ΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ;
β’ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π²ΡΠΊΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΊΠ»Π°ΡΡΠΎΠ². Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ CASE ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π»ΠΈΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΎΡΡΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ°Π±ΡΠΈΠΊΠ° β ΡΠΈΠ½ΡΠ΅Π· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΉ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π½ΠΎ ΡΠ΅Π»ΡΠ΅ ΡΠ»ΠΎΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ.
ΠΠ° ΡΡΠ½ΠΊΠ΅ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΠΌΠ°Π»ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΡΠΈΠΏΠ° Β«software factoryΒ», Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°Π±Π΅ΡΡΡΠ΅ Π² ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΈΠΊΠ΅ ΡΡΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΈ ΡΠ°ΡΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, Ρ ΠΎΡΡ ΠΈ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ, ΡΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π² IBM[24]. Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΡΠΎΠΌΠ»ΡΡΡ Π²Π°Ρ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ°, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Genie Lamp (http://genielamp. sourceforge.net), ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π£ΠΠ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Ρ ΠΊΠΎΠ½ΡΠ° 1990-Ρ Π³ΠΎΠ΄ΠΎΠ², ΡΠ²Π΅ΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 2β3 Π³ΠΎΠ΄Π°. ΠΠ΅Π½Ρ β Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎΠ΅Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎΠ΄ ΡΠ°ΡΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΌΠΏΠ°, ΠΏΠΎΠ»Π½Π°Ρ Π΄ΠΆΠΈΠ½Π½ΠΎΠ²
ΠΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°: Ρ ΠΎΡΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ»ΠΈ ΡΠ»ΠΎΡ β ΠΏΠΎΠΏΡΠΎΡΠΈ ΠΎΠ± ΡΡΠΎΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Β«Π΄ΠΆΠΈΠ½Π½Π°Β» Π² ΡΠΎΡΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Β«Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΡΒ». ΠΠΆΠΈΠ½Π½Ρ, ΠΊΠ°ΠΊ ΠΈΠΌ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ, ΠΆΠΈΠ²ΡΡ Π² Π»Π°ΠΌΠΏΠ΅.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΊ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°ΠΌ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π°Π΄Π°ΡΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ. Π―Π·ΡΠΊ ΡΠΎΠ·Π΄Π°Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XML, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π΅Π»Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΊΠ°ΠΌΠΈ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅.
Π ΠΈΡ. 19. ΠΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ Ρ Β«Π»Π°ΠΌΠΏΠΎΠΉΒ» ΠΈ Β«Π΄ΠΆΠΈΠ½Π½Π°ΠΌΠΈΒ»
ΠΠΎΠ΄Π΅Π»Ρ Π² Π²ΠΈΠ΄Π΅ XML-ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ Β«Π·Π°ΠΊΠ»ΠΈΠ½Π°ΡΠ΅Π»ΡΒ» β Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² ΡΠΎΡΡΠ°Π² ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π΅ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ²ΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π²ΡΠ΄Π°ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π²Π°ΠΆΠ½ΠΎΡΡΠΈ. ΠΠΎ Π²ΡΠ΅ΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°.
ΠΡΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°, Β«Π·Π°ΠΊΠ»ΠΈΠ½Π°ΡΠ΅Π»ΡΒ» Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΏΡΠΈΠ·ΡΠ²Π°ΡΡ Β«Π΄ΠΆΠΈΠ½Π½ΠΎΠ²Β» ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π½Π° Π²Ρ ΠΎΠ΄ ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΅ΡΡ ΠΈ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠ°ΡΠ°ΡΡΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΠΈΡ Π΄ΠΆΠΈΠ½Π½ΠΎΠ², Π½ΠΎ ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΠΎΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ±ΡΠ°Π±ΠΎΡΠ°Π² ΠΌΠΎΠ΄Π΅Π»Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΄ΠΆΠΈΠ½Π½ Π²ΡΠ΄Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ΄. ΠΠ»Ρ ΡΠ»ΠΎΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΊΡΠΎΠΌΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ Π‘Π£ΠΠ SQL-ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΈΡ ΠΏΡΠΎΠ³ΠΎΠ½ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈΠ· ΡΡ Π΅ΠΌΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΄Π°ΠΆΠ΅ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊΠΎΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΌ ΠΈΠ·-Π·Π° ΡΠ°Π·Π½ΠΈΡΡ Π² ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅, Π½ΠΎ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΡΡΠΈΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΎΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ. ΠΡΠΎΠ²Π΅Π΄Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈΠΌΠΏΠΎΡΡ, Π΄Π°Π»Π΅Π΅ ΠΌΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ, ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Β«ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ΄Π΅Π»ΡΒ».
ΠΠ° ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ? ΠΡΠΈΠ²Π΅Π΄Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ· ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠΈΠΏ, ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ, Π΄Π²Π΅ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠ΄Π½Ρ ΡΠ²ΡΠ·Ρ (ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅) ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Genie Lamp
<Type name="TEntityId" baseType="int" />
<Enumeration name="Granularity">
<Doc><Label lang="ru">ΠΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΡΡΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π°</Label></Doc>
<Item name="Day" value="0">
<Doc><Label lang="ru">ΠΠ΅Π½Ρ</Label></Doc>
</Item>
<Item name="Month" value="1" default="true">
<Doc><Label lang="ru">ΠΠ΅ΡΡΡ</Label></Doc>
</Item>
<Item name="Year" value="2">
<Doc><Label lang="ru">ΠΠΎΠ΄</Label></Doc>
</Item>
</Enumeration>
<Entity name="FiscalYear">
<Doc><Label lang="ru">Π€ΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠΉ Π³ΠΎΠ΄</Label></Doc>
<Attribute name="Id" type="TEntityId" primaryid="true" autoincrement="true" />
<Attribute name="Name" type="TCaption" uniqueid="true">
<Doc><Label lang="ru">ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³ΠΎΠ΄Π°</Label></Doc>
</Attribute>
<Attribute name="Granularity" type="Granularity">
<Doc><Label lang="ru">ΠΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ²</Label></Doc>
</Attribute>
<Attribute name="FromDate" type="date">
<Doc><Label lang="ru">ΠΠ°ΡΠ° Π½Π°ΡΠ°Π»Π°</Label></Doc>
</Attribute>
<Attribute name="ToDate" type="date">
<Doc><Label lang="ru">ΠΠ°ΡΠ° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ</Label></Doc>
</Attribute>
<Attribute name="Closed" type="boolean" default="false">
<Doc><Label lang="ru">ΠΠΎΠ΄ Π·Π°ΠΊΡΡΡ?</Label></Doc>
</Attribute>
<Attribute name="GranularityName" type="string" persisted="false">
<Doc>
<Text lang="ru">ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³ΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ</Text>
</Doc>
</Attribute>
<Operation name="CreatePeriods" access="public">
<Doc>
<Text lang="ru">
Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄Ρ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°
ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π°ΡΠ°ΠΌΠΈ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π³ΡΠ°Π½ΡΠ»ΡΡΠΈΠ΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΈΠ½. Π³ΠΎΠ΄Π°,
ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠ΅Π³ΠΎ Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΡΠΌ, ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΡΠ½ΠΎΠΉ Π³ΡΠ°Π½ΡΠ»ΡΡΠΈΠ΅ΠΉ
Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ 12 ΠΌΠ΅ΡΡΡΠ½ΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ²
</Text>
</Doc>
<Returns type="void"/>
</Operation>
<Operation name="FindPeriodIdByDate" access="public">
<Doc>
<Text lang="ru">
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ID ΠΏΠ΅ΡΠΈΠΎΠ΄Π° ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π°ΡΠ΅, "0" Π΅ΡΠ»ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½
</Text>
</Doc>
<Param name="periodDate" type="datetime"/>
<Returns type="TEntityId"/>
</Operation>
<Operation name="DeleteCascade" access="public">
<Returns type="void"/>
</Operation>
</Entity>
<Entity name="Period">
<Doc><Label lang="ru">Π£ΡΡΡΠ½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄</Label></Doc>
<Attribute name="Id" type="TEntityId" primaryid="true" autoincrement="true" />
<UniqueId>
<Attribute name="FiscalYearId" type="TEntityId">
<Doc><Label lang="ru">ID ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°</Label></Doc>
</Attribute>
<Attribute name="FromDate" type="date">
<Doc><Label lang="ru">ΠΠ°ΡΠ° Π½Π°ΡΠ°Π»Π°</Label></Doc>
</Attribute>
</UniqueId>
<UniqueId>
<OnAttribute name="FiscalYearId"/>
<Attribute name="PeriodNumber" type="smallint">
<Doc><Label lang="ru">ΠΠΎΠΌΠ΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄Π°</Label></Doc>
</Attribute>
</UniqueId>
<Attribute name="ToDate" type="date">
<Doc><Label lang="ru">ΠΠ°ΡΠ° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ</Label></Doc>
</Attribute>
</Entity>
<Relation entity="Period" name="FiscalYear"
entity2="FiscalYear" name2="Periods"
cardinality="M:1">
<AttributeMatch attribute="FiscalYearId" attribute2="Id" />
</Relation>
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΠ·Π΄Π°ΡΡ 3-Π·Π²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ»ΠΎΡΠΌΠΈ:
β’ ΡΠ»ΠΎΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠ°Π·Π²ΡΡΠ½ΡΡΡ Π½Π° SQL Server ΠΈΠ»ΠΈ Oracle;
β’ ΡΠ»ΠΎΠΉ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ NHibernate;
β’ ΡΠ»ΠΎΠΉ Π²Π΅Π±-ΡΠ»ΡΠΆΠ± Π½Π° Π±Π°Π·Π΅ ServiceStack (Π²ΠΌΠ΅ΡΡΠΎ WCF, ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ Mono/Linux ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ).
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Genie Lamp
<! β ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ»(Ρ) ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡ β >
<ImportModel fileName="MyModel.xml" />
<! β ΠΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΆΠΈΠ½Π½Π° SQL Server β >
<Genie name="SqlServer"
type="GenieLamp.Genies.SqlServer.SqlServerGenie"
assembly="GenieLamp.Genies.SqlServer"
active="false"
outDir="%PROJECT_DIR%/../SQL/SqlServer-%TARGET_VERSION%"
outFileName="%PROJECT_NAME%.sql"
updateDatabase="true"
targetVersion="2008">
<Param name="Database.Create" value="false" />