15.10.2019
Posted by 
Software System Development A Gentle Introduction Pdf Average ratng: 3,7/5 5601 reviews

Britton C., Doake J. Software System Development: A Gentle Introduction. Файл формата pdf; размером 45,62 МБ. Добавлен пользователем vlkm 07.04.17 17:38; Отредактирован 07.04.17 18:29; Скачан 4 пользователями. Britton C., Doake J. Software System Development: A Gentle Introduction. McGraw-Hill, 2006.

Development

1 АНАЛИЗ ЯЗЫКОВ И СРЕДСТВ РАЗРАБОТКИ. 1.1 Расширение объектно-ориентированного подхода. 1.2 Средства метаразработки.

Development

2 СТРУКТУРА ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ МОДЕЛЕЙ. 2.1 Основные обозначения. 2.2 Основные понятия. 2.3 Метаструктура. 2.4 Графическая нотация для описания моделей.

Модель Kernel. 3 ДЕЙСТВИЯ В СТРУКТУРЕ МОДЕЛЕЙ. 3.1 Преобразования контекста. 3.2 Основные структуры механизма действий. 3.3 Семантика действий.

4 ОСОБЕННОСТИ РЕАЛИЗАЦИИ. 4.1 Архитектура LDD- фреймворка.

4.3 Язык запросов TQ. Актуальность средств метапрограммирования В современной практике разработки программного обеспечения можно выделить 3 принципиальные проблемы, связанные, главным образом, с использованием языков общего назначения:. проблема 'перевода';. проблема изменчивости;. проблема разнородности; Проблема 'перевода' состоит в том, что предметная область задач, решаемых конкретным программным продуктом, как правило, существенно отличается от предметной области применяемого языка программирования. Данное обстоятельство является вполне естественным, поскольку язык общего назначения ориентирован на описание программы в терминах некоторой вычислительной парадигмы, а не конкретной задачи. Тем не менее, в сложных проектах 'универсальность' языка программирования может отрицательно влиять на процесс разработки, в частности.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Предмет исследования составляют средства метапрограммирования, а также методология Language-Driven Development и объектно-ориентированной разработки программного обеспечения. Методы исследования При выполнении диссертационной работы использованы методы математической логики и теории множеств, элементы теории графов и формальных моделей семантики языков программирования. Для реализации программной системы использованы принципы модульного программирования и объектно-ориентированного программирования с применением паттернов проектирования. Основные результаты, выносимые на защиту, и их научная новизна. 1.Формальная модель, описывающая структуру внутреннего представления программ, отличающаяся наличием контекстно-зависимых представлений и прототипирования, основанного на отношениях реализации и наследования и тем самым позволяющая снизить сложность описания структуры языков и программ. Формальная модель преобразования структуры программ (механизм действий), отличающаяся наличием системы контроля версий, что позволяет использовать ее для разработки инструментальных средств, поддерживающих одновременную разработку с использованием различных версий языка программирования. 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.

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

Объектно-ориентированный метаязык // Вестник ВГУ, серия « Системный анализ и информационные технологии», 2009, №1. А., Тюкачев Н. Построение формальных моделей с применением объектно-ориентированного метаязыка // Вестник ВГТУ, 2009, т. Присоединяемые типажи в Java: расширение языка и область применения // Вестник Воронежского государственного университета, серия « Системный анализ и информационные технологии», 2010, №1. Расширение функциональности классов с помощью присоединяемых типажей.

// Труды X международной конференции « Информатика: проблемы, методология, технологии», Воронеж, 2010. Язык запросов для внутреннего представления ВОО-программ // Труды VII всероссийской научно-практической конференции «Технологии Microsoft в теории и практике программирования», Москва, 2010. А., Тюкачев Н. Расширение языка Java с помощью присоединяемых типажей // Труды всероссийской научно-технической конференции «Молодые исследователи - регионам», Вологда, 2010. Формализация объектной структуры с помощью систем объектных уравнений // Вестник ВГУ, серия « Системный анализ и информационные технологии», 2010, №2. Расширение функциональности классов с помощью присоединяемых типажей.

// Труды XI международной конференции « Информатика: проблемы, методология, технологии», Воронеж, 2011. Структура ядра метаязыка в системе LDD-программирования // Вестник ВГУ, серия « Системный анализ и информационные технологии», 2011, №1. 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 глав, заключения и списка литературы. Заключение В настоящей диссертационной работе проведено исследование проблемы построения математической модели системы разработки по методологии ЬЭО и создание на ее основе прототипа программной инфраструктуры.

В процессе выполнения исследования решены следующие задачи: 4. Анализ основных решений в области языков и систем разработки, поддерживающих элементы метапрограммирования. Анализ существующих и разработка новых методов развития объектно-ориентированного подхода с целью расширения возможностей повторного использования компонентов программного обеспечения. Разработка формальной математической модели, описывающей структуру внутреннего представления программ для ЬОО-инфраструктуры. В диссертации получены результаты, характеризующие научную новизну в плане разработки теоретических основ создания программ средств для новых информационных технологий74 1.

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

Structure and 1.terpretation of Computer Programs (Second Edition) - The MIT Press, 1996. 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. 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. Foundations of Object-Oriented Languages. Types and Semantics. The MIT Press, 2002. The Diesel Language Specification and Rationale, 2006 6. 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.

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. 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.

Applied Metamodeling. A Foundation for Language Driven Development (Second Edition), 2008.%20Edition%29.pdf 10. Developing Languages and Applications with XMF, 2008. Language Factories, 2009. Factories.pdf 12. Transformation Language Design.

Metamodelling Foundation. LNCS 3256, 2004.149 14. Carmichael, R. The TXL Programming Language. Version 10.5.2007. 'The TXL Source Transformation Language'. Science of Computer Programming 61, 3 (August 2006).TXL SCP.pdf 16.

Andrea Corradi, Marco Servetto, Elena Zucca. Modular composition of nested classes. // Proceedings of 2010 Workshop on Foundations of Object-Oriented Languages, FOOL '10 October 17, 2010, Reno, Nevada, USA. C# Language Specification, Version 3.0. C# Language Specification, Version 4.0 19. Range Parameterized Types. Use-site Variance without the Existential Questions.

FTfJP'09, 2009. Language Oriented Programming. The Next Programming Paradigm. JetBrains OnBoard, 2004.

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. Domain-Specific Languages in.NET. Manning Publications Co., 2010.

Michael Eisenberg, Harold Abelson. Programming in Scheme. MIT Press, 1990. Advanced Programming Language Design. Addison-Wesley Publishing Company, 1996. Friedman, Mitchell Wand.

Essentials of Programming Languages.MIT Press, 2008. 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. Advanced Techniques for Common Lisp, 1993.

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. Javaassist Library www.javassist.org/ 31. JetBrains Meta Programming System 32. AspectJ in Action. Enterprise AOP with Spring Applications -Manning, 2009.

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. Karl Lieberherr. Adaptive Object-Oriented Software: The Demeter Method.PWS Publishing Company, 1996. Language Workbenches. The Killer-App for Domain Specific Languages, 2005.

Millstein, C. Expressive and Modular Predicate Dispatch for Java.

ACM TOPLAS, Vol. 2, Article 7, 2009. Millstein, T. Design Rationale, Compiler Implementation and Applications. Iowa State University, 2004. Ftp://ftp.cs.iastate.edu/pub/techreports/TR04-01/TR.pdf 39. Introducing Model-Driven Software Development // Proceedings of the 1st Code Generation Conference, May 25 27, 2011, Cambridge, UK.

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. Monteiro, Joao M. Towards a Catalogue of Refactorings and Code Smells for AspectJ.

// Transactions on Aspect-Oriented Software Development I, Springer, 2006. 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. 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. MOF 2.0 Core Specification. 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. Types and Programming Languages.

The MIT Press, 2002.-623 pp. Advanced Topics in Types and Programming Languages.The MIT Press, 2005. 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. Sukyoung Ryu, Changhee Park, Guy L. 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. Programming Language Pragmatics, Third Edition. Morgan Kaufmann, 1999. Concepts of Programming Languages.

System

Addison-Wesley Publishing Company, 2001. 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. Whole Platform, Ph.D Thesis, TR UBLCS-2005-07, University of Bologna, 2005. Standard ECMA-262. ECMAScript Language Specification (5th Edition), 2009 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. The Java Language Specification (Third Edition) 58. The Java Virtual Machine Specification (Second Edition),59. The Scala Language Specification, Version 2.8, 2010 60.

COMMON LISP: A Gentle Introduction to Symbolic Computation. The Benjamin/Cummings Publishing Company, 1989. Turbak, David K. Design Concepts in Programming Languages MIT Press, 2008. UML Infrastructure, Version 2.3. UML Superstructure, Version 2.3 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. 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.

Markus Völter. Type Systems for DSLs. // Proceedings of the 1st Code Generation Conference, May 25 27, 2011, Cambridge, UK. Ian Welch, Robert J. Kava A Reflective Java Based on Bytecode Rewriting.

// Reflection and Software Engineering, Springer, 2000. Whole Platform 69. An XML Query Language (Second Edition). W3C Proposed Edited Recommendation 21 April, 2009. XQuery Update Facility 1.0.

W3C Candidate Recommendation 09 June, 2009. XQuery 3.0: An XML Query Language. W3C Working Draft 14 June, 2011.

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.

A Survey of Semantic Description Frameworks for Programming Languages. ACM SIGPLAN Notices, Volume 39, Issue 3 (March 2004), pp.

Расширяемые типажи в Java. Расширение языка и область применения. Вестник ВГУ, №1, 2010. Построение формальных моделей с применением объектно-ориентированного метаязыка. Вестник ВГТУ, 2009. Гибридный объектно-ориентированный метаязык // Труды VI всероссийской научно-практической конференции студентов, аспирантов и молодых ученых «Технологии Microsoft в теории и практике программирования», Москва, 2009. Объектно-ориентированный язык спецификаций // Труды всероссийской научно-технической конференции « Молодые исследователи регионам», Вологда, 2009.

Объектно-ориентированный метаязык // Вестник Воронежского государственного университета, серия « Системный анализ и информационные технологии», 2009, №1. Расширение функциональности классов с помощью присоединяемых типажей. // Труды X международной конференции « Информатика: проблемы, методология, технологии», Воронеж, 2010. Язык запросов для внутреннего представления ВОО-программ // Труды VII всероссийской научно-практической конференциистудентов, аспирантов и молодых ученых «Технологии Microsoft в теории и практике программирования», Москва, 2010. Расширение языка Java с помощью присоединяемых типажей // Труды всероссийской научно-технической конференции « Молодые исследователи регионам», Вологда, 2010. Формализация объектной структуры с помощью систем объектных уравнений // Вестник Воронежского государственного университета, серия « Системный анализ и информационные технологии», 2010, №2.

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

Вестник ВГУ, №1, 2011. Теренс Пратт, Марвин Зелковиц. Языки программирования: разработка и реализация, 4-е издание / Под общей редакцией А. СПб.: Питер, 2002. 688 е.: ил.

ISBN 5-318-00189-0.

Хорошие книги обычно платные, потому что как справедливоз амечает тот же автор «Sharepoint 2010 Unleashed», они практически все время тратят на изучение нового ПО и написание книжек. А кушать им тоже что-то все-таки надо. А если написание книги это «хобби», то либо информация запоздает, либо будет просто неполной или недостоверной. К тому же за хорошую работу не стыдно и заплатить. Я многие книги сначала качал с торрентов, и если потом она мне нравилась, я обязательно покупал её в бумажном виде, даже если потом не открывал ни разу.

Сюда и Шилдт, и Иакдональд, и Мартин и Нейгел и многие другие.