Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Разработка и реализация инструментария аспектно-ориентированного программирования для академической версии. 
NET

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

Реализация подобной сквозной функциональности без использования методологии АОП приведет к непонятному, рассредоточенному и запутанному коду, в котором абсолютно не связанные функциональности будут реализованы в одном модуле, повысит вероятность появления ошибок и некорректной работы системы в целом, что увеличит время и расходы на разработку. По оценкам специалистов, около 70% времени в проектах… Читать ещё >

Содержание

  • Глава 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

Разработка и реализация инструментария аспектно-ориентированного программирования для академической версии. 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 на основе разработанных методов га duH|.

С>

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

Основные результаты диссертации опубликованы в работах [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 годах.

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

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

  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 200 317. 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/2 006 0302clris/ 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).
Заполнить форму текущей работой