Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ДСфрагмСнтация ΠΌΠΎΠ·Π³Π°. БофтостроСниС ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 36

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ Варасов

Π’ качСствС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ пСрСчислСнных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ появились Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ двусторонниС 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" />