Помощь в написании студенческих работ
Антистрессовый сервис

Реализация подсистемы применения аспектов в системе Aspect.NET

ДиссертацияПомощь в написанииУзнать стоимостьмоей работы

В четвертой главе рассмотрены практические основы применения технологии Aspect.NET, сформулированы основные принципы работы метаязыка Aspect.NET ML. Приведено практическое использование метаязыка АОП, сформулированы основные требования к конечному продукту, построенному на принципах Aspect.NET в рамках платформы Microsoft.NET. Произведена попытка интеграции аспектного метода в производство… Читать ещё >

Реализация подсистемы применения аспектов в системе Aspect.NET (реферат, курсовая, диплом, контрольная)

Содержание

  • Глава 1. Введение в аспектно-ориентированное программирование (АОГ[). К)
    • 1. 1. История создания АОП
    • 1. 2. Понятие АОП
  • Глава 2. Существующие аспектно-ориентированные технологии
    • 2. 1. Существующие технологии внедрения (применения) аспектов
    • 2. 2. Методология и область применения АОГ
    • 2. 3. Альтернативные АОП технологии
  • Глава 3. Реализации АОП
    • 3. 1. Классификация методов применения аспектов
    • 3. 2. Технология разработки AOll-программ в системе Aspect.NET. для платформы Microsoft .NET
    • 3. 3. Реализация подсистемы применения аспектов в Aspect.NET
  • Глава 4. Основные принципы реализации подсистемы внедрения аспектов и использования системы Aspect.NET
  • Глава 5. Развитие технологии Aspect.NET

В процессе разработки программного обеспечения (ПО) возникают проблемы, которые не могут быть продуктивно решены с помощью известных методов процедурного или объектно-ориентированного программирования. Встречаются ситуации, когда добавление нового требования в готовую систему приводит к вставке фрагментов соответствующего кода в разные места исходной программы (сквозная функциональность). Довольно часто такое решение делает программу «запутанной» и сложной не только при разработке и тестировании, по и при дальнейшей поддержке и усовершенствовании. Данная работа является основой для исследования и предоставления новой технологии программирования, которая способна решить вышеуказанную проблему запутанности кода.

Аспектно-ориентированное программирование (АОП) — один из новых подходов к программированию, предназначенный для модуляризации сквозной функциональности и ее автоматизированного, безопасного и надежного добавления в целевую программу, а также поиска (локализации) и модификации в целевой программе некоторой, уже реализованной сквозной функциональности.

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

Принципы АОП формировались задолго до их современной реализации. Так, профессор Ростовского университета A. J1. Фуксман еще в 1979 году издал книгу «Технологические аспекты создания программных систем», в которой рассматривались вопросы создания инструментального языка программирования, обеспечивающего технологию наименьших затрат при производстве программного обеспечения. АЛ. Фуксманом [11] был предложен подход к разработке программ под названием «технология рассредоточенных действий», сокращенно — РД-технология (другое название, использованное автором подхода, — технология верти кал ьного слоения), по своей сути близкий к АОП. Согласно данной технологии, исходная система является композицией вертикальных слоев (срезов) — совокупности рассредоточенных действий, фрагментов кода, реализующих некоторую расширяющую функцию. При этом процесс разработки и модификации программы представляет собой последовательность операций добавления или изменения расширяющих функций.

Функциональность АОП базируется на основной единице — аспекте, что следует из самого названия данного подхода. Аспект является модулем, реализующим сквозную функциональность. Данный модуль вызывается в программе в специальных точках внедрения (другой термин — применения) аспекта — join points. В свою очередь, аспектно-ориентированный подход рассматривается как возможность обеспечения локализации сквозной функциональности в аспектах для того, чтобы:

1) Избежать проблем с затратами лишнего времени на тес тирование и сборку конечного кода.

2) Улучшить общий дизайн системы.

3) Сократить производственные расходы на внесение необходимых изменений и дополнений в исходный код программы.

Приведенные краткие изложения сути подходов АОП и РД-технологии, предложенной Фуксманом наводят на мысль об их сходстве. Кроме того, в названии монографии Фуксмана [И] присутствует слово аспект. С сожалением можно отметить, что РД-технология не получила широкого распространения и выхода на коммерческий рынок, но она заняла должное iviecTO пионерской идеи в истории отечественного и мирового программирования. И ее можно по праву считать прародителем АОП.

Проведенный в процессе написания работы анализ предметной области показал, что применение инструментов АОП для перспективной платформы Microsoft.NET не выходит пока за рамки экспериментов. Для преодоления этих трудностей требуются дополнительные исследования. Тем не менее, платформа Microsoft.NET активно развивается, число ее пользователей растет, поэтому средства АОП для этой платформы необходимы и востребованы, а исследование в области аспектного подхода является актуальным на сегодняшний момент.

Главной особенностью использования аспектного подхода является его интеграция в уже существующие системы программирования. АОП не отрицает процедурного программирования или объектно-ориентированного подхода, но представляет собой новую ветку в эволюции технологий программирования, предлагает большие перспективы и новые решения.

В настоящее время АОП все шире распространяется среди программистов, — как в академической среде, так и в коммерческих фирмах, -во многом благодаря энтузиазму и активности разработчиков языка AspectJ.

Целью работы является реализация в технологии аспектно-ориентированного программирования для Microsoft.NET — Aspecl.NET [10, 42, 43, 44], предложенной научным руководителем, проф. В. О. Сафоновым, следующих возможностей:

• расширенного метаязыка для спецификации аспектов;

• подсистемы применения аспектов (weaver);

• метода интеграции подсистемы применения аспектов с Aspect.NET Framework (GUI).

Для достижения поставленных целей были поставлены и решены следующие задачи: исследование истории развития АОП, анализ текущего состояния на момент выполнения исследования, а также путей и возможностей дальнейшего развития АОПобоснование необходимости применения АОП для платформы Microsoft.NET;

— изучение и усовершенствование предложенной В. О. Сафоновым архитектуры системы Aspect.NET, в частности, средств спецификации аспектов и подсистемы применения аспектов;

— реализация данной архитектуры в рамках исследовательского программного продукта Aspect.NET.

Работа состоит из пяти глав, введения и заключения.

Во введении обосновывается актуальность работы, формулируются цели, задачи, объект и предмет диссертационного исследования, показана научная новизна и практическая ценность полученных результатов. Приводится структура диссертации.

В первой главе дается краткий исторический очерк исследований, посвященных теме диссертации. На основе исследований развития АОП дается определение аспекта — основной единицы, на которой базируется аспектно-ориентированный подход. Делается акцент на актуальности развития АОП, его гибкости и возможности интеграции с современными платформами для разработки программного обеспечения, в том числе с платформой Microsoft.NET как одной из наиболее перспективных.

Во второй главе диссертации производится обзор существующих технологий АОП и их краткий сравнительный анализ. Приводятся основные характеристики существующих языков АОП. Приводятся примеры, реализуемые с помощью основных инструментов АОП, которые наглядно иллюстрируют область применения аспектов и демонстрирую т неоспоримые положительные стороны АОП, области его применения. Также рассматривается аспектный подход при разработке ПО посредством методов.

АОП. На примерах поясняются языковые конструкции и особенное i и языков АОП.

В третьей главе представлен более практический подход к методам подсистем АОП. Рассматриваются принципы аспектного подхода к программированию с помощью языков АОП.

Предложена классификация определения аспектов, сформулировано общее состояние текущего развития АОП-инструментов для платформы .NET.

Определены основные понятия аспектно-ориентированного подхода: точка внедрения аспекта (JoinPoint), как строго определяемая точка выполнения программы для применения действий аспекта, и набор (срез) точек внедрения удовлетворяющих заданному условию (Pointcut). Рассмотрен набор инструкций языка AspectJ. Выявлена разница между языковыми группами аспектньтх и не аспсктных подсистем АОП. Представлены основные способы внедрения аспектов. Проанализирована производительность программных продуктов, разработанных с применением АОП.

Рассмотрены методы интеграции языка АОП в среду Microsolt.NET на примере Aspect.NET. Система Aspect.NET выбрана как наиболее подходящая для реализации целей и задач, определенных в данной работе. Подробно рассмотрены теоретические основы и архитектура Aspect.NET.

В четвертой главе рассмотрены практические основы применения технологии Aspect.NET, сформулированы основные принципы работы метаязыка Aspect.NET ML. Приведено практическое использование метаязыка АОП, сформулированы основные требования к конечному продукту, построенному на принципах Aspect.NET в рамках платформы Microsoft.NET. Произведена попытка интеграции аспектного метода в производство конечного программного продукта. На основе его практического применения выявлены положительные стороны использования подсистем АОП при реализации бизнес-логики в некотором программном продукте.

Описана усовершенствованная технология Aspect.NET, как пример того, насколько могут быть расширены возможности моделей АОП.

В пятой главе на основе полученных результатов предложены основные принципы применения языков и систем АОП в программировании, которые представляются перспективными. Приведены примеры организаций, работающих в сфере разработки ПО, которые развивают АОП и активно используют его при создании своих продуктов.

Также описаны принципы внедрения языка АОП в среду Microsoft.NET, представлены положительные стороны такой интеграции. Основные полученные результаты:

— предложена методика сравнения реализаций языков АОП;

— предложен и теоретически обоснован набор методов проектирования и разработки программных продуктов на основе АОП;

— предложена технология разработки сквозной функциональности и внедрения аспектов в целевую программу;

— разработана модель программного продукта на основе АОП в рамках платформы Microsoft.NET;

— реализована технология внедрения аспектов посредством точек присоединения к целевой программе и прототип подсистемы программного продукта, реализующий применение аспектов в АОП в рамках платформы Microsoft.NET.

Следующие компоненты системы Aspect.NET были реализованы коллективом аспирантов СПбГУ под научным руководством проф. В. О. Сафонова;

— инсталлятор и графический интерфейс (подсистема Aspect.NET Framework) — Михаил Грачев;

— конвертор из Aspect.NET ML в пользовательские атрибуты. NETАлександр Масленников;

— 1рафичсский интерфейс AspectRotor, совместимый с SSCLI [80] -Руслан Муханов.

Таким образом, в данной работе рассмотрен принципиально новый подход к программированию. Детально описано аспектно-ориентированное программирование (aspect-oriented programming) как технология разработки сквозной функциональности (cross-cutting concern) в виде специализированных модулей — аспектов (aspects), с целью его последующего внедрения (weaving) в программу путем активизации фрагментов кода аспекта (действий) в выделенных в целевой программе точках присоединения (или внедрения) — join points.

Заключение

.

В заключение хотелось бы отметить, что, несмотря на то, что АОП, как направление, еще недостаточно разработано и исследовано, оно, безусловно, заслуживает все большего внимания со стороны программистов.

На сегодняшний день в нескольких странах ведутся научные исследования по вопросам АОП, строятся системы и совершенствуются методики его использования и практического применения. Разработанную группой специалистов, под руководством проф. В. О. Сафонова, систему Aspect.NET активно используют зарубежные коллеги и единомышленники из университета Fortaleza (Бразилия) — работы Marcelo Barros [14, 15], в которых описаны принципы работы Aspect.NET, изложенные также в данной работенаучная работа Alessandro Rippamonti из Миланского университета, в которой приводится пример использования Aspect.NET в качестве инструмента протокола связи системы поддержкиэто исследование Mohamed Zaatar из Арабской Академии (Египет), использовавшего Aspect.NET для своего исследования на соискание степени в области науки и технологий на морском транспорте.

Весьма важна разработка методов формальной спецификации аспектов и их формальной верификации, которая в настоящий момент далека от своего решения. Тем не менее, возможности Aspect.NET в рамках Visual Studio также нашли своих первых пользователей.

В ходе выполнения работы достигнуты следующие результаты:

1. Проведена классификация систем АОП, анализ их развития и использования в рамках платформы Microsoft.NET.

2. Разработана спецификация метаязыка определений аспектов.

3. Разработан и реализован алгоритм применения аспектов на уровне исполняемых сборок .NET.

4. Разработан метод пользовательского управления и контроля за точками применения действий аспектов. Для достижения поставленных целей были решены следующие задачи:

— исследовано развитие технологии АОП;

— проанализировано состояние развития АОП на момент исследования, определены пути и возможности его дальнейшего развития;

— обоснована необходимость применения АОП для платформы Microsoft.NET;

— изучена и усовершенствована предложенная научным руководителем архитектура системы Aspect.NET как примера реализации технологии АОП, в частности, расширен метаязык спецификации аспектов Aspect.NET.ML и разработана архитектура подсистемы применения аспектов;

— реализованная подсистема применения аспектов интегрирована в исследовательский программный продукт Aspect.NET и успешно используется в его составе в течение двух лет, что является практическим подтверждением применимости разработанных методов.

В работе произведено исследование АОП, выделены и сформулированы его положительные черты, произведена обзорная характеристика методов реализации АОП, приведены некоторые примеры использования технологий АОП, представлено сравнение решения задач с использованием сквозной функциональности АОП и без нее, приведены примеры синтаксиса.

Проведена классификация подсистем АОП по методам применения и по способу определения аспектов. Определены и рассмотрены основные понятия аспектно-ориентированного подхода. Также дано определение АОП и аспекта, проведено исследование форм внедрения аспекта в исходный код для получения целевого продукта.

Проанализирована история развития АОП и его реализаций, а также существующая база технологий, альтернативных АОП. Приведен их краткий анализ и сравнительная характеристика с АОП. Предложена архитектура подсистемы применения аспектов.

Практической (программной) частью данной работы является разработка программной подсистемы, которая реализует применение аспектов в системе Aspect.NET (weaver). Подсистема интегрирована в исходный код исследовательского программного продукта Aspect.NET. В качестве среды ее реализации использована Microsoft Visual Studio.NET 2008, как наиболее благоприятная среда реализации АОП.

Выделены перспективы развития АОП в рамках среды Aspect.NET, а также возможные улучшения компоновщика Aspect.NET.

По теме диссертации опубликованы работы [2−5, 24−25].

Показать весь текст

Список литературы

  1. Буч Г., Объектно-ориентированный анализ и проектирование. -СПб: Невский диалект, 1999.
  2. Д.А. Реализация и практическое применение аспектно-ориентированной среды программирования для Microsoft .NET // СПб.: Научно-технические ведомости, СПбГПУ. 2009. № 3. С. 225−232.
  3. Д.В., Романовский К.Ю. DocLine: метод разработки документации семейств программных продуктов.//Программрование, 2008, № 4. С.1−13.
  4. Г. Надежность программного обеспечения. М.: Мир, 1980.
  5. В. Аспектно-ориентированное программирование —М., 2004.
  6. Е.В. Основные концепции и механизмы объектно-ориентированного программирования- М., 2005.
  7. Сафонов В.О. Aspect.NET инструмент аспектно-ориентированного программирования для разработки надежных и безопасных программ. -Компьютерные инструменты в образовании, 2007, № 5.
  8. A.JI. Технологические аспекты создания программных систем. — М.: Статистика, 1979.
  9. A. de Roo, М. Hendriks, W. Havinga, P. D’urr, L. Compose*: a Language- and Platform-Independent Aspect Compiler for Composition Filters.
  10. Aksit M., Bergmans L., Vural S. An Object-Oriented Language-Database Integration Model: The Composition-Filters Approach. — In: Proceedings of the ECOOP'92 Conference, LNCS 615, Springer-Verlag, 1992.
  11. Barros, Marcelo В. AOP Programagao Orientada a Aspectos com .NET. Revista Mundo .NET, 2008
  12. Barros, Marcelo B. AOP Aspect Oriented Programming with .NET. Mundo .NET Magazine, 2008.
  13. Blackstock. M. Aspect Weaving with C# and .NET. 2000.
  14. Czarnecki Krzysztof, Eisenecker Ulrich. Generative Programming: Methods, Tools, and Applications, Addison-Wesley, Paperback, Published June 2000.
  15. Czarnecki K. Generative Programming: Principles and Techniques of Software Engineering Based on Automated Configuration and Fragment-Based Component Models. PhD thesis, Technische Universitat Ilmenau, Germany, 1998.
  16. Dijkstra E. Programming Considered as a Human Activity. Classics in Software Engineering. New York, Yourdon Press, 1979.
  17. Eaddy Mark, Cyment Allan, Pierre van de Laar, Schmied Fabian, and Wolfgang Schult. Whitepapper: The value of Improving the Separation of Concerns // Technical Report CUCS-07. Columbia University, New York, USA, January 2007.
  18. 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).
  19. Gamma E., Helm R., Johnson R., Vlissides J., Methods of object-oriented design. Design patterns. — Piter publishers, St. Petersburg, 2001 (Russian translation).
  20. Grigoriev D., Safonov V. O. Aspect.NET: aspect-oriented programming for Microsoft.NET in practice // NET Developer’s Journal. 2005. № 7. P. 28−33.
  21. Grigoriev D., Safonov V. O. Aspect.NET an aspect-oriented programming tool for Microsoft.NET. // In: 110th Anniversary of Radio Invention- St. Petersburg- 2005, P. 11−21.
  22. Grigoriev D.A. Aspect.NET — aspect-oriented toolkit for Microsoft.NET based on Phoenix and Whidbey. // .NET Technologies 2006. University of West Bohemia Campus Bory. May 29 June 1, 2006. Full Papers Proceedings, Pilsen, Czech Republic, 2006.
  23. Flannemann, J., Kichales, 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).
  24. Flannemann J., Kiczales G. Design pattern implementations in Java and AspectJ. In: OOPSLA 02, New York, USA, November 2002. P. 161 — 173.
  25. Jacobson Ivar, 2004. Aspect-Oriented Software Development With Use Cases (Addison-Wesley Object Technology Series). With Pan-Wei Ng. Addison-Wesley.
  26. Jendrik Johannes, Roland Samlaus, and Mirko Seifert. Round-Trip Support for Invasive Software Composition Systems. Technische Universit. at Dresden, Computer Science Department, N. othnitzer Str. 46, 1 187 Dresden, Germany.
  27. Kapur Deepak, Musser David R, Stepanov Alexander A. Tecton, A language of manipulating Generic Objects. 1981.
  28. Kiczales G., Lamping J., Mendhekar A., etc. Aspect-oriented programming.- In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Finland, Springer-Verlag LNCS 1241. June 1997.
  29. Kiczales G., Lamping J., Mendhekar A., etc. Aspect-oriented programming. Published in proceedings of the European Conference on Object-Oriented Programming (ECOOP). Finland, Springer-Verlag LNCS 1241. June 1997.
  30. Kiselev I. Aspect-Oriented Programming with AspectJ. Indianapolis, IN, USA: SAMS Publishing, 2002.
  31. Lafferty D., Cahill V. Language Independent Aspect Oriented Programming. Proceedings of OOPSLA. March, 2003.
  32. Lieberherr K. 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.
  33. Lippert M., Videira Lopes. A Study on Exception Detection and Handling Using Aspect-Oriented Programming. Xerox PARC Technical Report P9910229 CSL-99−1, Dec. 99/.
  34. Masuhara, J., Kichales, G. Modeling Crosscutting in Aspect-Oriented Mechanisms. Proceedings of ECOOP'2003/.
  35. Meyer В., Applying Design by Contract, Prentice Hall, 1992.
  36. Richter, J. Programming for Microsoft.NET Framework. Microsoft Press, 2002.
  37. Stan Jarzabek, Paul Bassett, Hongyu Zhang and Weishan Zhang. XVCL: XML-based Variant Configuration Language// http://xml.coverpages.org/JarzabekREO 1 .pdf.
  38. Stepanov Alexander A., Kershenbaum Aaron, and Musser David R.: Higher Order Programming. March 5, 1987.
  39. Safonov V.O. Using Aspect-Oriented Programming for Trustworthy Software Development. John Wiley & Sons, 2008.
  40. Safonov V.O. Aspect.NET: a new approach to aspect-oriented programming. .NET Developer’s Journal, 2003, # 4.
  41. Safonov V.O. Aspect.NET: concepts and architecture. .NET Developer’s Journal, 2004, # 10.
  42. Simony Ch. The Death of Computer Languages, The Birth of Intentional Programming, Microsoft Research, 1995.
  43. Stelting S., Maassen O. Applying Java patterns. -Williams publishers, St. Petersburg, 2002 (Russian translation).
  44. Shukla, D., Fill, S. and Sells, D. Aspect-Oriented Programming Enables Better Code Encapsulation and Reuse. MSDN Magazine, March 2002.
  45. Zhuravlev E., Kiryanchikov V. On the opportunity of dynamic aspects integration in aspect-oriented programming. — Proc. of Electro-Technical University, Informatics, control and computing technologies, 2002, vol, 3, pp. 81 — 86 (in Russian).
  46. Aspect-Oriented Programming with AJDT, Andy Clement, Adrian Colyer, Mik Kersten http://www.comp.lancs.ac.uk/computing/users/chitchya/AAOS2003/Assets/cle mascolyerkersten. pdf/.
  47. AOP.NET Web page. Avaliable at http://sourceforge.net/projects/aopnet/
  48. AOP goes .NET Community Site. Avaliable at http://janus.cs.utwente.nl:8000/twiki/bin/view/AOSDNET/CharacterizationOfE xi sting Approaches.
  49. AJDE for Jbuilder Web page. Avaliable at http://aspecti4ibuildr.sourceforge.net.
  50. AspectWerkz. Available at http://aspectwerkz.copehaus.org/.
  51. Aspect-oriented software development Web site. Avaliable at www.aosd.net.
  52. AspectDNG Web page. Avaliable at http://sourceforge.net/projects/aspectdng/.
  53. Aspect.NET Web page. Avaliable at http://www.msdnaa.net/curriculum/?id=6219.
  54. Boss AOP Web site. Available at http://labs.jboss.com/portal/jbossaop.
  55. CaesarJ Web site. Available at http://www.caesarj.org/.
  56. Compose* Web site. Avaliable at http://composestar.sf.net/.
  57. Eclipse AspectJ Development Tools project Web page. Avaliable at http://www.eclipse.org/ajdt.
  58. Eclipse.org Main Web page. Avaliable at http://www.eclipse.org.
  59. EOS Web page. Avaliable at http://www.cs.virginia.edu/~eos.
  60. Homepage of the Subject-Oriented Programming Project, IBM Thomas
  61. J. Watson Research Center, YorktownHeights, New York, Web page. Avaliable at http://www.research.ibm.com/sop/.
  62. , R. (2002). I want my AOP part 1. Avaliable at http^/www.iavaworld.com/iavaw'orld/iw-Ol -2002/jw-0118-aspect.html.
  63. Microsoft Phoenix Web page. Avaliable at http://research.microsoft.com/phoenix.
  64. PostSharp Web page. Avaliable at http://gael.fraiteur.net/postsharp.aspx.
  65. Rational Software Corporation Web page. Avaliable at www.rational.com.
  66. RAIL Web page. Avaliable at http://rail.dei.uc.pt.
  67. The LOOM .NET Project Web page. Avaliable at http://www.dcl.hpi.uni-potsdam.de/research/loom/.
  68. The R# project. Web site. Avaliable at http://rsdn.ru/projects/rsharp/article/rshaфmag.xml.
  69. The AspectJ Programming Guide, 1998−2002, Xerox Corporation.
  70. Wicca Web page. Avaliable at http://wwwl.cs.columbia.edu/~eaddy/wicca/.
  71. Web site of AspectWerkz project: http://aspectwerkz.codehaus.org/.
  72. Web site of AOP project: http://sourceforge.net/projects.
  73. Web site of JBoss project: http://www.jboss.org/products/aop.
  74. Web site of Spring project: http://www.springframework.org/about.
  75. Web site of Weave.NET project: http://www.dsg.cs.tcd.ie/sites/Weave.NET
  76. Wikipedia page of SSCLI project: http://cn.wikipedia.org/wiki/Shared Source Common Language Infrastructure
  77. XVCL. Web site, http://fxvcl.sourceforge.net/
  78. Web site of Spring.NET project: http://www.springframework.net/.
Заполнить форму текущей работой