Формальная модель контекстно-зависимых программных структур и их преобразований в применении к методологии Language-Driven Development тема диссертации и автореферата по ВАК РФ 05.13.17, кандидат технических наук Седунов, Алексей Александрович

  • Седунов, Алексей Александрович
  • кандидат технических науккандидат технических наук
  • 2012, Воронеж
  • Специальность ВАК РФ05.13.17
  • Количество страниц 157
Седунов, Алексей Александрович. Формальная модель контекстно-зависимых программных структур и их преобразований в применении к методологии Language-Driven Development: дис. кандидат технических наук: 05.13.17 - Теоретические основы информатики. Воронеж. 2012. 157 с.

Оглавление диссертации кандидат технических наук Седунов, Алексей Александрович

ОГЛАВЛЕНИЕ.

ВВЕДЕНИЕ.

1 АНАЛИЗ ЯЗЫКОВ И СРЕДСТВ РАЗРАБОТКИ.

1.1 Расширение объектно-ориентированного подхода.

1.2 Средства метаразработки.

2 СТРУКТУРА ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ МОДЕЛЕЙ.

2.1 Основные обозначения.

2.2 Основные понятия.

2.3 Метаструктура.

2.4 Графическая нотация для описания моделей. Модель Kernel.

3 ДЕЙСТВИЯ В СТРУКТУРЕ МОДЕЛЕЙ.

3.1 Преобразования контекста.

3.2 Основные структуры механизма действий.

3.3 Семантика действий.

4 ОСОБЕННОСТИ РЕАЛИЗАЦИИ.

4.1 Архитектура LDD-фреймворка.

4.2 TBL.

4.3 Язык запросов TQ.

Рекомендованный список диссертаций по специальности «Теоретические основы информатики», 05.13.17 шифр ВАК

Введение диссертации (часть автореферата) на тему «Формальная модель контекстно-зависимых программных структур и их преобразований в применении к методологии Language-Driven Development»

Актуальность средств метапрограммирования

В современной практике разработки программного обеспечения можно выделить 3 принципиальные проблемы, связанные, главным образом, с использованием языков общего назначения:

• проблема "перевода";

• проблема изменчивости;

• проблема разнородности;

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

• увеличивать время разработки из-за необходимости выражения предметной области задачи в терминах языка программирования;

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

Проблема "перевода" также имеет отношение к предметно-ориентированным расширениям языка программирования. В современной практике разработки такие расширения обычно представлены в форме библиотек разработчика. Поскольку библиотеки создаются на универсальном языке программирования и используются в контексте этого языка (или других языков одной платформы, как в случае с Java и .NET), они описывают свою предметную область лишь косвенно, т. е. в терминах языка программирования. Это усложняет изучение библиотек разработчиками, даже если они обладают опытом в соответствующей предметной области. Кроме того, инструментальные среды, имеющиеся в распоряжении разработчиков, могут предоставить контекстные средства для предметно-ориентированной обработки только для фиксированного набора библиотек, так как поддержка новых требует разработки модулей расширения для самой инструментальной среды, что для разработчиков-пользователей библиотеки в большинстве случаев является неприемлемым. Так, на платформах Java и .NET в настоящее время существует несколько десятков языков, включая языки, специфичные для этих платформ, а также портированные версии языков, не зависимых от Java/.NET. В то же время только для нескольких из них, наиболее распространенных на практике, существует полноценная поддержка со стороны интегрированных сред разработки (причем набор модулей расширения, а также их качество и полнота реализуемой поддержки языка для различных IDE также различается). Аналогичная ситуация наблюдается с фреймворками, ориентированными на разработку Web-приложений и другими предметно-ориентированными библиотеками.

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

• проявление ограничений традиционного объектно-ориентированного подхода, используемого в большинстве современных языков программирования;

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

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

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

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

3. Неоднородность технологической базы. Данный аспект проявляется в том, что на практике сложно отделить программную систему от ее технологической базы, даже если бизнес-логика системы непосредственно не связана с конкретной технологией разработки и определяется лишь предметной областью задачи. Моделирование и документирование системы на уровне абстракции предметной области не решает проблемы, поскольку, как правило, не обеспечивает достаточно полного описания системы.

В целом можно сказать, что основной проблемой современной разработки является отсутствие контроля разработчика над используемыми им языками программирования, или, говоря шире, над инструментальными средствами в целом. Решение этой проблемы предполагает переход к открытой архитектуре языков и основанных на них средствах разработки, позволяющей разработчику модифицировать их (главным образом, за счет расширения) в соответствии с целями конкретного программного продукта. В свою очередь, для реализации этой возможности необходимы средства манипуляции внутренним представлением программ и их представлением, т. е. средства метапрограммирования, или, в более широком контексте, метаразработки. Наиболее перспективным решением представляется подход, известный как LDD (Language-Driven Development). С позиции LDD [14, 26] ключевым компонентом любого процесса разработки является набор используемых языков, каждый из которых ориентирован на решение определенного круга задач. Сами языки при этом могут быть как предметно-ориентированными, так и универсальными, опираться на конкретные технологические решение или описывать требуемый аспект системы на абстрактном уровне. Разработчик имеет в своем распоряжении средства, позволяющие создавать новые и модифицировать уже имеющиеся языки, причем эти средства должны обеспечивать максимальную возможность повторного использования существующего программного кода.

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

Таким образом, LDD-инфраструктура предоставляет среду, способствующую решению поставленных проблем. В частности, позволяет разрабатывать устойчивые к изменениям абстракции, определять правила реализации этих абстракции на конкретной технологической базе и реализовывать специализированные инструментальные средства (редакторы, инструменты анализа, преобразования моделей и т.д.).

Цель и задачи исследования

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

1. Анализ основных решений в области языков и систем разработки, поддерживающих элементы метапрограммирования.

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

3. Разработка формальной модели внутреннего представления программ в применении к методологии Language-Driven Development.

Объект и предмет исследования.

Объектом данного исследования являются языки и системы программирования. Предмет исследования составляют средства метапрограммирования, а также методология Language-Driven Development и объектно-ориентированной разработки программного обеспечения.

Методы исследования

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

Основные результаты, выносимые на защиту, и их научная новизна.

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

2. Формальная модель преобразования структуры программ (механизм действий), отличающаяся наличием системы контроля версий, что позволяет использовать ее для разработки инструментальных средств, поддерживающих одновременную разработку с использованием различных версий языка программирования.

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

Теоретическая и практическая значимость работы

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

Апробация работы и публикации

Основные положения работы докладывались на конференциях "Информатика. Проблемы, методология, технологии" (Воронеж, 2010), "Технологии Microsoft в теории и практике программирования" (Москва, 2010) и "ICOOOLPS: Workshop on Implementation, Compilation and Optimization of Object-Oriented Languages, Programs and Systems" (European Conference on Object-Oriented Programming, Lancaster, UK, 2011).

Основное содержание диссертационной работы изложено в 12 работах, из них 4 статьи (№№ 4, 5, 9,11) в журналах, рекомендованных ВАК РФ:

1. Седунов А. А. Гибридный объектно-ориентированный метаязык // Труды VI всероссийской научно-практической конференции «Технологии Microsoft в теории и практике программирования», Москва, 2009.

2. Седунов А. А., Тюкачев Н. А. Объектно-ориентированный язык спецификаций // Труды всероссийской научно-технической конференции «Молодые исследователи - регионам», Вологда, 2009.

3. Седунов А. А. Объектно-ориентированный метаязык // Вестник ВГУ, серия «Системный анализ и информационные технологии», 2009, №1.

4. Седунов А. А., Тюкачев Н. А. Построение формальных моделей с применением объектно-ориентированного метаязыка // Вестник ВГТУ, 2009, т. 5, №10.

5. Седунов А. А. Присоединяемые типажи в Java: расширение языка и область применения // Вестник Воронежского государственного университета, серия «Системный анализ и информационные технологии», 2010, №1.

6. Седунов А. А. Расширение функциональности классов с помощью присоединяемых типажей. // Труды X международной конференции «Информатика: проблемы, методология, технологии», Воронеж, 2010.

7. Седунов А. А. Язык запросов для внутреннего представления ВОО-программ // Труды VII всероссийской научно-практической конференции «Технологии Microsoft в теории и практике программирования», Москва, 2010.

8. Седунов А. А., Тюкачев Н. А. Расширение языка Java с помощью присоединяемых типажей // Труды всероссийской научно-технической конференции «Молодые исследователи - регионам», Вологда, 2010.

9. Седунов А. А. Формализация объектной структуры с помощью систем объектных уравнений // Вестник ВГУ, серия «Системный анализ и информационные технологии», 2010, №2.

10. Седунов А. А. Расширение функциональности классов с помощью присоединяемых типажей. // Труды XI международной конференции «Информатика: проблемы, методология, технологии», Воронеж, 2011.

11. Седунов А. А. Структура ядра метаязыка в системе LDD-программирования // Вестник ВГУ, серия «Системный анализ и информационные технологии», 2011, №1.

12. Sedunov Aleksey, Tyukachev Nikolay. An Approach to Modular Object-Oriented Programming in Language-Driven Development Framework // 6th ICOOOLPS Workshop, European Conference on Object-Oriented Programming, Lancaster, UK, 2011.

Структура и объем работы

Диссертация состоит из введения, 4 глав, заключения и списка литературы. Общий

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

Заключение диссертации по теме «Теоретические основы информатики», Седунов, Алексей Александрович

Заключение

В настоящей диссертационной работе проведено исследование проблемы построения математической модели системы разработки по методологии ЬЭО и создание на ее основе прототипа программной инфраструктуры. В процессе выполнения исследования решены следующие задачи:

4. Анализ основных решений в области языков и систем разработки, поддерживающих элементы метапрограммирования.

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

6. Разработка формальной математической модели, описывающей структуру внутреннего представления программ для ЬОО-инфраструктуры.

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

1. Формальная модель, описывающая обобщенную структуру внутреннего представления программ.

2. Формальная модель преобразований структуры программ (механизм действий.

3. Методика построения языков программирования, расширяющая возможности объектно-ориентированного подхода.

Список литературы диссертационного исследования кандидат технических наук Седунов, Алексей Александрович, 2012 год

1. H. Abelson, G. J. Sussman, J. Sussman. Structure and 1.terpretation of Computer Programs (Second Edition) - The MIT Press, 1996. http://mitpress.mit.edu/sicp/full-text/book/book.html

2. Davide Ancona, Elena Zucca. Overriding Operators in a Mixin-Based Framework. // Proceedings of 9th International Symposium on Programming Languages: Implementations, Logics, and Programs PLILP'97, Southampton, UK, September 3-5, 1997.

3. Malte Appeltauer, Robert Hirschfeld, Michael Haupt, and Hidehiko Masuhara ContextJ: Context-oriented Programming with Java. // Proceedings of the JSSST Annual Conference 2009, 2D-1, Shimane University, Matsue, Shimane, Japan, September 16, 2009.

4. K. B. Bruce. Foundations of Object-Oriented Languages. Types and Semantics. The MIT Press, 2002.

5. C. Chambers. The Diesel Language Specification and Rationale, 2006 http://wvvw.cs.washington.edu/research/projects/cecil/wvvw/Release/doc-diesel-lang/diesel-spec.pdf

6. Juan Chen. Decidable Subclassing-Bounded Quantification. // Proceedings of the 2005 ACM SIGPLAN International Workshop on Types in Languages Design and Implementation TLDI'05, January 10, 2005, Long Beach, California, USA.

7. Shigeru Chiba, Muga Nishizawa. An Easy-to-Use Toolkit for Efficient Java Bytecode Translators. // Proceedings of 2nd International Conference on Generative Programming and Component Engineering (GPCE '03), LNCS 2830, pp. 364-376, Springer-Verlag, 2003.

8. Aske Simon Christensen, Christian Kirkegaard, Anders Moiler. A Runtime System for XML Transformations in Java. // Proceedings of Second International XML Database Symposium, XSym 2004, Toronto, Canada, August 29-30, 2004.

9. A. Clark, P. Sammut, J. Willans. Applied Metamodeling. A Foundation for Language Driven Development (Second Edition), 2008. http://www.ceteva.com/home/Papers/AppIied%20MetamodeIling%20%28Second %20Edition%29.pdf

10. A. Clark, P. Sammut, J. Willans. Superlanguages. Developing Languages and Applications with XMF, 2008. http://itcentre.tvu.ac.uk/~clark/Papers/Superlanguages.pdf

11. A. Clark, L. Tratt. Language Factories, 2009. http://itcentre.tvu.ac.uk/~clark/Papers/language factories.pdf

12. A. Clark, A. Evans, P. Sammut, J. Willans. Transformation Language Design. A

13. Metamodelling Foundation. LNCS 3256, 2004.149

14. J.R. Cordy, I. H. Carmichael, R. Halliday. The TXL Programming Language. Version 10.5.2007. http://www.txl.ca/docs/TXL105ProgLang.pdf

15. J.R. Cordy. "The TXL Source Transformation Language". Science of Computer Programming 61, 3 (August 2006).http://www.cs.queensu.ca/~cordy/Papers/Cordy TXL SCP.pdf

16. Andrea Corradi, Marco Servetto, Elena Zucca. DEEPFJIG. Modular composition of nested classes. // Proceedings of 2010 Workshop on Foundations of Object-Oriented Languages, FOOL '10 October 17, 2010, Reno, Nevada, USA.

17. C# Language Specification, Version 3.0. http://download.microsoft.com/downIoad/3/8/8/388e7205-bcl0-4226-b2a8-75351c669b09/CSharp%20Language%20Specification.doc

18. C# Language Specification, Version 4.0 http://downIoad.microsoft.com/download/0/B/D/0BDA894F-2CCD-4C2C-B5A7-4EB1171962E5/CSharp%20Language%20Specification.doc

19. B. De Fraine. Range Parameterized Types. Use-site Variance without the Existential Questions. FTfJP'09, 2009.

20. S. Dmitriev. Language Oriented Programming. The Next Programming Paradigm. JetBrains OnBoard, 2004. http://www.onboard.jetbrains.com/isl/articles/04/10/lop/

21. Iulian Dragos, Martin Odersky. Compiling Generics Through User-Directed

22. Type Specialization // Proceedings of the 4th workshop on the Implementation,150

23. Compilation, Optimization of Object-Oriented Languages and Programming Systems ICOOOLPS'09 Genova, Italy.28. 0. Eini. DSLs in Boo. Domain-Specific Languages in .NET. Manning Publications Co., 2010. - 352 pp.

24. Michael Eisenberg, Harold Abelson. Programming in Scheme. MIT Press, 1990.

25. Raphael A. Finkel. Advanced Programming Language Design. Addison-Wesley Publishing Company, 1996.

26. Daniel P. Friedman, Mitchell Wand. Essentials of Programming Languages. -MIT Press, 2008.

27. Alessandro Garcia, Claudio Sant'Anna, Eduardo Figueiredo, Uirâ Kulesza, Carlos Lucena, and Arndt von Staa. Modularizing Design Patterns with Aspects: A Quantitative Study. // Transactions on Aspect-Oriented Software Development I, Springer, 2006.

28. P. Graham. On Lisp. Advanced Techniques for Common Lisp, 1993.

29. Jan Hidders, Jan Paredaens, Roel Vercammen, Serge Demeyer. A Light but Formal Introduction to XQuery. // Proceedings of Second International XML Database Symposium, XSym 2004, Toronto, Canada, August 29-30, 2004.

30. Javaassist Library www.javassist.org/

31. JetBrains Meta Programming System http://www.jetbrains.com/mps/

32. R. Laddad. AspectJ in Action. Enterprise AOP with Spring Applications -Manning, 2009.

33. Daan Leijen. Flexible Types: Robust type inference for first-classpolymorphism. // Proceedings of the 36th Annual ACM SIGPLAN-SIGACT151

34. Symposium on Principles of Programming Languages POPL'09, January 18-24, 2009, Savannah, Georgia, USA.

35. Karl Lieberherr. Adaptive Object-Oriented Software: The Demeter Method. -PWS Publishing Company, 1996.

36. M. Fowler. Language Workbenches. The Killer-App for Domain Specific Languages, 2005. http://martinfowler.com/articles/languageWorkbench.html

37. T. Millstein, C. Frost, J. Ryder, A. Warth. Expressive and Modular Predicate Dispatch for Java. ACM TOPLAS, Vol. 31, No. 2, Article 7, 2009.

38. T. Millstein, T. Leavens, C. Chambers. Multijava. Design Rationale, Compiler Implementation and Applications. Iowa State University, 2004. ftp://ftp.cs.iastate.edu/pub/techreports/TR04-01/TR.pdf

39. Pedro J. Molina. Introducing Model-Driven Software Development // Proceedings of the 1st Code Generation Conference, May 25 27, 2011, Cambridge, UK.

40. Benoit Montagu, Didier Remy. Modeling Abstract Types in Modules with Open Existential Types. // Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages POPL'09, January 18-24, 2009, Savannah, Georgia, USA.

41. Miguel P. Monteiro, Joao M. Fernandes. Towards a Catalogue of Refactorings and Code Smells for AspectJ. // Transactions on Aspect-Oriented Software Development I, Springer, 2006.

42. Adriaan Moors, Frank Piessens, Martin Odersky. Generic of a Higher Kind. // Proceedings of Conference in Object-Oriented Programming Systems, Languages and Applications, OOPSLA'08, October 19-23, 2008, Nashville, Tennessee, USA.

43. Adriaan Moors, Frank Piessens, Martin Odersky. Safe Type-level Abstraction in Scala. // Proceedings of 2008 International Workshop on Foundations of Object-Oriented Languages FOOL'08 13 January, San Francisco, California, USA.

44. MOF 2.0 Core Specification. http://www.omg.Org/spec/MQF/2.0/PDF/

45. Radu Muschevici, Alex Potanin, Ewan Tempero, James Noble. Multiple Dispatch in Practice. // Proceedings of Conference in Object-Oriented Programming Systems, Languages and Applications, OOPSLA'08, October 19-23, 2008, Nashville, Tennessee, USA.

46. Benjamin C. Pierce. Types and Programming Languages. The MIT Press, 2002.-623 pp.

47. Benjamin C. Pierce. Advanced Topics in Types and Programming Languages. -The MIT Press, 2005. 589 pp.

48. Adam Richard, Ondrej Lhotak. OOMatch: Pattern Matching as Dispatch in Java. // Proceedings of 2008 Workshop on Foundations of Object-Oriented Languages, FOOL'08 Sunday, 13 January 2008 San Francisco, California.

49. Sukyoung Ryu, Changhee Park, Guy L. Steele Jr. Adding Pattern Matching to Existing Object-Oriented Languages. // Proceedings of 2010 Workshop on Foundations of Object-Oriented Languages, FOOL '10 October 17, 2010, Reno, Nevada, USA.

50. Michael L. Scott. Programming Language Pragmatics, Third Edition. Morgan Kaufmann, 1999.

51. Robert W. Sebesta. Concepts of Programming Languages. Addison-Wesley Publishing Company, 2001.

52. Ed Seidewitz: Models, Programs and Executable UML. // Proceedings of the 1st International Workshop on Combined Object-Oriented Modeling and Programming COOMP 2011, October 23, 2011, Portland, USA.

53. R. Solmi. Whole Platform, Ph.D Thesis, TR UBLCS-2005-07, University of Bologna, 2005. http://www.cs.unibo.it/pub/TR/UBLCS/2005/2005-07.pdf

54. Squeak http://www.squeak.org/

55. Standard ECMA-262. ECMAScript Language Specification (5th Edition), 2009 http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

56. Michiaki Tatsubori, Shigeru Chiba, Marc-Olivier Killijian, and Kozo Itano. Openjava: A Class-Based Macro System for Java. // Reflection and Software Engineering, Springer, 2000.

57. The Java Language Specification (Third Edition) http://java.sun.eom/docs/books/jls/download/langspec-3.0.pdf

58. The Java Virtual Machine Specification (Second Edition),http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html154

59. The Scala Language Specification, Version 2.8, 2010 http://www.scaIa-lang.org/docu/files/ScalaReference.pdf

60. David S. Touretzky. COMMON LISP: A Gentle Introduction to Symbolic Computation. The Benjamin/Cummings Publishing Company, 1989.

61. Franklyn A. Turbak, David K. Gifford. Design Concepts in Programming Languages MIT Press, 2008.

62. UML Infrastructure, Version 2.3. http://www.0mg.0rg/spec/UML/2.3/Infrastructure/PDF/

63. UML Superstructure, Version 2.3 http://www.0mg.0rg/spec/UML/2.3/Superstructure/PDF/

64. Dimitrios Vytiniotis Geoffrey Washburn Stephanie Weirich. An Open and Shut Typecase. // Proceedings of the 2005 ACM SIGPLAN International Workshop on Types in Languages Design and Implementation TLDI'05, January 10, 2005, Long Beach, California, USA.

65. Markus Völter, Alexander Shatalin. Hands-On: Introduction to JetBrains Meta Programming System (MPS). // Proceedings of the 1st Code Generation Conference, May 25 27, 2011, Cambridge, UK.

66. Markus Völter. Type Systems for DSLs. // Proceedings of the 1st Code Generation Conference, May 25 27, 2011, Cambridge, UK.

67. Ian Welch, Robert J. Stroud. Kava A Reflective Java Based on Bytecode Rewriting. // Reflection and Software Engineering, Springer, 2000.

68. Whole Platform http://whoIe.sourceforge.net/

69. XMF http://www.ceteva.com/XMF/

70. XQuery 1.0. An XML Query Language (Second Edition). W3C Proposed Edited Recommendation 21 April, 2009. http://www.w3.org/TR/2009/PER-xquery-2009Q421/

71. XQuery Update Facility 1.0. W3C Candidate Recommendation 09 June, 2009. http://www.w3.org/TR/2009/CR-xquery-update-10-200906Q9/

72. XQuery 3.0: An XML Query Language. W3C Working Draft 14 June, 2011. http://www.w3.org/TR/xquery-30/

73. Sebastian Zarnekow, Sven Efftinge, Jan Koehnlein. Xtext: Creating Code Generators with Xtend2. // Proceedings of the 1st Code Generation Conference, May 25 27, 2011, Cambridge, UK.

74. Y. Zhang, B. Xu. A Survey of Semantic Description Frameworks for Programming Languages. ACM SIGPLAN Notices, Volume 39, Issue 3 (March 2004), pp. 14-30.

75. А. А. Седунов. Расширяемые типажи в Java. Расширение языка и область применения. Вестник ВГУ, №1, 2010.

76. А. А. Седунов, Н. А. Тюкачев. Построение формальных моделей с применением объектно-ориентированного метаязыка. Вестник ВГТУ, 2009.

77. А. А. Седунов. Гибридный объектно-ориентированный метаязык // Труды VI всероссийской научно-практической конференции студентов, аспирантов и молодых ученых «Технологии Microsoft в теории и практике программирования», Москва, 2009.

78. А. А. Седунов, Н. А. Тюкачев. Объектно-ориентированный язык спецификаций // Труды всероссийской научно-технической конференции «Молодые исследователи регионам», Вологда, 2009.

79. А. А. Седунов. Объектно-ориентированный метаязык // Вестник Воронежского государственного университета, серия «Системный анализ и информационные технологии», 2009, №1.

80. А. А. Седунов. Расширение функциональности классов с помощью присоединяемых типажей. // Труды X международной конференции «Информатика: проблемы, методология, технологии», Воронеж, 2010.

81. А. А. Седунов. Язык запросов для внутреннего представления ВОО-программ // Труды VII всероссийской научно-практической конференциистудентов, аспирантов и молодых ученых «Технологии Microsoft в теории и практике программирования», Москва, 2010.

82. А. А. Седунов., Н. А. Тюкачев. Расширение языка Java с помощью присоединяемых типажей // Труды всероссийской научно-технической конференции «Молодые исследователи регионам», Вологда, 2010.

83. А. А. Седунов. Формализация объектной структуры с помощью систем объектных уравнений // Вестник Воронежского государственного университета, серия «Системный анализ и информационные технологии», 2010, №2.

84. А. А. Седунов. Расширение функциональности классов с помощью присоединяемых типажей. // Труды XI международной конференции «Информатика: проблемы, методология, технологии», Воронеж, 2010.

85. А. А. Седунов. Структура ядра метаязыка в системе LDD-программирования. Международная конференция «Информатика: проблемы, методология, технологии» (Воронеж, 2011 г.).

86. А. А. Седунов. Математическая модель ядра системы метапрограммирования. Вестник ВГУ, №1, 2011.

87. Теренс Пратт, Марвин Зелковиц. Языки программирования: разработка и реализация, 4-е издание / Под общей редакцией А. Матросова. СПб.: Питер, 2002. - 688 е.: ил. ISBN 5-318-00189-0.

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