Разработка и реализация инструментария аспектно-ориентированного программирования для академической версии .NET тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат физико-математических наук Муханов, Руслан Салаватович

  • Муханов, Руслан Салаватович
  • кандидат физико-математических науккандидат физико-математических наук
  • 2010, Санкт-Петербург
  • Специальность ВАК РФ05.13.11
  • Количество страниц 110
Муханов, Руслан Салаватович. Разработка и реализация инструментария аспектно-ориентированного программирования для академической версии .NET: дис. кандидат физико-математических наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. Санкт-Петербург. 2010. 110 с.

Оглавление диссертации кандидат физико-математических наук Муханов, Руслан Салаватович

Введение.

Глава 1. Понятие и история развития аспектно-ориентированного программирования (АОП).

Глава 2. Обзор существующих технологий АОП.

2.1. Подходы по внедрению аспектов в целевое приложение.

2.2. Потенциальные ошибки при проектировании АОП-инструментов.

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

2.4. Обзор АОП-инструментов для платформы .NET.

2.5. Обзор инструментов для платформы Java.

2.6. Краткий обзор других инструментов.

2.7. АОП и гибкие (agile) процессы разработки ПО.

Глава 3. Инструментарий Aspect.NET для академической версии .NET.

3.1. Концепция и идея системы.

3.2. Технологии, на которых построен инструментарий.

3.2.1. Phoenix RDK.

3.2.2. Shared Source Common Language Infrastructure (SSCLI)/Rotor.

3.2.3. Особенности применения инструментария QT SDK.

3.3. Практическое применение.

3.4. Эффективность и производительность разработки программ.

3.4.1. Детали реализации на уровне MSIL.

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Разработка и реализация инструментария аспектно-ориентированного программирования для академической версии .NET»

На сегодняшний день наиболее распространена методология объектно-ориентированного программирования (ООП). Несмотря на эффективность подхода ООП, в настоящее время существуют проблемы, для решения которых необходимы новые методологии. В современном мире промышленное производство программного обеспечения достигло таких масштабов и такой сложности, что с каждым днем все труднее и дороже обходятся его разработка, поддержка, отладка, добавление новой функциональности, документирование, расширение и развитие. Причем сложность присуща большинству современных программных систем, и она обусловлена четырьмя основными причинами: сложностью реальной предметной области, из которой исходит заказ на разработку; сложностью управления процессом разработки; необходимостью обеспечить достаточную гибкость программы; неудовлетворительными способами описания поведения больших дискретных систем [6].

Как ранее, в 1980-х - 1990-х гг., на смену процедурному подходу пришло объектно-ориентированное программирование (ООП), так и сейчас на смену объектно-ориентированной концепции постепенно приходят новые парадигмы, среди которых - рассматриваемое в работе аспектно-ориентированное программирование (АОП). АОП является развитием процедурного и объектно-ориентированного программирования. Данная методология призвана снизить время, стоимость и сложность разработки современного программного обеспечения (ПО). Следует отметить, что концепция АОП не заменяет подход ООП, а органично дополняет его [9, 14]. Появление новых методологий всегда способствовало развитию науки и индустрии программного обеспечения, так как любая новая концепция, любой новый подход - это решение проблем, являющихся предпосылками для ее появления. Сложность программных систем - на сегодняшний день ключевая проблема всей индустрии. Поэтому любая новая методология для решения этой задачи, в том числе АОП, является актуальным направлением научных исследований.

В чем суть концепции АОП? Программная система рассматривается как совокупность различных компонент, отвечающих за ту или иную функциональность. Некоторую функциональность можно реализовать путем создания некоего модуля или нескольких модулей. Под «модулем» понимается некая четко выраженная структурная единица программы — процедура, функция, метод, класс, структура данных, пакет. Но есть еще такое понятие, как сквозная функциональность (crosscutting concerns), которую невозможно эффективно реализовать вышеописанным образом, ее нельзя выделить в отдельные сущности, так как фрагменты ее реализации рассредоточены по коду всей программной системы [9, 12].

Примерами сквозной функциональности может служить протоколирование (logging), добавление новых конструкций в некоторый язык программирования (например, параметризованных типов (generics) в язык С# 1.0), обработка ошибок, реализация подсистемы безопасности. Рассмотрим более подробно пример с добавлением какой-либо новой конструкции в реализуемый некоторым компилятором язык программирования. Все фазы компиляции - лексический анализ, синтаксический анализ, семантический анализ, оптимизацию, генерацию кода - необходимо будет обновить, чтобы добавить новую конструкцию. Это означает, что, помимо новой совокупности модулей, которые будут реализованы в компиляторе, в уже существующий код потребуется внести изменения - будут добавлены новые фрагменты, такие как определения данных, различные вызовы функций, методов и т.д.

Практически в любой современной программной системе (например, связанной с финансовыми операциями) требуется работа с базами данных, обеспечение безопасного доступа и т.д. В этом случае функциональность ведения журнала событий, целостности транзакций, авторизации, безопасности, производительности и т.д. является сквозной, т.е. пронизывает всю систему [Рис. 1].

Рис. 1. Практически любая современная система реализована примерно подобным образом

Реализация подобной сквозной функциональности без использования методологии АОП приведет к непонятному, рассредоточенному и запутанному коду, в котором абсолютно не связанные функциональности будут реализованы в одном модуле, повысит вероятность появления ошибок и некорректной работы системы в целом, что увеличит время и расходы на разработку. По оценкам специалистов [99], около 70% времени в проектах тратится на сопровождение и внесение изменений в готовый программный код. Поэтому важность методологии АОП и подобных трансформационных подходов в ближайшей перспективе очевидна. Профессор Э. Дейкстра в своей работе [97] утверждал: «Способ управления сложными системами был известен еще в древности — divide et impera (разделяй и властвуй)». АОП предлагает сквозную функциональность выделять в специализированные модули - аспекты и реализовывать отдельно от бизнес-логики [Рис.2].

Ill

Рис. 2. Суть подхода АОП.

Данная диссертационная работа выполнена в рамках проекта, поддержанного программой Microsoft Research [93], по разработке и реализации инструментария аспектно-ориентированного программирования Aspect.NET для академической версии Microsoft .NET - платформы Shared Source Common Language Infrastructure (SSCLI) / Rotor 2.0, распространяемой Microsoft на условиях лицензии Microsoft Shared Source. В настоящее время, в силу ряда проанализированных в диссертации причин, до проведения исследований данной диссертационной работы отсутствовали инструменты АОП-разработки для академической платформы SSCLI/Rotor, несмотря на растущую популярность АОП-подхода к разработке ПО. Разработанная в диссертации система AspectRotor является первым инструментом АОП для академической версии .NET.

Основные цели диссертационной работы:

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

2. Разработка и теоретическое обоснование методов реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы — академической версии .NET (SSCLI/Rotor)

3. Разработка и реализация программного инструмента AspectRotor на основе разработанных методов га düH|

С>

Диссертационная работа состоит из введения, трех глав, заключения, списка литературы. Работа содержит 110 страниц, 9 рисунков, 1 таблицу, список литературы из 102 наименований.

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Заключение диссертации по теме «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», Муханов, Руслан Салаватович

Основные результаты диссертации опубликованы в работах [1-5]. В работах [1, 4, 5] Сафонову В.О. принадлежат общие постановки задач, а Муханову P.C. - разработка и реализация методов и принципов решения данных задач, разработка примеров и программного комплекса. В работе [3] соискателю принадлежит описание основных принципов при разработке первой версии инструментария аспектно-ориентированного программирования для академической версии .NET. В публикации [5] соискателю принадлежит описание особенностей реализации и методов применения библиотеки QT при разработке инструментария. В статье [2] соискателем описывается разработанный комплекс методов реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы - академической версии .NET (SSCLI/Rotor). В публикации [4] соискатель описывает вторую версию инструментария аспектно-ориентированного программирования, а также приводит ряд наглядных примеров использования аспектов. В работе [1] соискателю принадлежит описание механизмов практического применения второй версии инструментария аспектно-ориентированного программирования с рассмотрением разработанных аспектов. Работа [1] опубликована в журнале из списка ВАК.

Заключение

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

Инструментарий аспектно-ориентированного программирования, разработанный Р. Мухановым, позволил впервые предложить использование АОП при разработках для академической версии .NET - платформы SSCLI/Rotor, способствует более широкому использованию и распространению АОП, не ограничиваясь лишь платформами Java и (коммерческой) Microsoft.NET. Таким образом, это позволит сделать еще один шаг для накопления индустрией ПО опыта в создании программных систем с использованием методологии АОП, что, безусловно, будет усиливать ее дальнейшее развитие и активное применение.

В диссертационной работе получены следующие основные результаты:

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

2. Разработаны и теоретически обоснованы методы реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы - академической версии .NET (SSCLI/Rotor)

3. Разработан и реализован программный инструмент АвресЖл^ог на основе разработанных методов

Апробация и публикации автора по теме диссертации

Работа дважды заняла 1-е место на межвузовском конкурсе-конференции студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования» в 2008 и 2010 годах.

Список литературы диссертационного исследования кандидат физико-математических наук Муханов, Руслан Салаватович, 2010 год

1.. Муханов P.C., Сафонов В.О. Реализация и практическое применение системы Aspect.NET для академической версии .NET // СПб.: Научно-технические ведомости, СПбГПУ. 2010. № 4. С. 174-179

2. Г. Буч. Объектно-ориентированный анализ и проектирование. Издательство Бином, Невский диалект, Санкт-Петербург, 1999

3. A.JI. Фуксман. "Технологические аспекты создания программныхсистем". М.: Статистика, 1979

4. Горбунов-Посадов М.М. Как растет программа. — Препринт Института прикладной математики им. М.В. Келдыша РАН, 2000, № 50. — 16 с.http://www.keldysh.rn/softness/grow.htm

5. Vladimir О. Safonov. "Using aspect-oriented programming for trustworthy software development". Wiley Interscience. John Wiley & Sons, 2008,p. 338

6. Сафонов В.О. Aspect.NET инструмент аспектно-ориентированного программирования для разработки надежных и безопасных программ. - Компьютерные инструменты в образовании, 2007, №5, С. 03-13

7. Сафонов В.О. Современные технологии разработки надежных и безопасных программ (Trustworthy Computing). Компьютерные инструменты в образовании, 2008, № 6, С. 25-33.

8. Сафонов В.О. Практическое руководство по системе аспектно-ориентированного программирования Aspect.NET. Часть 1. Компьютерные инструменты в образовании, 2008, № 3, С. 20-33.

9. Сафонов В.О. Практическое руководство по системе аспектно-ориентированного программирования Aspect.NET. Часть 2. Компьютерные инструменты в образовании, 2008, № 4, С. 12-20.

10. Vladimir О. Safonov and Dmitry A.Grigoriev. "Aspect.NET an aspect-oriented programming tool for Microsoft.NET." In: Proceedings of IEEE Regional Conference 2005, St. Petersburg, 2005

11. Vladimir O. Safonov. "Aspect.NET: concepts and architecture." .NET Developer's Journal. October 2004

12. Vladimir O. Safonov. "Aspect.NET A New Approach to Aspect-Oriented Programming." .NET Developer's Journal.April 200317. http://www.research.microsofit.com/phoenix/ сайт, посвященный Phoenix Academic Program

13. Документация no QT SDK компании Nokia. http://doc.qt.nokia.com/19. http://research.microsoft.com/sscli/ Shared Source Common Language Infrastructure/Rotor 2.020. http://aosd.net/ Aspect-Oriented Software Development Community & Conference

14. Dijkstra EW. Notes on structured programming. EWD 249. August 1969.

15. Wirth N. Program development by stepwise refinement. Communications of the ACM 1971; 14 (4): 221 227.

16. Laddad R. Aspect! in action. Practical aspect oriented programming. Manning Publications, Greenwich, CT, 2003.

17. Laddad R. Aspect! in action. Enterprise AOP with Spring Applications. Manning Publications, Greenwich, CT, September, 2009.

18. Personal page of Ramnivas Laddad. Available at http://ramnivas.com

19. AspecU. Available at http://www.aspectj.org

20. Apache Ant. Available at http://ant.apache.org .

21. AspectWerkz. Available at http://aspectwerkz.copehaus.org/.

22. AspectJ development tools (AJDT) Web site. Available at http://eclipse.org/ajdt.

23. Dijkstra EW. On the role of scientific thought. EWD 447.1974. Available at http://www.cs.utexas.edu/users/EWD/ewd04xx/EWD447.PDF .

24. Reflector. Available at http://www.red-gate.com/products/reflector/

25. Manifesto for Agile software development. Available at http://www.agilemanifesto.org/

26. Extreme Programming Web pages. Available at http://www.extremeprogramming.org

27. Rising L, Janoff NS. The scrum software development process for small teams. IEEE Software , 2000;(4): 2-8.

28. Hirotaka Takeuchi, Ikujiro Nonaka. The New Product Development Game. Harvard Business Review. 1986.

29. Wikipedia article on Scrum. Available at http://ru.wikipedia.org/wiki/Scrum

30. Howard M, LeBlanc DC. Writing Secure Code, 2nd ed. Microsoft Press, Redmond, WA, 2002.

31. Wikipedia article on test-driven development. Available at http://en.wikipedia.org/wiki/Test-drivendevelopment

32. Wikipedia article on debugging. Available at http://en.wikipedia.org/wiki/Debugging

33. Webster B. Pitfalls of Object-Oriented Development. M&T Books, New York, 1995

34. Wikipedia article on Simula language. Available at http://en.wikipedia.org/wiki/Simula

35. Wikipedia article on aspect-oriented programming. Available at http://en.wikipedia.org/wiki/Aspect-oriented programming

36. Wikipedia article on Grep utility. Available at http://en.wikipedia.org/wiki/Grep

37. Wikipedia article on dead code. Available at http://en.wikipedia.org/wiki/Deadcode

38. Wikipedia article on Design by contract. Available at http://en.wikipedia.org/wiki/Designby contract

39. Wikipedia article on XML. Available at http://en.wikipedia.org/wiki/XML

40. Extensible Markup Language (XML). Available at http://www.w3 .org/XML/

41. Wikipedia article on API (Application Programming Interface). Available at http://en.wikipedia.org/wiki/Applicationprogramminginterface

42. Common Language Runtime (CLR). Available at http://msdn.microsoft.com/en-us/library/8bs2ecf4.aspx

43. LOOM.NET Web pages. Available at http://www.rapier-loom.net

44. AspectDNG Web pages. Available at http://sourceforge.net/proiects/aspectdng/

45. Aspect# Web pages. Available at http://www.castleproiect.org/aspectsharp/

46. PostSharp Web pages. Available at http://www.postsharp.org/

47. DotSpect Web pages. Available at http://dotspect.tigris.org/

48. Encase Web pages. Available at http://theagiledeveloper.com/articles/Encase.aspx

49. Compose* Web pages. Available at http://composestar.sourceforge.net/

50. Weave.NET. Available at http://www.dsg.cs.tcd.ie/dynamic/7category id=-26

51. Seasar.NET Web pages. Available at http://www.seasar.org/en/dotnet/

52. Spring.NET Framework Web pages. Available at http ://www. springframework.net/

53. Puzzle.NET NAspect Web pages. Available at http://www.puzz! eframework.com/forum/forum. aspx?Forum:=24

54. Wicca and Phx.Morph Web site. Available at http://www.cs.columbia.edu/~eaddy/wicca

55. Mono. Available at http://www.mono-proiect.com

56. Wikipedia article on Factory method pattern. Available at http://en.wikipedia.org/wiki/Factory method pattern

57. Wikipedia article on MS1L (Microsoft Intermediate Language). Available at http://en.wikipcdia.org/wiki/Common Intermediate Language

58. Standard ECMA-335. Common Language Infrastructure (CL1). Available at http://www.ecma-international.org/publications/standards/Ecma-335.htm

59. XML Path Language (XPath). Availabe at http://www.w3 .org/TR/xpath/

60. Wikipedia article on XPath (XML Path Language). Available at http://en.wikipedia.org/wiki/XPath

61. Microsoft Managed Debugger (mdbg) Web pages. Available at http://msdn.microsoft.com/msdntv/episode.aspx7xmHepisodes/en/20060302clris/ manifest.xml

62. Wikipedia article on IDE (Integrated development environment). Available at http://en.wikipedia.org/wiki/Integrated development environment

63. Wikipedia article on refactoring. Available at http://en.wikipedia.org/wiki/Code refactoring

64. Wikipedia article on web-services. Available at http://en.wikipedia.org/wiki/Websei-vice

65. Wikipedia article on unit testing. Available at http://en.wikipedia.org/wiki/Unit testing

66. Eclipse. Available at http://www.eclipse.org/

67. Wikipedia article on Eclipse. Available at http://en.wikipedia.org/wiki/Eclipse %28software%29

68. JBoss AOP Web site. Available at http://labs.iboss.com/portal/ibossaop

69. Seasar Web site. Available at http://en.wikipedia.org/wiki/Seasar

70. Caesar J Web site. Available at http://www.caesarj.org/

71. JAC Web site. Available at http://jac,ob}ectweb.org/

72. Dynaop Web site. Available at http://dynaop.dev.java.net/

73. Javassist Web page. Available at http://www.csg.is.titech.ac.ip/~chiba/iavassist/

74. LogicAJ Web page. Available at http://roots.iai.uni-bonn.de/research/logicaj

75. Reflex Web site, Available at http://www.pleiad.doc.tichile.cl/research/software/reflex

76. JMangler Web site. Available at http://roots.iai.uni-bonn.de/research/jmangler

77. Spring Framework Web site. Available at http://www.springframework.org/

78. JBoss Application Server Web site. Available at http://jboss.org/jbossas/

79. KDE (K Desktop Environment) community portal. Available at http://dot.kde.org/2004/04/12/interview-trolltechs-eirik-eng-and-matthias-ettrich

80. GTK+ Web site. Available at http://gtk.org/

81. Free Software QT Applications Web page. Available at http://qt-apps.org/

82. Adobe Photoshop Album Web page. Available at http://www.adobe.com/support/downloads/detail.jsp?ftpID:=2977

83. Skype Web page. Available at http://www.skvpe.com/

84. Google Earth Web page. Available at http://earth.google.com/

85. Opera Web page. Available at http://www.opera.com/

86. Microsoft Research Web page. Available at http://research.microsoft.com

87. Microsoft .NET Framework Web page. Available at http://www.microsoft.com/net/

88. Microsoft Shared Source Initiative Web page. Available at http://www.microsoft.com/resources/sharedsource/default.mspx

89. Wikipedia article on Shared Source. Available at http://en.wikipedia.org/wiki/Sharedsource

90. E. Dijkstra. Programming Considered as a Human Activity. Classics in Software Engineering. New York, Yourdon Press, 1979.

91. G. Kiczales, J. Lamping, A. Mendhekar, etc. Aspect-oriented programming. Published in proceedings of the European Conference on Object-Oriented Programming (ECOOP). Finland, Springer-Verlag LNCS 1241. June 1997.

92. Rational Software Corporation Web site. Available at www.rational.com

93. Павлов В. Аспектно-ориентированное программирование. — M., 2004 http://www.javable.com/columns/aop/workshop/01/

94. Dijkstra EW. Go to statement considered harmful. Communications of the ACM 1968; 11 (3): 147-148

95. Bohm C., Jacopini G. Flow diagrams, Turing machines and languages with only two formation rules. Communications of the ACM 1966; 9 (5).

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