Π”ΠΈΠΏΠ»ΠΎΠΌ, курсовая, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°
ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ рСализация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

Π”ΠΈΡΡΠ΅Ρ€Ρ‚Π°Ρ†ΠΈΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Поиск Ρ‚ΠΎΡ‡Π΅ΠΊ внСдрСния ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ аспСкта Π² Aspect.NET производятся статичСски, благодаря Ρ‡Π΅ΠΌΡƒ достигаСтся максимальная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ (Aspect#) ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сборки (Weave.NET). ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π΄Π²Π° ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°: поиск Ρ‚ΠΎΡ‡Π΅ΠΊ внСдрСния ΠΈ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅. ΠœΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдоставляСтся… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  • Π¦Π΅Π»ΠΈ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ
  • ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
  • Π“Π»Π°Π²Π° 1. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ АОП
    • 1. 1. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ вопроса ΠΈ ΠΎΠ±Π·ΠΎΡ€ источников ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΠžΠŸ
    • 1. 2. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ АОП
    • 1. 3. ΠžΠ±Π·ΠΎΡ€ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… инструмСнтариСв для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ АОП
      • 1. 2. 1. БистСма AspectJ
      • 1. 2. 2. Hyper/J
      • 1. 2. 3. Spring АОР
      • 1. 2. 4. Spring.NET АОР
      • 1. 2. 5. PostSharp
      • 1. 2. 6. NAspect
      • 1. 2. 7. Aspect#
      • 1. 2. 8. AspectDNG
      • 1. 2. 9. S2AOP.NET
      • 1. 2. 10. Wicca
  • Π“Π»Π°Π²Π° 2. БистСма Aspect.NET
    • 2. 1. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ систСмы
    • 2. 2. АрхитСктура Aspect.NET
      • 2. 2. 1. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Aspect.NET
    • 2. 3. ΠœΠ΅Ρ‚Π°ΡΠ·Ρ‹ΠΊ спСцификации аспСктов Aspect.NET.ML
      • 2. 3. 1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ аспСкта
      • 2. 3. 2. ΠŸΡ€Π°Π²ΠΈΠ»Π° внСдрСния аспСкта
      • 2. 3. 3. Π‘Π°ΠΌΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ аспСктов: AspectDescription
      • 2. 3. 4. НСпосрСдствСнноС использованиС спСциализированных Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Aspect.NET
    • 2. 4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ посрСдством Aspect.NET
      • 2. 4. 1. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
      • 2. 4. 2. Валидация ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
      • 2. 4. 3. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ выполнСния Π² ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса
      • 2. 4. 4. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² ORM-систСмах
  • Π“Π»Π°Π²Π° 3. ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ° Aspect.NET Framework
    • 3. 2. 1. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса для инструмСнтариСв АОП
    • 3. 2. 2. РСализация подсистСмы Aspect.NET Framework
    • 3. 2. 3. Автоматизация Π·Π°Π΄Π°Ρ‡ΠΈ протоколирования ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструмСнта Aspect. log4net
    • 3. 2. 4. Апробация Aspect.NET Framework ΠΈ Aspect. log4net Π² ΡΠΎΡΡ‚Π°Π²Π΅ систСмы Aspect.NET Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ рСализация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π—Π° Π΄ΠΎΠ»Π³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ сущСствования ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ия ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΉ программирования исслСдоватСлями ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ Π±Ρ‹Π»ΠΎ создано Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (ПО). Π‘Π΅Π· сомнСния, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎ ΠΏΡ€Π°Π²Ρƒ считаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ (ООП) [9]. Π—Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ дСсятилСтия ΠΎΠ½ ΠΏΡ€Π°ΠΊΡ‚ичСски монопольно укорСнился Π² ΡΡ„Π΅Ρ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠŸΠž ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся стандартом. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π΅ΡˆΠΈΠ» ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ число ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΡ… Π² Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ΅ — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅. Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ элСмСнтов ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π½Π° ΠΊΠ»Π°ΡΡΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Однако срСдствами ООП ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° структурированности всС ΠΆΠ΅ Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ся Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ Π²ΠΈΠ΄Π΅. ВсСгда остаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, класса ΠΈΠ»ΠΈ Ρ†Π΅Π»Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π΅ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‰Π°ΡΡΡ Π²Ρ‹Π½Π΅ΡΠ΅Π½ΠΈΡŽ ΠΈ' подходящСй Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, use-case Π°Π½Π°Π»ΠΈΠ· [11], ΠΌΠΎΠΆΠ½ΠΎ вынСсти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ бизнСс-Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ элСмСнтарных классов, Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния выполняСмых ΠΈΠΌΠΈ дСйствий. Однако Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ исходного ΠΊΠΎΠ΄Π°, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ взаимодСйствиС этого мноТСства классов, всС Ρ€Π°Π²Π½ΠΎ сохранятся ΠΈ, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΡƒΠ΄ΡƒΡ‚ рассрСдоточСны ΠΏΠΎ ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡƒΡ…ΡƒΠ΄ΡˆΠ°Ρ Ρ‚Π΅ΠΌ самым ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ прилоТСния ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ дальнСйшСй ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. Π”Π°ΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠŸΠž практичСски Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ лишь ООП-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠŸΠž (Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ — аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, АОП) [12, 13, 10] являСтся Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠ³Π° Π·Π°Π΄Π°Ρ‡, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

АспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт вынСсти ΡΠΊΠ²ΠΎΠ·Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (cross-cutting concerns) [12] — Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, рассрСдоточСнныС ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, — ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, упрощая Ρ‚Π΅ΠΌ самым структуру исходного ΠΊΠΎΠ΄Π°.

Π’ΠΎΡ‚ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ сквозной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ [10]:

β€’ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ (security) — аутСнтификация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Π²Ρ‚оризация (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ для выполнСния Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… дСйствий) — криптографичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с Ρ†Π΅Π»ΡŒΡŽ обСспСчСния ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ‚. Π΄.;

β€’ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ (reliability) — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠ°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ выполнСния ΠΏΡ€Π΅Π΄ΠΈ постусловий, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ Ρ‚. Π΄.;

β€’ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΏΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ выполнСния ΠΊΠΎΠ΄Π° (multi-threaded safety)1 — синхронизация ΠΏΠΎ Ρ€Π΅ΡΡƒΡ€ΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎ ΡΠΎΠ±Ρ‹Ρ‚иям, Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ критичСских участков ΠΊΠΎΠ΄Π°, Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ Π½ΠΈΠΌ ΠΈ Π΄Ρ€.;

β€’ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (logging and profiling) — трассировка Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡ выполнСния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°), Π²Ρ‹Π²ΠΎΠ΄ ΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², сбор ΠΈ Π²Ρ‹Π²ΠΎΠ΄ статистичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚. Π΄.

Π‘ΠΎΠ»Π΅Π΅ слоТным ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ компилятора ΠΏΡƒΡ‚Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΎΠ²Ρ‹Ρ… языковых конструкций, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠ²Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, всС Ρ„Π°Π·Ρ‹ компилятора — лСксичСский Π°Π½Π°Π»ΠΈΠ·, синтаксичСский Π°Π½Π°Π»ΠΈΠ·, сСмантичСский Π°Π½Π°Π»ΠΈΠ·, оптимизация ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° — Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ для этого. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΠΌΠΈΠΌΠΎ добавлСния Π½Π°Π±ΠΎΡ€Π° Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ компилятора, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ мноТСство рассрСдоточСнных Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° объявлСний Π΄Π°Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² — Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ компилятора с ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ.

ВСорСтичСскиС основы АОП Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ мноТСством исслСдоватСлСй [11, 12, 36, 38], ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄ΠΎ ΡΠΈΡ… ΠΏΠΎΡ€ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠ΅Π³ΠΎΡΡ практичСского ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, ΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π΄Π°ΠΆΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ АОП ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. По ΡΠ΅ΠΉ дСнь Π½Π΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡŒ инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠŸΠž. ЕдинствСнноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ составляСт систСма AspectJ [19, 39, 57] ΠΈ Π΅Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ AspectJ Development Tools for Eclipse [63] для Java-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ срСдства для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π±Ρ‹ создатСлям ΠŸΠž ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» АОП Π² ΡΠ²ΠΎΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…, создавая Π±ΠΎΠ»Π΅Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

По Π½Π°ΡˆΠ΅ΠΌΡƒ мнСнию, мощная, адСкватная ΠΈ Π³ΠΈΠ±ΠΊΠ°Ρ интСрактивная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ способна ΡΡ‹Π³Ρ€Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ программистов ΠΊ Ρ‚Π°ΠΊΠΎΠΉ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ АОП, освоСнию ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, использованию послСднСй Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Aspect.NET разрабатываСтся Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ исслСдоватСлСй ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎ-мСханичСского Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚Π° ΠΏΠΎΠ΄ руководством ΠΈ ΠΏΡ€ΠΈ нСпосрСдствСнном участии профСссора Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€Π° ΠžΠ»Π΅Π³ΠΎΠ²ΠΈΡ‡Π° Π‘Π°Ρ„ΠΎΠ½ΠΎΠ²Π° с 2002 Π³ΠΎΠ΄Π°. ЦСль этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° — ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ соврСмСнный АОП-инструмСнт Π½Π° Π±Π°Π·Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Microsoft .NET [17], ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ многоязыковой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠŸΠž. ΠšΡ€Π°Ρ‚ΠΊΠΎ пСрСчислим основныС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Aspect.NET.

β€’ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнтария для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ АОП Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ .NET.

β€’ Π’ΠΊΠ»Π°Π΄ Π² Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ АОП Π² ΡΠΎΠΎΠ±Ρ‰Π΅ΡΡ‚Π²Π΅ .NET.

β€’ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… исслСдований ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ АОП.

Π¦Π΅Π»ΠΈ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ.

Данная диссСртация Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Aspect.NET. Π’ Π½Π΅ΠΉ ΠΈΡΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… АОП-инструмСнтариях, прСдлагаСтся ряд Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса АОП ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ся выполнСнная Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ рСализация ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π¦Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅.

1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса для инструмСнтов АОП ΠΈ ΠΈΡ… ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

2. РСализация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Aspect.NET Framework Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

3. РСализация Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Aspect.NET Framework для нСявного примСнСния АОП ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

4. ИспользованиС подсистСмы Aspect.NET Framework Π² Ρ€Π°ΠΌΠΊΠ°Ρ… систСмы Aspect.NET ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ряда Π·Π°Π΄Π°Ρ‡.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

УслоТнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм — глобальная соврСмСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ постоянного внимания ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡ. АОП-мСтодология ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ врСмя, ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ соврСмСнного ΠŸΠž ΠΏΡƒΡ‚Π΅ΠΌ выдСлСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… частСй — аспСктов, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π° Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, рСализация ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ рассрСдоточСна ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

По ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ [11], ΠΎΠΊΠΎΠ»ΠΎ 70% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… тратится Π½Π° ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π² ΡΠ²ΡΠ·ΠΈ с Ρ‡Π΅ΠΌ АОП ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ каТутся Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ новая тСхнология ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° довольно ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС, ΠΏΠΎΠΊΠ°Π·Π°Π² свою ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² Ρ€ΡΠ΄Π΅ случаСв.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструмСнтов для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ АОП Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ для Java-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ всС ΠΎΠ½ΠΈ связаны с Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ AspectJ). Авторы ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Aspect.NET ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΌ Π²ΠΊΠ»Π°Π΄ΠΎΠΌ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ АОП ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ полноцСнная рСализация этой ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ для соврСмСнной ΠΈ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ — .NET. РСализация ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ способна ΡΡ‹Π³Ρ€Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡŽ АОП-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ .NET. Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Aspect.NET профСссор Π’. О. Π‘Π°Ρ„ΠΎΠ½ΠΎΠ² ΠΏΠΎ-Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» ΠΈΠ΄Π΅ΠΈ Π“. ΠšΠΈΠΊΠΆΠ°Π»Π΅ΡΠ°, примСняя ΠΈΡ… ΠΊ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ возмоТностям ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET.

АспСкты Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Aspect.NET ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ описания классов со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ аннотациями Π½Π° ΠΌΠ΅Ρ‚аязыкС Aspect.NET ML [10, 16], нСзависимого ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ языка .NET ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Одна ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Aspect.NET отвСтствСнна Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ спСцификаций Π½Π° Aspect.NET ML-Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Aspect.NET. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, информация ΠΎΠ± Π°ΡΠΏΠ΅ΠΊΡ‚Π°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ ΠΏΡ€Π°Π²ΠΈΠ»Π° внСдрСния, хранится Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… сборки. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ спСцификации аспСктов ΠΎΡ‚ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ описания аспСкта Π² Aspect.NET. АспСкт «Test» ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ дСйствиС «TestWriteAction», выводящСС Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»ΡŒ строку «test» ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ любого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΡΡ Π½Π° «Write»: aspect Test public class Test rules before %call Write* public static void TestWriteAction ().

Console.WriteLine («test»);

ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Aspecl.NET Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ инструмСнтария построСния ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… компиляторов Microsoft Phoenix RDK [28]. Π’ Ρ‡Π°ΡΡ‚ности, Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ высокоуровнСвыС сСрвисы ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Phoenix API) для Π°Π½Π°Π»ΠΈΠ·Π°, создания ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ .NET-сборок. Компания Microsoft считаСт Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Phoenix пСрспСктивной, Ρ‡Ρ‚ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ повлияло Π½Π° ΡˆΠΈΡ€ΠΎΡ‚Ρƒ прСдоставлСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Поиск Ρ‚ΠΎΡ‡Π΅ΠΊ внСдрСния ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ аспСкта Π² Aspect.NET производятся статичСски, благодаря Ρ‡Π΅ΠΌΡƒ достигаСтся максимальная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ (Aspect#) ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сборки (Weave.NET). ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π΄Π²Π° ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°: поиск Ρ‚ΠΎΡ‡Π΅ΠΊ внСдрСния ΠΈ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅. ΠœΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдоставляСтся удобная ΠΈ Π½ΠΎΠ²Π°Ρ, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ инструмСнтариями, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ внСдрСния ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…. Она достигаСтся Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ графичСский интСрфСйс систСмы Aspect.NET Framework ΠΏΡƒΡ‚Π΅ΠΌ отобраТСния ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡΠΌ, классам, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ отобраТСния исходного ΠΊΠΎΠ΄Π° Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ модуля (ΠΏΡ€ΠΈ условии наличия ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ модуля).

Aspect.NET Framework Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Microsoft Visual Studio SDK [29] — Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π±ΠΎΠ³Π°Ρ‚ΠΎΠ³ΠΎ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт практичСски Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft Visual Studio: ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π»ΡŽΠ±Ρ‹Ρ… событий срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½Π°, ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ ΠΌΠ°ΡΡ‚Π΅Ρ€Π°. Microsoft Visual Studio SDK Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ подсвСтку исходного ΠΊΠΎΠ΄Π° ΠΈ Π°Π½Π°Π»ΠΈΠ· языков программирования, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ поиска ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ внСдрСния Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‡ΠΈ MSBuild [30] ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ся Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

.

Π’ Ρ…ΠΎΠ΄Π΅ выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ достигнуты ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов для инструмСнтов АОП, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ процСсса внСдрСния аспСктов.

2. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² Visual Studio 2008 подсистСма Aspect.NET Framework, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом систСмы Aspect.NET.

3. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ инструмСнт Aspect. log4net, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ нСявноС использованиС АОП для протоколирования.

4. ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ° Aspect.NET Framework Π² ΡΠΎΡΡ‚Π°Π²Π΅ систСмы Aspect.NET ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ использована для протоколирования ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ирования с ΠΏΡ€Π΅Π΄ΠΈ постусловиями Π² ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ объСмом Π±ΠΎΠ»Π΅Π΅ 40 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-Π»Π΅Ρ‚.

ВсС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹ΠΌΠΈ.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ АОП интСрфСйса, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, интСграция Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Microsoft Visual Studio 2008, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ использованиС систСмы Aspect .NET максимально ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½Ρ‹ΠΌ для .NET-программистов. ΠžΠ±ΡƒΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ это Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ΄Ρ‹ программистов ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ Aspect.NET Framework ΠΎΡ€Π³Π°Π½ΠΈΡ‡Π½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ возмоТности VisualStudio ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ внСдряСтся Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² MSBuild. Π’Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ .NET Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса для систСм АОП, Π·Π° Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΏΡ€ΠΈ создании Π½Π°ΠΌΠΈ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс инструмСнта AspectJ для Java-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ AspectJ Development Tools.

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс собрал Π² ΡΠ΅Π±Π΅ всю Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π“Ρ€Π΅Π³ΠΎΡ€Π° КикТалСса Π² AspectJ Development Tools. Π’Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ, просмотр содСрТимого аспСктов, раскрасчик аспСктов, просмотр влияния аспСкта Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ тСкста исходного ΠΊΠΎΠ΄Π°. Однако ΠΏΠΎΠΌΠΈΠΌΠΎ этого Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ управляСмого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ внСдрСния аспСктов с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ соискатСлСм надстройку Aspect. log4nct Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ с Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ — Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ АОП-инструмСнтария PostSharp ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Log4PostSharp, появившимся ΠΏΠΎΠ·Π΄Π½Π΅Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠΌΡƒ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Log4PostSharp ТСстко зафиксировано мноТСство ΠΏΡ€Π°Π²ΠΈΠ» внСдрСния аспСкта с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, отсутствуСт графичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΈ ΠΈΠ½Ρ‚Сграция с ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΠΌ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ мноТСство шаблонов ΠΏΡ€Π°Π²ΠΈΠ» Π² Aspect. log4net ΠΌΠΎΠΆΠ½ΠΎ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, создавая спСцифичныС мастСра-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π·Π° ΡΡ‡Ρ‘Ρ‚ нСявного примСнСния АОП.

Апробация Aspect.NET Framework ΠΊΠ°ΠΊ части Aspect.NET Π½Π° ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ… ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ созданного Π½Π°ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ АОП ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ. Π’ Ρ‡Π°ΡΡ‚ности, Π½Π°ΠΌΠΈ Π±Ρ‹Π»Π° достигнута Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ исходного ΠΊΠΎΠ΄Π° ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π½Π° 11% Π·Π° ΡΡ‡Ρ‘Ρ‚ вынСсСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Π°ΡΠΏΠ΅ΠΊΡ‚Ρ‹, Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Aspect. log4net ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ сущСствСнно ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ, связанныС с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ АОП-инструмСнтария.

ДокумСнтация, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΠ² систСмы доступны Π½Π° ΡΠ°ΠΉΡ‚Π΅ Microsoft Faculty Connection [72]. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»ΠΈ прСдставлСны Π½Π° Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… конфСрСнциях, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚СчСствСнных изданиях. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ инструмСнтарий Π±Ρ‹Π» высоко ΠΎΡ†Π΅Π½Π΅Π½ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.

По Ρ‚Π΅ΠΌΠ΅ диссСртации ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ [1−4] ΠΈ [8]. Π‘Ρ‚Π°Ρ‚ΡŒΡ [1] ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π² ΠΆΡƒΡ€Π½Π°Π»Π΅, входящСм Π² ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π’ΠΠš.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°ΠΌ видится ряд ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… пСрспСктивных Π·Π°Π΄Π°Ρ‡ дальнСйшСго развития Ρ‚Π΅ΠΌΡ‹.

Подсказки ΠΈ ΠΊΠΎΠ½Ρ‚Скстная ΠΏΠΎΠΌΠΎΡ‰ΡŒ. ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Visual Studio ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½ΡƒΡŽ ΠΏΠΎΠΌΠΎΡ‰ΡŒ, которая, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ особСнности языка Aspect.NET ML, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ прСдлоТСния Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ исходного ΠΊΠΎΠ΄Π° аспСкта. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·Ρƒ принСсСт ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Visual Studio IntelliSense для Aspect.NET ML, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ возмоТности подсказки Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Aspect.NET ML прСдлоТСния. Π’ AJDT for Eclipse подобная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΆΠ΅ сущСствуСт.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ планируСтся Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ панСль Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Microsoft Visual Studio элСмСнтами управлСния Π½Π° ΠΏΠΎΠ»ΡΡ… Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² строк, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ аспСктов. Π­Ρ‚ΠΈ элСмСнты управлСния позволят Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ наглядно ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ строки, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΎΡ‡Π΅ΠΊ внСдрСния ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠΌ эти Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Анализ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ». Нам видится пСрспСктивным Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊ Aspect.NET Framework Π»ΠΎΠ³ΠΈΠΊΠΈ для автоматичСского упрощСния ΠΏΡ€Π°Π²ΠΈΠ» Π»ΠΈΠ±ΠΎ привСдСния ΠΈΡ… ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ. НапримСр, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²ΠΈΠ΄Π° «(%after %call *) || (%after %call MyMethod)» ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, стоит привСсти ΠΊ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ «%after %call *».

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΠΆΠ΅ Ссли аспСкт разрабатываСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСобразования Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ» с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ структуры ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ вострСбованной. НапримСр, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ всСго Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π½Π° «MyMethod»: «MyMethodl» ΠΈ «MyMcthod2», Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²ΠΈΠ΄Π° «(%after %call MyMethodl) || (%after %call MyMethod2)» ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ «(%after %call MyMethod ([l, 2]{ 1}))» Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ — Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ «(%after %call MyMethod*)» Π² «(%after %call MyMethodl) || (%after %call MyMethod2)». ПослС Ρ‚Π°ΠΊΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΌΡƒ Π² ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «MyMethod3» аспСкт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€Π°Π²ΠΈΠ». Аналогичная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° описана Π² Ρ€Π°Π±ΠΎΡ‚Π΅ [54]. Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания автоматичСского пояснСния ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ Π½Π° Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΠΌ чСловСчСском языкС. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²ΠΈΠ΄Π° «%call %before (private *.set*(., int))>> ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„Ρ€Π°Π·ΠΎΠΉ: «before a call made to a private method with name starting with «set» defined on any type, and which last argument of an integer type». Подобная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° для автоматичСского докумСнтирования исходного ΠΊΠΎΠ΄Π°.

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ созданиС ΠΏΡ€Π°Π²ΠΈΠ»Π°. Π›ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΈΠ΄Π΅ΠΈ мастСра составлСния ΠΏΡ€Π°Π²ΠΈΠ» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, отмСчая ΠΌΡ‹ΡˆΡŒΡŽ Ρ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ аспСкта создаваСмым ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ. Подобная Π·Π°Π΄Π°Ρ‡Π° Π²Π²ΠΈΠ΄Ρƒ своСй Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ исслСдования.

Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³. Π’ Visual Studio, начиная с Π²Π΅Ρ€ΡΠΈΠΈ 2005, появились встроСнныС возмоТности Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ дСйствия, ΠΊΠ°ΠΊ автоматичСскоС ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ элСмСнтов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Ρ‡Π»Π΅Π½Π΅Π½ΠΈΠ΅ интСрфСйсов ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ², вынСсСниС Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ€ΡΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Для Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Aspect.NET ΠΊ ΡΡ‚ΠΈΠΌ функциям ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ «ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ аспСкта» ΠΈ «Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ объявлСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎ Π²Π½Π΅Π΄Ρ€ΡΠ΅ΠΌΠΎΠ΅ объявлСниС Ρ‚ΠΈΠΏΠ° (inter-type declaration)». ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° хотя Π±Ρ‹ этих Π΄Π²ΡƒΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ фактичСски позволяла Π±Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° аспСктизатора [8].

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

  1. Π“Ρ€Π°Ρ‡Π΅Π² М.К. Aspect.NET Framework ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π·Π°Π΄Π°Ρ‡Π΅ протоколирования. // ВСстник Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³ΡΠΊΠΎΠ³ΠΎ ГосударствСнного УнивСрситСта, 2008, Π‘Π΅Ρ€. 10, Π’Ρ‹ΠΏ. 4, Π‘. 118−126.
  2. Π­., Π₯элм Π ., ДТонсон Π ., ВлиссидСс Π”ΠΆ. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования: ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования. ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π».- Под Ρ€Π΅Π΄. А. Π‘Π»ΠΈΠ½ΠΊΠΈΠ½Π°. БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2001. 336 с.
  3. Π‘. Π‘Ρ‚Π΅Π»Ρ‚ΠΈΠ½Π³, О. МаасСн. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ шаблонов Java. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° профСссионала. Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π’ΠΈΠ»ΡŒΡΠΌΠ΅, Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2002, 567 с.
  4. Π•.А. Π–ΡƒΡ€Π°Π²Π»Π΅Π², Π’. А. ΠšΠΈΡ€ΡŒΡΠ½Ρ‡ΠΈΠΊΠΎΠ². О Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ динамичСской ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ аспСктов Π² Π°ΡΠΏΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.
  5. Изв. Π‘ΠŸΠ±Π“Π­Π’Π£ (Π›Π­Π’Π˜) Π‘Π΅Ρ€. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, 2002, Π’Ρ‹ΠΏ. 3, Π‘. 81−86.
  6. Booch G. Object-Oriented Analysis and Design with Applications. USA: Addison-Wesley, 2007, P. 430.
  7. Safonov V.O. Using aspect-oriented programming for trustworthy software development. Wiley Interscience. John Wiley & Sons, 2008. P. 338.
  8. Ivar Jacobson, Pan-Wei Ng, Aspect-Oriented Software Development with Use Cases. USA: Addison Wesley Professional, 2004, P. 464.
  9. Kiczales G., Lamping J., Mendhekar A., Aspect-oriented programming. Proc. Of the European Conference on Object-oriented Programming (ECOOP) in Finland Springer-Verlag, June 1997. Heidelberg, Germany, 1997, Pp. 365 389.
  10. Greogor Kiczales Official Webpage. URL: http://www.cs.ubc.ca/-gregor/.
  11. Safonov V. O. Aspect.NET: a new approach to aspect-oriented programming. NET Developer’s Journal. 2003. 4. Pp. 36−40.
  12. Safonov V. O. Aspect.NET: concepts and architecture. NET Developer’s Journal. 2004, 10, Pp. 44−48.
  13. Safonov V. O., Grigoriev D. Aspect.NET: concepts and architecture. NET Developer’s Journal. 2005, 7, Pp. 28−33.
  14. Simmons C., Rofail A. The Microsoft .Net Platform and Technologies. Indianapolis, USA: Prentice Hall PTR, 2001. P. 510.
  15. Apache log4net Project Official Website. URL: http://logging.apache.org/log4net/.
  16. Miles R., AspectJ Cookbook. Cambridge, USA: O’Reilly, 2004. P. 354.
  17. Flanagan D., Java in a Nutshell. Cambridge, USA: O’Reilly, 2005. Pp. 1224.
  18. Weave.NET Project Official Webpage. URL: http://www.dsg.cs.tcd.ic/sites/ Weave.NET.html.
  19. Puzzle.NET and NAspect Project Official Website. URL: http://www.puzzleframework.com/wikiengine/WikiPageViewer.aspx?ID=80.
  20. Aspect# Project Official Webpage. URL: http://www.castIeproject.org/ AspectSharp/index.html.
  21. Spring.NET Project Official Website. URL: http:// www.springframework.net/doc-latest/refercnce/html/ aop.html.
  22. HyperJ Project Official Webpage. URL: http://www.research.ibm.com/ hyperspace/HyperJ/HyperJ.htm.
  23. W. Π’. AOP Technologies and statement of the problem // Proc. of the 6th Intern. Conference on Software Reuse, ICSR-6. June 2000. Vienna, Austria, 2000, Pp. 390−397.
  24. Wicca and Phx. Morph Project Official Webpage URL: http://www 1 .cs.columbia.edu/~eaddy/wicca/.
  25. Microsoft Phoenix Project Official Webpage. URL: http://research.microsoft.com/phoenix.
  26. Visual Studio SDK Description at MSDN Project Webpage. URL: http://msdn.microsoft.com/en-us/library/bb 166 441 .aspx.
  27. MSBuild Reference at MSDN Project Webpage. URL: http://msdn2.microsoft.com/en-us/library/0k6kkbsd.aspx.31. log4j Project Official Webpage. URL: http://dmi.ensica.fr/doc/Java/log4j/.
  28. Campbell Π’., Hassell J. Outlook 2007: Beyond the Manual. Berkeley, CA, USA: Apress, 2007. Pp. 47−51.
  29. Aspect.NET Project Webpage at Microsoft Academic Resource Center. URL: https://www.academicresourcecenter.net/cuiTiculum/pfv.aspx?ID=6801.
  30. The LOOM .NET Project Official Webpage. URL: http://www.dcl.hpi.uni-potsdam.de/research/loom/.
  31. M. Blackstock. Aspect Weaving with C# and .NET. URL: http://www.cs.ubc.ca/ ~michael/publications/AOPNET5.pdf.
  32. Xiong Y., Wan F. CCC: An Aspect Oriented Intermediate Language on .NET Platform. URL: http://www.fit.ac.jp/~zhao/waosd2004/pdf/Xiong.pdf.
  33. AOP.NET Project Official Webpage. URL: http://sourceforge.net/projects/aopnet/.
  34. D. Lafferty, V. Cahill. Language Independent Aspect Oriented Programming. Proceedings of OOPSLA March 2003.
  35. The AspectJ Project Official Website. URL: www.aspectj.org.
  36. AspectWerkz Project Official Webpage. URL: http://aspectwerkz.codehaus.org/.
  37. Чистяков Π’. R# ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² .NET. // RSDN Magazine #5 — 2004. URL: http://rsdn.ru/projects/rshaΡ„/article/ rsharpmag.xml.
  38. M. Aksit, L. Bergmans, and S. Vural. An Object-Oriented Language-Database Integration Model: The Composition-Filters Approach. In Proceedings of the ECOOP'92 Conference, LNCS 615, Springer-Verlag, 1992.
  39. K.Leiberherr. Component Enhancement: An Adaptive Reusability Mechanism for Groups of Collaborating Classes. In Information Processing'92, 12th World Computer Congress, Madrid, Spain, J. van Leeuwen (Ed.), Elsevier, 1992, Pp. 179−185.
  40. Czarnecki К., Eisenecker U. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, June 2000, P. 864.
  41. Masuhara, J., Kiczales, G. Modeling Crosscutting in Aspect-Oriented Mechanisms. Proceedings of ECOOP'2003.
  42. Hannemann, J., Kiczales, G. Overcoming the Prevalent Decomposition in Legacy Code. Proceedings of Workshop on Advanced Separation of Concerns, International Conference on Software Engineering (May 2001, Toronto, Canada).
  43. Aspect Browser: Bill Griswold’s Web pages (University of California, San Diego). URL: www.cs.ucsd.edu/users/wgg.
  44. FEAT: Martin Robillard’s and Gal Murphy’s Web pages (University of British Columbia, Canada). URL: www.cs.ubc.ca/~mrobilla/feat/index.html.
  45. Shukla, D., Fill, S. and Sells, D. Aspect-Oriented Programming Enables Better Code Encapsulation and Reuse. MSDN Magazine, March 2002.
  46. Aspect-Oriented Software Development Network Official Website: www.aosd.net.
  47. Rational Software Official Website. URL: http://www.rational.com.
  48. Subject-Oriented Programming Project Official Webpage, IBM Thomas J. Watson Research Center, Yorktown Heights, New York. URL: http://www.research.ibm.com/sop/.
  49. The TRESE Project Official Webpage, University of Twente, The Netherlands. URL: http://www.utwente.nl/ewi/trese/.
  50. Ch. Simony. The Death of Computer Languages, The Birth of Intentional Programming, Microsoft Research, 1995. URL: http://research.microsoft.com/ pubs/view.aspx?trid=4.
  51. Laddad, R., I want my aop!, part 1., 2002. URL: http://www.javaworld.com/ javaworld/jw-01−2002/j w-0118-aspect.html.
  52. The AspectJ Programming Guide 1998−2002, Xerox Corporation.
  53. I. Kiselev. Aspect-Oriented Programming with AspectJ. Indianapolis, IN, USA: SAMS Publishing, 2002. P. 288.
  54. J. Hannemann, G. Kiczales. Design pattern implementations in Java and AspectJ OOPSLA 02, New York, USA, November 2002. Pp. 161−173.
  55. M. Lippert, Π‘ Videira Lopes. A Study on Exception Detection and Handling Using Aspect-Oriented Programming. Xerox PARCTechnical Report P9910229 CSL-99−1, 1999.
  56. B. Meyer. Applying Design by Contract. Prentive Hall, 1992.
  57. Eick, S.G., J.L. Steffen, and E.E. Sumner, Seesoft A Tool For Visualizing Line Oriented Software Statistics. IEEE Transactions on Software Engineering, 1992. 18(11).
  58. Clement A., Colyer A., Kersten M. Aspect-Oriented Programming with AJDT, Proceedings of Workshop on Analysis of Aspect-Oriented Software (2003, University of Darmstadt, Germany).
  59. Richter, J. Applied Microsoft .NET Framework Programming. Microsoft Press, 2002, P. 640.
  60. HyperJ Project Official Webpage. URL: http://www.research.ibm.com/ hyperspace/ HyperJ/HyperJ.htm.
  61. AJDE for SunONE/NetBeans Official Webpage. URL: http://aspectj4netbean.sourceforge.net/.
  62. AJDE for JBuilder Official Webpage. URL: http://aspectj4jbuildr.sourceforge.net/.
  63. Eclipse AspectJ Development Tools Project Official Webpage. URL: http://www.eclipse.org/ajdt.
  64. Eclipse Project Official Website. URL: http://www.eclipse.org.
  65. Schildt H., C# 3.0: The Complete Reference. McGraw-Hill Osborne Media, December 2008, P. 912.
  66. Mono Project Official Website. URL: http://mono-project.com.
  67. Freeman E., Head First Design Patterns. O’Reilly, October 2004, P. 688.
  68. Webpage of Aspect.NET on Microsoft Faculty Connection Website. URL: http://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=6801.
  69. AspectDNG Project Official Webpage. URL: http://aspectdng.tigris.org/.
  70. Basset P. Framing software reuse — lessons from real world. Practice Hall, 1996,384 c.
  71. PostSharp Project Official Website. URL: http://www.postsharp.org/.
  72. Log4PostSharp Project Official Webpage. URL: http://code.google.com/p/postshaΡ„-user-plugins/wiki/Log4PostShaΡ„.
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ